FIX: do not use ping in vpp-device tests 87/23287/15
authorJan Gelety <jgelety@cisco.com>
Wed, 30 Oct 2019 03:52:03 +0000 (04:52 +0100)
committerPeter Mikus <pmikus@cisco.com>
Mon, 11 Nov 2019 11:51:40 +0000 (11:51 +0000)
Change-Id: Ic11f863e7ffad70d45e6e8dc39c70efc62cecc96
Signed-off-by: Jan Gelety <jgelety@cisco.com>
25 files changed:
resources/libraries/python/TrafficScriptExecutor.py
resources/libraries/robot/crypto/ipsec.robot
resources/libraries/robot/l2/l2_traffic.robot
resources/libraries/robot/shared/traffic.robot
resources/traffic_scripts/ipsec.py
resources/traffic_scripts/send_ip_check_headers.py
tests/vpp/device/container_memif/eth2p-ethipv4-ip4base-eth-2memif-1dcr-dev.robot [moved from tests/vpp/device/container_memif/eth2p-ethicmpv4-ip4base-eth-2memif-1dcr-dev.robot with 86% similarity]
tests/vpp/device/container_memif/eth2p-ethipv4-l2bdbasemaclrn-eth-2memif-1dcr-dev.robot [moved from tests/vpp/device/container_memif/eth2p-ethicmpv4-l2bdbasemaclrn-eth-2memif-1dcr-dev.robot with 88% similarity]
tests/vpp/device/container_memif/eth2p-ethipv4-l2xcbase-eth-2memif-1dcr-dev.robot [moved from tests/vpp/device/container_memif/eth2p-ethicmpv4-l2xcbase-eth-2memif-1dcr-dev.robot with 89% similarity]
tests/vpp/device/container_memif/eth2p-ethipv6-ip6base-eth-2memif-1dcr-dev.robot [moved from tests/vpp/device/container_memif/eth2p-ethicmpv6-ip6base-eth-2memif-1dcr-dev.robot with 90% similarity]
tests/vpp/device/crypto/eth2p-ethip4ipsec1tnlsw-ip4base-policy-aes-128-cbc-sha-512-256-dev.robot
tests/vpp/device/crypto/eth2p-ethip4ipsec1tptsw-ip4base-policy-aes-128-cbc-sha-512-256-dev.robot
tests/vpp/device/crypto/eth2p-ethip6ipsec1tnlsw-ip6base-policy-aes-128-cbc-sha-512-256-dev.robot
tests/vpp/device/crypto/eth2p-ethip6ipsec1tptsw-ip6base-policy-aes-128-cbc-sha-512-256-dev.robot
tests/vpp/device/interfaces/eth2p-ethipv4-l2bdbasemaclrn-eth-2tap-dev.robot [moved from tests/vpp/device/interfaces/eth2p-ethicmpv4-l2bdbasemaclrn-eth-2tap-dev.robot with 93% similarity]
tests/vpp/device/ip4/eth2p-ethipv4-ip4base-dev.robot [moved from tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-dev.robot with 70% similarity]
tests/vpp/device/ip6/eth2p-ethipv6-ip6base-dev.robot [moved from tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-dev.robot with 67% similarity]
tests/vpp/device/l2bd/eth2p-avf-dot1q-l2bdbasemaclrn-gbp-dev.robot
tests/vpp/device/l2bd/eth2p-avf-dot1qip4-l2bdbasemaclrn-dev.robot
tests/vpp/device/l2bd/eth2p-ethipv4-l2bdbasemaclrn-dev.robot [moved from tests/vpp/device/l2bd/eth2p-ethicmpv4-l2bdbasemaclrn-dev.robot with 85% similarity]
tests/vpp/device/l2xc/eth2p-ethipv4-l2xcbase-dev.robot [moved from tests/vpp/device/l2xc/eth2p-ethicmpv4-l2xcbase-dev.robot with 85% similarity]
tests/vpp/device/vm_vhost/ip4/eth2p-ethipv4-ip4base-eth-2vhost-1vm-dev.robot [moved from tests/vpp/device/vm_vhost/ip4/eth2p-ethicmpv4-ip4base-eth-2vhost-1vm-dev.robot with 92% similarity]
tests/vpp/device/vm_vhost/ip6/eth2p-ethipv6-ip6base-eth-2vhost-1vm-dev.robot [moved from tests/vpp/device/vm_vhost/ip6/eth2p-ethicmpv6-ip6base-eth-2vhost-1vm-dev.robot with 89% similarity]
tests/vpp/device/vm_vhost/l2bd/eth2p-ethipv4-l2bdbasemaclrn-eth-2vhost-1vm-dev.robot [moved from tests/vpp/device/vm_vhost/l2bd/eth2p-ethicmpv4-l2bdbasemaclrn-eth-2vhost-1vm-dev.robot with 79% similarity]
tests/vpp/device/vm_vhost/l2xc/eth2p-ethipv4-l2xcbase-eth-2vhost-1vm-dev.robot [moved from tests/vpp/device/vm_vhost/l2xc/eth2p-ethicmpv4-l2xcbase-eth-2vhost-1vm-dev.robot with 81% similarity]

index 7b5368f..abd97e6 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2018 Cisco and/or its affiliates.
+# Copyright (c) 2019 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:
 # 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:
@@ -68,6 +68,8 @@ class TrafficScriptExecutor(object):
         if ret_code != 0:
             if "RuntimeError: ICMP echo Rx timeout" in stderr:
                 raise RuntimeError("ICMP echo Rx timeout")
         if ret_code != 0:
             if "RuntimeError: ICMP echo Rx timeout" in stderr:
                 raise RuntimeError("ICMP echo Rx timeout")
+            elif "RuntimeError: IP packet Rx timeout" in stderr:
+                raise RuntimeError("IP packet Rx timeout")
             elif "RuntimeError: DHCP REQUEST Rx timeout" in stderr:
                 raise RuntimeError("DHCP REQUEST Rx timeout")
             elif "RuntimeError: DHCP DISCOVER Rx timeout" in stderr:
             elif "RuntimeError: DHCP REQUEST Rx timeout" in stderr:
                 raise RuntimeError("DHCP REQUEST Rx timeout")
             elif "RuntimeError: DHCP DISCOVER Rx timeout" in stderr:
index f7d065e..a37c18d 100644 (file)
 | Configure path for IPSec test
 | | [Documentation] | Setup path for IPsec testing TG<-->DUT1.
 | | ...
 | Configure path for IPSec test
 | | [Documentation] | Setup path for IPsec testing TG<-->DUT1.
 | | ...
-| | ... | _NOTE:_ This KW sets following test case variable:
-| | ... | - dut_lo - DUT loopback interface. Type: string
-| | ...
 | | ... | *Example:*
 | | ... | \| Configure path for IPSec test \|
 | | ...
 | | ... | *Example:*
 | | ... | \| Configure path for IPSec test \|
 | | ...
-| | ${dut1_lo1}= | Vpp Create Loopback | ${dut1}
 | | Set Interface State | ${dut1} | ${dut1_if1} | up
 | | Set Interface State | ${dut1} | ${dut1_if1} | up
-| | Set Interface State | ${dut1} | ${dut1_lo1} | up
+| | Set Interface State | ${dut1} | ${dut1_if2} | up
 | | Vpp Node Interfaces Ready Wait | ${dut1}
 | | Vpp Node Interfaces Ready Wait | ${dut1}
-| | Set Test Variable | ${dut1_lo1}
 
 | Configure topology for IPv4 IPsec testing
 | | [Documentation] | Setup topology for IPv4 IPsec testing.
 
 | Configure topology for IPv4 IPsec testing
 | | [Documentation] | Setup topology for IPv4 IPsec testing.
 | | ...
 | | Configure path for IPSec test
 | | VPP Interface Set IP Address
 | | ...
 | | Configure path for IPSec test
 | | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut_if_ip4} | ${ip4_plen}
+| | ... | ${dut1} | ${dut1_if1} | ${dut_if1_ip4} | ${ip4_plen}
 | | VPP Interface Set IP Address
 | | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_lo1} | ${dut_lo_ip4} | ${ip4_plen}
+| | ... | ${dut1} | ${dut1_if2} | ${dut_if2_ip4} | ${ip4_plen}
 | | VPP Add IP Neighbor
 | | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if1} | ${tg_if_ip4} | ${tg_if1_mac}
+| | ... | ${dut1} | ${dut1_if1} | ${tg_if1_ip4} | ${tg_if1_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${dut1_if2} | ${tg_if2_ip4} | ${tg_if2_mac}
 | | Vpp Route Add
 | | Vpp Route Add
-| | ... | ${dut1} | ${tg_lo_ip4} | ${ip4_plen} | gateway=${tg_if_ip4}
+| | ... | ${dut1} | ${tg_host_ip4} | ${ip4_plen} | gateway=${tg_if1_ip4}
 | | ... | interface=${dut1_if1}
 | | ... | interface=${dut1_if1}
-| | Set Test Variable | ${dut_tun_ip} | ${dut_if_ip4}
-| | Set Test Variable | ${dut_src_ip} | ${dut_lo_ip4}
-| | Set Test Variable | ${tg_tun_ip} | ${tg_if_ip4}
-| | Set Test Variable | ${tg_src_ip} | ${tg_lo_ip4}
+| | Set Test Variable | ${dut_tun_ip} | ${dut_if1_ip4}
+| | Set Test Variable | ${tg_tun_ip} | ${tg_if1_ip4}
+| | Set Test Variable | ${tg_src_ip} | ${tg_host_ip4}
+| | Set Test Variable | ${tg_dst_ip} | ${tg_if2_ip4}
 
 | Configure topology for IPv6 IPsec testing
 | | [Documentation] | Setup topology fo IPv6 IPsec testing.
 
 | Configure topology for IPv6 IPsec testing
 | | [Documentation] | Setup topology fo IPv6 IPsec testing.
 | | ...
 | | Configure path for IPSec test
 | | VPP Interface Set IP Address
 | | ...
 | | Configure path for IPSec test
 | | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut_if_ip6} | ${ip6_plen}
+| | ... | ${dut1} | ${dut1_if1} | ${dut_if1_ip6} | ${ip6_plen}
 | | VPP Interface Set IP Address
 | | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_lo1} | ${dut_lo_ip6} | ${ip6_plen}
+| | ... | ${dut1} | ${dut1_if2} | ${dut_if2_ip6} | ${ip6_plen}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${dut1_if1} | ${tg_if1_ip6} | ${tg_if1_mac}
 | | VPP Add IP Neighbor
 | | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if1} | ${tg_if_ip6} | ${tg_if1_mac}
+| | ... | ${dut1} | ${dut1_if2} | ${tg_if2_ip6} | ${tg_if2_mac}
 | | Vpp All RA Suppress Link Layer | ${nodes}
 | | Vpp Route Add
 | | Vpp All RA Suppress Link Layer | ${nodes}
 | | Vpp Route Add
-| | ... | ${dut1} | ${tg_lo_ip6} | ${ip6_plen_rt} | gateway=${tg_if_ip6}
+| | ... | ${dut1} | ${tg_host_ip6} | ${ip6_plen_rt} | gateway=${tg_if1_ip6}
 | | ... | interface=${dut1_if1}
 | | ... | interface=${dut1_if1}
-| | Set Test Variable | ${dut_tun_ip} | ${dut_if_ip6}
-| | Set Test Variable | ${dut_src_ip} | ${dut_lo_ip6}
-| | Set Test Variable | ${tg_tun_ip} | ${tg_if_ip6}
-| | Set Test Variable | ${tg_src_ip} | ${tg_lo_ip6}
+| | Set Test Variable | ${dut_tun_ip} | ${dut_if1_ip6}
+| | Set Test Variable | ${tg_tun_ip} | ${tg_if1_ip6}
+| | Set Test Variable | ${tg_src_ip} | ${tg_host_ip6}
+| | Set Test Variable | ${tg_dst_ip} | ${tg_if2_ip6}
 
 | Configure manual keyed connection for IPSec
 | | [Documentation] | Setup IPsec manual keyed connection on VPP node.
 
 | Configure manual keyed connection for IPSec
 | | [Documentation] | Setup IPsec manual keyed connection on VPP node.
