Add dot1q-l2bdbase-2vhost-[ndrpdr|mrr] perf tests for 2-node topology
[csit.git] / resources / libraries / robot / performance / performance_configuration.robot
index 88847b5..3027daf 100644 (file)
 | | | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if2_2}
 | | All VPP Interfaces Ready Wait | ${nodes}
 
+| Set single interfaces in path up
+| | [Documentation]
+| | ... | *Set UP state on single VPP interfaces in path on all DUT nodes and set
+| | ... | maximal MTU.*
+| | ...
+# TODO: Rework KW to set all interfaces in path UP and set MTU (including
+# software interfaces. Run KW at the start phase of VPP setup to split
+# from other "functional" configuration. This will allow modularity of this
+# library
+| | ${duts}= | Get Matches | ${nodes} | DUT*
+| | :FOR | ${dut} | IN | @{duts}
+| | | ${if1_status} | ${value}= | Run Keyword And Ignore Error
+| | | ... | Variable Should Exist | ${${dut}_if1}
+| | | Run Keyword If | '${if1_status}' == 'PASS'
+| | | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if1} | up
+| | | ... | ELSE
+| | | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if1_1} | up
+| | | Run Keyword Unless | '${if1_status}' == 'PASS'
+| | | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if1_2} | up
+| | All VPP Interfaces Ready Wait | ${nodes}
+| | ${duts}= | Get Matches | ${nodes} | DUT*
+| | :FOR | ${dut} | IN | @{duts}
+| | | ${if1_status} | ${value}= | Run Keyword And Ignore Error
+| | | ... | Variable Should Exist | ${${dut}_if1}
+| | | Run Keyword If | '${if1_status}' == 'PASS'
+| | | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if1}
+| | | ... | ELSE
+| | | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if1_1}
+| | | Run Keyword Unless | '${if1_status}' == 'PASS'
+| | | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if1_2}
+| | All VPP Interfaces Ready Wait | ${nodes}
+
 | Initialize AVF interfaces
 | | [Documentation]
 | | ... | Initialize AVF interfaces on each DUT. Interfaces are brought up.
 | | ... | DUT nodes in 2-node / 3-node circular topology
 | | ...
 | | ... | *Arguments:*
-| | ... | - ${count} - IP route count. Type: integer
+| | ... | - count - IP route count. Type: integer
 | | ...
 | | ... | *Return:*
 | | ... | - No value returned
 | | Add arp on dut | ${dut} | ${dut_if2} | 3.3.3.1 | ${tg1_if2_mac}
 | | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} | 1.1.1.2 | 30
 | | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 2.2.2.1 | 30
+| | ... | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 2.2.2.1
+| | ... | 30
 | | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 2.2.2.2 | 30
+| | ... | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 2.2.2.2
+| | ... | 30
 | | Configure IP addresses on interfaces | ${dut} | ${dut_if2} | 3.3.3.2 | 30
 | | Vpp Route Add | ${dut1} | 10.0.0.0 | 32 | 1.1.1.1 | ${dut1_if1}
 | | ... | count=${count}
 | | [Documentation]
 | | ... | Create pairs of Vhost-User interfaces for defined number of VMs on
 | | ... | VPP node. Set UP state of all VPP interfaces in path. Create
-| | ... | ${vm_count}+1 FIB tables on DUT with multipath routing. Assign each
+| | ... | vm_count+1 FIB tables on DUT with multipath routing. Assign each
 | | ... | Virtual interface to FIB table with Physical interface or Virtual
 | | ... | interface on both nodes. Setup IPv4 addresses with /30 prefix on
 | | ... | DUT-TG links. Set routing on DUT nodes in all FIB tables with prefix
 | | [Documentation]
 | | ... | Create pairs of Vhost-User interfaces for defined number of VMs on all
 | | ... | VPP nodes. Set UP state of all VPP interfaces in path. Create
-| | ... | ${vm_count}+1 FIB tables on each DUT with multipath routing. Assign
+| | ... | vm_count+1 FIB tables on each DUT with multipath routing. Assign
 | | ... | each Virtual interface to FIB table with Physical interface or Virtual
 | | ... | interface on both nodes. Setup IPv4 addresses with /30 prefix on
 | | ... | DUT-TG links and /30 prefix on DUT1-DUT2 link. Set routing on all DUT
 | | ...
 | | ... | *Note:*
 | | ... | Socket paths for VM are defined in following format:
-| | ... | - /tmp/sock-${VM_ID}-1
-| | ... | - /tmp/sock-${VM_ID}-2
+| | ... | - /tmp/sock-\${VM_ID}-1
+| | ... | - /tmp/sock-\${VM_ID}-2
 | | ...
 | | ... | *Example:*
 | | ...
 | | | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | ${ip_net_vif2}.2
 | | | ... | ${dut2-vhost-${number}-if2} | vrf=${fib_table_2}
 
