Fix bug in dpdk-testpmd-mac KW
[csit.git] / resources / libraries / robot / performance / performance_configuration.robot
index 641b808..61bc4bd 100644 (file)
 | | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2}
 | | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2}
 | | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1}
-| | dut1_v4.set_arp | ${dut1_if1} | 10.10.10.2 | ${tg1_if1_mac}
-| | dut1_v4.set_arp | ${dut1_if2} | 1.1.1.2 | ${dut2_if1_mac}
-| | dut2_v4.set_arp | ${dut2_if1} | 1.1.1.1 | ${dut1_if2_mac}
-| | dut2_v4.set_arp | ${dut2_if2} | 20.20.20.2 | ${tg1_if2_mac}
-| | dut1_v4.set_ip | ${dut1_if1} | 10.10.10.1 | 24
-| | dut1_v4.set_ip | ${dut1_if2} | 1.1.1.1 | 30
-| | dut2_v4.set_ip | ${dut2_if1} | 1.1.1.2 | 30
-| | dut2_v4.set_ip | ${dut2_if2} | 20.20.20.1 | 24
-| | dut1_v4.set_route | 20.20.20.0 | 24 | 1.1.1.2 | ${dut1_if2}
-| | dut2_v4.set_route | 10.10.10.0 | 24 | 1.1.1.1 | ${dut2_if1}
+| | Add arp on dut | ${dut1} | ${dut1_if1} | 10.10.10.2 | ${tg1_if1_mac}
+| | Add arp on dut | ${dut1} | ${dut1_if2} | 1.1.1.2 | ${dut2_if1_mac}
+| | Add arp on dut | ${dut2} | ${dut2_if1} | 1.1.1.1 | ${dut1_if2_mac}
+| | Add arp on dut | ${dut2} | ${dut2_if2} | 20.20.20.2 | ${tg1_if2_mac}
+| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1}
+| | ... | 10.10.10.1 | 24
+| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2}
+| | ... | 1.1.1.1 | 30
+| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1}
+| | ... | 1.1.1.2 | 30
+| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2}
+| | ... | 20.20.20.1 | 24
+| | Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | 1.1.1.2 | ${dut1_if2}
+| | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | 1.1.1.1 | ${dut2_if1}
 | | All Vpp Interfaces Ready Wait | ${nodes}
 
 | Initialize IPv4 forwarding in 2-node circular topology
 | | Set Interface State | ${dut1} | ${dut1_if2} | up
 | | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1}
 | | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2}
-| | dut1_v4.set_arp | ${dut1_if1} | 10.10.10.3 | ${tg1_if1_mac}
-| | dut1_v4.set_arp | ${dut1_if2} | 20.20.20.3 | ${tg1_if2_mac}
-| | dut1_v4.set_ip | ${dut1_if1} | 10.10.10.2 | 24
-| | dut1_v4.set_ip | ${dut1_if2} | 20.20.20.2 | 24
+| | Add arp on dut | ${dut1} | ${dut1_if1} | 10.10.10.3 | ${tg1_if1_mac}
+| | Add arp on dut | ${dut1} | ${dut1_if2} | 20.20.20.3 | ${tg1_if2_mac}
+| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1}
+| | ... | 10.10.10.2 | 24
+| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2}
+| | ... | 20.20.20.2 | 24
 | | All Vpp Interfaces Ready Wait | ${nodes}
 
 | Initialize IPv4 forwarding with scaling in 3-node circular topology
 | | Set Interface State | ${dut2} | ${dut2_vif1} | up
 | | Set Interface State | ${dut2} | ${dut2_vif2} | up
 | | Add Fib Table | ${dut1} | ${fib_table_1}
-| | And Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | vrf=${fib_table_1}
-| | ... | gateway=4.4.4.2 | interface=${dut1_vif1} | multipath=${TRUE}
+| | And Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | vrf=${fib_table_1}
+| | ... | gateway=4.4.4.2 | interface=${dut1_vif1} | multipath=${TRUE}
 | | Add Fib Table | ${dut1} | ${fib_table_1}
 | | And Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | vrf=${fib_table_1}
