aboutsummaryrefslogtreecommitdiffstats
path: root/resources
diff options
context:
space:
mode:
Diffstat (limited to 'resources')
-rw-r--r--resources/libraries/robot/l2/tagging.robot33
-rw-r--r--resources/libraries/robot/performance/performance_configuration.robot320
-rwxr-xr-xresources/traffic_profiles/trex/trex-sl-2n-dot1qip4asym-ip4src254.py99
3 files changed, 323 insertions, 129 deletions
diff --git a/resources/libraries/robot/l2/tagging.robot b/resources/libraries/robot/l2/tagging.robot
index 7731ed193e..aa10c1032c 100644
--- a/resources/libraries/robot/l2/tagging.robot
+++ b/resources/libraries/robot/l2/tagging.robot
@@ -59,8 +59,9 @@
| | Set Test Variable | ${subif_name_2}
| | Set Test Variable | ${subif_index_2}
-| Initialize VLAN dot1q sub-interfaces in 3-node circular topology
-| | [Arguments] | ${DUT1} | ${INT1} | ${DUT2} | ${INT2} | ${SUB_ID}
+| Initialize VLAN dot1q sub-interfaces in circular topology
+| | [Arguments] | ${DUT1} | ${INT1} | ${DUT2}=${None} | ${INT2}=${None}
+| | ... | ${SUB_ID}=10
| | [Documentation] | *Create two dot1q subinterfaces on DUTs.*
| | ...
| | ... | *Arguments:*
@@ -78,26 +79,31 @@
| | ...
| | ... | *Example:*
| | ...
-| | ... | \| Initialize VLAN dot1q sub-interfaces in 3-node circular topology \
+| | ... | \| Initialize VLAN dot1q sub-interfaces in circular topology \
| | ... | \| ${nodes['DUT1']} \| ${dut1_if2} \| ${nodes['DUT2']} \
| | ... | \| ${dut1_if2} \| 10 \|
| | ...
| | ${INT1_NAME}= | Get interface name | ${DUT1} | ${INT1}
-| | ${INT2_NAME}= | Get interface name | ${DUT2} | ${INT2}
+| | ${INT2_NAME}= | Run Keyword Unless | ${DUT2} == ${None}
+| | ... | Get interface name | ${DUT2} | ${INT2}
| | ${subif_name_1} | ${subif_index_1}= | Create Vlan Subinterface
-| | | ... | ${DUT1} | ${INT1_NAME} | ${SUB_ID}
-| | ${subif_name_2} | ${subif_index_2}= | Create Vlan Subinterface
-| | | ... | ${DUT2} | ${INT2_NAME} | ${SUB_ID}
+| | ... | ${DUT1} | ${INT1_NAME} | ${SUB_ID}
+| | ${subif_name_2} | ${subif_index_2}=
+| | ... | Run Keyword Unless | ${DUT2} == ${None}
+| | ... | Create Vlan Subinterface | ${DUT2} | ${INT2_NAME} | ${SUB_ID}
| | Set Interface State | ${DUT1} | ${subif_index_1} | up
-| | Set Interface State | ${DUT2} | ${subif_index_2} | up
+| | Run Keyword Unless | ${DUT2} == ${None}
+| | ... | Set Interface State | ${DUT2} | ${subif_index_2} | up
| | Set Test Variable | ${subif_name_1}
| | Set Test Variable | ${subif_index_1}
-| | Set Test Variable | ${subif_name_2}
-| | Set Test Variable | ${subif_index_2}
+| | Run Keyword Unless | ${DUT2} == ${None}
+| | ... | Set Test Variable | ${subif_name_2}
+| | Run Keyword Unless | ${DUT2} == ${None}
+| | ... | Set Test Variable | ${subif_index_2}
| Configure L2 tag rewrite method on interfaces
-| | [Arguments] | ${DUT1} | ${SUB_INT1} | ${DUT2} | ${SUB_INT2}
-| | ... | ${TAG_REWRITE_METHOD}
+| | [Arguments] | ${DUT1} | ${SUB_INT1} | ${DUT2}=${None} | ${SUB_INT2}=${None}
+| | ... | ${TAG_REWRITE_METHOD}=${None}
| | [Documentation] | *Setup tag rewrite on sub-interfaces on DUTs.*
| | ...
| | ... | *Arguments:*
@@ -108,7 +114,8 @@
| | ... | - TAG_REWRITE_METHOD - Method of tag rewrite.
| | ...
| | L2 Vlan tag rewrite | ${DUT1} | ${SUB_INT1} | ${TAG_REWRITE_METHOD}
-| | L2 Vlan tag rewrite | ${DUT2} | ${SUB_INT2} | ${TAG_REWRITE_METHOD}
+| | Run Keyword Unless | ${DUT2} == ${None}
+| | ... | L2 Vlan tag rewrite | ${DUT2} | ${SUB_INT2} | ${TAG_REWRITE_METHOD}
| Connect interfaces and VLAN sub-interfaces using L2XC
| | [Arguments] | ${DUT1} | ${INT1} | ${SUB_INT1}
diff --git a/resources/libraries/robot/performance/performance_configuration.robot b/resources/libraries/robot/performance/performance_configuration.robot
index 9a94c093dd..543e76e56d 100644
--- a/resources/libraries/robot/performance/performance_configuration.robot
+++ b/resources/libraries/robot/performance/performance_configuration.robot
@@ -231,7 +231,7 @@
| | ... | 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
@@ -268,9 +268,11 @@
| | 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}
@@ -287,7 +289,7 @@
| | [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
@@ -389,7 +391,7 @@
| | [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
@@ -401,8 +403,8 @@
| | ...
| | ... | *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:*
| | ...
@@ -544,6 +546,92 @@
| | | 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
@@ -633,7 +721,7 @@
| | ... | 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
@@ -797,7 +885,7 @@
| | ... | 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}
@@ -961,8 +1049,8 @@
| | ...
| | ... | *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:*
| | ...
@@ -1025,7 +1113,7 @@
| | [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}
@@ -1066,7 +1154,7 @@
| | 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
@@ -1140,7 +1228,7 @@
| | ... | 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
@@ -1198,21 +1286,21 @@
| | ... | \| 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}
@@ -1293,12 +1381,12 @@
| | ... | 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}
@@ -1324,17 +1412,17 @@
| | ... | 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}
@@ -1395,26 +1483,26 @@
| | ... | \| 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}
@@ -1485,15 +1573,15 @@
| | ... | 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}
@@ -1513,8 +1601,8 @@
| | ...
| | ... | *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:*
| | ...
@@ -1714,10 +1802,10 @@
| | ... | - 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:*
| | ...
@@ -1727,7 +1815,7 @@
| | [Arguments] | ${bd_id1} | ${bd_id2} | ${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}
@@ -1762,7 +1850,7 @@
| | ... | ${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}
@@ -1812,7 +1900,7 @@
| | 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
@@ -1893,7 +1981,7 @@
| | ... | 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
@@ -2097,7 +2185,7 @@
| 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.
| | ...
@@ -2130,7 +2218,7 @@
| 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.
| | ...
@@ -2245,7 +2333,7 @@
| 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.
| | ...
@@ -2283,7 +2371,7 @@
| 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.
| | ...
@@ -2374,11 +2462,11 @@
| | ... | 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
@@ -2415,8 +2503,8 @@
| | [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
@@ -2450,11 +2538,11 @@
| | ... | 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
@@ -2493,14 +2581,14 @@
| | ... | 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
@@ -2541,14 +2629,14 @@
| | ... | 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
@@ -2645,14 +2733,14 @@
| | ... | 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:*
@@ -2683,7 +2771,7 @@
| | ... | 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:*
| | ...
@@ -2704,12 +2792,12 @@
| | ... | 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:*
| | ...
@@ -2741,7 +2829,7 @@
| | ... | 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:*
| | ...
@@ -2763,12 +2851,12 @@
| | ... | 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:*
| | ...
@@ -2884,7 +2972,7 @@
| | ... | 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:*
| | ...
@@ -2904,11 +2992,11 @@
| | ... | 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
@@ -2936,11 +3024,11 @@
| | ... | 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
diff --git a/resources/traffic_profiles/trex/trex-sl-2n-dot1qip4asym-ip4src254.py b/resources/traffic_profiles/trex/trex-sl-2n-dot1qip4asym-ip4src254.py
new file mode 100755
index 0000000000..74d409bdc8
--- /dev/null
+++ b/resources/traffic_profiles/trex/trex-sl-2n-dot1qip4asym-ip4src254.py
@@ -0,0 +1,99 @@
+# Copyright (c) 2018 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Direction 0 --> 1:
+ - Packet: ETH / IP /
+ - Source IP address range: 10.10.10.1 - 10.10.10.254
+ - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+ - Packet: ETH / DOT1Q / IP /
+ - Source IP address range: 20.20.20.1 - 20.20.20.254
+ - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.api import *
+from profile_trex_stateless_base_class import TrafficStreamsBaseClass
+
+
+class TrafficStreams(TrafficStreamsBaseClass):
+ """Stream profile."""
+
+ def __init__(self):
+ """Initialization and setting of streams' parameters."""
+
+ super(TrafficStreamsBaseClass, self).__init__()
+
+ # VLAN ID
+ self.vlan_id = 10
+
+ # IPs used in packet headers.
+ self.p1_src_start_ip = '10.10.10.1'
+ self.p1_src_end_ip = '10.10.10.254'
+ self.p1_dst_start_ip = '20.20.20.1'
+
+ self.p2_src_start_ip = '20.20.20.1'
+ self.p2_src_end_ip = '20.20.20.254'
+ self.p2_dst_start_ip = '10.10.10.1'
+
+ def define_packets(self):
+ """Defines the packets to be sent from the traffic generator.
+
+ Packet definition: | ETH | IP |
+
+ :returns: Packets to be sent from the traffic generator.
+ :rtype: tuple
+ """
+
+ # Direction 0 --> 1
+ base_pkt_a = (Ether() /
+ IP(src=self.p1_src_start_ip,
+ dst=self.p1_dst_start_ip,
+ proto=61))
+ # Direction 1 --> 0
+ base_pkt_b = (Ether() /
+ Dot1Q(vlan=self.vlan_id) /
+ IP(src=self.p2_src_start_ip,
+ dst=self.p2_dst_start_ip,
+ proto=61))
+
+ # Direction 0 --> 1
+ vm1 = STLScVmRaw([STLVmFlowVar(name="src",
+ min_value=self.p1_src_start_ip,
+ max_value=self.p1_src_end_ip,
+ size=4, op="inc"),
+ STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+ STLVmFixIpv4(offset="IP")])
+ # Direction 1 --> 0
+ vm2 = STLScVmRaw([STLVmFlowVar(name="src",
+ min_value=self.p2_src_start_ip,
+ max_value=self.p2_src_end_ip,
+ size=4, op="inc"),
+ STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+ STLVmFixIpv4(offset="IP")])
+
+ return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+ """Register this traffic profile to T-rex.
+
+ Do not change this function.
+
+ :return: Traffic streams.
+ :rtype: Object
+ """
+ return TrafficStreams()