+| Initialize IPv4 forwarding with VLAN dot1q sub-interfaces in circular topology
+| | [Documentation]
+| | ... | Set UP state on VPP interfaces in path on nodes in 2-node / 3-node
+| | ... | circular topology. In case of 3-node topology create VLAN
+| | ... | sub-interfaces between DUTs. In case of 2-node topology create VLAN
+| | ... | sub-interface on dut1-if2 interface. Get the interface MAC addresses
+| | ... | and setup ARPs. Setup IPv4 addresses with /30 prefix on DUT-TG links
+| | ... | and set routing with prefix /30. In case of 3-node set IPv4 adresses
+| | ... | with /30 prefix on VLAN and set routing on both DUT nodes with prefix
+| | ... | /30. Set next hop of neighbour DUT interface IPv4 address. All
+| | ... | interfaces are brought up.
+| | ...
+| | ... | *Arguments:*
+| | ... | - tg_if1_net - TG interface 1 IP subnet used by traffic generator.
+| | ... | Type: integer
+| | ... | - tg_if2_net - TG interface 2 IP subnet used by traffic generator.
+| | ... | Type: integer
+| | ... | - subid - ID of the sub-interface to be created. Type: string
+| | ... | - tag_rewrite - Method of tag rewrite. Type: string
+| | ...
+| | ... | _NOTE:_ This KW uses following test case variables:
+| | ... | - dut1 - DUT1 node.
+| | ... | - dut2 - DUT2 node.
+| | ... | - dut1_if2 - DUT1 interface towards DUT2.
+| | ... | - dut2_if1 - DUT2 interface towards DUT1.
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Initialize IPv4 forwarding with VLAN dot1q sub-interfaces\
+| | ... | in circular topology \| 10.10.10.0 \| 20.20.20.0 \| 10 \| pop-1 \|
+| | ...
+| | [Arguments] | ${tg_if1_net} | ${tg_if2_net} | ${subid} | ${tag_rewrite}
+| | ...
+| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | ${dut2}
+| | ...
+| | Set interfaces in path up
+| | ...
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Initialize VLAN dot1q sub-interfaces in circular topology
+| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid}
+| | ... | ELSE | Initialize VLAN dot1q sub-interfaces in circular topology
+| | ... | ${dut1} | ${dut1_if2} | SUB_ID=${subid}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Configure L2 tag rewrite method on interfaces | ${dut1}
+| | ... | ${subif_index_1} | ${dut2} | ${subif_index_2} | ${tag_rewrite}
+| | ... | ELSE | Configure L2 tag rewrite method on interfaces
+| | ... | ${dut1} | ${subif_index_1} | TAG_REWRITE_METHOD=${tag_rewrite}
+| | ...
+| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1}
+| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2}
+| | ${dut1_if2_mac}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Get Interface MAC | ${dut1} | ${dut1_if2}
+| | ${dut2_if1_mac}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Get Interface MAC | ${dut2} | ${dut2_if1}
+| | Add arp on dut | ${dut1} | ${dut1_if1} | 1.1.1.1 | ${tg1_if1_mac}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Add arp on dut | ${dut1} | ${subif_index_1} | 2.2.2.2
+| | ... | ${dut2_if1_mac}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Add arp on dut | ${dut2} | ${subif_index_2} | 2.2.2.1
+| | ... | ${dut1_if2_mac}
+| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Set Variable | ${dut2}
+| | ... | ELSE | Set Variable | ${dut1}
+| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Set Variable | ${dut2_if2}
+| | ... | ELSE | Set Variable | ${subif_index_1}
+| | Add arp on dut | ${dut} | ${dut_if2} | 3.3.3.1 | ${tg1_if2_mac}
+| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} | 1.1.1.2 | 30
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Configure IP addresses on interfaces | ${dut1} | ${subif_index_1}
+| | ... | 2.2.2.1 | 30
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Configure IP addresses on interfaces | ${dut2} | ${subif_index_2}
+| | ... | 2.2.2.2 | 30
+| | Configure IP addresses on interfaces | ${dut} | ${dut_if2} | 3.3.3.2 | 30
+| | Vpp Route Add | ${dut1} | ${tg_if1_net} | 30 | 1.1.1.1 | ${dut1_if1}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut1} | ${tg_if2_net} | 30 | 2.2.2.2
+| | ... | ${subif_index_1}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut2} | ${tg_if1_net} | 30 | 2.2.2.1
+| | ... | ${subif_index_2}
+| | Vpp Route Add | ${dut} | ${tg_if2_net} | 30 | 3.3.3.1 | ${dut_if2}
+
 | Initialize IPv4 policer 2r3c-${t} in circular topology
 | | [Documentation]
 | | ... | Setup of 2r3c color-aware or color-blind policer with dst ip match
 | | Vpp Route Add | ${dut1} | 2001:2::0 | ${prefix} | 2001:3::2 | ${dut1_if2}
 | | Vpp Route Add | ${dut2} | 2001:1::0 | ${prefix} | 2001:3::1 | ${dut2_if1}
 
-| Initialize IPv6 forwarding with scaling in 3-node circular topology
+| Initialize IPv6 forwarding with scaling in circular topology
 | | [Documentation]
 | | ... | Custom setup of IPv6 topology with scalability of ip routes on all
-| | ... | DUT nodes in 3-node circular topology
+| | ... | DUT nodes in 2-node / 3-node circular topology
 | | ...
 | | ... | *Arguments:*
-| | ... | - ${count} - IP route count. Type: integer
+| | ... | - count - IP route count. Type: integer
 | | ...
 | | ... | *Return:*
 | | ... | - No value returned
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Initialize IPv6 forwarding with scaling in 3-node circular \
+| | ... | \| Initialize IPv6 forwarding with scaling in circular \
 | | ... | topology \| 100000 \|
 | | ...
 | | [Arguments] | ${count}
 | | ...
+| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | ${dut2}
+| | ...
 | | Set interfaces in path up
-| | ${subn_prefix}= | Set Variable | 64
-| | ${host_prefix}= | Set Variable | 128
-| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if1} | 2001:3::1 | ${subn_prefix}
-| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if2} | 2001:4::1 | ${subn_prefix}
-| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if1} | 2001:4::2 | ${subn_prefix}
-| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if2} | 2001:5::1 | ${subn_prefix}
+| | ...
 | | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1}
 | | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2}
-| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2}
-| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1}
+| | ${dut1_if2_mac}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Get Interface MAC | ${dut1} | ${dut1_if2}
+| | ${dut2_if1_mac}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Get Interface MAC | ${dut2} | ${dut2_if1}
+| | ${prefix}= | Set Variable | 64
+| | ${host_prefix}= | Set Variable | 128
+| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if1} | 2001:3::1 | ${prefix}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if2} | 2001:4::1 | ${prefix}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if1} | 2001:4::2 | ${prefix}
+| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Set Variable | ${dut2}
+| | ... | ELSE | Set Variable | ${dut1}
+| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Set Variable | ${dut2_if2}
+| | ... | ELSE | Set Variable | ${dut1_if2}
+| | VPP Set If IPv6 Addr | ${dut} | ${dut_if2} | 2001:5::1 | ${prefix}
 | | Suppress ICMPv6 router advertisement message | ${nodes}
 | | Add Ip Neighbor | ${dut1} | ${dut1_if1} | 2001:3::2 | ${tg1_if1_mac}
-| | Add Ip Neighbor | ${dut1} | ${dut1_if2} | 2001:4::2 | ${dut2_if1_mac}
-| | Add Ip Neighbor | ${dut2} | ${dut2_if1} | 2001:4::1 | ${dut1_if2_mac}
-| | Add Ip Neighbor | ${dut2} | ${dut2_if2} | 2001:5::2 | ${tg1_if2_mac}
-| | Vpp Route Add | ${dut1} | 2001:2::0 | ${host_prefix} | 2001:4::2
-| | ... | interface=${dut1_if2} | count=${count}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Add Ip Neighbor | ${dut1} | ${dut1_if2} | 2001:4::2 | ${dut2_if1_mac}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Add Ip Neighbor | ${dut2} | ${dut2_if1} | 2001:4::1 | ${dut1_if2_mac}
+| | Add Ip Neighbor | ${dut} | ${dut_if2} | 2001:5::2 | ${tg1_if2_mac}
 | | Vpp Route Add | ${dut1} | 2001:1::0 | ${host_prefix} | 2001:3::2
 | | ... | interface=${dut1_if1} | count=${count}