-| | ... | gateway=1.1.1.2 | interface=${dut1_if1} | multipath=${TRUE}
+| | ... | gateway=1.1.1.2 | interface=${dut1_if1} | multipath=${TRUE}
 | | Add Fib Table | ${dut1} | ${fib_table_2}
 | | And Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | vrf=${fib_table_2}
-| | ... | gateway=2.2.2.2 | interface=${dut1_if2} | multipath=${TRUE}
+| | ... | gateway=2.2.2.2 | interface=${dut1_if2} | multipath=${TRUE}
 | | Add Fib Table | ${dut1} | ${fib_table_2}
 | | And Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | vrf=${fib_table_2}
-| | ... | gateway=5.5.5.2 | interface=${dut1_vif2} | multipath=${TRUE}
+| | ... | gateway=5.5.5.2 | interface=${dut1_vif2} | multipath=${TRUE}
 | | Add Fib Table | ${dut2} | ${fib_table_1}
 | | And Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | vrf=${fib_table_1}
-| | ... | gateway=2.2.2.1 | interface=${dut2_if1} | multipath=${TRUE}
+| | ... | gateway=2.2.2.1 | interface=${dut2_if1} | multipath=${TRUE}
 | | Add Fib Table | ${dut2} | ${fib_table_1}
 | | And Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | vrf=${fib_table_1}
-| | ... | gateway=4.4.4.1 | interface=${dut2_vif1} | multipath=${TRUE}
+| | ... | gateway=4.4.4.1 | interface=${dut2_vif1} | multipath=${TRUE}
 | | Add Fib Table | ${dut2} | ${fib_table_2}
 | | And Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | vrf=${fib_table_2}
-| | ... | gateway=5.5.5.2 | interface=${dut2_vif2} | multipath=${TRUE}
+| | ... | gateway=5.5.5.2 | interface=${dut2_vif2} | multipath=${TRUE}
 | | Add Fib Table | ${dut2} | ${fib_table_2}
 | | And Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | vrf=${fib_table_2}
-| | ... | gateway=3.3.3.2 | interface=${dut2_if2} | multipath=${TRUE}
+| | ... | gateway=3.3.3.2 | interface=${dut2_if2} | multipath=${TRUE}
 | | Assign Interface To Fib Table | ${dut1} | ${dut1_if1} | ${fib_table_1}
 | | Assign Interface To Fib Table | ${dut1} | ${dut1_vif1} | ${fib_table_1}
 | | Assign Interface To Fib Table | ${dut1} | ${dut1_if2} | ${fib_table_2}
 | | ${fib_table_2}= | Evaluate | ${fib_table_1}+${nr}
 | | Add Fib Table | ${dut1} | ${fib_table_1}
 | | And Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | vrf=${fib_table_1}
-| | ... | gateway=1.1.1.2 | interface=${dut1_if1} | multipath=${TRUE}
+| | ... | gateway=1.1.1.2 | interface=${dut1_if1} | multipath=${TRUE}
 | | Add Fib Table | ${dut1} | ${fib_table_2}
 | | And Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | vrf=${fib_table_2}
-| | ... | gateway=2.2.2.2 | interface=${dut1_if2} | multipath=${TRUE}
+| | ... | gateway=2.2.2.2 | interface=${dut1_if2} | multipath=${TRUE}
 | | Add Fib Table | ${dut2} | ${fib_table_1}
 | | And Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | vrf=${fib_table_1}
-| | ... | gateway=2.2.2.1 | interface=${dut2_if1} | multipath=${TRUE}
+| | ... | gateway=2.2.2.1 | interface=${dut2_if1} | multipath=${TRUE}
 | | Add Fib Table | ${dut2} | ${fib_table_2}
 | | And Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | vrf=${fib_table_2}