index bca8017..93506d5 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2016 Cisco and/or its affiliates.
+# Copyright (c) 2019 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:
 # 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:
@@ -18,8 +18,8 @@
 | ... | through L2 network.
 
 *** Keywords ***
 | ... | through L2 network.
 
 *** Keywords ***
-| Send ICMP packet and verify received packet
-| | [Documentation] | Send ICMPv4/ICMPv6 echo request from source interface to \
+| Send IP packet and verify received packet
+| | [Documentation] | Send IPv4/IPv6 packet from source interface to \
 | | ... | destination interface. Packet can be set with Dot1q or
 | | ... | Dot1ad tag(s) when required.
 | | ...
 | | ... | destination interface. Packet can be set with Dot1q or
 | | ... | Dot1ad tag(s) when required.
 | | ...
 | | ...
 | | ... | _NOTE:_ Default IP is IPv4
 | | ...
 | | ...
 | | ... | _NOTE:_ Default IP is IPv4
 | | ...
-| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \
+| | ... | \| Send IP packet and verify received packet \| ${nodes['TG']} \
 | | ... | \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \|
 | | ... | \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \|
-| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \
+| | ... | \| Send IP packet and verify received packet \| ${nodes['TG']} \
 | | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1q \| vlan1=100 \|
 | | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1q \| vlan1=100 \|
-| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \
+| | ... | \| Send IP packet and verify received packet \| ${nodes['TG']} \
 | | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1ad \| vlan1=110 \
 | | ... | \| vlan2=220 \|
 | | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1ad \| vlan1=110 \
 | | ... | \| vlan2=220 \|
-| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \
+| | ... | \| Send IP packet and verify received packet \| ${nodes['TG']} \
 | | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1q \| vlan1=110 \
 | | ... | \| encaps_rx=Dot1q \|
 | | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1q \| vlan1=110 \
 | | ... | \| encaps_rx=Dot1q \|
-| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \
+| | ... | \| Send IP packet and verify received packet \| ${nodes['TG']} \
 | | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1q \| vlan1=110 \
 | | ... | \| encaps_rx=Dot1q \| vlan1_rx=120 \|
 | | ...
 | | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1q \| vlan1=110 \
 | | ... | \| encaps_rx=Dot1q \| vlan1_rx=120 \|
 | | ...
-| | [Arguments] | ${tg_node} | ${src_int} | ${dst_int}
-| | ... | ${src_ip}=192.168.100.1 | ${dst_ip}=192.168.100.2 | ${encaps}=${EMPTY}
-| | ... | ${vlan1}=${EMPTY} | ${vlan2}=${EMPTY} | ${encaps_rx}=${EMPTY}
-| | ... | ${vlan1_rx}=${EMPTY} | ${vlan2_rx}=${EMPTY}
-| | ...
-| | ${src_mac}= | Get Interface Mac | ${tg_node} | ${src_int}
-| | ${dst_mac}= | Get Interface Mac | ${tg_node} | ${dst_int}
-| | ${src_int_name}= | Get interface name | ${tg_node} | ${src_int}
-| | ${dst_int_name}= | Get interface name | ${tg_node} | ${dst_int}
-| | ${args}= | Traffic Script Gen Arg | ${dst_int_name} | ${src_int_name}
-| | ... | ${src_mac} | ${dst_mac} | ${src_ip} | ${dst_ip}
-| | ${args}= | Run Keyword If | '${encaps}' == '${EMPTY}'
-| | | ... | Set Variable | ${args}
-| | ... | ELSE | Catenate | ${args} | --encaps ${encaps} | --vlan1 ${vlan1}
-| | ${args}= | Run Keyword If | '${vlan2}' == '${EMPTY}'
-| | | ... | Set Variable | ${args}
-| | ... | ELSE | Catenate | ${args} | --vlan2 ${vlan2}
-| | ${args}= | Run Keyword If | '${encaps_rx}' == '${EMPTY}'
-| | | ... | Set Variable | ${args}
-| | ... | ELSE | Catenate | ${args} | --encaps_rx ${encaps_rx}
-| | ${args}= | Run Keyword If | '${vlan1_rx}' == '${EMPTY}'
-| | | ... | Set Variable | ${args}
-| | ... | ELSE | Catenate | ${args} | --vlan1_rx ${vlan1_rx}
-| | ${args}= | Run Keyword If | '${vlan2_rx}' == '${EMPTY}'
-| | | ... | Set Variable | ${args}
-| | ... | ELSE | Catenate | ${args} | --vlan2_rx ${vlan2_rx}
-| | Run Traffic Script On Node | send_ip_icmp.py | ${tg_node} | ${args}
+| | [Arguments] | ${tg_node} | ${tx_src_port} | ${rx_dst_port}
+| | ... | ${src_ip}=192.168.100.1 | ${dst_ip}=192.168.100.2
+| | ... | ${encaps}=${EMPTY} | ${vlan1}=${EMPTY} | ${vlan2}=${EMPTY}
+| | ... | ${encaps_rx}=${EMPTY} | ${vlan1_rx}=${EMPTY} | ${vlan2_rx}=${EMPTY}
+| | ...
+| | ${tx_src_mac}= | Get Interface Mac | ${tg_node} | ${tx_src_port}
+| | ${rx_dst_mac}= | Get Interface Mac | ${tg_node} | ${rx_dst_port}
+| | Then Send packet and verify headers
+| | ... | ${tg} | 192.168.0.1 | 192.168.0.2
+| | ... | ${tx_src_port} | ${tx_src_mac} | ${rx_dst_mac}
+| | ... | ${rx_dst_port} | ${tx_src_mac} | ${rx_dst_mac}
+| | ... | encaps_tx=${encaps} | vlan_tx=${vlan1} | vlan_outer_tx=${vlan2}
+| | ... | encaps_rx=${encaps_rx} | vlan_rx=${vlan1_rx}
+| | ... | vlan_outer_rx=${vlan2_rx}
 
 | ICMP packet transmission should fail
 | | [Documentation] | Send ICMPv4/ICMPv6 echo request from source interface to
 
 | ICMP packet transmission should fail
 | | [Documentation] | Send ICMPv4/ICMPv6 echo request from source interface to
 | | ${dst_int_name}= | Get interface name | ${tg_node} | ${dst_int}
 | | ${args}= | Traffic Script Gen Arg | ${dst_int_name} | ${src_int_name}
 | | ... | ${src_mac} | ${dst_mac} | ${src_ip} | ${dst_ip}
 | | ${dst_int_name}= | Get interface name | ${tg_node} | ${dst_int}
 | | ${args}= | Traffic Script Gen Arg | ${dst_int_name} | ${src_int_name}
 | | ... | ${src_mac} | ${dst_mac} | ${src_ip} | ${dst_ip}
-| | Run Keyword And Expect Error | ICMP echo Rx timeout |
+| | Run Keyword And Expect Error | IP echo Rx timeout |
 | | ... | Run Traffic Script On Node | send_ip_icmp.py | ${tg_node} | ${args}
 
 | | ... | Run Traffic Script On Node | send_ip_icmp.py | ${tg_node} | ${args}
 
-| Send ICMPv4 bidirectionally and verify received packets
-| | [Documentation] | Send ICMPv4 echo request from both directions,
+| Send IPv4 bidirectionally and verify received packets
+| | [Documentation] | Send IPv4 packets from both directions,
 | | ... | from interface1 to interface2 and from interface2 to interface1.
 | | ...
 | | ... | *Arguments:*
 | | ... | from interface1 to interface2 and from interface2 to interface1.
 | | ...
 | | ... | *Arguments:*
 | | ...
 | | ... | *Example:*
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Send ICMPv4 bidirectionally and verify received packets \
+| | ... | \| Send IPv4 bidirectionally and verify received packets \
 | | ... | \| ${nodes['TG']} \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \|
 | | ...
 | | [Arguments] | ${tg_node} | ${int1} | ${int2} | ${src_ip}=192.168.100.1 |
 | | ... | ${dst_ip}=192.168.100.2
 | | ...
 | | ... | \| ${nodes['TG']} \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \|
 | | ...
 | | [Arguments] | ${tg_node} | ${int1} | ${int2} | ${src_ip}=192.168.100.1 |
 | | ... | ${dst_ip}=192.168.100.2
 | | ...
-| | Send ICMP packet and verify received packet
+| | Send IP packet and verify received packet
 | | ... | ${tg_node} | ${int1} | ${int2} | ${src_ip} | ${dst_ip}
 | | ... | ${tg_node} | ${int1} | ${int2} | ${src_ip} | ${dst_ip}
-| | Send ICMP packet and verify received packet
+| | Send IP packet and verify received packet
 | | ... | ${tg_node} | ${int2} | ${int1} | ${dst_ip} | ${src_ip}
 
 | | ... | ${tg_node} | ${int2} | ${int1} | ${dst_ip} | ${src_ip}
 
-| Send ICMPv6 bidirectionally and verify received packets
-| | [Documentation] | Send ICMPv6 echo request from both directions,
+| Send IPv6 bidirectionally and verify received packets
+| | [Documentation] | Send IPv6 packets from both directions,
 | | ... | from interface1 to interface2 and from interface2 to interface1.
 | | ...
 | | ... | *Arguments:*
 | | ... | from interface1 to interface2 and from interface2 to interface1.
 | | ...
 | | ... | *Arguments:*
 | | ...
 | | ... | *Example:*
 | | ...
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Send ICMPv6 bidirectionally and verify received packets \
+| | ... | \| Send IPv6 bidirectionally and verify received packets \
 | | ... | \| ${nodes['TG']} \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \|
 | | ...
 | | [Arguments] | ${tg_node} | ${int1} | ${int2} | ${src_ip}=3ffe:63::1 |
 | | ... | ${dst_ip}=3ffe:63::2
 | | ...
 | | ... | \| ${nodes['TG']} \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \|
 | | ...
 | | [Arguments] | ${tg_node} | ${int1} | ${int2} | ${src_ip}=3ffe:63::1 |
 | | ... | ${dst_ip}=3ffe:63::2
 | | ...
-| | Send ICMP packet and verify received packet
+| | Send IP packet and verify received packet
 | | ... | ${tg_node} | ${int1} | ${int2} | ${src_ip} | ${dst_ip}
 | | ... | ${tg_node} | ${int1} | ${int2} | ${src_ip} | ${dst_ip}
-| | Send ICMP packet and verify received packet
+| | Send IP packet and verify received packet
 | | ... | ${tg_node} | ${int2} | ${int1} | ${dst_ip} | ${src_ip}
 | | ... | ${tg_node} | ${int2} | ${int1} | ${dst_ip} | ${src_ip}
index 5d11618..df74017 100644 (file)
@@ -40,7 +40,7 @@
 | | ... | - tx_src_port - Interface of TG-if1. Type: string
 | | ... | - tx_src_mac - MAC address of TG-if1. Type: string
 | | ... | - tx_dst_mac - MAC address of DUT-if1. Type: string
 | | ... | - tx_src_port - Interface of TG-if1. Type: string
 | | ... | - tx_src_mac - MAC address of TG-if1. Type: string
 | | ... | - tx_dst_mac - MAC address of DUT-if1. Type: string