-| | Vpp Route Add | ${dut2} | 2001:1::0 | ${host_prefix} | 2001:4::1
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut1} | 2001:2::0 | ${host_prefix} | 2001:4::2
+| | ... | interface=${dut1_if2} | count=${count}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut2} | 2001:1::0 | ${host_prefix} | 2001:4::1
 | | ... | interface=${dut2_if1} | count=${count}
-| | Vpp Route Add | ${dut2} | 2001:2::0 | ${host_prefix} | 2001:5::2
-| | ... | interface=${dut2_if2} | count=${count}
+| | Vpp Route Add | ${dut} | 2001:2::0 | ${host_prefix} | 2001:5::2
+| | ... | interface=${dut_if2} | count=${count}
+
+| Initialize IPv6 forwarding with VLAN dot1q sub-interfaces in circular topology
+| | [Documentation]
+| | ... | Set UP state on VPP interfaces in path on nodes in 2-node / 3-node
+| | ... | circular topology. In case of 3-node topology create VLAN
+| | ... | sub-interfaces between DUTs. In case of 2-node topology create VLAN
+| | ... | sub-interface on dut1-if2 interface. Get the interface MAC addresses
+| | ... | and setup ARPs. Setup IPv6 addresses with /64 prefix on DUT-TG links
+| | ... | and set routing with prefix /64. In case of 3-node set IPv6 adresses
+| | ... | with /64 prefix on VLAN and set routing on both DUT nodes with prefix
+| | ... | /64. Set next hop of neighbour DUT interface IPv6 address. All
+| | ... | interfaces are brought up.
+| | ...
+| | ... | *Arguments:*
+| | ... | - tg_if1_net - TG interface 1 IPv6 subnet used by traffic generator.
+| | ... | Type: integer
+| | ... | - tg_if2_net - TG interface 2 IPv6 subnet used by traffic generator.
+| | ... | Type: integer
+| | ... | - subid - ID of the sub-interface to be created. Type: string
+| | ... | - tag_rewrite - Method of tag rewrite. Type: string
+| | ...
+| | ... | _NOTE:_ This KW uses following test case variables:
+| | ... | - dut1 - DUT1 node.
+| | ... | - dut2 - DUT2 node.
+| | ... | - dut1_if2 - DUT1 interface towards DUT2.
+| | ... | - dut2_if1 - DUT2 interface towards DUT1.
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Initialize IPv6 forwarding with VLAN dot1q sub-interfaces\
+| | ... | in circular topology \| 2001:1::0 \| 2001:2::0 \| 10 \| pop-1 \|
+| | ...
+| | [Arguments] | ${tg_if1_net} | ${tg_if2_net} | ${subid} | ${tag_rewrite}
+| | ...
+| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | ${dut2}
+| | ...
+| | Set interfaces in path up
+| | ...
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Initialize VLAN dot1q sub-interfaces in circular topology
+| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid}
+| | ... | ELSE | Initialize VLAN dot1q sub-interfaces in circular topology
+| | ... | ${dut1} | ${dut1_if2} | SUB_ID=${subid}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Configure L2 tag rewrite method on interfaces | ${dut1}
+| | ... | ${subif_index_1} | ${dut2} | ${subif_index_2} | ${tag_rewrite}
+| | ... | ELSE | Configure L2 tag rewrite method on interfaces
+| | ... | ${dut1} | ${subif_index_1} | TAG_REWRITE_METHOD=${tag_rewrite}
+| | ...
+| | ${prefix}= | Set Variable | 64
+| | ${host_prefix}= | Set Variable | 64
+| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1}
+| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2}
+| | ${dut1_if2_mac}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Get Interface MAC | ${dut1} | ${dut1_if2}
+| | ${dut2_if1_mac}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Get Interface MAC | ${dut2} | ${dut2_if1}
+| | Add Ip Neighbor | ${dut1} | ${dut1_if1} | 2002:1::1 | ${tg1_if1_mac}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Add Ip Neighbor | ${dut1} | ${subif_index_1} | 2002:2::2
+| | ... | ${dut2_if1_mac}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Add Ip Neighbor | ${dut2} | ${subif_index_2} | 2002:2::1
+| | ... | ${dut1_if2_mac}
+| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Set Variable | ${dut2}
+| | ... | ELSE | Set Variable | ${dut1}
+| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Set Variable | ${dut2_if2}
+| | ... | ELSE | Set Variable | ${subif_index_1}
+| | Add Ip Neighbor | ${dut} | ${dut_if2} | 2002:3::1 | ${tg1_if2_mac}
+| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if1} | 2002:1::2 | ${prefix}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Set If IPv6 Addr | ${dut1} | ${subif_index_1} | 2002:2::1
+| | ... | ${prefix}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Set If IPv6 Addr | ${dut2} | ${subif_index_2} | 2002:2::2
+| | ... | ${prefix}
+| | VPP Set If IPv6 Addr | ${dut} | ${dut_if2} | 2002:3::2 | ${prefix}
+| | Suppress ICMPv6 router advertisement message | ${nodes}
+| | Vpp Route Add | ${dut1} | ${tg_if1_net} | ${host_prefix} | 2002:1::1
+| | ... | interface=${dut1_if1}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut1} | ${tg_if2_net} | ${host_prefix} | 2002:2::2
+| | ... | interface=${subif_index_1}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut2} | ${tg_if1_net} | ${host_prefix} | 2002:2::1
+| | ... | interface=${subif_index_2}
+| | Vpp Route Add | ${dut} | ${tg_if2_net} | ${host_prefix} | 2002:3::1
+| | ... | interface=${dut_if2}
 
 | Initialize IPv6 iAcl whitelist in 3-node circular topology
 | | [Documentation]
 | | ... | routes on both DUT nodes.
 | | ...
 | | ... | *Note:*
-| | ... | KW uses test variable ${rxq_count_int} set by KW Add worker threads
+| | ... | KW uses test variable rxq_count_int set by KW Add worker threads
 | | ... | and rxqueues to all DUTs
 | | ...
 | | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1}
 | | ...
 | | ... | *Note:*
 | | ... | Socket paths for VM are defined in following format:
-| | ... | - /tmp/sock-${VM_ID}-1
-| | ... | - /tmp/sock-${VM_ID}-2
+| | ... | - /tmp/sock-\${VM_ID}-1
+| | ... | - /tmp/sock-\${VM_ID}-2
 | | ...
 | | ... | *Example:*
 | | ...
 | | [Arguments] | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite}
 | | ...
 | | Set interfaces in path up