-| | ... | gateway=3.3.3.2 | interface=${dut2_if2} | multipath=${TRUE}
+| | ... | gateway=3.3.3.2 | interface=${dut2_if2} | multipath=${TRUE}
 | | Assign Interface To Fib Table | ${dut1} | ${dut1_if1} | ${fib_table_1}
 | | Assign Interface To Fib Table | ${dut1} | ${dut1_if2} | ${fib_table_2}
 | | Assign Interface To Fib Table | ${dut2} | ${dut2_if1} | ${fib_table_1}
 | | | Set Interface State | ${dut2} | ${dut2-vhost-${number}-if2} | up
 | | | Add Fib Table | ${dut1} | ${fib_table_1}
 | | | And Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | vrf=${fib_table_1}
-| | | ... | gateway=${ip_net_vif1}.1 | interface=${dut1-vhost-${number}-if1}
+| | | ... | gateway=${ip_net_vif1}.1 | interface=${dut1-vhost-${number}-if1}
 | | | ... | multipath=${TRUE}
 | | | Add Fib Table | ${dut1} | ${fib_table_2}
 | | | And Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | vrf=${fib_table_2}
-| | | ... | gateway=${ip_net_vif2}.2 | interface=${dut1-vhost-${number}-if2}
+| | | ... | gateway=${ip_net_vif2}.2 | interface=${dut1-vhost-${number}-if2}
 | | | ... | multipath=${TRUE}
 | | | Add Fib Table | ${dut2} | ${fib_table_1}
 | | | And Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | vrf=${fib_table_1}
-| | | ... | gateway=${ip_net_vif1}.1 | interface=${dut2-vhost-${number}-if1}
+| | | ... | gateway=${ip_net_vif1}.1 | interface=${dut2-vhost-${number}-if1}
 | | | ... | multipath=${TRUE}
 | | | Add Fib Table | ${dut2} | ${fib_table_2}
 | | | And Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | vrf=${fib_table_2}
-| | | ... | gateway=${ip_net_vif2}.2 | interface=${dut2-vhost-${number}-if2}
+| | | ... | gateway=${ip_net_vif2}.2 | interface=${dut2-vhost-${number}-if2}
 | | | ... | multipath=${TRUE}
 | | | Assign Interface To Fib Table | ${dut1} | ${dut1-vhost-${number}-if1}
 | | | ... | ${fib_table_1}
 | | ${port_limit}= | Set Variable | ${65535}
 | | ${acl}= | Set Variable | ipv4 permit
 | | :FOR | ${nr} | IN RANGE | 0 | ${no_hit_aces_number}