-| | ... | - rx_port - Interface of TG-if1. Type: string
+| | ... | - rx_dst_port - Interface of TG-if1. Type: string
 | | ... | - rx_src_mac - MAC address of DUT1-if2. Type: string
 | | ... | - rx_dst_mac - MAC address of TG-if2. Type: string
 | | ... | - encaps_tx - Expected encapsulation on TX side: Dot1q or Dot1ad
 | | ... | - rx_src_mac - MAC address of DUT1-if2. Type: string
 | | ... | - rx_dst_mac - MAC address of TG-if2. Type: string
 | | ... | - encaps_tx - Expected encapsulation on TX side: Dot1q or Dot1ad
 | | ... | \| eth3 \| 08:00:27:4d:ca:7a \| 08:00:27:7d:fd:10 \|
 | | ...
 | | [Arguments] | ${tg_node} | ${src_ip} | ${dst_ip} | ${tx_src_port}
 | | ... | \| eth3 \| 08:00:27:4d:ca:7a \| 08:00:27:7d:fd:10 \|
 | | ...
 | | [Arguments] | ${tg_node} | ${src_ip} | ${dst_ip} | ${tx_src_port}
-| | ... | ${tx_src_mac} | ${tx_dst_mac} | ${rx_port} | ${rx_src_mac}
+| | ... | ${tx_src_mac} | ${tx_dst_mac} | ${rx_dst_port} | ${rx_src_mac}
 | | ... | ${rx_dst_mac} | ${encaps_tx}=${EMPTY} | ${vlan_tx}=${EMPTY}
 | | ... | ${vlan_outer_tx}=${EMPTY} | ${encaps_rx}=${EMPTY}
 | | ... | ${vlan_rx}=${EMPTY} | ${vlan_outer_rx}=${EMPTY}
 | | ... | ${rx_dst_mac} | ${encaps_tx}=${EMPTY} | ${vlan_tx}=${EMPTY}
 | | ... | ${vlan_outer_tx}=${EMPTY} | ${encaps_rx}=${EMPTY}
 | | ... | ${vlan_rx}=${EMPTY} | ${vlan_outer_rx}=${EMPTY}
-| | ... | ${traffic_script}=send_icmp_check_headers
+| | ... | ${traffic_script}=send_ip_check_headers
 | | ...
 | | ${tx_port_name}= | Get interface name | ${tg_node} | ${tx_src_port}
 | | ...
 | | ${tx_port_name}= | Get interface name | ${tg_node} | ${tx_src_port}
-| | ${rx_port_name}= | Get interface name | ${tg_node} | ${rx_port}
+| | ${rx_port_name}= | Get interface name | ${tg_node} | ${rx_dst_port}
 | | ${args}= | Catenate | --tg_src_mac ${tx_src_mac}
 | | ... | --tg_dst_mac ${rx_dst_mac} | --dut_if1_mac ${tx_dst_mac}
 | | ... | --dut_if2_mac ${rx_src_mac} | --src_ip ${src_ip} | --dst_ip ${dst_ip}
 | | ${args}= | Catenate | --tg_src_mac ${tx_src_mac}
 | | ... | --tg_dst_mac ${rx_dst_mac} | --dut_if1_mac ${tx_dst_mac}
 | | ... | --dut_if2_mac ${rx_src_mac} | --src_ip ${src_ip} | --dst_ip ${dst_ip}
 | | ... | --tg_dst_mac ${rx_dst_mac} | --dut_if1_mac ${tx_dst_mac}
 | | ... | --dut_if2_mac ${rx_src_mac} | --src_ip ${src_ip} | --dst_ip ${dst_ip}
 | | ... | --tx_if ${tx_port_name} | --rx_if ${rx_port_name}
 | | ... | --tg_dst_mac ${rx_dst_mac} | --dut_if1_mac ${tx_dst_mac}
 | | ... | --dut_if2_mac ${rx_src_mac} | --src_ip ${src_ip} | --dst_ip ${dst_ip}
 | | ... | --tx_if ${tx_port_name} | --rx_if ${rx_port_name}
-| | Run Keyword And Expect Error | ICMP echo Rx timeout |
-| | ... | Run Traffic Script On Node | send_icmp_check_headers.py
+| | Run Keyword And Expect Error | IP packet Rx timeout |
+| | ... | Run Traffic Script On Node | send_ip_check_headers.py
 | | ... | ${tg_node} | ${args}
 
 | Send packet and verify ARP request
 | | ... | ${tg_node} | ${args}
 
 | Send packet and verify ARP request
 | | ...
 | | ... | *Arguments:*
 | | ... | - node - TG node. Type: dictionary
 | | ...
 | | ... | *Arguments:*
 | | ... | - node - TG node. Type: dictionary
-| | ... | - interface - TG Interface. Type: string
-| | ... | - dst_mac - Destination MAC. Type: string
+| | ... | - tx_interface - TG Interface 1. Type: string
+| | ... | - rx_interface - TG Interface 2. Type: string
+| | ... | - tx_dst_mac - Destination MAC for TX interface / DUT interface 1 MAC.
+| | ... | Type: string
+| | ... | - rx_src_mac - Source MAC for RX interface / DUT interface 2 MAC.
+| | ... | Type: string
 | | ... | - crypto_alg - Encrytion algorithm. Type: enum
 | | ... | - crypto_key - Encryption key. Type: string
 | | ... | - integ_alg - Integrity algorithm. Type: enum
 | | ... | - crypto_alg - Encrytion algorithm. Type: enum
 | | ... | - crypto_key - Encryption key. Type: string
 | | ... | - integ_alg - Integrity algorithm. Type: enum
 | | ... | \| ${encr_alg}= \| Crypto Alg AES CBC 128 \|
 | | ... | \| ${auth_alg}= \| Integ Alg SHA1 96 \|
 | | ... | \| Send IPsec Packet and verify ESP encapsulation in received packet\
 | | ... | \| ${encr_alg}= \| Crypto Alg AES CBC 128 \|
 | | ... | \| ${auth_alg}= \| Integ Alg SHA1 96 \|
 | | ... | \| Send IPsec Packet and verify ESP encapsulation in received packet\
-| | ... | \| ${nodes['TG']} \| eth1 \
-| | ... | \| 52:54:00:d4:d8:22 \| ${encr_alg} \| sixteenbytes_key \
-| | ... | \| ${auth_alg} \| twentybytessecretkey \| ${1001} \| ${1000} \
-| | ... | \| 192.168.3.3 \| 192.168.4.4 \| 192.168.100.2 \| 192.168.100.3 \|
-| | ...
-| | [Arguments] | ${node} | ${interface} | ${dst_mac} | ${crypto_alg}
-| | ... | ${crypto_key} | ${integ_alg} | ${integ_key} | ${l_spi}
-| | ... | ${r_spi} | ${l_ip} | ${r_ip} | ${l_tunnel}=${None}
-| | ... | ${r_tunnel}=${None}
-| | ...
-| | ${src_mac}= | Get Interface Mac | ${node} | ${interface}
-| | ${if_name}= | Get Interface Name | ${node} | ${interface}
-| | ${args}= | Traffic Script Gen Arg | ${if_name} | ${if_name} | ${src_mac}
-| | ... | ${dst_mac} | ${l_ip} | ${r_ip}
+| | ... | \| ${nodes['TG']} \| eth1 \| eth2 \
+| | ... | \| 52:54:00:d4:d8:22 \| 52:54:00:d4:d8:3e \| ${encr_alg} \
+| | ... | \| sixteenbytes_key \| ${auth_alg} \| twentybytessecretkey \
+| | ... | \| ${1001} \| ${1000} \| 192.168.3.3 \| 192.168.4.4 \| 192.168.100.2 \
+| | ... | \| 192.168.100.3 \|
+| | ...
+| | [Arguments] | ${node} | ${tx_interface} | ${rx_interface} | ${tx_dst_mac}
+| | ... | ${rx_src_mac} | ${crypto_alg} | ${crypto_key} | ${integ_alg}
+| | ... | ${integ_key} | ${l_spi} | ${r_spi} | ${l_ip} | ${r_ip}
+| | ... | ${l_tunnel}=${None} | ${r_tunnel}=${None}
+| | ...
+| | ${tx_src_mac}= | Get Interface Mac | ${node} | ${tx_interface}
+| | ${tx_if_name}= | Get Interface Name | ${node} | ${tx_interface}
+| | ${rx_dst_mac}= | Get Interface Mac | ${node} | ${tx_interface}
+| | ${rx_if_name}= | Get Interface Name | ${node} | ${rx_interface}
+| | ${args}= | Catenate | --rx_if ${rx_if_name} | --tx_if ${tx_if_name}
+| | ... | --tx_src_mac ${tx_src_mac} | --tx_dst_mac ${tx_dst_mac}
+| | ... | --rx_src_mac ${rx_src_mac} | --rx_dst_mac ${rx_dst_mac}
+| | ... | --src_ip ${l_ip} | --dst_ip ${r_ip}
 | | ${crypto_alg_str}= | Get Crypto Alg Scapy Name | ${crypto_alg}
 | | ${integ_alg_str}= | Get Integ Alg Scapy Name | ${integ_alg}
 | | ${args}= | Catenate | ${args} | --crypto_alg ${crypto_alg_str}
 | | ${crypto_alg_str}= | Get Crypto Alg Scapy Name | ${crypto_alg}
 | | ${integ_alg_str}= | Get Integ Alg Scapy Name | ${integ_alg}
 | | ${args}= | Catenate | ${args} | --crypto_alg ${crypto_alg_str}
index 1561738..b853b6c 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
 #!/usr/bin/env python
 
-# Copyright (c) 2016 Cisco and/or its affiliates.
+# Copyright (c) 2019 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:
 # 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:
@@ -23,9 +23,8 @@ import logging
 logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
 
 from scapy.all import Ether
 logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
 
 from scapy.all import Ether
-from scapy.layers.inet import ICMP, IP
+from scapy.layers.inet import IP
 from scapy.layers.inet6 import IPv6, ICMPv6ND_NS
 from scapy.layers.inet6 import IPv6, ICMPv6ND_NS
-from scapy.layers.inet6 import ICMPv6EchoRequest, ICMPv6EchoReply
 from scapy.layers.ipsec import SecurityAssociation, ESP
 from ipaddress import ip_address
 
 from scapy.layers.ipsec import SecurityAssociation, ESP
 from ipaddress import ip_address
 
@@ -33,114 +32,113 @@ from resources.libraries.python.TrafficScriptArg import TrafficScriptArg
 from resources.libraries.python.PacketVerifier import RxQueue, TxQueue
 
 
 from resources.libraries.python.PacketVerifier import RxQueue, TxQueue
 
 
-def check_ipv4(pkt_recv, dst_tun, src_ip, dst_ip, sa_in):
-    """Check received IPv4 IPsec packet.
+def check_ipsec(pkt_recv, ip_layer, dst_tun, src_ip, dst_ip, sa_in):
+    """Check received IPsec packet.
 
     :param pkt_recv: Received packet to verify.
 
     :param pkt_recv: Received packet to verify.
+    :param ip_layer: Scapy IP layer.
     :param dst_tun: IPsec tunnel destination address.
     :param dst_tun: IPsec tunnel destination address.
-    :param src_ip: Source address of original IPv4 packet.
-    :param dst_ip: Destination address of original IPv4 packet.
+    :param src_ip: Source IP/IPv6 address of original IP/IPv6 packet.
+    :param dst_ip: Destination IP/IPv6 address of original IP/IPv6 packet.
     :param sa_in: IPsec SA for packet decryption.
     :type pkt_recv: scapy.Ether
     :param sa_in: IPsec SA for packet decryption.
     :type pkt_recv: scapy.Ether
+    :type ip_layer: scapy.layers.inet.IP or scapy.layers.inet6.IPv6
     :type dst_tun: str
     :type src_ip: str
     :type dst_ip: str
     :type sa_in: scapy.layers.ipsec.SecurityAssociation
     :raises RuntimeError: If received packet is invalid.
     """
     :type dst_tun: str
     :type src_ip: str
     :type dst_ip: str
     :type sa_in: scapy.layers.ipsec.SecurityAssociation
     :raises RuntimeError: If received packet is invalid.
     """