-| | Initialize VLAN dot1q sub-interfaces in 3-node circular topology
+| | Initialize VLAN dot1q sub-interfaces in circular topology
 | | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid}
 | | Configure L2 tag rewrite method on interfaces
 | | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2}
 | | VPP Set interface MTU | ${dut1} | ${dut1_eth_bond_if1}
 | | Set Interface State | ${dut2} | ${dut2_eth_bond_if1} | up
 | | VPP Set interface MTU | ${dut2} | ${dut2_eth_bond_if1}
-| | Initialize VLAN dot1q sub-interfaces in 3-node circular topology
+| | Initialize VLAN dot1q sub-interfaces in circular topology
 | | ... | ${dut1} | ${dut1_eth_bond_if1} | ${dut2} | ${dut2_eth_bond_if1}
 | | ... | ${subid}
 | | Configure L2 tag rewrite method on interfaces
 | | ... | VPP Enslave Physical Interface | ${dut2} | ${dut2_if1_2}
 | | ... | ${dut2_eth_bond_if1}
 | | VPP Show Bond Data On All Nodes | ${nodes} | details=${TRUE}
-| | Initialize VLAN dot1q sub-interfaces in 3-node circular topology
+| | Initialize VLAN dot1q sub-interfaces in circular topology
 | | ... | ${dut1} | ${dut1_eth_bond_if1} | ${dut2} | ${dut2_eth_bond_if1}
 | | ... | ${subid}
 | | Configure L2 tag rewrite method on interfaces
 | | Configure L2XC | ${dut2} | ${subif_index_2} | ${vhost_if1}
 | | Configure L2XC | ${dut2} | ${dut2_if2} | ${vhost_if2}
 
-| Initialize L2 bridge domain in 2-node circular topology
-| | [Documentation]
-| | ... | Setup L2 DB topology by adding two interfaces on DUT into BD
-| | ... | that is created automatically with index 1. Learning is enabled.
-| | ... | Interfaces are brought up.
-| | ...
-| | ... | *Arguments:*
-| | ... | - bd_id - Bridge domain ID. Type: integer
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| Initialize L2 bridge domain in 2-node circular topology \| 1 \|
-| | ...
-| | [Arguments] | ${bd_id}=${1}
-| | ...
-| | Set interfaces in path up
-| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id}
-| | Add interface to bridge domain | ${dut1} | ${dut1_if2} | ${bd_id}
-
-| Initialize L2 bridge domain in 3-node circular topology
+| Initialize L2 bridge domain in circular topology
 | | [Documentation]
 | | ... | Setup L2 DB topology by adding two interfaces on each DUT into BD
 | | ... | that is created automatically with index 1. Learning is enabled.
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Initialize L2 bridge domain in 3-node circular topology \| 1 \|
+| | ... | \| Initialize L2 bridge domain in circular topology \| 1 \|
 | | ...
 | | [Arguments] | ${bd_id}=${1}
 | | ...
+| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | ${dut2}
+| | ...
 | | Set interfaces in path up
+| | ...
 | | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id}
 | | Add interface to bridge domain | ${dut1} | ${dut1_if2} | ${bd_id}
-| | Add interface to bridge domain | ${dut2} | ${dut2_if1} | ${bd_id}
-| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Add interface to bridge domain | ${dut2} | ${dut2_if1} | ${bd_id}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id}
 
 | Configure IPv4 ACLs
 | | [Documentation]
 | | ... | \| GigabitEthernet0/8/0 \|
 | | ...
 | | ... | _NOTE:_ This KW uses following test case variables:
-| | ... | - ${src_ip_start} - Source IP address start. Type: string
-| | ... | - ${dst_ip_start} - Destination IP address start. Type: string
-| | ... | - ${ip_step} - IP address step. Type: string
-| | ... | - ${sport_start} - Source port number start. Type: string
-| | ... | - ${dport_start} - Destination port number start. Type: string
-| | ... | - ${port_step} - Port number step. Type: string
-| | ... | - ${no_hit_aces_number} - Number of not-hitting ACEs to be configured.
+| | ... | - src_ip_start - Source IP address start. Type: string
+| | ... | - dst_ip_start - Destination IP address start. Type: string
+| | ... | - ip_step - IP address step. Type: string
+| | ... | - sport_start - Source port number start. Type: string
+| | ... | - dport_start - Destination port number start. Type: string
+| | ... | - port_step - Port number step. Type: string
+| | ... | - no_hit_aces_number - Number of not-hitting ACEs to be configured.
 | | ... | Type: integer
-| | ... | - ${acl_apply_type} - To what path apply the ACL - input or output.
+| | ... | - acl_apply_type - To what path apply the ACL - input or output.
 | | ... | Type: string
-| | ... | - ${acl_action} - Action for the rule - deny, permit, permit+reflect.
+| | ... | - acl_action - Action for the rule - deny, permit, permit+reflect.
 | | ... | Type: string
-| | ... | - ${trex_stream1_subnet} - IP subnet used by T-Rex in direction 0->1.
+| | ... | - trex_stream1_subnet - IP subnet used by T-Rex in direction 0->1.
 | | ... | Type: string
-| | ... | - ${trex_stream2_subnet} - IP subnet used by T-Rex in direction 1->0.
+| | ... | - trex_stream2_subnet - IP subnet used by T-Rex in direction 1->0.
 | | ... | Type: string
 | | ...
 | | [Arguments] | ${dut} | ${dut_if1}=${NONE} | ${dut_if2}=${NONE}
 | | ... | circular topology \|
 | | ...
 | | ... | _NOTE:_ This KW uses following test case variables:
-| | ... | - ${dut1} - DUT1 node.
-| | ... | - ${dut2} - DUT2 node.
-| | ... | - ${dut1_if1} - DUT1 interface towards TG.
-| | ... | - ${dut1_if2} - DUT1 interface towards DUT2.
-| | ... | - ${dut2_if1} - DUT2 interface towards DUT1.
-| | ... | - ${dut2_if2} - DUT2 interface towards TG.
+| | ... | - dut1 - DUT1 node.
+| | ... | - dut2 - DUT2 node.
+| | ... | - dut1_if1 - DUT1 interface towards TG.
+| | ... | - dut1_if2 - DUT1 interface towards DUT2.
+| | ... | - dut2_if1 - DUT2 interface towards DUT1.
+| | ... | - dut2_if2 - DUT2 interface towards TG.
 | | ...
 | | Set interfaces in path up
 | | Configure L2BD forwarding | ${dut1} | ${dut1_if1} | ${dut1_if2}
 | | ... | in 3-node circular topology \|
 | | ...
 | | ... | _NOTE:_ This KW uses following test case variables:
-| | ... | - ${tg} - TG node.
-| | ... | - ${dut1} - DUT1 node.
-| | ... | - ${dut2} - DUT2 node.
-| | ... | - ${tg_if1} - TG interface 1 towards DUT1.
-| | ... | - ${tg_if2} - TG interface 2 towards DUT2 (3-node topo) or DUT1
+| | ... | - tg - TG node.
+| | ... | - dut1 - DUT1 node.
+| | ... | - dut2 - DUT2 node.
+| | ... | - tg_if1 - TG interface 1 towards DUT1.
+| | ... | - tg_if2 - TG interface 2 towards DUT2 (3-node topo) or DUT1
 | | ... | (2-node topo).
-| | ... | - ${dut1_if1} - DUT1 interface 1 towards TG.
-| | ... | - ${dut1_if2} - DUT1 interface 2 towards DUT2 (3-node topo) or TG
+| | ... | - dut1_if1 - DUT1 interface 1 towards TG.
+| | ... | - dut1_if2 - DUT1 interface 2 towards DUT2 (3-node topo) or TG
 | | ... | (2-node topo).
-| | ... | - ${dut2_if1} - DUT2 interface 1 towards DUT1.
-| | ... | - ${dut2_if2} - DUT2 interface 2 towards TG.
+| | ... | - dut2_if1 - DUT2 interface 1 towards DUT1.
+| | ... | - dut2_if2 - DUT2 interface 2 towards TG.
 | | ...
 | | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
 | | ... | Variable Should Exist | ${dut2}
 | | ... | \| GigabitEthernet0/8/0 \|
 | | ...
 | | ... | _NOTE:_ This KW uses following test case variables:
-| | ... | - ${src_ip_start} - Source IP address start. Type: string
-| | ... | - ${ip_step} - IP address step. Type: string
-| | ... | - ${src_mac_start} - Source MAC address start in format with colons.
+| | ... | - src_ip_start - Source IP address start. Type: string
+| | ... | - ip_step - IP address step. Type: string
+| | ... | - src_mac_start - Source MAC address start in format with colons.
 | | ... | Type: string
-| | ... | - ${src_mac_step} - Source MAC address step. Type: string
-| | ... | - ${src_mac_mask} - Source MAC address mask. 00:00:00:00:00:00 is a
+| | ... | - src_mac_step - Source MAC address step. Type: string
+| | ... | - src_mac_mask - Source MAC address mask. 00:00:00:00:00:00 is a
 | | ... | wildcard mask. Type: string
-| | ... | - ${no_hit_aces_number} - Number of not-hitting ACEs to be configured.
+| | ... | - no_hit_aces_number - Number of not-hitting ACEs to be configured.
 | | ... | Type: integer
-| | ... | - ${acl_action} - Action for the rule - deny, permit, permit+reflect.
+| | ... | - acl_action - Action for the rule - deny, permit, permit+reflect.
 | | ... | Type: string
-| | ... | - ${tg_stream1_subnet} - IP subnet used by TG in direction 0->1.
+| | ... | - tg_stream1_subnet - IP subnet used by TG in direction 0->1.
 | | ... | Type: string
-| | ... | - ${tg_stream2_subnet} - IP subnet used by TG in direction 1->0.
+| | ... | - tg_stream2_subnet - IP subnet used by TG in direction 1->0.
 | | ... | Type: string
-| | ... | - ${tg_stream1_mac} - Source MAC address of traffic stream 1.
+| | ... | - tg_stream1_mac - Source MAC address of traffic stream 1.
 | | ... | Type: string
-| | ... | - ${tg_stream2_mac} - Source MAC address of traffic stream 2.
+| | ... | - tg_stream2_mac - Source MAC address of traffic stream 2.
 | | ... | Type: string
-| | ... | - ${tg_mac_mask} - MAC address mask for traffic streams.
+| | ... | - tg_mac_mask - MAC address mask for traffic streams.
 | | ... | 00:00:00:00:00:00 is a wildcard mask. Type: string
 | | ...
 | | [Arguments] | ${dut} | ${dut_if1}=${NONE} | ${dut_if2}=${NONE}
 | | ... | circular topology \|
 | | ...
 | | ... | _NOTE 1:_ This KW uses following test case variables:
-| | ... | - ${tg} - TG node.
-| | ... | - ${dut1} - DUT1 node.
-| | ... | - ${dut2} - DUT2 node.
-| | ... | - ${tg_if1} - TG interface towards DUT1.
-| | ... | - ${tg_if2} - TG interface towards DUT2.
-| | ... | - ${dut1_if1} - DUT1 interface towards TG.
-| | ... | - ${dut1_if2} - DUT1 interface towards DUT2.
-| | ... | - ${dut2_if1} - DUT2 interface towards DUT1.
-| | ... | - ${dut2_if2} - DUT2 interface towards TG.
+| | ... | - tg - TG node.
+| | ... | - dut1 - DUT1 node.
+| | ... | - dut2 - DUT2 node.
+| | ... | - tg_if1 - TG interface towards DUT1.
+| | ... | - tg_if2 - TG interface towards DUT2.
+| | ... | - dut1_if1 - DUT1 interface towards TG.
+| | ... | - dut1_if2 - DUT1 interface towards DUT2.
+| | ... | - dut2_if1 - DUT2 interface towards DUT1.
+| | ... | - dut2_if2 - DUT2 interface towards TG.
 | | ...
 | | Set interfaces in path up
 | | Configure L2BD forwarding | ${dut1} | ${dut1_if1} | ${dut1_if2}
 | | ...
 | | ... | *Note:*
 | | ... | Socket paths for VM are defined in following format:
-| | ... | - /tmp/sock-${VM_ID}-1
-| | ... | - /tmp/sock-${VM_ID}-2
+| | ... | - /tmp/sock-\${VM_ID}-1
+| | ... | - /tmp/sock-\${VM_ID}-2
 | | ...
 | | ... | *Example:*
 | | ...
 | | Add interface to bridge domain | ${dut1} | ${vhost_if1} | ${dut1_bd_id1}
 | | Add interface to bridge domain | ${dut1} | ${vhost_if2} | ${dut1_bd_id2}
 
-| Initialize L2 bridge domains with VLAN dot1q sub-interfaces in a 3-node circular topology
+| Initialize L2 bridge domains with VLAN dot1q sub-interfaces in circular topology
 | | [Documentation]
-| | ... | Setup L2 bridge domain topology with learning enabled with VLAN
-| | ... | between DUTs by connecting physical and vlan interfaces on each DUT.
-| | ... | All interfaces are brought up.
+| | ... | Setup L2 bridge domain topology with learning enabled with VLAN by
+| | ... | connecting physical and vlan interfaces on each DUT. In case of 3-node
+| | ... | topology create VLAN sub-interfaces between DUTs. In case of 2-node
+| | ... | topology create VLAN sub-interface on dut1-if2 interface. All
+| | ... | interfaces are brought up.
 | | ...
 | | ... | *Arguments:*
 | | ... | - bd_id1 - Bridge domain ID. Type: integer
 | | ... | - tag_rewrite - Method of tag rewrite. Type: string
 | | ...
 | | ... | _NOTE:_ This KW uses following test case variables:
-| | ... | - ${dut1} - DUT1 node.
-| | ... | - ${dut2} - DUT2 node.
-| | ... | - ${dut1_if2} - DUT1 interface towards DUT2.
-| | ... | - ${dut2_if1} - DUT2 interface towards DUT1.
+| | ... | - dut1 - DUT1 node.
+| | ... | - dut2 - DUT2 node.
+| | ... | - dut1_if2 - DUT1 interface towards DUT2.
+| | ... | - dut2_if1 - DUT2 interface towards DUT1.
 | | ...
 | | ... | *Example:*
 | | ...
 | | ...
 | | [Arguments] | ${bd_id1} | ${bd_id2} | ${subid} | ${tag_rewrite}
 | | ...
+| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | ${dut2}
+| | ...
 | | Set interfaces in path up
-| | Initialize VLAN dot1q sub-interfaces in 3-node circular topology
+| | ...
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Initialize VLAN dot1q sub-interfaces in circular topology
 | | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid}
-| | Configure L2 tag rewrite method on interfaces
-| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2}
-| | ... | ${tag_rewrite}
+| | ... | ELSE | Initialize VLAN dot1q sub-interfaces in circular topology
+| | ... | ${dut1} | ${dut1_if2} | SUB_ID=${subid}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Configure L2 tag rewrite method on interfaces | ${dut1}
+| | ... | ${subif_index_1} | ${dut2} | ${subif_index_2} | ${tag_rewrite}
+| | ... | ELSE | Configure L2 tag rewrite method on interfaces
+| | ... | ${dut1} | ${subif_index_1} | TAG_REWRITE_METHOD=${tag_rewrite}
+| | ...
 | | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1}
 | | Add interface to bridge domain | ${dut1} | ${subif_index_1} | ${bd_id1}
-| | Add interface to bridge domain | ${dut2} | ${subif_index_2} | ${bd_id2}
-| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Add interface to bridge domain | ${dut2} | ${subif_index_2}
+| | ... | ${bd_id2}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Add interface to bridge domain | ${dut2} | ${dut2_if2}
+| | ... | ${bd_id2}
 
-| Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology
+| Initialize L2 bridge domains with Vhost-User and VLAN in circular topology
 | | [Documentation]
 | | ... | Create two Vhost-User interfaces on all defined VPP nodes. Add each
 | | ... | Vhost-User interface into L2 bridge domains with learning enabled
-| | ... | with physical inteface.
-| | ... | Setup VLAN between DUTs. All interfaces are brought up.
+| | ... | with physical inteface. In case of 3-node topology create VLAN
+| | ... | sub-interfaces between DUTs. In case of 2-node topology create VLAN
+| | ... | sub-interface on dut1-if2 interface. All interfaces are brought up.
 | | ...
 | | ... | *Arguments:*
 | | ... | - bd_id1 - Bridge domain ID. Type: integer
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| L2 bridge domains with Vhost-User and VLAN initialized in a 3-node\
-| | ... | circular topology \| 1 \| 2 \| /tmp/sock1 \| /tmp/sock2 \| 10 \
-| | ... | \| pop-1 \|
+| | ... | \| L2 bridge domains with Vhost-User and VLAN initialized in circular\
+| | ... | topology \| 1 \| 2 \| /tmp/sock1 \| /tmp/sock2 \| 10 \| pop-1 \|
 | | ...
 | | [Arguments] | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite}
 | | ...
+| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | ${dut2}
+| | ...
 | | Set interfaces in path up
-| | Initialize VLAN dot1q sub-interfaces in 3-node circular topology
+| | ...
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Initialize VLAN dot1q sub-interfaces in circular topology
 | | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid}
-| | Configure L2 tag rewrite method on interfaces
-| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2}
-| | ... | ${tag_rewrite}
+| | ... | ELSE | Initialize VLAN dot1q sub-interfaces in circular topology
+| | ... | ${dut1} | ${dut1_if2} | SUB_ID=${subid}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Configure L2 tag rewrite method on interfaces | ${dut1}
+| | ... | ${subif_index_1} | ${dut2} | ${subif_index_2} | ${tag_rewrite}
+| | ... | ELSE | Configure L2 tag rewrite method on interfaces
+| | ... | ${dut1} | ${subif_index_1} | TAG_REWRITE_METHOD=${tag_rewrite}
+| | ...
 | | Configure vhost interfaces for L2BD forwarding | ${dut1}
 | | ... | ${sock1} | ${sock2}
 | | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1}
 | | Add interface to bridge domain | ${dut1} | ${vhost_if1} | ${bd_id1}
 | | Add interface to bridge domain | ${dut1} | ${vhost_if2} | ${bd_id2}
 | | Add interface to bridge domain | ${dut1} | ${subif_index_1} | ${bd_id2}
-| | Configure vhost interfaces for L2BD forwarding | ${dut2}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Configure vhost interfaces for L2BD forwarding | ${dut2}
 | | ... | ${sock1} | ${sock2}
-| | Add interface to bridge domain | ${dut2} | ${subif_index_2} | ${bd_id1}
-| | Add interface to bridge domain | ${dut2} | ${vhost_if1} | ${bd_id1}
-| | Add interface to bridge domain | ${dut2} | ${vhost_if2} | ${bd_id2}
-| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Add interface to bridge domain | ${dut2} | ${subif_index_2}
+| | ... | ${bd_id1}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Add interface to bridge domain | ${dut2} | ${vhost_if1} | ${bd_id1}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Add interface to bridge domain | ${dut2} | ${vhost_if2} | ${bd_id2}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2}
 
 | Initialize L2 bridge domains with Vhost-User and VLAN with DPDK link bonding in a 3-node circular topology
 | | [Documentation]
 | | VPP Set interface MTU | ${dut1} | ${dut1_eth_bond_if1}
 | | Set Interface State | ${dut2} | ${dut2_eth_bond_if1} | up
 | | VPP Set interface MTU | ${dut2} | ${dut2_eth_bond_if1}
-| | Initialize VLAN dot1q sub-interfaces in 3-node circular topology
+| | Initialize VLAN dot1q sub-interfaces in circular topology
 | | ... | ${dut1} | ${dut1_eth_bond_if1} | ${dut2} | ${dut2_eth_bond_if1}
 | | ... | ${subid}
 | | Configure L2 tag rewrite method on interfaces
 | | ... | VPP Enslave Physical Interface | ${dut2} | ${dut2_if1_2}
 | | ... | ${dut2_eth_bond_if1}
 | | VPP Show Bond Data On All Nodes | ${nodes} | details=${TRUE}