-| |      | ${src_ip_int} = | Evaluate | $src_ip_int + $ip_step
-| |      | ${dst_ip_int} = | Evaluate | $dst_ip_int + $ip_step
-| |      | ${sport}= | Evaluate | $sport + $port_step
-| |      | ${dport}= | Evaluate | $dport + $port_step
-| |      | ${ipv4_limit_reached}= | Set Variable If
-| |      | ... | $src_ip_int > $ip_limit_int or $src_ip_int > $ip_limit_int
-| |      | ... | ${True}
-| |      | ${udp_limit_reached}= | Set Variable If
-| |      | ... | $sport > $port_limit or $dport > $port_limit | ${True}
-| |      | Run Keyword If | $ipv4_limit_reached is True | Log
-| |      | ... | Can't do more iterations - IPv4 address limit has been reached.
-| |      | ... | WARN
-| |      | Run Keyword If | $udp_limit_reached is True | Log
-| |      | ... | Can't do more iterations - UDP port limit has been reached.
-| |      | ... | WARN
-| |      | ${src_ip} = | Run Keyword If | $ipv4_limit_reached is True
-| |      | ... | Set Variable | ${ip_limit}
-| |      | ... | ELSE | Evaluate | str(ipaddress.ip_address($src_ip_int))
-| |      | ... | modules=ipaddress
-| |      | ${dst_ip} = | Run Keyword If | $ipv4_limit_reached is True
-| |      | ... | Set Variable | ${ip_limit}
-| |      | ... | ELSE | Evaluate | str(ipaddress.ip_address($dst_ip_int))
-| |      | ... | modules=ipaddress
-| |      | ${sport}= | Set Variable If | ${sport} > $port_limit | $port_limit
-| |      | ... | ${sport}
-| |      | ${dport}= | Set Variable If | ${dport} > $port_limit | $port_limit
-| |      | ... | ${dport}
-| |      | ${acl}= | Catenate | ${acl} | src ${src_ip}/32 dst ${dst_ip}/32
-| |      | ... | sport ${sport} | dport ${dport},
-| |      | Exit For Loop If
-| |      | ... | $ipv4_limit_reached is True or $udp_limit_reached is True
+| | | ${src_ip_int} = | Evaluate | $src_ip_int + $ip_step
+| | | ${dst_ip_int} = | Evaluate | $dst_ip_int + $ip_step
+| | | ${sport}= | Evaluate | $sport + $port_step
+| | | ${dport}= | Evaluate | $dport + $port_step
+| | | ${ipv4_limit_reached}= | Set Variable If
+| | | ... | $src_ip_int > $ip_limit_int or $src_ip_int > $ip_limit_int
+| | | ... | ${True}
+| | | ${udp_limit_reached}= | Set Variable If
+| | | ... | $sport > $port_limit or $dport > $port_limit | ${True}
+| | | Run Keyword If | $ipv4_limit_reached is True | Log
+| | | ... | Can't do more iterations - IPv4 address limit has been reached.
+| | | ... | WARN
+| | | Run Keyword If | $udp_limit_reached is True | Log
+| | | ... | Can't do more iterations - UDP port limit has been reached.
+| | | ... | WARN
+| | | ${src_ip} = | Run Keyword If | $ipv4_limit_reached is True
+| | | ... | Set Variable | ${ip_limit}
+| | | ... | ELSE | Evaluate | str(ipaddress.ip_address($src_ip_int))
+| | | ... | modules=ipaddress
+| | | ${dst_ip} = | Run Keyword If | $ipv4_limit_reached is True
+| | | ... | Set Variable | ${ip_limit}
+| | | ... | ELSE | Evaluate | str(ipaddress.ip_address($dst_ip_int))
+| | | ... | modules=ipaddress
+| | | ${sport}= | Set Variable If | ${sport} > $port_limit | $port_limit
+| | | ... | ${sport}
+| | | ${dport}= | Set Variable If | ${dport} > $port_limit | $port_limit
+| | | ... | ${dport}
+| | | ${acl}= | Catenate | ${acl} | src ${src_ip}/32 dst ${dst_ip}/32
+| | | ... | sport ${sport} | dport ${dport},
+| | | Exit For Loop If
+| | | ... | $ipv4_limit_reached is True or $udp_limit_reached is True
 | | ${acl}= | Catenate | ${acl}
-| | ...     | ipv4 ${acl_action} src ${trex_stream1_subnet},
-| | ...     | ipv4 ${acl_action} src ${trex_stream2_subnet}
+| | ... | ipv4 ${acl_action} src ${trex_stream1_subnet},
+| | ... | ipv4 ${acl_action} src ${trex_stream2_subnet}
 | | Add Replace Acl Multi Entries | ${dut} | rules=${acl}
 | | @{acl_list}= | Create List | ${0}
 | | Run Keyword If | 'input' in $acl_apply_type and $dut_if1 is not None
 | | ... | Type: integer
 | | ... | - qemu_id - Qemu Id when starting more then one guest VM on DUT node.
 | | ... | Type: integer