-    if not pkt_recv.haslayer(IP):
-        raise RuntimeError(
-            'Not an IPv4 packet received: {0}'.format(pkt_recv.__repr__()))
+    if not pkt_recv.haslayer(ip_layer):
+        raise RuntimeError('Not an {ip} packet received: {pkt}'.format(
+            ip=ip_layer.name, pkt=pkt_recv.__repr__()))
 
 
-    if pkt_recv['IP'].dst != dst_tun:
+    if pkt_recv[ip_layer.name].dst != dst_tun:
         raise RuntimeError(
         raise RuntimeError(
-            'Received packet has invalid destination address: {0} '
-            'should be: {1}'.format(pkt_recv['IP'].dst, dst_tun))
+            'Received packet has invalid destination address: {rec_ip} '
+            'should be: {exp_ip}'.format(
+                rec_ip=pkt_recv[ip_layer.name].dst, exp_ip=dst_tun))
 
     if not pkt_recv.haslayer(ESP):
         raise RuntimeError(
 
     if not pkt_recv.haslayer(ESP):
         raise RuntimeError(
-            'Not an ESP packet received: {0}'.format(pkt_recv.__repr__()))
+            'Not an ESP packet received: {pkt}'.format(pkt=pkt_recv.__repr__()))
 
 
-    ip_pkt = pkt_recv[IP]
+    ip_pkt = pkt_recv[ip_layer]
     d_pkt = sa_in.decrypt(ip_pkt)
 
     d_pkt = sa_in.decrypt(ip_pkt)
 
-    if d_pkt[IP].dst != dst_ip:
+    if d_pkt[ip_layer].dst != dst_ip:
         raise RuntimeError(
         raise RuntimeError(
-            'Decrypted packet has invalid destination address: {0} '
-            'should be: {1}'.format(d_pkt['IP'].dst, dst_ip))
+            'Decrypted packet has invalid destination address: {rec_ip} '
+            'should be: {exp_ip}'.format(
+                rec_ip=d_pkt[ip_layer].dst, exp_ip=dst_ip))
 
 
-    if d_pkt[IP].src != src_ip:
+    if d_pkt[ip_layer].src != src_ip:
         raise RuntimeError(
         raise RuntimeError(
-            'Decrypted packet has invalid source address: {0} should be: {1}'
-            .format(d_pkt['IP'].src, src_ip))
+            'Decrypted packet has invalid source address: {rec_ip} should be: '
+            '{exp_ip}'.format(rec_ip=d_pkt[ip_layer].src, exp_ip=src_ip))
 
 
-    if not d_pkt.haslayer(ICMP):
+    if ip_layer == IP and d_pkt[ip_layer.name].proto != 61:
         raise RuntimeError(
         raise RuntimeError(
-            'Decrypted packet does not have ICMP layer: {0}'.format(
-                d_pkt.__repr__()))
+            'Decrypted packet has invalid IP protocol: {rec_proto} '
+            'should be: 61'.format(rec_proto=d_pkt[ip_layer.name].proto))
 
 
 
 
-def check_ipv6(pkt_recv, dst_tun, src_ip, dst_ip, sa_in):
-    """Check received IPv6 IPsec packet.
+def check_ip(pkt_recv, ip_layer, src_ip, dst_ip):
+    """Check received IP/IPv6 packet.
 
     :param pkt_recv: Received packet to verify.
 
     :param pkt_recv: Received packet to verify.
-    :param dst_tun: IPsec tunnel destination address.
-    :param src_ip: Source address of original IPv6 packet.
-    :param dst_ip: Destination address of original IPv6 packet.
-    :param sa_in: IPsec SA for packet decryption.
+    :param ip_layer: Scapy IP layer.
+    :param src_ip: Source IP/IPv6 address.
+    :param dst_ip: Destination IP/IPv6 address.
     :type pkt_recv: scapy.Ether
     :type pkt_recv: scapy.Ether
-    :type dst_tun: str
+    :type ip_layer: scapy.layers.inet.IP or scapy.layers.inet6.IPv6
     :type src_ip: str
     :type dst_ip: str
     :type src_ip: str
     :type dst_ip: str
-    :type sa_in: scapy.layers.ipsec.SecurityAssociation
     :raises RuntimeError: If received packet is invalid.
     """
     :raises RuntimeError: If received packet is invalid.
     """
-    if not pkt_recv.haslayer(IPv6):
-        raise RuntimeError(
-            'Not an IPv6 packet received: {0}'.format(pkt_recv.__repr__()))
-
-    if pkt_recv[IPv6].dst != dst_tun:
-        raise RuntimeError(
-            'Received packet has invalid destination address: {0} '
-            'should be: {1}'.format(pkt_recv['IPv6'].dst, dst_tun))
+    if not pkt_recv.haslayer(ip_layer):
+        raise RuntimeError('Not an {ip} packet received: {pkt}'.format(
+            ip=ip_layer.name, pkt=pkt_recv.__repr__()))
 
 
-    if not pkt_recv.haslayer(ESP):
-        raise RuntimeError(
-            'Not an ESP packet received: {0}'.format(pkt_recv.__repr__()))
-
-    ip_pkt = pkt_recv[IPv6]
-    d_pkt = sa_in.decrypt(ip_pkt)
-
-    if d_pkt[IPv6].dst != dst_ip:
+    if pkt_recv[ip_layer.name].dst != dst_ip:
         raise RuntimeError(
         raise RuntimeError(
-            'Decrypted packet has invalid destination address {0}: '
-            'should be: {1}'.format(d_pkt['IPv6'].dst, dst_ip))
+            'Received packet has invalid destination address: {rec_ip} '
+            'should be: {exp_ip}'.format(
+                rec_ip=pkt_recv[ip_layer.name].dst, exp_ip=dst_ip))
 
 
-    if d_pkt[IPv6].src != src_ip:
+    if pkt_recv[ip_layer.name].src != src_ip:
         raise RuntimeError(
         raise RuntimeError(
-            'Decrypted packet has invalid source address: {0} should be: {1}'
-            .format(d_pkt['IPv6'].src, src_ip))
+            'Received packet has invalid destination address: {rec_ip} '
+            'should be: {exp_ip}'.format(
+                rec_ip=pkt_recv[ip_layer.name].dst, exp_ip=src_ip))
 
 
-    if not d_pkt.haslayer(ICMPv6EchoReply):
+    if ip_layer == IP and pkt_recv[ip_layer.name].proto != 61:
         raise RuntimeError(
         raise RuntimeError(
-            'Decrypted packet does not have ICMP layer: {0}'.format(
-                d_pkt.__repr__()))
+            'Received packet has invalid IP protocol: {rec_proto} '
+            'should be: 61'.format(rec_proto=pkt_recv[ip_layer.name].proto))
 
 
 # pylint: disable=too-many-locals
 # pylint: disable=too-many-statements
 def main():
     """Send and receive IPsec packet."""
 
 
 # pylint: disable=too-many-locals
 # pylint: disable=too-many-statements
 def main():
     """Send and receive IPsec packet."""
-    args = TrafficScriptArg(['src_mac', 'dst_mac', 'src_ip', 'dst_ip',
-                             'crypto_alg', 'crypto_key', 'integ_alg',
-                             'integ_key', 'l_spi', 'r_spi'],
-                            ['src_tun', 'dst_tun'])
-
-    rxq = RxQueue(args.get_arg('rx_if'))
-    txq = TxQueue(args.get_arg('tx_if'))
 
 
-    src_mac = args.get_arg('src_mac')
-    dst_mac = args.get_arg('dst_mac')
+    args = TrafficScriptArg(
+        ['tx_src_mac', 'tx_dst_mac', 'rx_src_mac', 'rx_dst_mac', 'src_ip',
+         'dst_ip','crypto_alg', 'crypto_key', 'integ_alg', 'integ_key',
+         'l_spi', 'r_spi'],
+        ['src_tun', 'dst_tun']
+    )
+
+    tx_txq = TxQueue(args.get_arg('tx_if'))
+    tx_rxq = RxQueue(args.get_arg('tx_if'))
+    rx_txq = TxQueue(args.get_arg('rx_if'))
+    rx_rxq = RxQueue(args.get_arg('rx_if'))
+
+    tx_src_mac = args.get_arg('tx_src_mac')
+    tx_dst_mac = args.get_arg('tx_dst_mac')
+    rx_src_mac = args.get_arg('rx_src_mac')
+    rx_dst_mac = args.get_arg('rx_dst_mac')
     src_ip = args.get_arg('src_ip')
     dst_ip = args.get_arg('dst_ip')
     crypto_alg = args.get_arg('crypto_alg')
     src_ip = args.get_arg('src_ip')
     dst_ip = args.get_arg('dst_ip')
     crypto_alg = args.get_arg('crypto_alg')
@@ -152,23 +150,18 @@ def main():
     src_tun = args.get_arg('src_tun')
     dst_tun = args.get_arg('dst_tun')
 
     src_tun = args.get_arg('src_tun')
     dst_tun = args.get_arg('dst_tun')
 
-    is_ipv4 = True
-    if 6 == ip_address(unicode(src_ip)).version:
-        is_ipv4 = False
+    if ip_address(unicode(src_ip)).version == 6:
+        ip_layer = IPv6
+    else:
+        ip_layer = IP
 
 
-    tunnel_out = None
-    tunnel_in = None
+    tunnel_out = ip_layer(src=src_tun, dst=dst_tun) if src_tun and dst_tun \
+        else None
+    tunnel_in = ip_layer(src=dst_tun, dst=src_tun) if src_tun and dst_tun \
+        else None
 
 
-    if src_tun and dst_tun:
-        if is_ipv4:
-            tunnel_out = IP(src=src_tun, dst=dst_tun)
-            tunnel_in = IP(src=dst_tun, dst=src_tun)
-        else:
-            tunnel_out = IPv6(src=src_tun, dst=dst_tun)
-            tunnel_in = IPv6(src=dst_tun, dst=src_tun)
-    else:
+    if not (src_tun and dst_tun):
         src_tun = src_ip
         src_tun = src_ip
-        dst_tun = dst_ip
 
     sa_in = SecurityAssociation(ESP, spi=r_spi, crypt_algo=crypto_alg,
                                 crypt_key=crypto_key, auth_algo=integ_alg,
 
     sa_in = SecurityAssociation(ESP, spi=r_spi, crypt_algo=crypto_alg,
                                 crypt_key=crypto_key, auth_algo=integ_alg,
@@ -178,41 +171,55 @@ def main():
                                  crypt_key=crypto_key, auth_algo=integ_alg,
                                  auth_key=integ_key, tunnel_header=tunnel_out)
 
                                  crypt_key=crypto_key, auth_algo=integ_alg,
                                  auth_key=integ_key, tunnel_header=tunnel_out)
 
-    sent_packets = []
-
-    if is_ipv4:
-        ip_pkt = (IP(src=src_ip, dst=dst_ip) /
-                  ICMP())
-        ip_pkt = IP(str(ip_pkt))
-    else:
-        ip_pkt = (IPv6(src=src_ip, dst=dst_ip) /
-                  ICMPv6EchoRequest())
-        ip_pkt = IPv6(str(ip_pkt))
+    ip_pkt = ip_layer(src=src_ip, dst=dst_ip, proto=61) if ip_layer == IP \
+        else ip_layer(src=src_ip, dst=dst_ip)
+    ip_pkt = ip_layer(str(ip_pkt))
 
     e_pkt = sa_out.encrypt(ip_pkt)
 
     e_pkt = sa_out.encrypt(ip_pkt)
