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 --- 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 ++++++++++++++++ 477 files changed, 59796 insertions(+), 56841 deletions(-) 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 (limited to 'tests') 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