+| | ... | - jumbo_frames - Set True if jumbo frames are used in the test.
+| | ... | Type: bool
 | | ...
 | | ... | *Example:*
 | | ...
 | | ... | \| qemu_id=${2} \|
 | | ...
 | | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} | ${skip}=${6}
-| | ... | ${count}=${5} | ${qemu_id}=${1}
+| | ... | ${count}=${5} | ${qemu_id}=${1} | ${jumbo_frames}=${False}
 | | ...
 | | Import Library | resources.libraries.python.QemuUtils | qemu_id=${qemu_id}
 | | ... | WITH NAME | ${vm_name}
 | | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa}
 | | ... | skip_cnt=${skip_cnt} | cpu_cnt=${count} | smt_used=${False}
 | | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1}
+| | ... | jumbo_frames=${jumbo_frames}
 | | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2}
+| | ... | jumbo_frames=${jumbo_frames}
 | | ${apply_patch}= | Set Variable If | "${perf_qemu_qsz}" == "256" | ${False}
 | | ... | ${True}
 | | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
 | | ${vm}= | Run keyword | ${vm_name}.Qemu Start
 | | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus}
 | | Run keyword If | ${use_tuned_cfs} | ${vm_name}.Qemu Set Scheduler Policy
+| | ${max_pkt_len}= | Set Variable If | ${jumbo_frames} | 9000 | ${EMPTY}
 | | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f | eal_mem_channels=4
 | | ... | pmd_fwd_mode=io | pmd_disable_hw_vlan=${True}
 | | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz}
+| | ... | pmd_max_pkt_len=${max_pkt_len}
 | | Return From Keyword | ${vm}
 
 | Configure '${nr}' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology
 | | ... | - ${system_cpus} - Number of CPUs allocated for OS itself.
 | | ... | - ${vpp_cpus} - Number of CPUs allocated for VPP.
 | | ... | - ${vm_cpus} - Number of CPUs to be allocated per QEMU instance.
+| | ... | - ${jumbo_frames} - Jumbo frames are used (True) or are not used
+| | ... | (False) in the test.
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Configure '2' guest VMs with dpdk-testpmd connected via vhost-user \
+| | ... | \| Configure '2' guest VMs with dpdk-testpmd connected via vhost-user\
 | | ... | in 3-node circular topology \|
 | | ...
 | | :FOR | ${number} | IN RANGE | 1 | ${nr}+1
 | | | ${vm1}= | Configure guest VM with dpdk-testpmd connected via vhost-user
 | | | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM${number}
 | | | ... | skip=${skip_cpus} | count=${vm_cpus} | qemu_id=${number}
+| | | ... | jumbo_frames=${jumbo_frames}
 | | | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM${number} | ${vm1}
 | | | ${vm2}= | Configure guest VM with dpdk-testpmd connected via vhost-user
 | | | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM${number}
 | | | ... | skip=${skip_cpus} | count=${vm_cpus} | qemu_id=${number}
+| | | ... | jumbo_frames=${jumbo_frames}
 | | | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM${number} | ${vm2}
 | | | Run Keyword Unless | ${qemu_built} | Set Suite Variable | ${qemu_built}
 | | | ... | ${True}
 | | ... | - vm_name - QemuUtil instance name. Type: string
 | | ... | - skip - number of cpus which will be skipped. Type: int
 | | ... | - count - number of cpus which will be allocated for qemu. Type: int
+| | ... | - jumbo_frames - Set True if jumbo frames are used in the test.
+| | ... | Type: bool
 | | ...
 | | ... | *Example:*
 | | ...
 | | ... | \| ${6} \| ${5} \|
 | | ...
 | | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} | ${skip}=${6}
-| | ... | ${count}=${5}
+| | ... | ${count}=${5} | ${jumbo_frames}=${False}
 | | ...
 | | Import Library | resources.libraries.python.QemuUtils
 | | ... | WITH NAME | ${vm_name}
 | | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa}
 | | ... | skip_cnt=${skip} | cpu_cnt=${count} | smt_used=${True}
 | | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1}