-| | Initialize VLAN dot1q sub-interfaces in 3-node circular topology
+| | Initialize VLAN dot1q sub-interfaces in circular topology
 | | ... | ${dut1} | ${dut1_eth_bond_if1} | ${dut2} | ${dut2_eth_bond_if1}
 | | ... | ${subid}
 | | Configure L2 tag rewrite method on interfaces
 | | ...
 | | ${duts}= | Get Matches | ${nodes} | DUT*
 | | :FOR | ${dut} | IN | @{duts}
-| | | ${if1_pci}= | Run Keyword If | '${dut}' == 'DUT1' | Get Interface PCI Addr
-| | | ... | ${nodes['${dut}']} | ${${dut}_if1} | ELSE | Get Interface PCI Addr
-| | | ... | ${nodes['${dut}']} | ${${dut}_if2}
+| | | ${if1_pci}= |  Get Interface PCI Addr | ${nodes['${dut}']} | ${${dut}_if1}
 | | | Run keyword | ${dut}.Add DPDK Dev | ${if1_pci}
 | | | Set Test Variable | ${${dut}_if1_pci} | ${if1_pci}
 
 
 | Configure guest VMs with dpdk-testpmd connected via vhost-user on node
 | | [Documentation]
-| | ... | Start ${vm_count} QEMU guests with two vhost-user interfaces and\
+| | ... | Start vm_count QEMU guests with two vhost-user interfaces and\
 | | ... | interconnecting DPDK testpmd for defined number of VMs on all defined\
 | | ... | VPP nodes.
 | | ...
 
 | Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | [Documentation]
-| | ... | Start ${vm_count} QEMU guests with two vhost-user interfaces and\
+| | ... | Start vm_count QEMU guests with two vhost-user interfaces and\
 | | ... | interconnecting DPDK testpmd defined number of VMs on all defined VPP\
 | | ... | nodes.
 | | ...
 
 | Configure guest VMs with dpdk-testpmd-mac connected via vhost-user on node
 | | [Documentation]
-| | ... | Start ${vm_count} QEMU guests with two vhost-user interfaces and\
+| | ... | Start vm_count QEMU guests with two vhost-user interfaces and\
 | | ... | interconnecting DPDK testpmd with fwd mode set to mac rewrite for\
 | | ... | defined number of VMs on all defined VPP nodes.
 | | ...
 
 | Configure guest VMs with dpdk-testpmd-mac connected via vhost-user
 | | [Documentation]
-| | ... | Start ${vm_count} QEMU guests with two vhost-user interfaces and\
+| | ... | Start vm_count QEMU guests with two vhost-user interfaces and\
 | | ... | interconnecting DPDK testpmd with fwd mode set to mac rewrite for\
 | | ... | defined number of VMs on all defined VPP nodes.
 | | ...
 | | ... | Don`t set route.
 | | ...
 | | ... | *Arguments:*
-| | ... | -${dut1_dut2_address} - Ip address from DUT1 to DUT2. Type: string
-| | ... | -${dut1_tg_address} - Ip address from DUT1 to tg. Type: string
-| | ... | -${dut2_dut1_address} - Ip address from DUT2 to DUT1. Type: string
-| | ... | -${dut1_tg_address} - Ip address from DUT1 to tg. Type: string
-| | ... | -${duts_prefix} - ip prefix. Type: int
+| | ... | - dut1_dut2_address - Ip address from DUT1 to DUT2. Type: string
+| | ... | - dut1_tg_address - Ip address from DUT1 to tg. Type: string
+| | ... | - dut2_dut1_address - Ip address from DUT2 to DUT1. Type: string
+| | ... | - dut1_tg_address - Ip address from DUT1 to tg. Type: string
+| | ... | - duts_prefix - ip prefix. Type: int
 | | ...
 | | ... | *Return:*
 | | ... | - No value returned
 | | [Documentation] | Setup Lisp GPE IPv4 forwarding over IPsec.
 | | ...
 | | ... | *Arguments:*
-| | ... | -${encr_alg} - Encryption algorithm. Type: string
-| | ... | -${auth_alg} - Authentication algorithm. Type: string
+| | ... | - encr_alg - Encryption algorithm. Type: string
+| | ... | - auth_alg - Authentication algorithm. Type: string
 | | ...
 | | ... | *Return:*
 | | ... | - No value returned
 | | ... | Don`t set route.
 | | ...
 | | ... | *Arguments:*
-| | ... | -${dut1_dut2_address} - Ip address from DUT1 to DUT2. Type: string
-| | ... | -${dut1_tg_address} - Ip address from DUT1 to tg. Type: string
-| | ... | -${dut2_dut1_address} - Ip address from DUT2 to DUT1. Type: string
-| | ... | -${dut1_tg_address} - Ip address from DUT1 to tg. Type: string
-| | ... | -${duts_prefix} - ip prefix. Type: int
+| | ... | - dut1_dut2_address - Ip address from DUT1 to DUT2. Type: string
+| | ... | - dut1_tg_address - Ip address from DUT1 to tg. Type: string
+| | ... | - dut2_dut1_address - Ip address from DUT2 to DUT1. Type: string
+| | ... | - dut1_tg_address - Ip address from DUT1 to tg. Type: string
+| | ... | - duts_prefix - ip prefix. Type: int
 | | ...
 | | ... | *Return:*
 | | ... | - No value returned
 | | ... | Don`t set route.
 | | ...
 | | ... | *Arguments:*
-| | ... | - ${dut1_dut2_ip6_address} - IPv6 address from DUT1 to DUT2.
+| | ... | - dut1_dut2_ip6_address - IPv6 address from DUT1 to DUT2.
 | | ... | Type: string
-| | ... | - ${dut1_tg_ip4_address} - IPv4 address from DUT1 to tg. Type: string
-| | ... | - ${dut2_dut1_ip6_address} - IPv6 address from DUT2 to DUT1.
+| | ... | - dut1_tg_ip4_address - IPv4 address from DUT1 to tg. Type: string
+| | ... | - dut2_dut1_ip6_address - IPv6 address from DUT2 to DUT1.
 | | ... | Type: string
-| | ... | - ${dut1_tg_ip4_address} - IPv4 address from DUT1 to tg. Type: string
-| | ... | - ${prefix4} - IPv4 prefix. Type: int
-| | ... | - ${prefix6} - IPv6 prefix. Type: int
+| | ... | - dut1_tg_ip4_address - IPv4 address from DUT1 to tg. Type: string
+| | ... | - prefix4 - IPv4 prefix. Type: int
+| | ... | - prefix6 - IPv6 prefix. Type: int
 | | ...
 | | ... | *Return:*
 | | ... | - No value returned
 | | ... | Don`t set route.
 | | ...
 | | ... | *Arguments:*