-    pkt_send = (Ether(src=src_mac, dst=dst_mac) /
-                e_pkt)
+    tx_pkt_send = (Ether(src=tx_src_mac, dst=tx_dst_mac) /
+                   e_pkt)
+
+    sent_packets = list()
+    sent_packets.append(tx_pkt_send)
+    tx_txq.send(tx_pkt_send)
+
+    while True:
+        rx_pkt_recv = rx_rxq.recv(2)
+
+        if rx_pkt_recv is None:
+            raise RuntimeError(
+                '{ip} packet Rx timeout'.format(ip=ip_layer.name))
+
+        if rx_pkt_recv.haslayer(ICMPv6ND_NS):
+            # read another packet in the queue if the current one is ICMPv6ND_NS
+            continue
+        else:
+            # otherwise process the current packet
+            break
+
+    check_ip(rx_pkt_recv, ip_layer, src_ip, dst_ip)
 
 
-    sent_packets.append(pkt_send)
-    txq.send(pkt_send)
+    rx_ip_pkt = ip_layer(src=dst_ip, dst=src_ip, proto=61) if ip_layer == IP \
+        else ip_layer(src=dst_ip, dst=src_ip)
+    rx_pkt_send = (Ether(src=rx_dst_mac, dst=rx_src_mac) /
+                   rx_ip_pkt)
+
+    rx_txq.send(rx_pkt_send)
 
     while True:
 
     while True:
-        pkt_recv = rxq.recv(2, sent_packets)
+        tx_pkt_recv = tx_rxq.recv(2, sent_packets)
 
 
-        if pkt_recv is None:
+        if tx_pkt_recv is None:
             raise RuntimeError('ESP packet Rx timeout')
 
             raise RuntimeError('ESP packet Rx timeout')
 
-        if pkt_recv.haslayer(ICMPv6ND_NS):
+        if rx_pkt_recv.haslayer(ICMPv6ND_NS):
             # read another packet in the queue if the current one is ICMPv6ND_NS
             continue
         else:
             # otherwise process the current packet
             break
 
             # read another packet in the queue if the current one is ICMPv6ND_NS
             continue
         else:
             # otherwise process the current packet
             break
 
-    if is_ipv4:
-        check_ipv4(pkt_recv, src_tun, dst_ip, src_ip, sa_in)
-    else:
-        check_ipv6(pkt_recv, src_tun, dst_ip, src_ip, sa_in)
+    check_ipsec(tx_pkt_recv, ip_layer, src_tun, dst_ip, src_ip, sa_in)
 
     sys.exit(0)
 
 
     sys.exit(0)
 
index 816c005..7c4f2bd 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
 #!/usr/bin/env python