+| | ... | jumbo_frames=${jumbo_frames}
 | | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2}
+| | ... | jumbo_frames=${jumbo_frames}
 | | ${apply_patch}= | Set Variable If | "${perf_qemu_qsz}" == "256" | ${False}
 | | ... | ${True}
 | | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
 | | ${vm}= | Run keyword | ${vm_name}.Qemu Start
 | | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus}
 | | Run keyword If | ${use_tuned_cfs} | ${vm_name}.Qemu Set Scheduler Policy
+| | ${max_pkt_len}= | Set Variable If | ${jumbo_frames} | 9000 | ${EMPTY}
 | | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f | eal_mem_channels=4
 | | ... | pmd_fwd_mode=io | pmd_disable_hw_vlan=${True}
 | | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz}
+| | ... | pmd_max_pkt_len=${max_pkt_len}
 | | Return From Keyword | ${vm}
 
 | Configure guest VM with dpdk-testpmd-mac connected via vhost-user
 | | ... | Type: integer
 | | ... | - qemu_id - Qemu Id when starting more then one guest VM on DUT node.
 | | ... | Type: integer
+| | ... | - jumbo_frames - Set True if jumbo frames are used in the test.
+| | ... | Type: bool
 | | ...
 | | ... | *Example:*
 | | ...
 | | ...
 | | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name}
 | | ... | ${eth0_mac} | ${eth1_mac} | ${skip}=${6} | ${count}=${5}
-| | ... | ${qemu_id}=${1}
+| | ... | ${qemu_id}=${1} | ${jumbo_frames}=${False}
 | | ...
 | | Import Library | resources.libraries.python.QemuUtils | qemu_id=${qemu_id}
 | | ... | WITH NAME | ${vm_name}
 | | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa}
 | | ... | skip_cnt=${skip_cnt} | cpu_cnt=${count} | smt_used=${False}
 | | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1}
+| | ... | jumbo_frames=${jumbo_frames}
 | | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2}
+| | ... | jumbo_frames=${jumbo_frames}
 | | ${apply_patch}= | Set Variable If | "${perf_qemu_qsz}" == "256" | ${False}
 | | ... | ${True}
 | | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
 | | ${vm}= | Run keyword | ${vm_name}.Qemu Start
 | | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus}
 | | Run keyword If | ${use_tuned_cfs} | ${vm_name}.Qemu Set Scheduler Policy
+| | ${max_pkt_len}= | Set Variable If | ${jumbo_frames} | 9000 | ${EMPTY}
 | | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f
 | | ... | eal_mem_channels=4 | pmd_fwd_mode=mac | pmd_eth_peer_0=0,${eth0_mac}
 | | ... | pmd_eth_peer_1=1,${eth1_mac} | pmd_disable_hw_vlan=${True}
 | | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz}
+| | ... | pmd_max_pkt_len=${max_pkt_len}
 | | Return From Keyword | ${vm}
 
 | Configure '${nr}' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology
 | | ... | - ${system_cpus} - Number of CPUs allocated for OS itself.
 | | ... | - ${vpp_cpus} - Number of CPUs allocated for VPP.
 | | ... | - ${vm_cpus} - Number of CPUs to be allocated per QEMU instance.
+| | ... | - ${jumbo_frames} - Jumbo frames are used (True) or are not used
+| | ... | (False) in the test.
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user \
+| | ... | \| Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user\
 | | ... | in 3-node circular topology \|
 | | ...
 | | :FOR | ${number} | IN RANGE | 1 | ${nr}+1
 | | | ... | ${dut1-vhost-${number}-if1_mac}
 | | | ... | ${dut1-vhost-${number}-if2_mac} | skip=${skip_cpus}
 | | | ... | count=${vm_cpus} | qemu_id=${number}
