diff options
16 files changed, 49 insertions, 37 deletions
diff --git a/resources/libraries/python/Memif.py b/resources/libraries/python/Memif.py index 4a3186476f..d0ab6c74d1 100644 --- a/resources/libraries/python/Memif.py +++ b/resources/libraries/python/Memif.py @@ -25,18 +25,23 @@ class Memif(object): pass @staticmethod - def create_memif_interface(node, filename, mid, sid, role='master'): + def create_memif_interface(node, filename, mid, sid, rxq=1, txq=1, + role='slave'): """Create Memif interface on the given node. :param node: Given node to create Memif interface on. :param filename: Memif interface socket filename. :param mid: Memif interface ID. :param sid: Socket ID. + :param rxq: Number of RX queues. + :param txq: Number of TX queues. :param role: Memif interface role [master|slave]. Default is master. :type node: dict :type filename: str :type mid: str :type sid: str + :type rxq: int + :type txq: int :type role: str :returns: SW interface index. :rtype: int @@ -48,7 +53,8 @@ class Memif(object): 'memif_socket_filename_add_del.vat', add_del='add', id=sid, filename='/tmp/'+filename) vat.vat_terminal_exec_cmd_from_template( - 'memif_create.vat', id=mid, socket=sid, role=role) + 'memif_create.vat', id=mid, socket=sid, rxq=rxq, txq=txq, + role=role) if 'sw_if_index' in vat.vat_stdout: try: sw_if_idx = int(vat.vat_stdout.split()[4]) diff --git a/resources/libraries/robot/performance/performance_configuration.robot b/resources/libraries/robot/performance/performance_configuration.robot index 35999d5304..b4f2fb7bae 100644 --- a/resources/libraries/robot/performance/performance_configuration.robot +++ b/resources/libraries/robot/performance/performance_configuration.robot @@ -2124,7 +2124,7 @@ | | Configure deterministic mode for NAT44 | | ... | ${dut1} | 20.0.0.0 | 18 | 200.0.0.0 | 30 -| Initialize L2 xconnect for '${nr}' memif pairs in 3-node circular topology +| Initialize L2 xconnect for '${nr}' memif pairs and '${rxq}' rxqueues in 3-node circular topology | | [Documentation] | | ... | Create pairs of Memif interfaces on all defined VPP nodes. Cross | | ... | connect each Memif interface with one physical interface or virtual @@ -2151,7 +2151,7 @@ | | | ${prev_index}= | Evaluate | ${number}-1 | | | Set up memif interfaces on DUT node | ${dut1} | | | ... | ${sock1} | ${sock2} | ${number} | dut1-memif-${number}-if1 -| | | ... | dut1-memif-${number}-if2 +| | | ... | dut1-memif-${number}-if2 | ${rxq} | ${rxq} | | | ${dut1_xconnect_if1}= | Set Variable If | ${number}==1 | ${dut1_if1} | | | ... | ${dut1-memif-${prev_index}-if2} | | | Configure L2XC | ${dut1} | ${dut1_xconnect_if1} @@ -2160,7 +2160,7 @@ | | | ${sock2}= | Set Variable | memif-DUT2_VNF | | | Set up memif interfaces on DUT node | ${dut2} | | | ... | ${sock1} | ${sock2} | ${number} | dut2-memif-${number}-if1 -| | | ... | dut2-memif-${number}-if2 +| | | ... | dut2-memif-${number}-if2 | ${rxq} | ${rxq} | | | ${dut2_xconnect_if1}= | Set Variable If | ${number}==1 | ${dut2_if1} | | | ... | ${dut2-memif-${prev_index}-if2} | | | Configure L2XC | ${dut2} | ${dut2_xconnect_if1} @@ -2173,7 +2173,7 @@ | | :FOR | ${dut} | IN | @{duts} | | | Show Memif | ${nodes['${dut}']} -| Initialize L2 Bridge Domain for '${nr}' memif pairs in 3-node circular topology +| Initialize L2 Bridge Domain for '${nr}' memif pairs and '${rxq}' rxqueues in 3-node circular topology | | [Documentation] | | ... | Create pairs of Memif interfaces on all defined VPP nodes. Put each | | ... | Memif interface to separate L2 bridge domain with one physical or @@ -2201,7 +2201,7 @@ | | | ${sock2}= | Set Variable | memif-DUT1_VNF | | | Set up memif interfaces on DUT node | ${dut1} | | | ... | ${sock1} | ${sock2} | ${number} | dut1-memif-${number}-if1 -| | | ... | dut1-memif-${number}-if2 +| | | ... | dut1-memif-${number}-if2 | ${rxq} | ${rxq} | | | ${bd_id2}= | Evaluate | ${number}+1 | | | Add interface to bridge domain | ${dut1} | | | ... | ${dut1-memif-${number}-if1} | ${number} @@ -2211,7 +2211,7 @@ | | | ${sock2}= | Set Variable | memif-DUT2_VNF | | | Set up memif interfaces on DUT node | ${dut2} | | | ... | ${sock1} | ${sock2} | ${number} | dut2-memif-${number}-if1 -| | | ... | dut2-memif-${number}-if2 +| | | ... | dut2-memif-${number}-if2 | ${rxq} | ${rxq} | | | Add interface to bridge domain | ${dut2} | | | ... | ${dut2-memif-${number}-if1} | ${number} | | | Add interface to bridge domain | ${dut2} diff --git a/resources/libraries/robot/shared/memif.robot b/resources/libraries/robot/shared/memif.robot index 1739743498..172376ffde 100644 --- a/resources/libraries/robot/shared/memif.robot +++ b/resources/libraries/robot/shared/memif.robot @@ -28,6 +28,9 @@ | | ... | Type: string | | ... | - ${memif_if2} - Name of the second Memif interface (Optional). | | ... | Type: string +| | ... | - ${rxq} - RX queues. Type: integer +| | ... | - ${txq} - TX queues. Type: integer +| | ... | - ${role} - Memif role. Type: string | | ... | | ... | _NOTE:_ This KW sets following test case variable: | | ... | - ${${memif_if1}} - 1st Memif interface. @@ -39,16 +42,19 @@ | | ... | \| ${nodes['DUT1']} \| sock1 \| sock2 \| 1 \| | | ... | \| Set up memif interfaces on DUT node \ | | ... | \| ${nodes['DUT2']} \| sock1 \| sock2 \| 1 \ -| | ... | \| dut2_memif_if1 \| dut2_memif_if2 \| +| | ... | \| dut2_memif_if1 \| dut2_memif_if2 \| 1 \| 1 \| slave \| | | ... | | [Arguments] | ${dut_node} | ${filename1} | ${filename2} | ${mid}=${1} -| | ... | ${memif_if1}=memif_if1 | ${memif_if2}=memif_if2 +| | ... | ${memif_if1}=memif_if1 | ${memif_if2}=memif_if2 | ${rxq}=${1} +| | ... | ${txq}=${1} | ${role}=slave | | ${sid_1}= | Evaluate | (${mid}*2)-1 | | ${sid_2}= | Evaluate | (${mid}*2) | | ${memif_1}= | Create memif interface | ${dut_node} -| | ... | ${filename1}${mid}-${sid_1} | ${mid} | ${sid_1} +| | ... | ${filename1}${mid}-${sid_1} | ${mid} | ${sid_1} | rxq=${rxq} +| | ... | txq=${txq} | role=${role} | | ${memif_2}= | Create memif interface | ${dut_node} -| | ... | ${filename2}${mid}-${sid_2} | ${mid} | ${sid_2} +| | ... | ${filename2}${mid}-${sid_2} | ${mid} | ${sid_2} | rxq=${rxq} +| | ... | txq=${txq} | role=${role} | | Set Interface State | ${dut_node} | ${memif_1} | up | | Set Interface State | ${dut_node} | ${memif_2} | up | | Set Test Variable | ${${memif_if1}} | ${memif_1} diff --git a/resources/templates/vat/memif_create.vat b/resources/templates/vat/memif_create.vat index d9f2937029..1e9d0e8a6a 100644 --- a/resources/templates/vat/memif_create.vat +++ b/resources/templates/vat/memif_create.vat @@ -1 +1 @@ -memif_create id {id} socket-id {socket} {role}
+memif_create id {id} socket-id {socket} {role} rx-queues {rxq} tx-queues {txq}
diff --git a/resources/templates/vat/memif_create_cnt.vat b/resources/templates/vat/memif_create_cnt.vat index f0d847b29b..306df83c57 100644 --- a/resources/templates/vat/memif_create_cnt.vat +++ b/resources/templates/vat/memif_create_cnt.vat @@ -1,9 +1,9 @@ create memif socket id {sid1} filename /mnt/host/{socket1} -create interface memif id {mid1} socket-id {sid1} slave +create interface memif id {mid1} socket-id {sid1} master set int state memif{sid1}/{mid1} up create memif socket id {sid2} filename /mnt/host/{socket2} -create interface memif id {mid2} socket-id {sid2} slave +create interface memif id {mid2} socket-id {sid2} master set int state memif{sid2}/{mid2} up set interface l2 xconnect memif{sid2}/{mid2} memif{sid1}/{mid1} diff --git a/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2bdbasemaclrn-eth-2memif-1lxc-mrr.robot b/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2bdbasemaclrn-eth-2memif-1lxc-mrr.robot index 6ea7c80c78..3913aa5cbd 100644 --- a/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2bdbasemaclrn-eth-2memif-1lxc-mrr.robot +++ b/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2bdbasemaclrn-eth-2memif-1lxc-mrr.robot @@ -60,7 +60,7 @@ # CPU settings | ${system_cpus}= | ${1} | ${vpp_cpus}= | ${5} -| ${container_cpus}= | ${3} +| ${container_cpus}= | ${5} *** Keywords *** | Check RR for l2bdbasemaclrn-eth-2memif-1lxc @@ -82,7 +82,7 @@ | | 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 for '1' memif pairs in 3-node circular topology +| | And Initialize L2 Bridge Domain for '1' memif pairs and '${rxq}' rxqueues in 3-node circular topology | | Then Traffic should pass with maximum rate | ${perf_trial_duration} | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2bdbasemaclrn-eth-2memif-1lxc-ndrpdrdisc.robot b/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2bdbasemaclrn-eth-2memif-1lxc-ndrpdrdisc.robot index 8814e1e602..cf78e88979 100644 --- a/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2bdbasemaclrn-eth-2memif-1lxc-ndrpdrdisc.robot +++ b/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2bdbasemaclrn-eth-2memif-1lxc-ndrpdrdisc.robot @@ -68,7 +68,7 @@ # CPU settings | ${system_cpus}= | ${1} | ${vpp_cpus}= | ${5} -| ${container_cpus}= | ${3} +| ${container_cpus}= | ${5} *** Keywords *** | Discover NDR or PDR for L2 Bridge Domain with Memif @@ -85,7 +85,7 @@ | | Add PCI Devices To DUTs In 3-node Single Link Topology | | Run Keyword If | ${get_framesize} < ${1522} | Add No Multi Seg to all DUTs | | Apply startup configuration on all VPP DUTs -| | Initialize L2 Bridge Domain for '1' memif pairs in 3-node circular topology +| | Initialize L2 Bridge Domain for '1' memif pairs and '${rxq}' rxqueues in 3-node circular topology | | Run Keyword If | '${search_type}' == 'NDR' | | ... | Find NDR using binary search and pps | | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} diff --git a/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1dcr-mrr.robot b/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1dcr-mrr.robot index 908180dc7f..ded74eef9d 100644 --- a/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1dcr-mrr.robot +++ b/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1dcr-mrr.robot @@ -60,7 +60,7 @@ # CPU settings | ${system_cpus}= | ${1} | ${vpp_cpus}= | ${5} -| ${container_cpus}= | ${3} +| ${container_cpus}= | ${5} *** Keywords *** | Check RR for l2xcbase-eth-2memif-1dcr @@ -82,7 +82,7 @@ | | 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 for '1' memif pairs in 3-node circular topology +| | And Initialize L2 xconnect for '1' memif pairs and '${rxq}' rxqueues in 3-node circular topology | | Then Traffic should pass with maximum rate | ${perf_trial_duration} | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1drc-ndrpdrdisc.robot b/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1drc-ndrpdrdisc.robot index 6f5f4fd90f..62e8fd3e12 100644 --- a/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1drc-ndrpdrdisc.robot +++ b/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1drc-ndrpdrdisc.robot @@ -68,7 +68,7 @@ # CPU settings | ${system_cpus}= | ${1} | ${vpp_cpus}= | ${5} -| ${container_cpus}= | ${3} +| ${container_cpus}= | ${5} *** Keywords *** | L2 Cross Connect over Memif Binary Search @@ -85,7 +85,7 @@ | | Add PCI Devices To DUTs In 3-node Single Link Topology | | Run Keyword If | ${get_framesize} < ${1522} | Add No Multi Seg to all DUTs | | Apply startup configuration on all VPP DUTs -| | Initialize L2 xconnect for '${container_count}' memif pairs in 3-node circular topology +| | Initialize L2 xconnect for '${container_count}' memif pairs and '${rxq}' rxqueues in 3-node circular topology | | Run Keyword If | '${search_type}' == 'NDR' | | ... | Find NDR using binary search and pps | | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} diff --git a/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1lxc-mrr.robot b/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1lxc-mrr.robot index 2ec26b79fb..75b7c38503 100644 --- a/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1lxc-mrr.robot +++ b/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1lxc-mrr.robot @@ -59,7 +59,7 @@ # CPU settings | ${system_cpus}= | ${1} | ${vpp_cpus}= | ${5} -| ${container_cpus}= | ${3} +| ${container_cpus}= | ${5} *** Keywords *** | Check RR for l2xcbase-eth-2memif-1lxc @@ -81,7 +81,7 @@ | | 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 for '1' memif pairs in 3-node circular topology +| | And Initialize L2 xconnect for '1' memif pairs and '${rxq}' rxqueues in 3-node circular topology | | Then Traffic should pass with maximum rate | ${perf_trial_duration} | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1lxc-ndrpdrdisc.robot b/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1lxc-ndrpdrdisc.robot index b56228e943..c9c3cc9a9f 100644 --- a/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1lxc-ndrpdrdisc.robot +++ b/tests/vpp/perf/container_memif/10ge2p1x520-eth-l2xcbase-eth-2memif-1lxc-ndrpdrdisc.robot @@ -67,7 +67,7 @@ # CPU settings | ${system_cpus}= | ${1} | ${vpp_cpus}= | ${5} -| ${container_cpus}= | ${3} +| ${container_cpus}= | ${5} *** Keywords *** | L2 Cross Connect over Memif Binary Search @@ -84,7 +84,7 @@ | | Add PCI Devices To DUTs In 3-node Single Link Topology | | Run Keyword If | ${get_framesize} < ${1522} | Add No Multi Seg to all DUTs | | Apply startup configuration on all VPP DUTs -| | Initialize L2 xconnect for '1' memif pairs in 3-node circular topology +| | Initialize L2 xconnect for '1' memif pairs and '${rxq}' rxqueues in 3-node circular topology | | Run Keyword If | '${search_type}' == 'NDR' | | ... | Find NDR using binary search and pps | | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} diff --git a/tests/vpp/perf/container_memif/10ge2p1x710-eth-l2bdbasemaclrn-eth-2memif-1lxc-mrr.robot b/tests/vpp/perf/container_memif/10ge2p1x710-eth-l2bdbasemaclrn-eth-2memif-1lxc-mrr.robot index 6ab953db85..27b87dbad5 100644 --- a/tests/vpp/perf/container_memif/10ge2p1x710-eth-l2bdbasemaclrn-eth-2memif-1lxc-mrr.robot +++ b/tests/vpp/perf/container_memif/10ge2p1x710-eth-l2bdbasemaclrn-eth-2memif-1lxc-mrr.robot @@ -60,7 +60,7 @@ # CPU settings | ${system_cpus}= | ${1} | ${vpp_cpus}= | ${5} -| ${container_cpus}= | ${3} +| ${container_cpus}= | ${5} *** Keywords *** | Check RR for l2bdbasemaclrn-eth-2memif-1lxc @@ -82,7 +82,7 @@ | | 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 for '1' memif pairs in 3-node circular topology +| | And Initialize L2 Bridge Domain for '1' memif pairs and '${rxq}' rxqueues in 3-node circular topology | | Then Traffic should pass with maximum rate | ${perf_trial_duration} | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/container_memif/10ge2p1x710-eth-l2xcbase-eth-2memif-1dcr-mrr.robot b/tests/vpp/perf/container_memif/10ge2p1x710-eth-l2xcbase-eth-2memif-1dcr-mrr.robot index 23a12d0e1c..7bc617a151 100644 --- a/tests/vpp/perf/container_memif/10ge2p1x710-eth-l2xcbase-eth-2memif-1dcr-mrr.robot +++ b/tests/vpp/perf/container_memif/10ge2p1x710-eth-l2xcbase-eth-2memif-1dcr-mrr.robot @@ -60,7 +60,7 @@ # CPU settings | ${system_cpus}= | ${1} | ${vpp_cpus}= | ${5} -| ${container_cpus}= | ${3} +| ${container_cpus}= | ${5} *** Keywords *** | Check RR for l2xcbase-eth-2memif-1dcr @@ -82,7 +82,7 @@ | | 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 for '1' memif pairs in 3-node circular topology +| | And Initialize L2 xconnect for '1' memif pairs and '${rxq}' rxqueues in 3-node circular topology | | Then Traffic should pass with maximum rate | ${perf_trial_duration} | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/container_memif/10ge2p1x710-eth-l2xcbase-eth-2memif-1lxc-mrr.robot b/tests/vpp/perf/container_memif/10ge2p1x710-eth-l2xcbase-eth-2memif-1lxc-mrr.robot index 2e39c87406..f5bc14acd9 100644 --- a/tests/vpp/perf/container_memif/10ge2p1x710-eth-l2xcbase-eth-2memif-1lxc-mrr.robot +++ b/tests/vpp/perf/container_memif/10ge2p1x710-eth-l2xcbase-eth-2memif-1lxc-mrr.robot @@ -59,7 +59,7 @@ # CPU settings | ${system_cpus}= | ${1} | ${vpp_cpus}= | ${5} -| ${container_cpus}= | ${3} +| ${container_cpus}= | ${5} *** Keywords *** | Check RR for l2xcbase-eth-2memif-1lxc @@ -81,7 +81,7 @@ | | 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 for '1' memif pairs in 3-node circular topology +| | And Initialize L2 xconnect for '1' memif pairs and '${rxq}' rxqueues in 3-node circular topology | | Then Traffic should pass with maximum rate | ${perf_trial_duration} | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/container_memif/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2memif-1lxc-mrr.robot b/tests/vpp/perf/container_memif/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2memif-1lxc-mrr.robot index dd7e7e8e2d..a4674a1e18 100644 --- a/tests/vpp/perf/container_memif/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2memif-1lxc-mrr.robot +++ b/tests/vpp/perf/container_memif/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2memif-1lxc-mrr.robot @@ -62,7 +62,7 @@ # CPU settings | ${system_cpus}= | ${1} | ${vpp_cpus}= | ${5} -| ${container_cpus}= | ${3} +| ${container_cpus}= | ${5} *** Keywords *** | Check RR for l2bdbasemaclrn-eth-2memif-1lxc @@ -86,7 +86,7 @@ | | 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 for '1' memif pairs in 3-node circular topology +| | And Initialize L2 Bridge Domain for '1' memif pairs and '${rxq}' rxqueues in 3-node circular topology | | Then Traffic should pass with maximum rate | ${perf_trial_duration} | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/container_memif/40ge2p1xl710-eth-l2xcbase-eth-2memif-1lxc-mrr.robot b/tests/vpp/perf/container_memif/40ge2p1xl710-eth-l2xcbase-eth-2memif-1lxc-mrr.robot index 92988b366e..0160bf2b46 100644 --- a/tests/vpp/perf/container_memif/40ge2p1xl710-eth-l2xcbase-eth-2memif-1lxc-mrr.robot +++ b/tests/vpp/perf/container_memif/40ge2p1xl710-eth-l2xcbase-eth-2memif-1lxc-mrr.robot @@ -61,7 +61,7 @@ # CPU settings | ${system_cpus}= | ${1} | ${vpp_cpus}= | ${5} -| ${container_cpus}= | ${3} +| ${container_cpus}= | ${5} *** Keywords *** | Check RR for l2xcbase-eth-2memif-1lxc @@ -85,7 +85,7 @@ | | 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 for '1' memif pairs in 3-node circular topology +| | And Initialize L2 xconnect for '1' memif pairs and '${rxq}' rxqueues in 3-node circular topology | | Then Traffic should pass with maximum rate | ${perf_trial_duration} | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} |