-# Copyright (c) 2016 Cisco and/or its affiliates.
+# Copyright (c) 2019 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:
 # 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:
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""Traffic script that sends an IP ICMPv4/ICMPv6 packet from one interface
+"""Traffic script that sends an IP IPv4/IPv6 packet from one interface
 to the other. Source and destination IP addresses and source and destination
 MAC addresses are checked in received packet.
 """
 to the other. Source and destination IP addresses and source and destination
 MAC addresses are checked in received packet.
 """
@@ -22,7 +22,7 @@ import sys
 import ipaddress
 from robot.api import logger
 from scapy.layers.inet import IP
 import ipaddress
 from robot.api import logger
 from scapy.layers.inet import IP
-from scapy.layers.inet6 import IPv6, ICMPv6EchoRequest, ICMPv6ND_NS
+from scapy.layers.inet6 import IPv6, ICMPv6ND_NS
 from scapy.layers.l2 import Ether, Dot1Q
 
 from resources.libraries.python.PacketVerifier import RxQueue, TxQueue
 from scapy.layers.l2 import Ether, Dot1Q
 
 from resources.libraries.python.PacketVerifier import RxQueue, TxQueue
@@ -46,7 +46,7 @@ def valid_ipv6(ip):
 
 
 def main():
 
 
 def main():
-    """Send IP ICMP packet from one traffic generator interface to the other."""
+    """Send IP/IPv6 packet from one traffic generator interface to the other."""
     args = TrafficScriptArg(
         ['tg_src_mac', 'tg_dst_mac', 'src_ip', 'dst_ip', 'dut_if1_mac',
          'dut_if2_mac'],
     args = TrafficScriptArg(
         ['tg_src_mac', 'tg_dst_mac', 'src_ip', 'dst_ip', 'dut_if1_mac',
          'dut_if2_mac'],
@@ -97,8 +97,9 @@ def main():
             ether = rxq.recv(2, ignore=sent_packets)
         else:
             ether = rxq.recv(2)
             ether = rxq.recv(2, ignore=sent_packets)
         else:
             ether = rxq.recv(2)
+
         if ether is None:
         if ether is None:
-            raise RuntimeError('ICMP echo Rx timeout')
+            raise RuntimeError('IP packet Rx timeout')
 
         if ether.haslayer(ICMPv6ND_NS):
             # read another packet in the queue if the current one is ICMPv6ND_NS
 
         if ether.haslayer(ICMPv6ND_NS):
             # read another packet in the queue if the current one is ICMPv6ND_NS
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
 | ... | single links between nodes.
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
 | ... | single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for IPv4 routing on \
-| ... | both links.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing on both links.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and \
 | ... | two static IPv4 /24 route entries. Container is connected to VPP via \
 | ... | Memif interface. Container is running same VPP version as running on \
 | ... | DUT.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and \
 | ... | two static IPv4 /24 route entries. Container is connected to VPP via \
 | ... | Memif interface. Container is running same VPP version as running on \
 | ... | DUT.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in \
-| ... | one direction by TG on links to DUT1 and via container; on receive TG \
-| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr and \
-| ... | MAC addresses.
+| ... | *[Ver] TG verification:* Test IPv4 packets with IP protocol=61 are \
+| ... | sent in one direction by TG on links to DUT1 and via container; on \
+| ... | receive TG verifies packets for correctness and their IPv4 src-addr, \
+| ... | dst-addr and MAC addresses.
 | ... | *[Ref] Applicable standard specifications:* RFC791, RFC826, RFC792
 
 *** Variables ***
 | ... | *[Ref] Applicable standard specifications:* RFC791, RFC826, RFC792
 
 *** Variables ***
@@ -52,7 +51,7 @@
 *** Keywords ***
 | Local Template
 | | [Documentation]
 *** Keywords ***
 | Local Template
 | | [Documentation]
-| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
+| | ... | [Ver] Make TG send IPv4 packet in both directions between two\
 | | ... | of its interfaces to be routed by DUT to and from docker; verify\
 | | ... | all packets are received.
 | | ...
 | | ... | of its interfaces to be routed by DUT to and from docker; verify\
 | | ... | all packets are received.
 | | ...
@@ -79,6 +78,6 @@
 | | ... | ${tg_if2} | ${dut1_if2_mac} | ${tg_if2_mac}
 
 *** Test Cases ***
 | | ... | ${tg_if2} | ${dut1_if2_mac} | ${tg_if2_mac}
 
 *** Test Cases ***
-| tc01-64B-ethicmpv4-ip4base-eth-2memif-1dcr-dev
+| tc01-64B-ethipv4-ip4base-eth-2memif-1dcr-dev
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
 | ... | with single links between nodes.
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
 | ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of \
-| ... | IPv4. Both apply to all links.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.\
+| ... | Both apply to all links.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-domain \
 | ... | switching. Container is connected to VPP via Memif interface. \
 | ... | Container is running same VPP version as running on DUT.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-domain \
 | ... | switching. Container is connected to VPP via Memif interface. \
 | ... | Container is running same VPP version as running on DUT.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets \
+| ... | *[Ver] TG verification:* Test IPv4 packets with IP protocol=61\
 | ... | are sent in both directions by TG on links to DUT1 and via container; \
 | ... | on receive TG verifies packets for correctness and their IPv4 \
 | ... | src-addr, dst-addr and MAC addresses.
 | ... | are sent in both directions by TG on links to DUT1 and via container; \
 | ... | on receive TG verifies packets for correctness and their IPv4 \
 | ... | src-addr, dst-addr and MAC addresses.
@@ -51,7 +51,7 @@
 *** Keywords ***
 | Local Template
 | | [Documentation]
 *** Keywords ***
 | Local Template
 | | [Documentation]
-| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
+| | ... | [Ver] Make TG send IPv4 packets in both directions between two\
 | | ... | of its interfaces to be switched by DUT to and from docker; verify\
 | | ... | all packets are received.
 | | ...
 | | ... | of its interfaces to be switched by DUT to and from docker; verify\
 | | ... | all packets are received.
 | | ...
 | | And Initialize layer interface
 | | And Start containers for test | auto_scale=${False} | pinning=${False}
 | | And Initialize L2 Bridge Domain with memif pairs | auto_scale=${False}
 | | And Initialize layer interface
 | | And Start containers for test | auto_scale=${False} | pinning=${False}
 | | And Initialize L2 Bridge Domain with memif pairs | auto_scale=${False}
-| | Then Send ICMPv4 bidirectionally and verify received packets
+| | Then Send IPv4 bidirectionally and verify received packets
 | | ... | ${tg} | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
 | | ... | ${tg} | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
-| tc01-64B-ethicmpv4-l2bdbasemaclrn-eth-2memif-1dcr-dev
+| tc01-64B-ethipv4-l2bdbasemaclrn-eth-2memif-1dcr-dev
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
 | ... | single links between nodes.
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
 | ... | single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of IPv4.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect \
 | ... | (L2XC) switching. Container is connected to VPP via Memif interface. \
 | ... | Container is running same VPP version as running on DUT.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect \
 | ... | (L2XC) switching. Container is connected to VPP via Memif interface. \
 | ... | Container is running same VPP version as running on DUT.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets \
+| ... | *[Ver] TG verification:* Test IPv4 packets with IP protocol=61 \
 | ... | are sent in both directions by TG on links to DUT1 and via container; \
 | ... | on receive TG verifies packets for correctness and their IPv4 \
 | ... | src-addr, dst-addr and MAC addresses.
 | ... | are sent in both directions by TG on links to DUT1 and via container; \
 | ... | on receive TG verifies packets for correctness and their IPv4 \
 | ... | src-addr, dst-addr and MAC addresses.
@@ -50,7 +50,7 @@
 *** Keywords ***
 | Local Template
 | | [Documentation]
 *** Keywords ***
 | Local Template
 | | [Documentation]
-| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
+| | ... | [Ver] Make TG send IPv4 packets in both directions between two\
 | | ... | of its interfaces to be switched by DUT to and from docker; verify\
 | | ... | all packets are received.
 | | ...
 | | ... | of its interfaces to be switched by DUT to and from docker; verify\
 | | ... | all packets are received.
 | | ...
 | | And Initialize layer interface
 | | And Start containers for test | auto_scale=${False} | pinning=${False}
 | | And Initialize L2 xconnect with memif pairs
 | | And Initialize layer interface
 | | And Start containers for test | auto_scale=${False} | pinning=${False}
 | | And Initialize L2 xconnect with memif pairs
-| | Then Send ICMPv4 bidirectionally and verify received packets
+| | Then Send IPv4 bidirectionally and verify received packets
 | | ... | ${tg} | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
 | | ... | ${tg} | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
-| tc01-64B-ethicmpv4-l2xcbase-eth-2memif-1dcr-dev
+| tc01-64B-ethipv4-l2xcbase-eth-2memif-1dcr-dev
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
 | ... | single links between nodes.
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
 | ... | single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-ICMPv6 for IPv6 routing on \
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing on \
 | ... | both links.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and \
 | ... | two static IPv6 /64 route entries. Container is connected to VPP via \
 | ... | Memif interface. Container is running same VPP version as running on \
 | ... | DUT.
 | ... | both links.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and \
 | ... | two static IPv6 /64 route entries. Container is connected to VPP via \
 | ... | Memif interface. Container is running same VPP version as running on \
 | ... | DUT.
-| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in \
-| ... | one direction by TG on links to DUT1 and via container; on receive TG \
-| ... | verifies packets for correctness and their IPv6 src-addr, dst-addr and \
+| ... | *[Ver] TG verification:* Test IPv6 packets are sent in one direction \
+| ... | by TG on links to DUT1 and via container; on receive TG verifies \
+| ... | packets for correctness and their IPv6 src-addr, dst-addr and \
 | ... | MAC addresses.
 | ... | *[Ref] Applicable standard specifications:* RFC791, RFC826, RFC792
 
 | ... | MAC addresses.
 | ... | *[Ref] Applicable standard specifications:* RFC791, RFC826, RFC792
 
@@ -52,7 +52,7 @@
 *** Keywords ***
 | Local Template
 | | [Documentation]
 *** Keywords ***
 | Local Template
 | | [Documentation]
-| | ... | [Ver] Make TG send ICMPv6 Echo Reqs in both directions between two\
+| | ... | [Ver] Make TG send IPv6 packets in both directions between two\
 | | ... | of its interfaces to be routed by DUT to and from docker; verify\
 | | ... | all packets are received.
 | | ...
 | | ... | of its interfaces to be routed by DUT to and from docker; verify\
 | | ... | all packets are received.
 | | ...
 | | ... | ${tg_if2} | ${dut1_if2_mac} | ${tg_if2_mac}
 
 *** Test Cases ***
 | | ... | ${tg_if2} | ${dut1_if2_mac} | ${tg_if2_mac}
 
 *** Test Cases ***
-| tc01-78B-ethicmpv6-ip6base-eth-2memif-1dcr-dev
+| tc01-78B-ethipv6-ip6base-eth-2memif-1dcr-dev
 | | [Tags] | 78B
 | | frame_size=${78} | phy_cores=${0}
 | | [Tags] | 78B
 | | frame_size=${78} | phy_cores=${0}
index 72ba593..f8be194 100644 (file)
 | ${tg_spi}= | ${1000}
 | ${dut_spi}= | ${1001}
 | ${ESP_PROTO}= | ${50}
 | ${tg_spi}= | ${1000}
 | ${dut_spi}= | ${1001}
 | ${ESP_PROTO}= | ${50}
-| ${tg_if_ip4}= | 192.168.100.2
-| ${dut_if_ip4}= | 192.168.100.3
-| ${tg_lo_ip4}= | 192.168.3.3
-| ${dut_lo_ip4}= | 192.168.4.4
+| ${tg_if1_ip4}= | 192.168.100.2
+| ${tg_if2_ip4}= | 192.168.4.4
+| ${dut_if1_ip4}= | 192.168.100.3
+| ${dut_if2_ip4}= | 192.168.4.3
+| ${tg_host_ip4}= | 192.168.3.3
 | ${ip4_plen}= | ${24}
 
 *** Keywords ***
 | ${ip4_plen}= | ${24}
 
 *** Keywords ***
 | | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Configure manual keyed connection for IPSec
 | | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Configure manual keyed connection for IPSec
 | | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
+| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${tg_dst_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
 | | Then Send IPsec Packet and verify ESP encapsulation in received packet
 | | ... | ${dut_tun_ip} | ${tg_tun_ip}
 | | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
+| | ... | ${tg} | ${tg_if1} | ${tg_if2} | ${dut1_if1_mac} | ${dut1_if2_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
-| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
+| | ... | ${dut_spi} | ${tg_src_ip} | ${tg_dst_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 
 *** Test Cases ***
 | | ... | ${dut_tun_ip}
 
 *** Test Cases ***
index 84b3836..26f19cb 100644 (file)
 | ${tg_spi}= | ${1000}
 | ${dut_spi}= | ${1001}
 | ${ESP_PROTO}= | ${50}
 | ${tg_spi}= | ${1000}
 | ${dut_spi}= | ${1001}
 | ${ESP_PROTO}= | ${50}
-| ${tg_if_ip4}= | 192.168.100.2
-| ${dut_if_ip4}= | 192.168.100.3
-| ${tg_lo_ip4}= | 192.168.3.3
-| ${dut_lo_ip4}= | 192.168.4.4
+| ${tg_if1_ip4}= | 192.168.100.2
+| ${tg_if2_ip4}= | 192.168.4.4
+| ${dut_if1_ip4}= | 192.168.100.3
+| ${dut_if2_ip4}= | 192.168.4.3
+| ${tg_host_ip4}= | 192.168.3.3
 | ${ip4_plen}= | ${24}
 
 *** Keywords ***
 | ${ip4_plen}= | ${24}
 
 *** Keywords ***
 | | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Configure manual keyed connection for IPSec
 | | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Configure manual keyed connection for IPSec
 | | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
+| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${tg_dst_ip} | ${tg_src_ip}
 | | Then Send IPsec Packet and verify ESP encapsulation in received packet
 | | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
+| | ... | ${tg} | ${tg_if1} | ${tg_if2} | ${dut1_if1_mac} | ${dut1_if2_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
-| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
+| | ... | ${dut_spi} | ${tg_src_ip} | ${tg_dst_ip}
 
 *** Test Cases ***
 | tc01-110B-ethip4ipsec1tptsw-ip4base-policy-aes-128-cbc-sha-512-256-dev
 
 *** Test Cases ***
 | tc01-110B-ethip4ipsec1tptsw-ip4base-policy-aes-128-cbc-sha-512-256-dev
index f3a8ba1..6fe272a 100644 (file)
 | ${tg_spi}= | ${1000}
 | ${dut_spi}= | ${1001}
 | ${ESP_PROTO}= | ${50}
 | ${tg_spi}= | ${1000}
 | ${dut_spi}= | ${1001}
 | ${ESP_PROTO}= | ${50}
-| ${tg_if_ip6}= | 3ffe:5f::1
-| ${dut_if_ip6}= | 3ffe:5f::2
-| ${tg_lo_ip6}= | 3ffe:60::3
-| ${dut_lo_ip6}= | 3ffe:60::4
+| ${tg_if1_ip6}= | 3ffe:5f::1
+| ${tg_if2_ip6}= | 3ffe:60::4
+| ${dut_if1_ip6}= | 3ffe:5f::2
+| ${dut_if2_ip6}= | 3ffe:60::3
+| ${tg_host_ip6}= | 3ffe:61::3
 | ${ip6_plen}= | ${64}
 | ${ip6_plen_rt}= | ${128}
 
 | ${ip6_plen}= | ${64}
 | ${ip6_plen_rt}= | ${128}
 
 | | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Configure manual keyed connection for IPSec
 | | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Configure manual keyed connection for IPSec
 | | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
+| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${tg_dst_ip} | ${tg_src_ip}
 | | ... | ${dut_tun_ip} | ${tg_tun_ip} | is_ipv6=${TRUE}
 | | Then Send IPsec Packet and verify ESP encapsulation in received packet
 | | ... | ${dut_tun_ip} | ${tg_tun_ip} | is_ipv6=${TRUE}
 | | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
+| | ... | ${tg} | ${tg_if1} | ${tg_if2} | ${dut1_if1_mac} | ${dut1_if2_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
-| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
+| | ... | ${dut_spi} | ${tg_src_ip} | ${tg_dst_ip} | ${tg_tun_ip}
 | | ... | ${dut_tun_ip}
 
 *** Test Cases ***
 | | ... | ${dut_tun_ip}
 
 *** Test Cases ***
index 473cd00..342ce95 100644 (file)
 | ${tg_spi}= | ${1000}
 | ${dut_spi}= | ${1001}
 | ${ESP_PROTO}= | ${50}
 | ${tg_spi}= | ${1000}
 | ${dut_spi}= | ${1001}
 | ${ESP_PROTO}= | ${50}
-| ${tg_if_ip6}= | 3ffe:5f::1
-| ${dut_if_ip6}= | 3ffe:5f::2
-| ${tg_lo_ip6}= | 3ffe:60::3
-| ${dut_lo_ip6}= | 3ffe:60::4
+| ${tg_if1_ip6}= | 3ffe:5f::1
+| ${tg_if2_ip6}= | 3ffe:60::4
+| ${dut_if1_ip6}= | 3ffe:5f::2
+| ${dut_if2_ip6}= | 3ffe:60::3
+| ${tg_host_ip6}= | 3ffe:61::3
 | ${ip6_plen}= | ${64}
 | ${ip6_plen_rt}= | ${128}
 
 | ${ip6_plen}= | ${64}
 | ${ip6_plen_rt}= | ${128}
 
 | | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Configure manual keyed connection for IPSec
 | | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
 | | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
 | | And Configure manual keyed connection for IPSec
 | | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
+| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${tg_dst_ip} | ${tg_src_ip}
 | | ... | is_ipv6=${TRUE}
 | | Then Send IPsec Packet and verify ESP encapsulation in received packet
 | | ... | is_ipv6=${TRUE}
 | | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
+| | ... | ${tg} | ${tg_if1} | ${tg_if2} | ${dut1_if1_mac} | ${dut1_if2_mac}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
 | | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
-| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
+| | ... | ${dut_spi} | ${tg_src_ip} | ${tg_dst_ip}
 
 *** Test Cases ***
 | tc01-124B-ethip6ipsec1tptsw-ip6base-policy-aes-128-cbc-sha-512-256-dev
 
 *** Test Cases ***
 | tc01-124B-ethip6ipsec1tptsw-ip6base-policy-aes-128-cbc-sha-512-256-dev
 | ...
 | ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links
 | ... | between nodes.
 | ...
 | ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links
 | ... | between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of
 | ... | IPv4.
 | ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2
 | ... | bridge-domain (L2BD) MAC learning enabled; Split Horizon Groups (SHG)
 | ... | are set depending on test case; Namespaces (NM)
 | ... | are set on DUT1 with attached linux-TAP.
 | ... | IPv4.
 | ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2
 | ... | bridge-domain (L2BD) MAC learning enabled; Split Horizon Groups (SHG)
 | ... | are set depending on test case; Namespaces (NM)
 | ... | are set on DUT1 with attached linux-TAP.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets
+| ... | *[Ver] TG verification:* Test IPv4 packets with IP protocol=61
 | ... | are sent by TG on link to DUT1; On receipt TG verifies packets
 | ... | for correctness and their IPv4 src-addr, dst-addr, and MAC addresses.
 | ... | *[Ref] Applicable standard specifications:*
 | ... | are sent by TG on link to DUT1; On receipt TG verifies packets
 | ... | for correctness and their IPv4 src-addr, dst-addr, and MAC addresses.
 | ... | *[Ref] Applicable standard specifications:*
 | | And Add interface to bridge domain | ${dut1} | ${dut1_if1} | 20 | 0
 | | And Add interface to bridge domain | ${dut1} | ${int2} | 19 | 0
 | | And Add interface to bridge domain | ${dut1} | ${dut1_if2} | 19 | 0
 | | And Add interface to bridge domain | ${dut1} | ${dut1_if1} | 20 | 0
 | | And Add interface to bridge domain | ${dut1} | ${int2} | 19 | 0
 | | And Add interface to bridge domain | ${dut1} | ${dut1_if2} | 19 | 0
-| | Then Send ICMP packet and verify received packet
+| | Then Send IP packet and verify received packet
 | | ... | ${tg} | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
 | | ... | ${tg} | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
-| tc01-64B-ethicmpv4-l2bdbasemaclrn-eth-2tap-dev
+| tc01-64B-ethipv4-l2bdbasemaclrn-eth-2tap-dev
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
 | ... | with single links between nodes.
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
 | ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for IPv4 routing on \
-| ... | both links.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing on both \
+| ... | links.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and \
 | ... | two static IPv4 /24 route entries.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and \
 | ... | two static IPv4 /24 route entries.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in \
-| ... | one direction by TG on links to DUT1; on receive TG verifies packets \
+| ... | *[Ver] TG verification:* Test IPv4 packet with IP protocol=61 is sent \
+| ... | in one direction by TG on links to DUT1; on receive TG verifies packet \
 | ... | for correctness and their IPv4 src-addr, dst-addr and MAC addresses.
 | ... | *[Ref] Applicable standard specifications:* RFC791, RFC826, RFC792
 
 | ... | for correctness and their IPv4 src-addr, dst-addr and MAC addresses.
 | ... | *[Ref] Applicable standard specifications:* RFC791, RFC826, RFC792
 
@@ -46,8 +46,8 @@
 *** Keywords ***
 | Local Template
 | | [Documentation]
 *** Keywords ***
 | Local Template
 | | [Documentation]
-| | ... | [Ver] Make TG send ICMPv4 Echo Req routed over DUT1 interfaces.\
-| | ... | Make TG verify ICMPv4 Echo Reply is correct.
+| | ... | [Ver] Make TG send IPv4 packet routed over DUT1 interfaces.\
+| | ... | Make TG verify IPv4 packet is correct.
 | | ...
 | | ... | *Arguments:*
 | | ... | - frame_size - Framesize in Bytes in integer. Type: integer
 | | ...
 | | ... | *Arguments:*
 | | ... | - frame_size - Framesize in Bytes in integer. Type: integer
 | | And Initialize layer interface
 | | And Initialize IPv4 forwarding in circular topology
 | | ... | remote_host1_ip=192.168.0.1 | remote_host2_ip=192.168.0.2
 | | And Initialize layer interface
 | | And Initialize IPv4 forwarding in circular topology
 | | ... | remote_host1_ip=192.168.0.1 | remote_host2_ip=192.168.0.2
-| | Then Send IPv4 ping packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if2}
-| | ... | 10.10.10.2 | 20.20.20.1 | ${dut1_if1_mac} | ${0}
-| | Then Send IPv4 ping packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if1}
-| | ... | 10.10.10.2 | 10.10.10.1 | ${dut1_if1_mac} | ${0}
-| | Then Send IPv4 ping packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
-| | ... | 10.10.10.2 | 20.20.20.2 | ${dut1_if1_mac} | ${1}
-| | Then Send IPv4 ping packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
-| | ... | 192.168.0.1 | 192.168.0.2 | ${dut1_if1_mac} | ${1}
+| | Then Send packet and verify headers
+| | ... | ${tg} | 192.168.0.1 | 192.168.0.2
+| | ... | ${tg_if1} | ${tg_if1_mac} | ${dut1_if1_mac}
+| | ... | ${tg_if2} | ${dut1_if2_mac} | ${tg_if2_mac}
 
 *** Test Cases ***
 
 *** Test Cases ***
-| tc01-64B-ethicmpv4-ip4base-dev
+| tc01-64B-ethipv4-ip4base-dev
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
 | ... | with single links between nodes.
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
 | ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-ICMPv6 for IPv6 routing on \
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing on \
 | ... | both links.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and \
 | ... | two static IPv6 /64 route entries.
 | ... | both links.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and \
 | ... | two static IPv6 /64 route entries.
-| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in \
-| ... | one direction by TG on links to DUT1; on receive TG verifies packets \
-| ... | for correctness and their IPv6 src-addr, dst-addr and MAC addresses.
+| ... | *[Ver] TG verification:* Test IPv6 packet is sent in one direction \
+| ... | by TG on links to DUT1; on receive TG verifies packet for correctness \
+| ... | and their IPv6 src-addr, dst-addr and MAC addresses.
 | ... | *[Ref] Applicable standard specifications:* RFC2460, RFC4443, RFC4861
 
 *** Variables ***
 | ... | *[Ref] Applicable standard specifications:* RFC2460, RFC4443, RFC4861
 
 *** Variables ***
@@ -46,8 +46,8 @@
 *** Keywords ***
 | Local Template
 | | [Documentation]
 *** Keywords ***
 | Local Template
 | | [Documentation]
-| | ... | [Ver] Make TG send ICMPv6 Echo Req routed over DUT1 interfaces;\
-| | ... | Make TG verify ICMPv6 Echo Reply is correct.
+| | ... | [Ver] Make TG send IPv6 packet routed over DUT1 interfaces;\
+| | ... | Make TG verify IPv6 packet is correct.
 | | ...
 | | ... | *Arguments:*
 | | ... | - frame_size - Framesize in Bytes in integer. Type: integer
 | | ...
 | | ... | *Arguments:*
 | | ... | - frame_size - Framesize in Bytes in integer. Type: integer
 | | And Initialize layer interface
 | | And Initialize IPv6 forwarding in circular topology
 | | ... | remote_host1_ip=3ffe:5f::1 | remote_host2_ip=3ffe:5f::2
 | | And Initialize layer interface
 | | And Initialize IPv6 forwarding in circular topology
 | | ... | remote_host1_ip=3ffe:5f::1 | remote_host2_ip=3ffe:5f::2
-| | Then Send IPv6 echo request packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if2}
-| | ... | 2001:1::2 | 2001:2::1 | ${dut1_if1_mac} | ${0}
-| | Then Send IPv6 echo request packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if1}
-| | ... | 2001:1::2 | 2001:1::1 | ${dut1_if1_mac} | ${0}
-| | Then Send IPv6 echo request packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
-| | ... | 2001:1::2 | 2001:2::2 | ${dut1_if1_mac} | ${1} | ${dut1_if2_mac}
-| | Then Send IPv6 echo request packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
-| | ... | 3ffe:5f::1 | 3ffe:5f::2 | ${dut1_if1_mac} | ${1} | ${dut1_if2_mac}
+| | Then Send packet and verify headers
+| | ... | ${tg} | 3ffe:5f::1 | 3ffe:5f::2
+| | ... | ${tg_if1} | ${tg_if1_mac} | ${dut1_if1_mac}
+| | ... | ${tg_if2} | ${dut1_if2_mac} | ${tg_if2_mac}
 
 *** Test Cases ***
 
 *** Test Cases ***
-| tc01-78B-ethicmpv6-ip6base-dev
+| tc01-78B-ethipv6-ip6base-dev
 | | [Tags] | 78B
 | | frame_size=${78} | phy_cores=${0}
 | | [Tags] | 78B
 | | frame_size=${78} | phy_cores=${0}
index 6fb6da4..9f9da32 100644 (file)
@@ -55,9 +55,9 @@
 *** Keywords ***
 | Local template
 | | [Documentation]
 *** Keywords ***
 | Local template
 | | [Documentation]
-| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
-| | ... | of its interfaces to be switched by DUT to and from docker; verify\
-| | ... | all packets are received.
+| | ... | [Ver] Make TG send IPv4 packet in one direction between two\
+| | ... | of its interfaces to be switched by DUT to and from docker.\
+| | ... | Make TG verify IPv4 packet is correct.
 | | ...
 | | ... | *Arguments:*
 | | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
 | | ...
 | | ... | *Arguments:*
 | | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
index 55e56ba..5497412 100644 (file)
@@ -47,7 +47,7 @@
 *** Keywords ***
 | Local Template
 | | [Documentation]
 *** Keywords ***
 | Local Template
 | | [Documentation]
-| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
+| | ... | [Ver] Make TG send IPv4 packets in both directions between two\
 | | ... | of its interfaces to be switched by DUT to and from docker; verify\
 | | ... | all packets are received.
 | | ...
 | | ... | of its interfaces to be switched by DUT to and from docker; verify\
 | | ... | all packets are received.
 | | ...
@@ -68,7 +68,7 @@
 | | And Initialize layer interface
 | | And Initialize layer dot1q
 | | And Initialize L2 bridge domain
 | | And Initialize layer interface
 | | And Initialize layer dot1q
 | | And Initialize L2 bridge domain
-| | Then Send ICMPv4 bidirectionally and verify received packets
+| | Then Send IPv4 bidirectionally and verify received packets
 | | ... | ${tg} | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
 | | ... | ${tg} | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
@@ -15,7 +15,7 @@
 | Resource | resources/libraries/robot/shared/default.robot
 | ...
 | Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
 | Resource | resources/libraries/robot/shared/default.robot
 | ...
 | Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
-| ... | NIC_Virtual | ETH | L2BDMACLRN | BASE | ICMP | DRV_VFIO_PCI
+| ... | NIC_Virtual | ETH | L2BDMACLRN | BASE | DRV_VFIO_PCI
 | ...
 | Suite Setup | Setup suite single link | scapy
 | Test Setup | Setup test
 | ...
 | Suite Setup | Setup suite single link | scapy
 | Test Setup | Setup test
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
 | ... | with single links between nodes.
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
 | ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of \
-| ... | IPv4. Both apply to all links.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.\
+| ... | Both apply to all links.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-domain \
 | ... | switching.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-domain \
 | ... | switching.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets \
+| ... | *[Ver] TG verification:* Test IPv4 packets with IP protocol=61 \
 | ... | are sent in both directions by TG on links to DUT1; on receive TG \
 | ... | verifies packets for correctness and their IPv4 src-addr, \
 | ... | dst-addr and MAC addresses.
 | ... | are sent in both directions by TG on links to DUT1; on receive TG \
 | ... | verifies packets for correctness and their IPv4 src-addr, \
 | ... | dst-addr and MAC addresses.
@@ -47,7 +47,7 @@
 *** Keywords ***
 | Local Template
 | | [Documentation]
 *** Keywords ***
 | Local Template
 | | [Documentation]
-| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
+| | ... | [Ver] Make TG send IPv4 packets in both directions between two\
 | | ... | of its interfaces to be switched by DUT to and from docker; verify\
 | | ... | all packets are received.
 | | ...
 | | ... | of its interfaces to be switched by DUT to and from docker; verify\
 | | ... | all packets are received.
 | | ...
 | | When Initialize layer driver | ${nic_driver}
 | | And Initialize layer interface
 | | And Initialize L2 bridge domain
 | | When Initialize layer driver | ${nic_driver}
 | | And Initialize layer interface
 | | And Initialize L2 bridge domain
-| | Then Send ICMPv4 bidirectionally and verify received packets
+| | Then Send IPv4 bidirectionally and verify received packets
 | | ... | ${tg} | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
 | | ... | ${tg} | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
-| tc01-64B-ethicmpv4-l2bdbasemaclrn-dev
+| tc01-64B-ethipv4-l2bdbasemaclrn-dev
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
@@ -15,7 +15,7 @@
 | Resource | resources/libraries/robot/shared/default.robot
 | ...
 | Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
 | Resource | resources/libraries/robot/shared/default.robot
 | ...
 | Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
-| ... | NIC_Virtual | ETH | L2XCFWD | BASE | ICMP | DRV_VFIO_PCI
+| ... | NIC_Virtual | ETH | L2XCFWD | BASE | DRV_VFIO_PCI
 | ...
 | Suite Setup | Setup suite single link | scapy
 | Test Setup | Setup test
 | ...
 | Suite Setup | Setup suite single link | scapy
 | Test Setup | Setup test
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
 | ... | with single links between nodes.
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
 | ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of \
-| ... | IPv4. Both apply to all links.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.\
+| ... | Both apply to all links.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect \
 | ... | switching.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect \
 | ... | switching.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets \
+| ... | *[Ver] TG verification:* Test IPv4 packets with IP protocol=61 \
 | ... | are sent in both directions by TG on links to DUT1; on receive TG \
 | ... | verifies packets for correctness and their IPv4 src-addr, \
 | ... | dst-addr and MAC addresses.
 | ... | are sent in both directions by TG on links to DUT1; on receive TG \
 | ... | verifies packets for correctness and their IPv4 src-addr, \
 | ... | dst-addr and MAC addresses.
@@ -47,7 +47,7 @@
 *** Keywords ***
 | Local Template
 | | [Documentation]
 *** Keywords ***
 | Local Template
 | | [Documentation]
-| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
+| | ... | [Ver] Make TG send IPv4 packets in both directions between two\
 | | ... | of its interfaces to be switched by DUT to and from docker; verify\
 | | ... | all packets are received.
 | | ...
 | | ... | of its interfaces to be switched by DUT to and from docker; verify\
 | | ... | all packets are received.
 | | ...
 | | When Initialize layer driver | ${nic_driver}
 | | And Initialize layer interface
 | | And Initialize L2 xconnect in 2-node circular topology
 | | When Initialize layer driver | ${nic_driver}
 | | And Initialize layer interface
 | | And Initialize L2 xconnect in 2-node circular topology
-| | Then Send ICMPv4 bidirectionally and verify received packets
+| | Then Send IPv4 bidirectionally and verify received packets
 | | ... | ${tg} | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
 | | ... | ${tg} | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
-| tc01-64B-ethicmpv4-l2xcbase-dev
+| tc01-64B-ethipv4-l2xcbase-dev
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
 | ... | VM and single links between nodes.
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
 | ... | VM and single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for IPv4 routing on \
-| ... | both links.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing on both links.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and \
 | ... | two static IPv4 /24 route entries. Qemu Guest is connected to VPP via \
 | ... | vhost-user interfaces. Guest is running VPP ip4 interconnecting \
 | ... | vhost-user interfaces.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and \
 | ... | two static IPv4 /24 route entries. Qemu Guest is connected to VPP via \
 | ... | vhost-user interfaces. Guest is running VPP ip4 interconnecting \
 | ... | vhost-user interfaces.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in \
-| ... | one direction by TG on links to DUT1; on receive TG verifies packets \
+| ... | *[Ver] TG verification:* Test IPv4 packet with IP protocol=61 is sent \
+| ... | in one direction by TG on links to DUT1; on receive TG verifies packet \
 | ... | for correctness and their IPv4 src-addr, dst-addr and MAC addresses.
 | ... | *[Ref] Applicable standard specifications:* RFC791, RFC826, RFC792
 
 | ... | for correctness and their IPv4 src-addr, dst-addr and MAC addresses.
 | ... | *[Ref] Applicable standard specifications:* RFC791, RFC826, RFC792
 
@@ -85,6 +84,6 @@
 | | ... | ${tg_if2} | ${dut1_if2_mac} | ${tg_if2_mac}
 
 *** Test Cases ***
 | | ... | ${tg_if2} | ${dut1_if2_mac} | ${tg_if2_mac}
 
 *** Test Cases ***
-| tc01-64B-ethicmp4-ip4base-eth-2vhost-1vm-dev
+| tc01-64B-ethip4-ip4base-eth-2vhost-1vm-dev
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
 | ... | VM and single links between nodes.
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
 | ... | VM and single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-ICMPv6 for IPv6 routing on \
-| ... | both links.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing on both links.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and \
 | ... | two static IPv6 /64 route entries. Qemu Guest is connected to VPP via \
 | ... | vhost-user interfaces. Guest is running VPP ip6 interconnecting \
 | ... | vhost-user interfaces.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and \
 | ... | two static IPv6 /64 route entries. Qemu Guest is connected to VPP via \
 | ... | vhost-user interfaces. Guest is running VPP ip6 interconnecting \
 | ... | vhost-user interfaces.
-| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in \
-| ... | one direction by TG on links to DUT1; on receive TG verifies packets \
-| ... | for correctness and their IPv6 src-addr, dst-addr and MAC addresses.
+| ... | *[Ver] TG verification:* Test IPv6 packets are sent in one direction \
+| ... | by TG on links to DUT1; on receive TG verifies packets for correctness \
+| ... | and their IPv6 src-addr, dst-addr and MAC addresses.
 | ... | *[Ref] Applicable standard specifications:* RFC2460, RFC4443, RFC4861
 
 *** Variables ***
 | ... | *[Ref] Applicable standard specifications:* RFC2460, RFC4443, RFC4861
 
 *** Variables ***
@@ -86,6 +85,6 @@
 
 
 *** Test Cases ***
 
 
 *** Test Cases ***
-| tc01-64B-ethicmpv6-ip6base-eth-2vhost-1vm-dev
+| tc01-64B-ethipv6-ip6base-eth-2vhost-1vm-dev
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
@@ -15,7 +15,7 @@
 | Resource | resources/libraries/robot/shared/default.robot
 | ...
 | Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
 | Resource | resources/libraries/robot/shared/default.robot
 | ...
 | Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
-| ... | NIC_Virtual | ETH | L2BDMACLRN | BASE | ICMP | VHOST | 1VM
+| ... | NIC_Virtual | ETH | L2BDMACLRN | BASE | VHOST | 1VM
 | ... | DRV_VFIO_PCI
 | ...
 | Suite Setup | Setup suite single link | scapy
 | ... | DRV_VFIO_PCI
 | ...
 | Suite Setup | Setup suite single link | scapy
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
 | ... | VM and single links between nodes.
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
 | ... | VM and single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of \
-| ... | IPv4.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 \
 | ... | bridge-domains (L2BD) switching combined with MAC learning enabled. \
 | ... | Qemu Guest is connected to VPP via vhost-user interfaces. Guest is \
 | ... | configured with VPP l2 cross-connect interconnecting vhost-user \
 | ... | interfaces.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 \
 | ... | bridge-domains (L2BD) switching combined with MAC learning enabled. \
 | ... | Qemu Guest is connected to VPP via vhost-user interfaces. Guest is \
 | ... | configured with VPP l2 cross-connect interconnecting vhost-user \
 | ... | interfaces.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in \
-| ... | both directions by TG on links to DUT1 via VM; on receive TG verifies \
-| ... | packets for correctness and their IPv4 src-addr, dst-addr and MAC \
-| ... | addresses.
+| ... | *[Ver] TG verification:* Test IPv4 packets with IP protocol=61 are \
+| ... | sent in both directions by TG on links to DUT1 via VM; on receive TG \
+| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr \
+| ... | and MAC addresses.
 | ... | *[Ref] Applicable standard specifications:* RFC792
 
 *** Variables ***
 | ... | *[Ref] Applicable standard specifications:* RFC792
 
 *** Variables ***
 *** Keywords ***
 | Local Template
 | | [Documentation]
 *** Keywords ***
 | Local Template
 | | [Documentation]
-| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure \
+| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv4. [Cfg] On DUT1 configure \
 | | ... | two L2BDs with MAC learning, each with vhost-user i/f to local \
 | | ... | VM and i/f to TG; configure VPP in VM to loop pkts back betwen its \
 | | ... | two L2BDs with MAC learning, each with vhost-user i/f to local \
 | | ... | VM and i/f to TG; configure VPP in VM to loop pkts back betwen its \
-| | ... | two virtio i/fs. [Ver] Make TG verify ICMPv4 Echo Req pkts are \
-| | ... | switched thru DUT1 and VM in both directions and are correct on \
-| | ... | receive. [Ref]
+| | ... | two virtio i/fs. [Ver] Make TG verify IPv4 packets are switched \
+| | ... | thru DUT1 and VM in both directions and are correct on receive.
 | | ...
 | | ... | *Arguments:*
 | | ... | - frame_size - Framesize in Bytes in integer. Type: integer
 | | ...
 | | ... | *Arguments:*
 | | ... | - frame_size - Framesize in Bytes in integer. Type: integer
 | | And Configure chains of NFs connected via vhost-user
 | | ... | nf_chains=${nf_chains} | nf_nodes=${nf_nodes} | vnf=vpp_chain_l2xc
 | | ... | pinning=${False}
 | | And Configure chains of NFs connected via vhost-user
 | | ... | nf_chains=${nf_chains} | nf_nodes=${nf_nodes} | vnf=vpp_chain_l2xc
 | | ... | pinning=${False}
-| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg}
+| | Then Send IPv4 bidirectionally and verify received packets | ${tg}
 | | ... | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
 | | ... | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
-| tc01-64B-ethicmpv4-l2bdbasemaclrn-eth-2vhost-1vm-dev
+| tc01-64B-ethipv4-l2bdbasemaclrn-eth-2vhost-1vm-dev
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
@@ -15,7 +15,7 @@
 | Resource | resources/libraries/robot/shared/default.robot
 | ...
 | Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
 | Resource | resources/libraries/robot/shared/default.robot
 | ...
 | Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
-| ... | NIC_Virtual | ETH | L2XCFWD | BASE | ICMP | VHOST | 1VM | DRV_VFIO_PCI
+| ... | NIC_Virtual | ETH | L2XCFWD | BASE | VHOST | 1VM | DRV_VFIO_PCI
 | ...
 | Suite Setup | Setup suite single link | scapy
 | Test Setup | Setup test
 | ...
 | Suite Setup | Setup suite single link | scapy
 | Test Setup | Setup test
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
 | ... | VM and single links between nodes.
 | ...
 | ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
 | ... | VM and single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of \
-| ... | IPv4.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect \
 | ... | (L2XC) switching. Qemu Guest is connected to VPP via vhost-user \
 | ... | interfaces. Guest is configured with VPP l2 cross-connect \
 | ... | interconnecting vhost-user interfaces.
 | ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect \
 | ... | (L2XC) switching. Qemu Guest is connected to VPP via vhost-user \
 | ... | interfaces. Guest is configured with VPP l2 cross-connect \
 | ... | interconnecting vhost-user interfaces.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in \
-| ... | both directions by TG on links to DUT1 via VM; on receive TG verifies \
-| ... | packets for correctness and their IPv4 src-addr, dst-addr and MAC \
-| ... | addresses.
+| ... | *[Ver] TG verification:* Test IPv4 packets with IP protocol=61 are \
+| ... | sent in both directions by TG on links to DUT1 via VM; on receive TG \
+| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr \
+| ... | and MAC addresses.
 | ... | *[Ref] Applicable standard specifications:* RFC792
 
 *** Variables ***
 | ... | *[Ref] Applicable standard specifications:* RFC792
 
 *** Variables ***
 *** Keywords ***
 | Local Template
 | | [Documentation]
 *** Keywords ***
 | Local Template
 | | [Documentation]
-| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT configure \
+| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv4. [Cfg] On DUT configure \
 | | ... | two L2 cross-connects (L2XC), each with one untagged interface \
 | | ... | to TG and untagged i/f to local VM over vhost-user. [Ver] Make \
 | | ... | two L2 cross-connects (L2XC), each with one untagged interface \
 | | ... | to TG and untagged i/f to local VM over vhost-user. [Ver] Make \
-| | ... | TG send ICMPv4 Echo Reqs in both directions between two of its \
+| | ... | TG send IPv4 packets in both directions between two of its \
 | | ... | i/fs to be switched by DUT to and from VM; verify all packets \
 | | ... | are received. [Ref]
 | | ...
 | | ... | i/fs to be switched by DUT to and from VM; verify all packets \
 | | ... | are received. [Ref]
 | | ...
 | | And Configure chains of NFs connected via vhost-user
 | | ... | nf_chains=${nf_chains} | nf_nodes=${nf_nodes} | vnf=vpp_chain_l2xc
 | | ... | pinning=${False}
 | | And Configure chains of NFs connected via vhost-user
 | | ... | nf_chains=${nf_chains} | nf_nodes=${nf_nodes} | vnf=vpp_chain_l2xc
 | | ... | pinning=${False}
-| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg}
+| | Then Send IPv4 bidirectionally and verify received packets | ${tg}
 | | ... | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
 | | ... | ${tg_if1} | ${tg_if2}
 
 *** Test Cases ***
-| tc01-64B-ethicmpv4-l2xcbase-eth-2vhost-1vm-dev
+| tc01-64B-ethipv4-l2xcbase-eth-2vhost-1vm-dev
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}
 | | [Tags] | 64B
 | | frame_size=${64} | phy_cores=${0}