+| | | ... | jumbo_frames=${jumbo_frames}
 | | | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM${number} | ${vm1}
 | | | ${vm2}=
 | | | ... | Configure guest VM with dpdk-testpmd-mac connected via vhost-user
 | | | ... | ${dut2-vhost-${number}-if1_mac}
 | | | ... | ${dut2-vhost-${number}-if2_mac} | skip=${skip_cpus}
 | | | ... | count=${vm_cpus} | qemu_id=${number}
+| | | ... | jumbo_frames=${jumbo_frames}
 | | | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM${number} | ${vm2}
 | | | Run Keyword Unless | ${qemu_built} | Set Suite Variable | ${qemu_built}
 | | | ... | ${True}
 | | ... | - eth1_mac - MAC address of second Vhost interface. Type: string
 | | ... | - skip - number of cpus which will be skipped. Type: int
 | | ... | - count - number of cpus which will be allocated for qemu. Type: int
+| | ... | - jumbo_frames - Set True if jumbo frames are used in the test.
+| | ... | Type: bool
 | | ...
 | | ... | *Example:*
 | | ...
 | | ...
 | | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name}
 | | ... | ${eth0_mac} | ${eth1_mac} | ${skip}=${6} | ${count}=${5}
+| | ... | ${jumbo_frames}=${False}
 | | ...
 | | Import Library | resources.libraries.python.QemuUtils
 | | ... | WITH NAME | ${vm_name}
 | | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa}
 | | ... | skip_cnt=${skip} | cpu_cnt=${count} | smt_used=${True}
 | | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1}
+| | ... | jumbo_frames=${jumbo_frames}
 | | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2}
+| | ... | jumbo_frames=${jumbo_frames}
 | | ${apply_patch}= | Set Variable If | "${perf_qemu_qsz}" == "256" | ${False}
 | | ... | ${True}
 | | Run Keyword Unless | ${qemu_built} | ${vm_name}.Build QEMU | ${dut_node}
 | | ${vm}= | Run keyword | ${vm_name}.Qemu Start
 | | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus}
 | | Run keyword If | ${use_tuned_cfs} | ${vm_name}.Qemu Set Scheduler Policy
+| | ${max_pkt_len}= | Set Variable If | ${jumbo_frames} | 9000 | ${EMPTY}
 | | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f
 | | ... | eal_mem_channels=4 | pmd_fwd_mode=mac | pmd_eth_peer_0=0,${eth0_mac}
 | | ... | pmd_eth_peer_1=1,${eth1_mac} | pmd_disable_hw_vlan=${True}
 | | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz}
+| | ... | pmd_max_pkt_len=${max_pkt_len}
 | | Return From Keyword | ${vm}
 
 | Configure guest VM with linux bridge connected via vhost-user
 | | ...
 | | ... | *Note:*
 | | ... | Socket paths for Memif are defined in following format:
-| | ... | - /tmp/memif-${number}-1
-| | ... | - /tmp/memif-${number}-2
+| | ... | - /tmp/memif-DUT1_VNF${number}-${sid}
 | | ...
 | | ... | *Example:*
 | | ...
 | | Set Interface State | ${dut2} | ${dut2_if1} | up
 | | Set Interface State | ${dut2} | ${dut2_if2} | up
 | | :FOR | ${number} | IN RANGE | 1 | ${nr}+1
