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
'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])
| | 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
| | | ${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}
| | | ${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}
| | :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
| | | ${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}
| | | ${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}
| | ... | 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.
| | ... | \| ${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}
-memif_create id {id} socket-id {socket} {role}\r
+memif_create id {id} socket-id {socket} {role} rx-queues {rxq} tx-queues {txq}\r
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}
# CPU settings
| ${system_cpus}= | ${1}
| ${vpp_cpus}= | ${5}
-| ${container_cpus}= | ${3}
+| ${container_cpus}= | ${5}
*** Keywords ***
| Check RR for l2bdbasemaclrn-eth-2memif-1lxc
| | 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}
# 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
| | 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}
# CPU settings
| ${system_cpus}= | ${1}
| ${vpp_cpus}= | ${5}
-| ${container_cpus}= | ${3}
+| ${container_cpus}= | ${5}
*** Keywords ***
| Check RR for l2xcbase-eth-2memif-1dcr
| | 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}
# CPU settings
| ${system_cpus}= | ${1}
| ${vpp_cpus}= | ${5}
-| ${container_cpus}= | ${3}
+| ${container_cpus}= | ${5}
*** Keywords ***
| L2 Cross Connect over Memif Binary Search
| | 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}
# CPU settings
| ${system_cpus}= | ${1}
| ${vpp_cpus}= | ${5}
-| ${container_cpus}= | ${3}
+| ${container_cpus}= | ${5}
*** Keywords ***
| Check RR for l2xcbase-eth-2memif-1lxc
| | 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}
# CPU settings
| ${system_cpus}= | ${1}
| ${vpp_cpus}= | ${5}
-| ${container_cpus}= | ${3}
+| ${container_cpus}= | ${5}
*** Keywords ***
| L2 Cross Connect over Memif Binary Search
| | 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}
# CPU settings
| ${system_cpus}= | ${1}
| ${vpp_cpus}= | ${5}
-| ${container_cpus}= | ${3}
+| ${container_cpus}= | ${5}
*** Keywords ***
| Check RR for l2bdbasemaclrn-eth-2memif-1lxc
| | 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}
# CPU settings
| ${system_cpus}= | ${1}
| ${vpp_cpus}= | ${5}
-| ${container_cpus}= | ${3}
+| ${container_cpus}= | ${5}
*** Keywords ***
| Check RR for l2xcbase-eth-2memif-1dcr
| | 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}
# CPU settings
| ${system_cpus}= | ${1}
| ${vpp_cpus}= | ${5}
-| ${container_cpus}= | ${3}
+| ${container_cpus}= | ${5}
*** Keywords ***
| Check RR for l2xcbase-eth-2memif-1lxc
| | 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}
# CPU settings
| ${system_cpus}= | ${1}
| ${vpp_cpus}= | ${5}
-| ${container_cpus}= | ${3}
+| ${container_cpus}= | ${5}
*** Keywords ***
| Check RR for l2bdbasemaclrn-eth-2memif-1lxc
| | 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}
# CPU settings
| ${system_cpus}= | ${1}
| ${vpp_cpus}= | ${5}
-| ${container_cpus}= | ${3}
+| ${container_cpus}= | ${5}
*** Keywords ***
| Check RR for l2xcbase-eth-2memif-1lxc
| | 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}