-| | ... | - ${dut1_dut2_ip4_address} - IPv4 address from DUT1 to DUT2.
+| | ... | - dut1_dut2_ip4_address - IPv4 address from DUT1 to DUT2.
 | | ... | Type: string
-| | ... | - ${dut1_tg_ip6_address} - IPv6 address from DUT1 to tg. Type: string
-| | ... | - ${dut2_dut1_ip4_address} - IPv4 address from DUT2 to DUT1.
+| | ... | - dut1_tg_ip6_address - IPv6 address from DUT1 to tg. Type: string
+| | ... | - dut2_dut1_ip4_address - IPv4 address from DUT2 to DUT1.
 | | ... | Type: string
-| | ... | - ${dut1_tg_ip6_address} - IPv6 address from DUT1 to tg. Type: string
-| | ... | - ${prefix4} - IPv4 prefix. Type: int
-| | ... | - ${prefix6} - IPv6 prefix. Type: int
+| | ... | - dut1_tg_ip6_address - IPv6 address from DUT1 to tg. Type: string
+| | ... | - prefix4 - IPv4 prefix. Type: int
+| | ... | - prefix6 - IPv6 prefix. Type: int
 | | ...
 | | ... | *Return:*
 | | ... | - No value returned
 | | ... | a chain accross DUT node.
 | | ...
 | | ... | *Arguments:*
-| | ... | - ${dut} - DUT node. Type: dictionary
-| | ... | - ${count} - Number of memif pairs (containers). Type: integer
+| | ... | - dut - DUT node. Type: dictionary
+| | ... | - count - Number of memif pairs (containers). Type: integer
 | | ...
 | | ... | *Note:*
 | | ... | Socket paths for Memif are defined in following format:
-| | ... | - /tmp/memif-${dut}_VNF${number}-${sid}
+| | ... | - /tmp/memif-\${dut}_VNF\${number}-\${sid}
 | | ...
-| | ... | KW uses test variable ${rxq_count_int} set by KW Add worker threads
+| | ... | KW uses test variable \${rxq_count_int} set by KW Add worker threads
 | | ... | and rxqueues to all DUTs
 | | ...
 | | ... | *Example:*
 | | ... | interface to create a chain accross DUT node.
 | | ...
 | | ... | *Arguments:*
-| | ... | - ${count} - Number of memif pairs (containers). Type: integer
+| | ... | - count - Number of memif pairs (containers). Type: integer
 | | ...
 | | ... | *Example:*
 | | ...
 | | ... | to create a chain accross DUT node.
 | | ...
 | | ... | *Arguments:*
-| | ... | - ${dut} - DUT node. Type: dictionary
-| | ... | - ${count} - Number of memif pairs (containers). Type: integer
+| | ... | - dut - DUT node. Type: dictionary
+| | ... | - count - Number of memif pairs (containers). Type: integer
 | | ...
 | | ... | *Note:*
 | | ... | Socket paths for Memif are defined in following format:
-| | ... | - /tmp/memif-${dut}_VNF${number}-${sid}
+| | ... | - /tmp/memif-\${dut}_VNF\${number}-\${sid}
 | | ...
 | | ... | *Example:*
 | | ...
 | | ... | virtual interface to create a chain accross DUT node.
 | | ...
 | | ... | *Arguments:*
-| | ... | - ${count} - Number of memif pairs (containers). Type: integer
+| | ... | - count - Number of memif pairs (containers). Type: integer
 | | ...
 | | ... | *Example:*
 | | ...
 | | ... | to create a chain accross DUT node.
 | | ...
 | | ... | *Arguments:*
-| | ... | - ${dut} - DUT node. Type: dictionary
-| | ... | - ${count} - Number of memif pairs (containers). Type: integer
+| | ... | - dut - DUT node. Type: dictionary
+| | ... | - count - Number of memif pairs (containers). Type: integer
 | | ...
 | | ... | *Note:*
 | | ... | Socket paths for Memif are defined in following format:
-| | ... | - /tmp/memif-${dut}_VNF${number}-${sid}
+| | ... | - /tmp/memif-\${dut}_VNF\${number}-\${sid}
 | | ...
 | | ... | *Example:*
 | | ...
 | | ... | virtual interface to create a chain accross DUT node.
 | | ...
 | | ... | *Arguments:*
-| | ... | - ${count} - Number of memif pairs (containers). Type: integer
+| | ... | - count - Number of memif pairs (containers). Type: integer
 | | ...
 | | ... | *Example:*
 | | ...
 | | ... | connect Memif interface with one physical interface.
 | | ...
 | | ... | *Arguments:*
-| | ... | - ${number} - Memif ID. Type: integer
+| | ... | - number - Memif ID. Type: integer
 | | ...
 | | ... | *Note:*
 | | ... | Socket paths for Memif are defined in following format:
-| | ... | - /tmp/memif-DUT1_VNF${number}-${sid}
+| | ... | - /tmp/memif-DUT1_VNF\${number}-\${sid}
 | | ...
 | | ... | KW uses test variable ${rxq_count_int} set by KW Add worker threads
 | | ... | and rxqueues to all DUTs
 | | | ... | ${rxq_count_int}
 | | | Configure L2XC | ${nodes['${dut}']} | ${${dut}_if1}
 | | | ... | ${${dut}-memif-${number}-if1}
-| | Set interfaces in path up
+| | Set single interfaces in path up
 | | Show Memif on all DUTs | ${nodes}
 
 | Initialize L2 Bridge Domain for single memif
 | | ... | interface to separate L2 bridge domain with one physical interface.
 | | ...
 | | ... | *Arguments:*
-| | ... | - ${number} - Memif ID. Type: integer
+| | ... | - number - Memif ID. Type: integer
 | | ...
 | | ... | *Note:*
 | | ... | Socket paths for Memif are defined in following format:
-| | ... | - /tmp/memif-DUT1_VNF${number}-${sid}
+| | ... | - /tmp/memif-DUT1_VNF\${number}-\${sid}
 | | ...
 | | ... | KW uses test variable ${rxq_count_int} set by KW Add worker threads
 | | ... | and rxqueues to all DUTs
 | | | ... | ${number}
 | | | Add interface to bridge domain | ${nodes['${dut}']}
 | | | ... | ${${dut}-memif-${number}-if1} | ${number}
-| | Set interfaces in path up
+| | Set single interfaces in path up
 | | Show Memif on all DUTs | ${nodes}
 
 | Configure ACLs on a single interface