-| |      | ${sock1}= | Set Variable | /tmp/memif-DUT1_VNF${number}-1
-| |      | ${sock2}= | Set Variable | /tmp/memif-DUT1_VNF${number}-2
-| |      | ${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_xconnect_if1}= | Set Variable If | ${number}==1 | ${dut1_if1}
-| |      | ... | ${dut1-memif-${prev_index}-if2}
-| |      | Configure L2XC | ${dut1} | ${dut1_xconnect_if1}
-| |      | ... | ${dut1-memif-${number}-if1}
-| |      | ${sock1}= | Set Variable | /tmp/memif-DUT2_VNF${number}-1
-| |      | ${sock2}= | Set Variable | /tmp/memif-DUT2_VNF${number}-2
-| |      | Set up memif interfaces on DUT node | ${dut2}
-| |      | ... | ${sock1} | ${sock2} | ${number} | dut2-memif-${number}-if1
-| |      | ... | dut2-memif-${number}-if2
-| |      | ${dut2_xconnect_if1}= | Set Variable If | ${number}==1 | ${dut2_if1}
-| |      | ... | ${dut2-memif-${prev_index}-if2}
-| |      | Configure L2XC | ${dut2} | ${dut2_xconnect_if1}
-| |      | ... | ${dut2-memif-${number}-if1}
-| |      | Run Keyword If | ${number}==${nr} | Configure L2XC
-| |      | ... | ${dut1} | ${dut1-memif-${number}-if2} | ${dut1_if2}
-| |      | Run Keyword If | ${number}==${nr} | Configure L2XC
-| |      | ... | ${dut2} | ${dut2-memif-${number}-if2} | ${dut2_if2}
+| | | ${sock1}= | Set Variable | memif-DUT1_VNF
+| | | ${sock2}= | Set Variable | memif-DUT1_VNF
+| | | ${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_xconnect_if1}= | Set Variable If | ${number}==1 | ${dut1_if1}
+| | | ... | ${dut1-memif-${prev_index}-if2}
+| | | Configure L2XC | ${dut1} | ${dut1_xconnect_if1}
+| | | ... | ${dut1-memif-${number}-if1}
+| | | ${sock1}= | Set Variable | memif-DUT2_VNF
+| | | ${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_xconnect_if1}= | Set Variable If | ${number}==1 | ${dut2_if1}
+| | | ... | ${dut2-memif-${prev_index}-if2}
+| | | Configure L2XC | ${dut2} | ${dut2_xconnect_if1}
+| | | ... | ${dut2-memif-${number}-if1}
+| | | Run Keyword If | ${number}==${nr} | Configure L2XC
+| | | ... | ${dut1} | ${dut1-memif-${number}-if2} | ${dut1_if2}
+| | | Run Keyword If | ${number}==${nr} | Configure L2XC
+| | | ... | ${dut2} | ${dut2-memif-${number}-if2} | ${dut2_if2}
 
 | Initialize L2 Bridge Domain for '${nr}' memif pairs in 3-node circular topology
 | | [Documentation]
 | | ...
 | | ... | *Note:*
 | | ... | Socket paths for Memif are defined in following format:
-| | ... | - /tmp/memif-${number}-1
-| | ... | - /tmp/memif-${number}-2
+| | ... | - /tmp/memif-DUT1_VNF${number}-${sid}
 | | ...
 | | ... | *Example:*
 | | ...
 | | Add interface to bridge domain | ${dut2} | ${dut2_if1} | ${1}
 | | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2}
 | | :FOR | ${number} | IN RANGE | 1 | ${nr}+1
-| | | ${sock1}= | Set Variable | /tmp/memif-DUT1_VNF${number}-1
-| | | ${sock2}= | Set Variable | /tmp/memif-DUT1_VNF${number}-2
+| | | ${sock1}= | Set Variable | memif-DUT1_VNF
+| | | ${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}-if1} | ${number}
 | | | Add interface to bridge domain | ${dut1}
 | | | ... | ${dut1-memif-${number}-if2} | ${bd_id2}
-| | | ${sock1}= | Set Variable | /tmp/memif-DUT2_VNF${number}-1
-| | | ${sock2}= | Set Variable | /tmp/memif-DUT2_VNF${number}-2
+| | | ${sock1}= | Set Variable | memif-DUT2_VNF
+| | | ${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}-if1} | ${number}
 | | | Add interface to bridge domain | ${dut2}
 | | | ... | ${dut2-memif-${number}-if2} | ${bd_id2}
+