'eid': '6.6.2.0',
'prefix': 24}
-dut1_fib_table = '1'
-dut2_fib_table = '2'
+fib_table_1 = 1
+dut1_dut2_vni = 1
dut2_spi = 1000
dut1_spi = 1001
vm1_vif1_mac = '52:54:00:00:04:01'
vm1_vif2_mac = '52:54:00:00:04:02'
+
+vhost_ip = '6.0.1.3'
+
prefix4 = 24
dut1_to_dut2_ip4_static_adjacency = {'vni': 0,
'eid': dst_ip_range,
'prefix': prefix4}
-dut1_fib_table = 1
-dut2_fib_table = 2
+fib_table_1 = 1
+dut1_dut2_vni = 1
sock1 = "/tmp/sock1"
sock2 = "/tmp/sock2"
tg2_ip6 = '2001:cdba:2::2'
prefix6 = 64
+vhost_ip = '2001:cdba:1::9'
+
dut1_to_dut2_ip6_static_adjacency = {'vni': 0,
'deid': '2001:cdba:2::0',
'rloc': '2001:cdba:3::2',
'eid': '2001:cdba:2::0',
'prefix': 64}
-dut1_fib_table = '1'
-dut2_fib_table = '2'
+fib_table_1 = 1
+dut1_dut2_vni = 1
sock1 = "/tmp/sock1"
sock2 = "/tmp/sock2"
| Library | resources.libraries.python.topology.Topology
| Library | resources.libraries.python.NodePath
| Library | resources.libraries.python.Trace
+| Library | resources.libraries.python.VPPUtil
| Resource | resources/libraries/robot/traffic.robot
| Resource | resources/libraries/robot/default.robot
| Resource | resources/libraries/robot/interfaces.robot
| Resource | resources/libraries/robot/vrf.robot
| Resource | resources/libraries/robot/ipsec.robot
| Resource | resources/libraries/robot/lisp/lispgpe.robot
+| Resource | resources/libraries/robot/lisp/l2lisp.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv4_ipsec_lispgpe_ipv4/ipv4_ipsec_lispgpe_ipv4.py
| ...
| ... | AND | Update All Interface Data On All Nodes | ${nodes}
| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
| ... | AND | Show vpp trace dump on all DUTs
-| ... | AND | VPP Show Errors | ${nodes['DUT1']}
-| ... | AND | VPP Show Errors | ${nodes['DUT2']}
+| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
+| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
| ...
| Documentation | *IPv4-ip4-ipsec-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf)
| ...
| | ... | received packets are correct.
| | ... | [Ref] RFC6830, RFC4303.
| | ...
-| | [Tags] | EXPECTED_FAILING
-| | ...
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA1 96
| | Given Setup 3-node Topology
| | ... | received packets are correct.
| | ... | [Ref] RFC6830, RFC4303.
| | ...
-| | [Tags] | EXPECTED_FAILING
-| | ...
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA1 96
| | Given Setup 3-node Topology
| | ... | received packets are correct.
| | ... | [Ref] RFC6830, RFC4303.
| | ...
-| | [Tags] | EXPECTED_FAILING
-| | ...
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA1 96
-| | Given Setup 3-node Topology
-| | And Setup VRF on DUT | ${dut1_node} | ${dut1_fib_table} | ${dut1_to_dut2}
-| | ... | ${dut2_to_dut1_ip4} | ${dut2_to_dut1_mac} | ${tg2_ip4} | ${dut1_to_tg}
-| | ... | ${tg1_ip4} | ${tg_to_dut1_mac} | ${prefix4}
-| | And Setup VRF on DUT | ${dut2_node} | ${dut2_fib_table} | ${dut2_to_dut1}
-| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_dut2_mac} | ${tg1_ip4} | ${dut2_to_tg}
-| | ... | ${tg2_ip4} | ${tg_to_dut2_mac} | ${prefix4}
+| | Given Setup 3-node Topology | ${fib_table_1}
+| | And Add IP Neighbors | ${fib_table_1}
| | When IPsec Generate Keys | ${encr_alg} | ${auth_alg}
| | And Set up LISP GPE topology
| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid}
| | ... | ${dut1_to_dut2_ip4_static_adjacency}
| | ... | ${dut2_to_dut1_ip4_static_adjacency}
+| | ... | ${dut1_dut2_vni} | ${fib_table_1}
| | And VPP Setup IPsec Manual Keyed Connection
| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key}
| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi}
| | ... | received packets are correct.
| | ... | [Ref] RFC6830, RFC4303.
| | ...
-| | [teardown] | Run keyword if test passed | Fail | Feature not implemented
-| | ...
-| | [Tags] | EXPECTED_FAILING
-| | ...
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA1 96
-| | Given Setup 3-node Topology
-| | And Setup VRF on DUT | ${dut1_node} | ${dut1_fib_table} | ${dut1_to_dut2}
-| | ... | ${dut2_to_dut1_ip4} | ${dut2_to_dut1_mac} | ${tg2_ip4} | ${dut1_to_tg}
-| | ... | ${tg1_ip4} | ${tg_to_dut1_mac} | ${prefix4}
-| | And Setup VRF on DUT | ${dut2_node} | ${dut2_fib_table} | ${dut2_to_dut1}
-| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_dut2_mac} | ${tg1_ip4} | ${dut2_to_tg}
-| | ... | ${tg2_ip4} | ${tg_to_dut2_mac} | ${prefix4}
+| | Given Setup 3-node Topology | ${fib_table_1}
+| | And Add IP Neighbors | ${fib_table_1}
| | And Set up LISP GPE topology
| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE}
| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid}
| | ... | ${dut1_to_dut2_ip4_static_adjacency}
| | ... | ${dut2_to_dut1_ip4_static_adjacency}
+| | ... | ${dut1_dut2_vni} | ${fib_table_1}
| | When IPsec Generate Keys | ${encr_alg} | ${auth_alg}
| | ${lisp_if_idx}= | resources.libraries.python.InterfaceUtil.Get sw if index
| | ... | ${dut1_node} | lisp_gpe0
| Setup 3-node Topology
| | [Documentation]
| | ... | Setup 3-node topology for this test suite. Set all physical\
-| | ... | interfaces up and assing IP adresses to them.
+| | ... | interfaces up and assing IP adresses to them.\
+| | ... | You can specify fib table ID where the DUT-TG interfaces assign to.\
+| | ... | Default is 0.
| | ...
+| | [Arguments] | ${fib_table}=0
| | Path for 3-node testing is set
| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
| | Interfaces in 3-node path are up
+| | Assign Interface To Fib Table | ${dut1_node}
+| | ... | ${dut1_to_tg} | ${fib_table}
+| | Assign Interface To Fib Table | ${dut2_node}
+| | ... | ${dut2_to_tg} | ${fib_table}
| | Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4}
| | ... | ${prefix4}
| | Set Interface Address | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4}
| Add IP Neighbors
| | [Documentation]
-| | ... | Add IP neighbors to physical interfaces on DUTs.
+| | ... | Add IP neighbors to physical interfaces on DUTs.\
+| | ... | You can specify fib table ID for DUT-TG interfaces. Default is 0.
| | ...
+| | [Arguments] | ${fib_id}=0
| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4}
-| | ... | ${tg_to_dut1_mac}
+| | ... | ${tg_to_dut1_mac} | ${fib_id}
| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4}
-| | ... | ${tg_to_dut2_mac}
+| | ... | ${tg_to_dut2_mac} | ${fib_id}
| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4}
| | ... | ${dut2_to_dut1_mac}
| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4}
| Library | resources.libraries.python.NodePath
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.IPUtil
+| Library | resources.libraries.python.VPPUtil
| Library | resources.libraries.python.InterfaceUtil
| Library | resources.libraries.python.VhostUser
| Resource | resources/libraries/robot/traffic.robot
| ... | AND | Update All Interface Data On All Nodes | ${nodes}
| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
| ... | AND | Show vpp trace dump on all DUTs
-| ... | AND | VPP Show Errors | ${nodes['DUT1']}
-| ... | AND | VPP Show Errors | ${nodes['DUT2']}
+| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
+| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
| ...
| Documentation | *ip4-lispgpe-ip4 encapsulation test cases*
| ...
| | ...
| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
| | ... | AND | Show vpp trace dump on all DUTs
-| | ... | AND | VPP Show Errors | ${nodes['DUT1']}
-| | ... | AND | VPP Show Errors | ${nodes['DUT2']}
-| | ... | AND | Run keyword if test passed | Fail
-| | ...
-| | [Tags] | EXPECTED_FAILING
+| | ... | AND | Show Vpp Settings | ${nodes['DUT1']}
+| | ... | AND | Show Vpp Settings | ${nodes['DUT2']}
| | ...
| | Given Path for 3-node testing is set
| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
| | And Interfaces in 3-node path are up
-| | And Set up LISP GPE topology
-| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE}
-| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid}
-| | ... | ${dut1_to_dut2_ip4_static_adjacency}
-| | ... | ${dut2_to_dut1_ip4_static_adjacency}
+| | And Assign Interface To Fib Table | ${dut1_node}
+| | ... | ${dut1_to_tg} | ${fib_table_1}
+| | And Assign Interface To Fib Table | ${dut2_node}
+| | ... | ${dut2_to_tg} | ${fib_table_1}
+| | Add IP Neighbors | ${fib_table_1}
| | And IP addresses are set on interfaces
| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} | ${prefix4}
| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${prefix4}
| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} | ${prefix4}
| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} | ${prefix4}
-| | When Setup VRF on DUT | ${dut1_node} | ${dut1_fib_table} | ${dut1_to_dut2}
-| | ... | ${dut2_to_dut1_ip4} | ${dut2_to_dut1_mac} | ${tg2_ip4} | ${dut1_to_tg}
-| | ... | ${tg1_ip4} | ${tg_to_dut1_mac} | ${prefix4}
-| | And Setup VRF on DUT | ${dut2_node} | ${dut2_fib_table} | ${dut2_to_dut1}
-| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_dut2_mac} | ${tg1_ip4} | ${dut2_to_tg}
-| | ... | ${tg2_ip4} | ${tg_to_dut2_mac} | ${prefix4}
+| | When Set up LISP GPE topology
+| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
+| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE}
+| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid}
+| | ... | ${dut1_to_dut2_ip4_static_adjacency}
+| | ... | ${dut2_to_dut1_ip4_static_adjacency}
+| | ... | ${dut1_dut2_vni} | ${fib_table_1}
| | Then Send Packet And Check Headers
| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4}
| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac}
| | ...
| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
| | ... | AND | Show vpp trace dump on all DUTs
-| | ... | AND | VPP Show Errors | ${nodes['DUT1']}
-| | ... | AND | VPP Show Errors | ${nodes['DUT2']}
+| | ... | AND | Show Vpp Settings | ${nodes['DUT1']}
+| | ... | AND | Show Vpp Settings | ${nodes['DUT2']}
| | ... | AND | Stop and Clear QEMU | ${dut1_node} | ${vm_node}
| | ...
-| | [Tags] | EXPECTED_FAILING
-| | ...
| | Given Path for 3-node testing is set
| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
| | And Interfaces in 3-node path are up
| | ...
| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
| | ... | AND | Show vpp trace dump on all DUTs
-| | ... | AND | VPP Show Errors | ${nodes['DUT1']}
-| | ... | AND | VPP Show Errors | ${nodes['DUT2']}
+| | ... | AND | Show Vpp Settings | ${nodes['DUT1']}
+| | ... | AND | Show Vpp Settings | ${nodes['DUT2']}
| | ... | AND | Stop and Clear QEMU | ${dut1_node} | ${vm_node}
| | ...
-| | [Tags] | EXPECTED_FAILING
-| | ...
| | Given Path for 3-node testing is set
| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
| | And Interfaces in 3-node path are up
-| | When Setup VRF on DUT | ${dut1_node} | ${dut1_fib_table} | ${dut1_to_dut2}
-| | ... | ${dut2_to_dut1_ip4} | ${dut2_to_dut1_mac} | ${tg2_ip4} | ${dut1_to_tg}
-| | ... | ${tg1_ip4} | ${tg_to_dut1_mac} | ${prefix4}
-| | And Setup VRF on DUT | ${dut2_node} | ${dut2_fib_table} | ${dut2_to_dut1}
-| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_dut2_mac} | ${tg1_ip4} | ${dut2_to_tg}
-| | ... | ${tg2_ip4} | ${tg_to_dut2_mac} | ${prefix4}
+| | And Assign Interface To Fib Table | ${dut1_node}
+| | ... | ${dut1_to_tg} | ${fib_table_1}
+| | And Assign Interface To Fib Table | ${dut2_node}
+| | ... | ${dut2_to_tg} | ${fib_table_1}
+| | Add IP Neighbors | ${fib_table_1}
| | And IP addresses are set on interfaces
| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} | ${prefix4}
| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${prefix4}
| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} | ${prefix4}
| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} | ${prefix4}
-| | And Set up LISP GPE topology
+| | When Set up LISP GPE topology
| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE}
| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid}
| | ... | ${dut1_to_dut2_ip4_static_adjacency}
| | ... | ${dut2_to_dut1_ip4_static_adjacency}
-| | And Setup Qemu DUT1
+| | ... | ${dut1_dut2_vni} | ${fib_table_1}
+| | And Setup Qemu DUT1 | ${fib_table_1}
| | Then Send Packet And Check Headers
| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4}
| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac}
*** Keywords ***
| Setup Qemu DUT1
| | [Documentation] | Setup Vhosts on DUT1 and setup IP on one of them. Setup\
-| | ... | Qemu and bridge the vhosts.
+| | ... | Qemu and bridge the vhosts. Optionally, you can set fib table ID\
+| | ... | where the vhost2 interface should be assigned to.
+| | ...
+| | [Arguments] | ${fib_table}=0
| | ...
| | ${vhost1}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock1}
| | ${vhost2}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock2}
+| | Set Interface Address | ${dut1_node} | ${vhost2} | ${vhost_ip} | ${prefix4}
+| | Assign Interface To Fib Table | ${dut1_node}
+| | ... | ${vhost2} | ${fib_table}
| | Set Interface State | ${dut1_node} | ${vhost1} | up
| | Set Interface State | ${dut1_node} | ${vhost2} | up
| | Bridge domain on DUT node is created | ${dut1_node} | ${bid} | learn=${TRUE}
| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2}
| | Set test variable | ${dst_vhost_mac} | ${vhost_mac}
| | VM for Vhost L2BD forwarding is setup | ${dut1_node} | ${sock1} | ${sock2}
+
+| Add IP Neighbors
+| | [Documentation]
+| | ... | Add IP neighbors to physical interfaces on DUTs.\
+| | ... | You can specify fib table ID for DUT-TG interfaces. Default is 0.
+| | ...
+| | [Arguments] | ${fib_id}=0
+| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4}
+| | ... | ${tg_to_dut1_mac} | ${fib_id}
+| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4}
+| | ... | ${tg_to_dut2_mac} | ${fib_id}
+| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4}
+| | ... | ${dut2_to_dut1_mac}
+| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4}
+| | ... | ${dut1_to_dut2_mac}
\ No newline at end of file
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.IPv6Setup
+| Library | resources.libraries.python.VPPUtil
| Resource | resources/libraries/robot/traffic.robot
| Resource | resources/libraries/robot/default.robot
| Resource | resources/libraries/robot/interfaces.robot
| Test Setup | Run Keywords | Setup all DUTs before test
| ... | AND | Setup all TGs before traffic script
| ... | AND | Update All Interface Data On All Nodes | ${nodes}
+| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes}
| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
| ... | AND | Show vpp trace dump on all DUTs
-| ... | AND | VPP Show Errors | ${nodes['DUT1']}
-| ... | AND | VPP Show Errors | ${nodes['DUT2']}
+| ... | AND | Show Vpp Settings | ${nodes['DUT1']}
+| ... | AND | Show Vpp Settings | ${nodes['DUT2']}
| ...
| Documentation | *ip6-lispgpe-ip6 encapsulation test cases*
| ...
| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6}
| | And Vpp Set If IPv6 Addr
| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6}
-| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6}
+| | And Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6}
| | ... | ${tg_to_dut1_mac}
-| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6}
+| | And Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6}
| | ... | ${tg_to_dut2_mac}
-| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6}
+| | And Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6}
| | ... | ${dut2_to_dut1_mac}
-| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6}
+| | And Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6}
| | ... | ${dut1_to_dut2_mac}
| | When Set up LISP GPE topology
| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
| | Given Path for 3-node testing is set
| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
| | And Interfaces in 3-node path are up
-| | When Setup VRF on DUT | ${dut1_node} | ${dut1_fib_table} | ${dut1_to_dut2}
-| | ... | ${dut2_to_dut1_ip6} | ${dut2_to_dut1_mac} | ${tg2_ip6} | ${dut1_to_tg}
-| | ... | ${tg1_ip6} | ${tg_to_dut1_mac} | ${prefix6}
-| | And Setup VRF on DUT | ${dut2_node} | ${dut2_fib_table} | ${dut2_to_dut1}
-| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_dut2_mac} | ${tg1_ip6} | ${dut2_to_tg}
-| | ... | ${tg2_ip6} | ${tg_to_dut2_mac} | ${prefix6}
+| | And Assign Interface To Fib Table | ${dut1_node}
+| | ... | ${dut1_to_tg} | ${fib_table_1} | ipv6=${TRUE}
+| | And Assign Interface To Fib Table | ${dut2_node}
+| | ... | ${dut2_to_tg} | ${fib_table_1} | ipv6=${TRUE}
| | And Vpp Set If IPv6 Addr
| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} | ${prefix6}
| | And Vpp Set If IPv6 Addr
| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6}
| | And Vpp Set If IPv6 Addr
| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6}
-| | And Set up LISP GPE topology
+| | And Add IP Neighbors | ${fib_table_1}
+| | When Set up LISP GPE topology
| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE}
| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid}
| | ... | ${dut1_to_dut2_ip6_static_adjacency}
| | ... | ${dut2_to_dut1_ip6_static_adjacency}
+| | ... | ${dut1_dut2_vni} | ${fib_table_1}
| | Then Send Packet And Check Headers
| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6}
| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac}
| | ...
| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
| | ... | AND | Show vpp trace dump on all DUTs
-| | ... | AND | VPP Show Errors | ${nodes['DUT1']}
-| | ... | AND | VPP Show Errors | ${nodes['DUT2']}
+| | ... | AND | Show Vpp Settings | ${nodes['DUT1']}
+| | ... | AND | Show Vpp Settings | ${nodes['DUT2']}
| | ... | AND | Stop and Clear QEMU | ${dut1_node} | ${vm_node}
| | ...
-| | [Tags] | EXPECTED_FAILING
-| | ...
| | Given Path for 3-node testing is set
| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
| | And Interfaces in 3-node path are up
| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6}
| | And Vpp Set If IPv6 Addr
| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6}
-| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6}
+| | And Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6}
| | ... | ${tg_to_dut1_mac}
-| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6}
+| | And Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6}
| | ... | ${tg_to_dut2_mac}
-| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6}
+| | And Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6}
| | ... | ${dut2_to_dut1_mac}
-| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6}
+| | And Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6}
| | ... | ${dut1_to_dut2_mac}
| | When Set up LISP GPE topology
| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
| | ...
| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
| | ... | AND | Show vpp trace dump on all DUTs
-| | ... | AND | VPP Show Errors | ${nodes['DUT1']}
-| | ... | AND | VPP Show Errors | ${nodes['DUT2']}
+| | ... | AND | Show Vpp Settings | ${nodes['DUT1']}
+| | ... | AND | Show Vpp Settings | ${nodes['DUT2']}
| | ... | AND | Stop and Clear QEMU | ${dut1_node} | ${vm_node}
| | ...
-| | [Tags] | EXPECTED_FAILING
-| | ...
| | Given Path for 3-node testing is set
| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
| | And Interfaces in 3-node path are up
-| | When Setup VRF on DUT | ${dut1_node} | ${dut1_fib_table} | ${dut1_to_dut2}
-| | ... | ${dut2_to_dut1_ip6} | ${dut2_to_dut1_mac} | ${tg2_ip6} | ${dut1_to_tg}
-| | ... | ${tg1_ip6} | ${tg_to_dut1_mac} | ${prefix6}
-| | And Setup VRF on DUT | ${dut2_node} | ${dut2_fib_table} | ${dut2_to_dut1}
-| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_dut2_mac} | ${tg1_ip6} | ${dut2_to_tg}
-| | ... | ${tg2_ip6} | ${tg_to_dut2_mac} | ${prefix6}
+| | And Assign Interface To Fib Table | ${dut1_node}
+| | ... | ${dut1_to_tg} | ${fib_table_1} | ipv6=${TRUE}
+| | And Assign Interface To Fib Table | ${dut2_node}
+| | ... | ${dut2_to_tg} | ${fib_table_1} | ipv6=${TRUE}
| | And Vpp Set If IPv6 Addr
| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} | ${prefix6}
| | And Vpp Set If IPv6 Addr
| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6}
| | And Vpp Set If IPv6 Addr
| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6}
-| | And Set up LISP GPE topology
+| | And Add IP Neighbors | ${fib_table_1}
+| | When Set up LISP GPE topology
| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE}
| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid}
| | ... | ${dut1_to_dut2_ip6_static_adjacency}
| | ... | ${dut2_to_dut1_ip6_static_adjacency}
-| | And Setup Qemu DUT1
+| | ... | ${dut1_dut2_vni} | ${fib_table_1}
+| | And Setup Qemu DUT1 | ${fib_table_1}
| | Then Send Packet And Check Headers
| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6}
| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac}
*** Keywords ***
| Setup Qemu DUT1
| | [Documentation] | Setup Vhosts on DUT1 and setup IP on one of them. Setup\
-| | ... | Qemu and bridge the vhosts.
+| | ... | Qemu and bridge the vhosts. Optionally, you can set fib table ID\
+| | ... | where the vhost2 interface should be assigned to.
+| | ...
+| | [Arguments] | ${fib_table}=0
| | ...
| | ${vhost1}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock1}
| | ${vhost2}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock2}
+| | Vpp Set If IPv6 Addr | ${dut1_node} | ${vhost2} | ${vhost_ip}
+| | ... | ${prefix6}
+| | Assign Interface To Fib Table | ${dut1_node}
+| | ... | ${vhost2} | ${fib_table} | ipv6=${TRUE}
| | Set Interface State | ${dut1_node} | ${vhost1} | up
| | Set Interface State | ${dut1_node} | ${vhost2} | up
| | Bridge domain on DUT node is created | ${dut1_node} | ${bid} | learn=${TRUE}
| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2}
| | Set test variable | ${dst_vhost_mac} | ${vhost_mac}
| | VM for Vhost L2BD forwarding is setup | ${dut1_node} | ${sock1} | ${sock2}
+
+| Add IP Neighbors
+| | [Documentation]
+| | ... | Add IP neighbors to physical interfaces on DUTs.\
+| | ... | You can specify fib table ID for DUT-TG interfaces. Default is 0.
+| | ...
+| | [Arguments] | ${fib_id}=0
+| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6}
+| | ... | ${tg_to_dut1_mac} | ${fib_id}
+| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6}
+| | ... | ${tg_to_dut2_mac} | ${fib_id}
+| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6}
+| | ... | ${dut2_to_dut1_mac}
+| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6}
+| | ... | ${dut1_to_dut2_mac}
\ No newline at end of file