lisp package

api-crud-lisp-func module

TC01: DUT can enable and disable LISP

[Top] DUT1. [Enc] None. [Cfg1] Test LISP enable/disable API; On DUT1 enable LISP. [Ver1] Check DUT1 if LISP is enabled. [Cfg2] Then disable LISP. [Ver2] Check DUT1 if LISP is disabled. [Ref] RFC6830.


 When Enable lisp  ${nodes['DUT1']}
 Then Check if lisp is enabled  ${nodes['DUT1']}  ${lisp_status}
 When Disable lisp  ${nodes['DUT1']}
 Then Check if lisp is disabled  ${nodes['DUT1']}  ${lisp_status}

TC02: DUT can add and delete locator_set

[Top] DUT1. [Enc] None. [Cfg1] Test LISP locator_set API; on DUT1 configure locator_set and locator. [Ver1] Check DUT1 configured locator_set and locator are correct. [Cfg2] Then remove locator_set and locator. [Ver2] check DUT1 locator_set and locator are removed. [Ref] RFC6830.


Given Lisp locator_set data is prepared  ${nodes['DUT1']}  ${locator_set_num}
  And Enable lisp  ${nodes['DUT1']}
 When Lisp locator_set data is set  ${nodes['DUT1']}
 Then Lisp locator_set is set correctly  ${nodes['DUT1']}
 When Delete all lisp locator_set from VPP  ${nodes['DUT1']}
 Then Lisp locator_set should be unset  ${nodes['DUT1']}

TC03: DUT can add, reset and delete locator_set

[Top] DUT1. [Enc] None. [Cfg1] Test LISP locator_set API; on DUT1 configure locator_set and locator. [Ver1] Check DUT1 locator_set and locator are correct. [Cfg2] Then reset locator_set and set it again. [Ver2] Check DUT1 locator_set and locator are correct. [Cfg3] Then remove locator_set and locator. [Ver3] Check DUT1 all locator_set and locators are removed. [Ref] RFC6830.


Given Lisp locator_set data use for test reset locator_set are prepared  ${nodes['DUT1']}  ${locator_set_num}
  And Enable lisp  ${nodes['DUT1']}
 When Lisp locator_set data is set  ${nodes['DUT1']}
 Then Lisp locator_set is set correctly  ${nodes['DUT1']}
 When Delete all lisp locator_set from VPP  ${nodes['DUT1']}
 Then Lisp locator_set should be unset  ${nodes['DUT1']}

TC04: DUT can add and delete eid address

[Top] DUT1. [Enc] None. [Cfg1] Test LISP eid API; on DUT1 configure LISP eid IP address. [Ver1] Check DUT1 configured data is correct. [Cfg2] Remove configured data. [Ver2] Check DUT1 all eid IP addresses are removed. [Ref] RFC6830.


Given Enable lisp  ${nodes['DUT1']}
 When Lisp eid address is set  ${nodes['DUT1']}  ${eid_table}
 Then Lisp eid address is set correctly to eid table  ${nodes['DUT1']}  ${eid_table_vat}
 When Delete all lisp eid address from VPP  ${nodes['DUT1']}  ${eid_table}
 Then Lisp eid table should be empty  ${nodes['DUT1']}

TC05: DUT can add and delete LISP map resolver address

[Top] DUT1. [Enc] None. [Cfg1] Test LISP map resolver address API; on DUT1 configure LISP map resolver address. [Ver1] Check DUT1 configured data is correct. [Cfg2] Remove configured data. [Ver2] Check DUT1 all map resolver addresses are removed. [Ref] RFC6830.


Given Enable lisp  ${nodes['DUT1']}
 When Lisp map resolver address is set  ${nodes['DUT1']}  ${map_resolver}
 Then Lisp map resolver address is set correctly  ${nodes['DUT1']}  ${map_resolver}
 When Delete all lisp map resolver address from VPP  ${nodes['DUT1']}  ${map_resolver}
 Then Lip map resolver address should be empty  ${nodes['DUT1']}

eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func module

TC01: DUT1 and DUT2 route IPv4 over Vhost to LISP GPE tunnel using IPsec (transport) on RLOC Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMP on DUT1-DUT2, Eth-IPv4-ICMPon TG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. Create Qemu vm on DUT1 and configure bridgebetween two vhosts. [Ver] Case: ip4-ipsec-lispgpe-ip4 - main fib, virt2lispMake TG send ICMPv4 Echo Req between its interfaces acrossboth DUTs and LISP GPE tunnel between them; verify IPv4 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup 3-node Topology
  And Add IP Neighbors
  And Setup Qemu DUT1
  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 IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${dut1_to_dut2}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip4}  ${dut2_to_dut1_ip4}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${dut2_to_dut1}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip4}  ${dut1_to_dut2_ip4}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dst_vhost_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

TC02: DUT1 and DUT2 route IPv4 over Vhost to LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. [Ver] Case: ip4-ipsec-lispgpe-ip4 - main fib, virt2lispMake TG send ICMPv4 Echo Req between its interfaces acrossboth DUTs and LISP GPE tunnel between them; verify IPv4 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup 3-node Topology
  And Add IP Neighbors
  And Setup Qemu DUT1
  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}
${lisp1_if_idx}=  resources.libraries.python.InterfaceUtil.Get Sw If Index  ${dut1_node}  lisp_gpe0
${lisp2_if_idx}=  resources.libraries.python.InterfaceUtil.Get Sw If Index  ${dut2_node}  lisp_gpe0
  And IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${lisp1_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip4}  ${dut2_to_dut1_ip4}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${lisp2_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip4}  ${dut1_to_dut2_ip4}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dst_vhost_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Setup 3-node Topology

Setup 3-node topology for this test suite. Set all physicalinterfaces up and assing IP adresses to them.You can specify fib table ID where the DUT-TG interfaces assign to.Default is 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}  ${prefix4}
Set Interface Address  ${dut2_node}  ${dut2_to_dut1}  ${dut2_to_dut1_ip4}  ${prefix4}
Set Interface Address  ${dut2_node}  ${dut2_to_tg}  ${dut2_to_tg_ip4}  ${prefix4}

Add IP Neighbors

Add IP neighbors to physical interfaces on DUTs.You can specify fib table ID for DUT-TG interfaces. Default is 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}

Setup Qemu DUT1

Setup Vhosts on DUT1 and setup IP to one of them. Setup Qemu and bridge the vhosts.


${vhost1}=  And Vpp Create Vhost User Interface  ${dut1_node}  ${sock1}
${vhost2}=  And Vpp Create Vhost User Interface  ${dut1_node}  ${sock2}
Set Interface Address  ${dut1_node}  ${vhost2}  6.6.1.9  ${prefix4}
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}
Interface is added to bridge domain  ${dut1_node}  ${dut1_to_tg}  ${bid}  0
Interface is added to bridge domain  ${dut1_node}  ${vhost1}  ${bid}  0
${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}

eth2p-ethip4ipsectptlispgpe-ip4base-func module

TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTs. [Ver] Case: ip4-lispgpe-ipsec-ip4 - main fib Make TG send ICMPv4 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv4 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup 3-node Topology
  And Add IP Neighbors
  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 IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${dut1_to_dut2}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip4}  ${dut2_to_dut1_ip4}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${dut2_to_dut1}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip4}  ${dut1_to_dut2_ip4}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

TC02: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) lisp_gpe0 Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTs. [Ver] Case: ip4-ipsec-lispgpe-ip4 - main fib Make TG send ICMPv4 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv4 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup 3-node Topology
  And Add IP Neighbors
  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}
${lisp_if_idx}=  resources.libraries.python.InterfaceUtil.Get sw if index  ${dut1_node}  lisp_gpe0
  And IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${lisp_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${tg1_ip4}  ${tg2_ip4}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${lisp_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${tg2_ip4}  ${tg1_ip4}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

TC03: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int and VRF on EID is enabled.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTs. [Ver] Case: ip4-lispgpe-ipsec-ip4 - vrf, main fib Make TG send ICMPv4 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv4 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
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}  ${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}
  And VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${dut1_to_dut2}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip4}  ${dut2_to_dut1_ip4}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${dut2_to_dut1}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip4}  ${dut1_to_dut2_ip4}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

TC04: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int and VRF is enabled.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTs. [Ver] Case: ip4-ipsec-lispgpe-ip4 - vrf, main fib Make TG send ICMPv4 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv4 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
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
  And VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${lisp_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${tg1_ip4}  ${tg2_ip4}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${lisp_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${tg2_ip4}  ${tg1_ip4}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Setup 3-node Topology

Setup 3-node topology for this test suite. Set all physicalinterfaces up and assing IP adresses to them.You can specify fib table ID where the DUT-TG interfaces assign to.Default is 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}  ${prefix4}
Set Interface Address  ${dut2_node}  ${dut2_to_dut1}  ${dut2_to_dut1_ip4}  ${prefix4}
Set Interface Address  ${dut2_node}  ${dut2_to_tg}  ${dut2_to_tg_ip4}  ${prefix4}

Add IP Neighbors

Add IP neighbors to physical interfaces on DUTs.You can specify fib table ID for DUT-TG interfaces. Default is 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}

eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func module

TC01: DUT1 and DUT2 route IPv6 over Vhost to LISP GPE tunnel using IPsec (transport) on RLOC Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-LISPGPE-IPSec-IPv6-ICMP on DUT1-DUT2, Eth-IPv6-ICMPon TG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. Create Qemu vm on DUT1 and configure bridgebetween two vhosts. [Ver] Case: ip4-ipsec-lispgpe-ip6 - main fib, virt2lispMake TG send ICMPv6 Echo Req between its interfaces acrossboth DUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup Topology And Lisp
  And Setup Qemu DUT1
  And IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${dut1_to_dut2}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip4}  ${dut2_to_dut1_ip4}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${dut2_to_dut1}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip4}  ${dut1_to_dut2_ip4}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6}  ${tg2_ip6}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dst_vhost_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6}  ${tg1_ip6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

TC02: DUT1 and DUT2 route IPv6 over Vhost to LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,Eth-IPv6-ICMPv6, on TG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. [Ver] Case: ip4-ipsec-lispgpe-ip6 - main fib, virt2lispMake TG send ICMPv6 Echo Req between its interfaces acrossboth DUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup Topology And Lisp
  And Setup Qemu DUT1
${lisp1_if_idx}=  resources.libraries.python.InterfaceUtil.get sw if index  ${dut1_node}  ${lisp_gpe_int}
${lisp2_if_idx}=  resources.libraries.python.InterfaceUtil.get sw if index  ${dut2_node}  ${lisp_gpe_int}
  And IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${lisp1_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip4}  ${dut2_to_dut1_ip4}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${lisp2_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip4}  ${dut1_to_dut2_ip4}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6}  ${tg2_ip6}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dst_vhost_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6}  ${tg1_ip6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Setup Topology And Lisp

Setup IPs and neighbors for interfaces on DUT1 and DUT2and then setup LISP.


Path for 3-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes['TG']}
Interfaces in 3-node path are up
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip4}  ${prefix4}
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut2_node}  ${dut2_to_dut1}  ${dut2_to_dut1_ip4}  ${prefix4}
Vpp Set If IPv6 Addr  ${dut2_node}  ${dut2_to_tg}  ${dut2_to_tg_ip6}  ${prefix6}
Add IP Neighbor  ${dut2_node}  ${dut2_to_tg}  ${tg2_ip6}  ${tg_to_dut2_mac}  ${fib_table}
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}
Add IP Neighbor  ${dut1_node}  ${dut1_to_tg}  ${tg1_ip6}  ${tg_to_dut1_mac}  ${fib_table}
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_ip_static_adjacency}  ${dut2_to_dut1_ip_static_adjacency}  ${vni_table}  ${fib_table}

Setup Qemu DUT1

Setup Vhosts on DUT1 and setup IP to one of them. SetupQemu and bridge the vhosts.


${vhost1}=  And Vpp Create Vhost User Interface  ${dut1_node}  ${sock1}
${vhost2}=  And Vpp Create Vhost User Interface  ${dut1_node}  ${sock2}
Set Interface Address  ${dut1_node}  ${vhost2}  ${vhost_ip}  ${prefix6}
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}
Interface is added to bridge domain  ${dut1_node}  ${dut1_to_tg}  ${bid}  0
Interface is added to bridge domain  ${dut1_node}  ${vhost1}  ${bid}  0
${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}

eth2p-ethip4ipsectptlispgpe-ip6base-func module

TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-LISPGPE-IPSec-IPv6-ICMP on DUT1-DUT2, Eth-IPv6-ICMPon TG-DUTn. [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. [Ver] Make TG send ICMPv6 Echo Req between its interfaces acrossboth DUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup Topology And Lisp
  And IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${dut1_to_dut2}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip4}  ${dut2_to_dut1_ip4}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${dut2_to_dut1}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip4}  ${dut1_to_dut2_ip4}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6}  ${tg2_ip6}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6}  ${tg1_ip6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

TC02: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPon TG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. [Ver] Make TG send ICMPv6 Echo Req between its interfaces acrossboth DUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup Topology And Lisp
  And IPsec Generate Keys  ${encr_alg}  ${auth_alg}
${lisp_if_idx}=  resources.libraries.python.InterfaceUtil.get sw if index  ${dut1_node}  ${lisp_gpe_int}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${lisp_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip4}  ${dut2_to_dut1_ip4}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${lisp_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip4}  ${dut1_to_dut2_ip4}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6}  ${tg2_ip6}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6}  ${tg1_ip6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Setup Topology And Lisp

Setup IPs and neighbors for interfaces on DUT1 and DUT2and then setup LISP.


Path for 3-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes['TG']}
Interfaces in 3-node path are up
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip4}  ${prefix4}
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut2_node}  ${dut2_to_dut1}  ${dut2_to_dut1_ip4}  ${prefix4}
Vpp Set If IPv6 Addr  ${dut2_node}  ${dut2_to_tg}  ${dut2_to_tg_ip6}  ${prefix6}
Add IP Neighbor  ${dut2_node}  ${dut2_to_tg}  ${tg2_ip6}  ${tg_to_dut2_mac}  ${fib_table}
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}
Add IP Neighbor  ${dut1_node}  ${dut1_to_tg}  ${tg1_ip6}  ${tg_to_dut1_mac}  ${fib_table}
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_ip_static_adjacency}  ${dut2_to_dut1_ip_static_adjacency}  ${vni_table}  ${fib_table}

eth2p-ethip4ipsectptlispgpe-ip6basevrf-func module

TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using physical interfaces and VRF is enabled

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,Eth-IPv6-ICMPv6, on TG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. [Ver] Case: ip4-ipsec-lispgpe-ip6 - vrf, phy2lisp Make TG send ICMPv6 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Path for 3-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes['TG']}
  And Interfaces in 3-node path are up
Assign Interface To Fib Table  ${dut1_node}  ${dut1_to_tg}  ${fib_table_1}  ip6=${TRUE}
Assign Interface To Fib Table  ${dut2_node}  ${dut2_to_tg}  ${fib_table_1}  ip6=${TRUE}
  And IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${dut1_to_dut2}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip4}  ${dut2_to_dut1_ip4}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${dut2_to_dut1}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip4}  ${dut1_to_dut2_ip4}
Setup Topology And Lisp  ${fib_table_1}  ${dut1_dut2_vni}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6}  ${tg2_ip6}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6}  ${tg1_ip6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Setup Topology And Lisp

Setup IPs and neighbors for interfaces on DUT1 and DUT2and then setup LISP.


Path for 3-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes['TG']}
Interfaces in 3-node path are up
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip4}  ${prefix4}
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut2_node}  ${dut2_to_dut1}  ${dut2_to_dut1_ip4}  ${prefix4}
Vpp Set If IPv6 Addr  ${dut2_node}  ${dut2_to_tg}  ${dut2_to_tg_ip6}  ${prefix6}
Add IP Neighbor  ${dut2_node}  ${dut2_to_tg}  ${tg2_ip6}  ${tg_to_dut2_mac}  ${fib_table}
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}
Add IP Neighbor  ${dut1_node}  ${dut1_to_tg}  ${tg1_ip6}  ${tg_to_dut1_mac}  ${fib_table}
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_ip_static_adjacency}  ${dut2_to_dut1_ip_static_adjacency}  ${vni_table}  ${fib_table}

eth2p-ethip4lisp-ip4base-func module

TC01: DUT1 and DUT2 route IPv4 over LISPoIPv4 tunnel after disable-enable

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-LISP-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 onTG-DUTn. [Cfg1] On DUT1 and DUT2 configure IPv4 LISP static adjacencies. [Ver1] Make TG send ICMPv4 Echo Req between its interfaces acrossboth DUTs and LISP tunnel between them; verify IPv4 headers onreceived packets are correct. [Cfg2] Disable LISP. [Ver2] Verify packets are not received via LISP tunnel. [Cfg3] Re-enable LISP. [Ver3] Verify packets are received again via LISP tunnel. [Ref] RFC6830.


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 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 VPP IP Probe  ${dut1_node}  ${dut1_to_dut2}  ${dut2_to_dut1_ip4}
  And VPP IP Probe  ${dut2_node}  ${dut2_to_dut1}  ${dut1_to_dut2_ip4}
  And Add Arp On Dut  ${dut2_node}  ${dut2_to_tg}  ${tg2_ip4}  ${tg_to_dut2_mac}
  And Add Arp On Dut  ${dut1_node}  ${dut1_to_tg}  ${tg1_ip4}  ${tg_to_dut1_mac}
 When Set up Lisp 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}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}
 When Disable Lisp  ${dut1_node}
 Then Send packet from Port to Port should failed  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send packet from Port to Port should failed  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}
 When Enable Lisp  ${dut1_node}
  And Vpp Add Lisp Adjacency  ${dut1_node}  ${dut1_to_dut2_ip4_static_adjacency['vni']}  ${dut1_to_dut2_ip4_static_adjacency['deid']}  ${dut1_to_dut2_ip4_static_adjacency['prefix']}  ${dut1_to_dut2_ip4_static_adjacency['seid']}  ${dut1_to_dut2_ip4_static_adjacency['prefix']}
  And Vpp Add Lisp Adjacency  ${dut2_node}  ${dut2_to_dut1_ip4_static_adjacency['vni']}  ${dut2_to_dut1_ip4_static_adjacency['deid']}  ${dut2_to_dut1_ip4_static_adjacency['prefix']}  ${dut2_to_dut1_ip4_static_adjacency['seid']}  ${dut2_to_dut1_ip4_static_adjacency['prefix']}
 Then Wait Until Keyword Succeeds  2x  5s  Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Wait Until Keyword Succeeds  2x  5s  Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

eth2p-ethip4lisp-l2bdbasemaclrn-func module

TC01: Route IPv4 packet through LISP with Bridge Domain setup.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4-LISPGpe-IP4 [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. Alsoconfigure BD and assign it to LISP VNI. [Ver] Make TG send ICMPv4 Echo Req between its interfaces across bothDUTs and LISP tunnel between them; verify IPv4, Ether headers onreceived packets are correct. [Ref] RFC6830.


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 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 Add Arp On Dut  ${dut2_node}  ${dut2_to_tg}  ${tg2_ip4}  ${tg_to_dut2_mac}
  And Add Arp On Dut  ${dut1_node}  ${dut1_to_tg}  ${tg1_ip4}  ${tg_to_dut1_mac}
  And Add Arp On Dut  ${dut1_node}  ${dut1_to_dut2}  ${dut2_to_dut1_ip4}  ${dut2_to_dut1_mac}
  And Add Arp On Dut  ${dut2_node}  ${dut2_to_dut1}  ${dut1_to_dut2_ip4}  ${dut1_to_dut2_mac}
 When Create L2 BD  ${dut1_node}  ${vpp_bd_id}
  And Add Interface To L2 BD  ${dut1_node}  ${dut1_to_tg}  ${vpp_bd_id}
  And Create L2 BD  ${dut2_node}  ${vpp_bd_id}
  And Add Interface To L2 BD  ${dut2_node}  ${dut2_to_tg}  ${vpp_bd_id}
  And Set up L2 Lisp on DUT  ${dut1_node}  ${dut1_to_dut2_ip4_static_adjacency}  ${lisp_dut_settings}
  And Set up L2 Lisp on DUT  ${dut2_node}  ${dut2_to_dut1_ip4_static_adjacency}  ${lisp_dut_settings}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_if1_mac}  ${tg_if2_mac}  ${tg_to_dut2}  ${tg_if1_mac}  ${tg_if2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_if2_mac}  ${tg_if1_mac}  ${tg_to_dut1}  ${tg_if2_mac}  ${tg_if1_mac}

eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func module

TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using vhost interfaces

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 onTG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. [Ver] Case: ip4-lispgpe-ip4 - main fib, virt2lisp Make TG send ICMPv4 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv4 headers onreceived packets are correct.


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 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 Add Arp On Dut  ${dut1_node}  ${dut1_to_tg}  ${tg1_ip4}  ${tg_to_dut1_mac}
  And Add Arp On Dut  ${dut2_node}  ${dut2_to_tg}  ${tg2_ip4}  ${tg_to_dut2_mac}
  And Add Arp On Dut  ${dut1_node}  ${dut1_to_dut2}  ${dut2_to_dut1_ip4}  ${dut2_to_dut1_mac}
  And Add Arp On Dut  ${dut2_node}  ${dut2_to_dut1}  ${dut1_to_dut2_ip4}  ${dut1_to_dut2_mac}
 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
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dst_vhost_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Setup Qemu DUT1

Setup Vhosts on DUT1 and setup IP on one of them. SetupQemu and bridge the vhosts. Optionally, you can set fib table IDwhere the vhost2 interface should be assigned to.


${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}
Interface is added to bridge domain  ${dut1_node}  ${dut1_to_tg}  ${bid}  0
Interface is added to bridge domain  ${dut1_node}  ${vhost1}  ${bid}  0
${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}

eth2p-ethip4lispgpe-ip4base-func module

TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using physical interfaces

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 onTG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. [Ver] Case: ip4-lispgpe-ip4 - phy2lisp Make TG send ICMPv4 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv4 headers onreceived packets are correct. [Ref] RFC6830.


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 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 Add IP Neighbors
 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}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Add IP Neighbors

Add IP neighbors to physical interfaces on DUTs.You can specify fib table ID for DUT-TG interfaces. Default is 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}

eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func module

TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using vhost interfaces and VRF is enabled

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 onTG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. [Ver] Case: ip4-lispgpe-ip4 - vrf, virt2lisp Make TG send ICMPv4 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv4 headers onreceived packets are correct. [Ref] RFC6830.


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 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}
  And 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 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}
  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}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Setup Qemu DUT1

Setup Vhosts on DUT1 and setup IP on one of them. SetupQemu and bridge the vhosts. Optionally, you can set fib table IDwhere the vhost2 interface should be assigned to.


${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}
Interface is added to bridge domain  ${dut1_node}  ${dut1_to_tg}  ${bid}  0
Interface is added to bridge domain  ${dut1_node}  ${vhost1}  ${bid}  0
${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

Add IP neighbors to physical interfaces on DUTs.You can specify fib table ID for DUT-TG interfaces. Default is 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}

eth2p-ethip4lispgpe-ip4basevrf-func module

TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using physical interfaces and VRF is enabled

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 onTG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. [Ver] Case: ip4-lispgpe-ip4 - vrf, phy2lisp Make TG send ICMPv4 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv4 headers onreceived packets are correct. [Ref] RFC6830.


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 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}
  And 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 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}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Add IP Neighbors

Add IP neighbors to physical interfaces on DUTs.You can specify fib table ID for DUT-TG interfaces. Default is 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}

eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func module

TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using vhost interfaces

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 onTG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. [Ver] Case: ip6-lispgpe-ip4 - main fib, virt2lisp Make TG send ICMPv6 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct.


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 IP addresses are set on interfaces  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip6o4}  ${dut_prefix6o4}  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip6o4}  ${tg_prefix6o4}  ${dut2_node}  ${dut2_to_dut1}  ${dut2_to_dut1_ip6o4}  ${dut_prefix6o4}  ${dut2_node}  ${dut2_to_tg}  ${dut2_to_tg_ip6o4}  ${tg_prefix6o4}
  And Add Arp On Dut  ${dut1_node}  ${dut1_to_tg}  ${tg1_ip6o4}  ${tg_to_dut1_mac}
  And Add Arp On Dut  ${dut2_node}  ${dut2_to_tg}  ${tg2_ip6o4}  ${tg_to_dut2_mac}
  And Add Arp On Dut  ${dut1_node}  ${dut1_to_dut2}  ${dut2_to_dut1_ip6o4}  ${dut2_to_dut1_mac}
  And Add Arp On Dut  ${dut2_node}  ${dut2_to_dut1}  ${dut1_to_dut2_ip6o4}  ${dut1_to_dut2_mac}
 When Set up LISP GPE topology  ${dut1_node}  ${dut1_to_dut2}  ${NONE}  ${dut2_node}  ${dut2_to_dut1}  ${NONE}  ${duts_locator_set}  ${dut1_ip6o4_eid}  ${dut2_ip6o4_eid}  ${dut1_ip6o4_static_adjacency}  ${dut2_ip6o4_static_adjacency}
  And Setup Qemu DUT1
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6o4}  ${tg2_ip6o4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dst_vhost_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6o4}  ${tg1_ip6o4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Setup Qemu DUT1

Setup Vhosts on DUT1 and setup IP on one of them. SetupQemu and bridge the vhosts.


${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}
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}
Interface is added to bridge domain  ${dut1_node}  ${dut1_to_tg}  ${bid}  0
Interface is added to bridge domain  ${dut1_node}  ${vhost1}  ${bid}  0
${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}

eth2p-ethip4lispgpe-ip6base-func module

TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISPoIPv4 tunnel

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-LISP-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 onTG-DUTn. [Cfg] On DUT1 and DUT2 configure IPv4 LISP static adjacencies. [Ver] Make TG send ICMPv6 Echo Req between its interfaces across bothDUTs and LISP tunnel between them; verify IPv6 headers on receivedpackets are correct. [Cfg2] Reconf LISP. [Ver2] Verify packets are received again via LISP tunnel. [Ref] RFC6830.


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 IP addresses are set on interfaces  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip6o4}  ${dut_prefix6o4}  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip6o4}  ${tg_prefix6o4}  ${dut2_node}  ${dut2_to_dut1}  ${dut2_to_dut1_ip6o4}  ${dut_prefix6o4}  ${dut2_node}  ${dut2_to_tg}  ${dut2_to_tg_ip6o4}  ${tg_prefix6o4}
  And Add IP Neighbors
 When Set up Lisp topology  ${dut1_node}  ${dut1_to_dut2}  ${NONE}  ${dut2_node}  ${dut2_to_dut1}  ${NONE}  ${duts_locator_set}  ${dut1_ip6o4_eid}  ${dut2_ip6o4_eid}  ${dut1_ip6o4_static_adjacency}  ${dut2_ip6o4_static_adjacency}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6o4}  ${tg2_ip6o4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6o4}  ${tg1_ip6o4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}
 When Change Lisp Configuration  ${dut1_node}  ${dut2_node}  ${dut1_to_dut2}  ${dut2_to_dut1}  ${dut1_to_dut2_mac}  ${dut2_to_dut1_mac}  ${dut1_to_dut2_ip6o4}  ${dut2_to_dut1_ip6o4_reconf}  ${dut_prefix6o4}  ${dut1_ip6o4_static_adjacency}  ${dut1_ip6o4_static_adjacency_reconf}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6o4}  ${tg2_ip6o4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6o4}  ${tg1_ip6o4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Add IP Neighbors

Add IP neighbors to physical interfaces on DUTs.You can specify fib table ID for DUT-TG interfaces. Default is 0.


Add IP Neighbor  ${dut1_node}  ${dut1_to_tg}  ${tg1_ip6o4}  ${tg_to_dut1_mac}  ${fib_id}
Add IP Neighbor  ${dut2_node}  ${dut2_to_tg}  ${tg2_ip6o4}  ${tg_to_dut2_mac}  ${fib_id}
Add IP Neighbor  ${dut1_node}  ${dut1_to_dut2}  ${dut2_to_dut1_ip6o4}  ${dut2_to_dut1_mac}
Add IP Neighbor  ${dut2_node}  ${dut2_to_dut1}  ${dut1_to_dut2_ip6o4}  ${dut1_to_dut2_mac}

eth2p-ethip4lispgpe-ip6basevrf-func module

TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using physical interfaces and VRF is enabled

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 onTG-DUTn. [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. [Ver] Case: ip6-lispgpe-ip4 - vrf, phy2lisp Make TG send ICMPv4 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830.


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 Assign Interface To Fib Table  ${dut1_node}  ${dut1_to_tg}  ${fib_table_1}  ip6=${TRUE}
  And Assign Interface To Fib Table  ${dut2_node}  ${dut2_to_tg}  ${fib_table_1}  ip6=${TRUE}
  And Add IP Neighbors  ${fib_table_1}
  And IP addresses are set on interfaces  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip6o4}  ${dut_prefix6o4}  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip6o4}  ${tg_prefix6o4}  ${dut2_node}  ${dut2_to_dut1}  ${dut2_to_dut1_ip6o4}  ${dut_prefix6o4}  ${dut2_node}  ${dut2_to_tg}  ${dut2_to_tg_ip6o4}  ${tg_prefix6o4}
 When Set up LISP GPE topology  ${dut1_node}  ${dut1_to_dut2}  ${NONE}  ${dut2_node}  ${dut2_to_dut1}  ${NONE}  ${duts_locator_set}  ${dut1_ip6o4_eid}  ${dut2_ip6o4_eid}  ${dut1_ip6o4_static_adjacency}  ${dut2_ip6o4_static_adjacency}  ${dut1_dut2_vni}  ${fib_table_1}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6o4}  ${tg2_ip6o4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6o4}  ${tg1_ip6o4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Add IP Neighbors

Add IP neighbors to physical interfaces on DUTs.You can specify fib table ID for DUT-TG interfaces. Default is 0.


Add IP Neighbor  ${dut1_node}  ${dut1_to_tg}  ${tg1_ip6o4}  ${tg_to_dut1_mac}  ${fib_id}
Add IP Neighbor  ${dut2_node}  ${dut2_to_tg}  ${tg2_ip6o4}  ${tg_to_dut2_mac}  ${fib_id}
Add IP Neighbor  ${dut1_node}  ${dut1_to_dut2}  ${dut2_to_dut1_ip6o4}  ${dut2_to_dut1_mac}
Add IP Neighbor  ${dut2_node}  ${dut2_to_dut1}  ${dut1_to_dut2_ip6o4}  ${dut1_to_dut2_mac}

eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func module

TC01: DUT1 and DUT2 route IPv4 over Vhost to LISP GPE tunnel using IPsec (transport) on RLOC Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-LISPGPE-IPSec-IPv4-ICMP on DUT1-DUT2, Eth-IPv4-ICMPon TG-DUTn. [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. Create Qemu vm on DUT1 and configure bridgebetween two vhosts. [Ver] Case: ip6-ipsec-lispgpe-ip4 - main fib, virt2lispMake TG send ICMPv6 Echo Req between its interfaces acrossboth DUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup Topology And Lisp
  And Setup Qemu DUT1
  And IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${dut1_to_dut2}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip6}  ${dut2_to_dut1_ip6}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${dut2_to_dut1}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip6}  ${dut1_to_dut2_ip6}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dst_vhost_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

TC02: DUT1 and DUT2 route IPv4 over Vhost to LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,Eth-IPv6-ICMPv6, on TG-DUTn. [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. [Ver] Case: ip6-ipsec-lispgpe-ip4 - main fib, virt2lispMake TG send ICMPv6 Echo Req between its interfaces acrossboth DUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup Topology And Lisp
  And Setup Qemu DUT1
${lisp1_if_idx}=  resources.libraries.python.InterfaceUtil.get sw if index  ${dut1_node}  ${lisp_gpe_int}
${lisp2_if_idx}=  resources.libraries.python.InterfaceUtil.get sw if index  ${dut2_node}  ${lisp_gpe_int}
  And IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${lisp1_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip6}  ${dut2_to_dut1_ip6}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${lisp2_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip6}  ${dut1_to_dut2_ip6}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dst_vhost_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Setup Topology And Lisp

Setup IPs and neighbors for interfaces on DUT1 and DUT2and then setup LISP.


Path for 3-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes['TG']}
Interfaces in 3-node path are up
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip4}  ${prefix4}
Vpp Set If IPv6 Addr  ${dut2_node}  ${dut2_to_dut1}  ${dut2_to_dut1_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut2_node}  ${dut2_to_tg}  ${dut2_to_tg_ip4}  ${prefix4}
Add IP Neighbor  ${dut2_node}  ${dut2_to_tg}  ${tg2_ip4}  ${tg_to_dut2_mac}
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}
Add IP Neighbor  ${dut1_node}  ${dut1_to_tg}  ${tg1_ip4}  ${tg_to_dut1_mac}
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_ip_static_adjacency}  ${dut2_to_dut1_ip_static_adjacency}

Setup Qemu DUT1

Setup Vhosts on DUT1 and setup IP to one of them. SetupQemu and bridge the vhosts.


${vhost1}=  And Vpp Create Vhost User Interface  ${dut1_node}  ${sock1}
${vhost2}=  And Vpp Create Vhost User Interface  ${dut1_node}  ${sock2}
Set Interface Address  ${dut1_node}  ${vhost2}  ${vhost_ip}  ${prefix4}
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}
Interface is added to bridge domain  ${dut1_node}  ${dut1_to_tg}  ${bid}  0
Interface is added to bridge domain  ${dut1_node}  ${vhost1}  ${bid}  0
${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}

eth2p-ethip6ipsectptlispgpe-ip4base-func module

TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-LISPGPE-IPSec-IPv4-ICMP on DUT1-DUT2, Eth-IPv4-ICMPon TG-DUTn. [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. [Ver] Make TG send ICMPv6 Echo Req between its interfaces acrossboth DUTs and LISP GPE tunnel between them; verify IPv4 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup Topology And Lisp
  And IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${dut1_to_dut2}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip6}  ${dut2_to_dut1_ip6}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${dut2_to_dut1}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip6}  ${dut1_to_dut2_ip6}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

TC02: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPon TG-DUTn. [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. [Ver] Make TG send ICMPv6 Echo Req between its interfaces acrossboth DUTs and LISP GPE tunnel between them; verify IPv4 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup Topology And Lisp
  And IPsec Generate Keys  ${encr_alg}  ${auth_alg}
${lisp_if_idx}=  resources.libraries.python.InterfaceUtil.get sw if index  ${dut1_node}  ${lisp_gpe_int}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${lisp_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip6}  ${dut2_to_dut1_ip6}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${lisp_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip6}  ${dut1_to_dut2_ip6}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4}  ${tg2_ip4}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4}  ${tg1_ip4}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Setup Topology And Lisp

Setup IPs and neighbors for interfaces on DUT1 and DUT2and then setup LISP.


Path for 3-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes['TG']}
Interfaces in 3-node path are up
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip4}  ${prefix4}
Vpp Set If IPv6 Addr  ${dut2_node}  ${dut2_to_dut1}  ${dut2_to_dut1_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut2_node}  ${dut2_to_tg}  ${dut2_to_tg_ip4}  ${prefix4}
Add IP Neighbor  ${dut2_node}  ${dut2_to_tg}  ${tg2_ip4}  ${tg_to_dut2_mac}
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}
Add IP Neighbor  ${dut1_node}  ${dut1_to_tg}  ${tg1_ip4}  ${tg_to_dut1_mac}
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_ip_static_adjacency}  ${dut2_to_dut1_ip_static_adjacency}

eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func module

TC01: DUT1 and DUT2 route IPv6 over Vhost to LISP GPE tunnel using IPsec (transport) on RLOC Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMP on DUT1-DUT2, Eth-IPv6-ICMPon TG-DUTn. [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. Create Qemu vm on DUT1 and configure bridgebetween two vhosts. [Ver] Case: ip6-ipsec-lispgpe-ip6 - main fib, virt2lispMake TG send ICMPv6 Echo Req between its interfaces acrossboth DUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup Topology
  And Setup Qemu DUT1
  And 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 IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${dut1_to_dut2}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip6}  ${dut2_to_dut1_ip6}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${dut2_to_dut1}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip6}  ${dut1_to_dut2_ip6}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6}  ${tg2_ip6}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dst_vhost_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6}  ${tg1_ip6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

TC02: DUT1 and DUT2 route IPv6 over Vhost to LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. [Ver] Case: ip6-ipsec-lispgpe-ip6 - main fib, virt2lispMake TG send ICMPv6 Echo Req between its interfaces acrossboth DUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup Topology
  And Setup Qemu DUT1
  And 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}
${lisp1_if_idx}=  resources.libraries.python.InterfaceUtil.get sw if index  ${dut1_node}  lisp_gpe0
${lisp2_if_idx}=  resources.libraries.python.InterfaceUtil.get sw if index  ${dut2_node}  lisp_gpe0
  And IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${lisp1_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip6}  ${dut2_to_dut1_ip6}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${lisp2_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip6}  ${dut1_to_dut2_ip6}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6}  ${tg2_ip6}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dst_vhost_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6}  ${tg1_ip6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Setup Topology


Path for 3-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes['TG']}
Interfaces in 3-node path are up
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut2_node}  ${dut2_to_dut1}  ${dut2_to_dut1_ip6}  ${prefix6}
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}  ${tg_to_dut1_mac}
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}  ${dut2_to_dut1_mac}
Add IP Neighbor  ${dut2_node}  ${dut2_to_dut1}  ${dut1_to_dut2_ip6}  ${dut1_to_dut2_mac}

Setup Qemu DUT1

Setup Vhosts on DUT1 and setup IP to one of them. Setup Qemu and bridge the vhosts.


${vhost1}=  And Vpp Create Vhost User Interface  ${dut1_node}  ${sock1}
${vhost2}=  And Vpp Create Vhost User Interface  ${dut1_node}  ${sock2}
Vpp Set If IPv6 Addr  ${dut1_node}  ${vhost2}  2001:cdba:1::9  ${prefix6}
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}
Interface is added to bridge domain  ${dut1_node}  ${dut1_to_tg}  ${bid}  0
Interface is added to bridge domain  ${dut1_node}  ${vhost1}  ${bid}  0
${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}

eth2p-ethip6ipsectptlispgpe-ip6base-func module

TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. [Ver] Case: ip6-lispgpe-ipsec-ip6 - main fib, phys2lispMake TG send ICMPv6 Echo Req between its interfaces acrossboth DUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup Topology
  And 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 IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${dut1_to_dut2}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${dut1_to_dut2_ip6}  ${dut2_to_dut1_ip6}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${dut2_to_dut1}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${dut2_to_dut1_ip6}  ${dut1_to_dut2_ip6}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6}  ${tg2_ip6}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6}  ${tg1_ip6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

TC02: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using IPsec (transport) lisp_gpe0 Int.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 withIPsec in between DUTS. [Ver] Case: ip6-ipsec-lispgpe-ip6 - main fib, phys2lispMake TG send ICMPv6 Echo Req between its interfaces acrossboth DUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830, RFC4303.


${encr_alg}=  Crypto Alg AES CBC 128
${auth_alg}=  Integ Alg SHA1 96
Given Setup Topology
  And 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}
${lisp_if_idx}=  resources.libraries.python.InterfaceUtil.get sw if index  ${dut1_node}  lisp_gpe0
  And IPsec Generate Keys  ${encr_alg}  ${auth_alg}
 When VPP Setup IPsec Manual Keyed Connection  ${dut1_node}  ${lisp_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut1_spi}  ${dut2_spi}  ${tg1_ip6}  ${tg2_ip6}
  And VPP Setup IPsec Manual Keyed Connection  ${dut2_node}  ${lisp_if_idx}  ${encr_alg}  ${encr_key}  ${auth_alg}  ${auth_key}  ${dut2_spi}  ${dut1_spi}  ${tg2_ip6}  ${tg1_ip6}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6}  ${tg2_ip6}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6}  ${tg1_ip6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Setup Topology


Path for 3-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes['TG']}
Interfaces in 3-node path are up
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip6}  ${prefix6}
Vpp Set If IPv6 Addr  ${dut2_node}  ${dut2_to_dut1}  ${dut2_to_dut1_ip6}  ${prefix6}
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}  ${tg_to_dut1_mac}
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}  ${dut2_to_dut1_mac}
Add IP Neighbor  ${dut2_node}  ${dut2_to_dut1}  ${dut1_to_dut2_ip6}  ${dut1_to_dut2_mac}

eth2p-ethip6lisp-l2bdbasemaclrn-func module

TC01: Route IPv6 packet through LISP with Bridge Domain setup.

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IP6-ICMPv6-LISPGpe-IP6 [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. Alsoconfigure BD and assign it to LISP VNI. [Ver] Make TG send ICMPv6 Echo Req between its interfaces across bothDUTs and LISP tunnel between them; verify IPv6, Ether headers onreceived packets are correct. [Ref] RFC6830.


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 IP addresses are set on interfaces  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip6}  ${prefix6}  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip6}  ${prefix6}  ${dut2_node}  ${dut2_to_dut1}  ${dut2_to_dut1_ip6}  ${prefix6}  ${dut2_node}  ${dut2_to_tg}  ${dut2_to_tg_ip6}  ${prefix6}
  And Add Arp On Dut  ${dut2_node}  ${dut2_to_tg}  ${tg2_ip6}  ${tg_to_dut2_mac}
  And Add Arp On Dut  ${dut1_node}  ${dut1_to_tg}  ${tg1_ip6}  ${tg_to_dut1_mac}
  And Add Arp On Dut  ${dut1_node}  ${dut1_to_dut2}  ${dut2_to_dut1_ip6}  ${dut2_to_dut1_mac}
  And Add Arp On Dut  ${dut2_node}  ${dut2_to_dut1}  ${dut1_to_dut2_ip6}  ${dut1_to_dut2_mac}
 When Create L2 BD  ${dut1_node}  ${vpp_bd_id}
  And Add Interface To L2 BD  ${dut1_node}  ${dut1_to_tg}  ${vpp_bd_id}
  And Create L2 BD  ${dut2_node}  ${vpp_bd_id}
  And Add Interface To L2 BD  ${dut2_node}  ${dut2_to_tg}  ${vpp_bd_id}
  And Set up L2 Lisp on DUT  ${dut1_node}  ${dut1_to_dut2_ip6_static_adjacency}  ${lisp_dut_settings}
  And Set up L2 Lisp on DUT  ${dut2_node}  ${dut2_to_dut1_ip6_static_adjacency}  ${lisp_dut_settings}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6}  ${tg2_ip6}  ${tg_to_dut1}  ${tg_if1_mac}  ${tg_if2_mac}  ${tg_to_dut2}  ${tg_if1_mac}  ${tg_if2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6}  ${tg1_ip6}  ${tg_to_dut2}  ${tg_if2_mac}  ${tg_if1_mac}  ${tg_to_dut1}  ${tg_if2_mac}  ${tg_if1_mac}

eth2p-ethip6lispgpe-ip4base-func module

TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISPoIPv6 tunnel

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-LISP-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 onTG-DUTn. [Cfg] On DUT1 and DUT2 configure IPv6 LISP static adjacencies. [Ver] Make TG send ICMPv4 Echo Req between its interfaces across bothDUTs and LISP tunnel between them; verify IPv4 headers on receivedpackets are correct. [Cfg2] Reconf LISP. [Ver2] Verify packets are received again via LISP tunnel. [Ref] RFC6830.


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 IP addresses are set on interfaces  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip4o6}  ${dut_prefix4o6}  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip4o6}  ${tg_prefix4o6}  ${dut2_node}  ${dut2_to_dut1}  ${dut2_to_dut1_ip4o6}  ${dut_prefix4o6}  ${dut2_node}  ${dut2_to_tg}  ${dut2_to_tg_ip4o6}  ${tg_prefix4o6}
  And VPP IP Probe  ${dut1_node}  ${dut1_to_dut2}  ${dut2_to_dut1_ip4o6}
  And VPP IP Probe  ${dut2_node}  ${dut2_to_dut1}  ${dut1_to_dut2_ip4o6}
  And Add Arp On Dut  ${dut2_node}  ${dut2_to_tg}  ${tg2_ip4o6}  ${tg_to_dut2_mac}
  And Add Arp On Dut  ${dut1_node}  ${dut1_to_tg}  ${tg1_ip4o6}  ${tg_to_dut1_mac}
 When Set up Lisp topology  ${dut1_node}  ${dut1_to_dut2}  ${NONE}  ${dut2_node}  ${dut2_to_dut1}  ${NONE}  ${duts_locator_set}  ${dut1_ip4o6_eid}  ${dut2_ip4o6_eid}  ${dut1_ip4o6_static_adjacency}  ${dut2_ip4o6_static_adjacency}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4o6}  ${tg2_ip4o6}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4o6}  ${tg1_ip4o6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}
 When Change Lisp Configuration  ${dut1_node}  ${dut2_node}  ${dut1_to_dut2}  ${dut2_to_dut1}  ${dut1_to_dut2_mac}  ${dut2_to_dut1_mac}  ${dut1_to_dut2_ip4o6}  ${dut2_to_dut1_ip4o6_reconf}  ${dut_prefix4o6}  ${dut1_ip4o6_static_adjacency}  ${dut1_ip4o6_static_adjacency_reconf}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip4o6}  ${tg2_ip4o6}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip4o6}  ${tg1_ip4o6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func module

TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using vhost interfaces

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 onTG-DUTn. [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. [Ver] Case: ip6-ipsec-lispgpe-ip6 - main fib, virt2lisp Make TG send ICMPv6 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct.


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 Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip6}  ${prefix6}
  And Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_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 Add IP Neighbors
 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
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6}  ${tg2_ip6}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dst_vhost_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6}  ${tg1_ip6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Setup Qemu DUT1

Setup Vhosts on DUT1 and setup IP on one of them. SetupQemu and bridge the vhosts. Optionally, you can set fib table IDwhere the vhost2 interface should be assigned to.


${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}
Interface is added to bridge domain  ${dut1_node}  ${dut1_to_tg}  ${bid}  0
Interface is added to bridge domain  ${dut1_node}  ${vhost1}  ${bid}  0
${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

Add IP neighbors to physical interfaces on DUTs.You can specify fib table ID for DUT-TG interfaces. Default is 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}

eth2p-ethip6lispgpe-ip6base-func module

TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using physical interfaces

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 onTG-DUTn. [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. [Ver] Case: ip6-lispgpe-ip6 - phy2lisp Make TG send ICMPv6 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830.


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 Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_dut2}  ${dut1_to_dut2_ip6}  ${prefix6}
  And Vpp Set If IPv6 Addr  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_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 Add IP Neighbors
 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}
 Then Send Packet And Check Headers  ${tg_node}  ${tg1_ip6}  ${tg2_ip6}  ${tg_to_dut1}  ${tg_to_dut1_mac}  ${dut1_to_tg_mac}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6}  ${tg1_ip6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Add IP Neighbors

Add IP neighbors to physical interfaces on DUTs.You can specify fib table ID for DUT-TG interfaces. Default is 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}

eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func module

TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using vhost interfaces and VRF is enabled

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 onTG-DUTn. [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. [Ver] Case: ip6-lispgpe-ip6 - vrf, virt2lisp Make TG send ICMPv6 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830.


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 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  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_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 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}
  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}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6}  ${tg1_ip6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Setup Qemu DUT1

Setup Vhosts on DUT1 and setup IP on one of them. SetupQemu and bridge the vhosts. Optionally, you can set fib table IDwhere the vhost2 interface should be assigned to.


${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}
Interface is added to bridge domain  ${dut1_node}  ${dut1_to_tg}  ${bid}  0
Interface is added to bridge domain  ${dut1_node}  ${vhost1}  ${bid}  0
${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

Add IP neighbors to physical interfaces on DUTs.You can specify fib table ID for DUT-TG interfaces. Default is 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}

eth2p-ethip6lispgpe-ip6basevrf-func module

TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using physical interfaces and VRF is enabled

[Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 onTG-DUTn. [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. [Ver] Case: ip6-lispgpe-ip6 - vrf, phy2lisp Make TG send ICMPv6 Echo Req between its interfaces across bothDUTs and LISP GPE tunnel between them; verify IPv6 headers onreceived packets are correct. [Ref] RFC6830.


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 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  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_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 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}  ${tg_to_dut2}  ${dut2_to_tg_mac}  ${tg_to_dut2_mac}
  And Send Packet And Check Headers  ${tg_node}  ${tg2_ip6}  ${tg1_ip6}  ${tg_to_dut2}  ${tg_to_dut2_mac}  ${dut2_to_tg_mac}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${tg_to_dut1_mac}

Add IP Neighbors

Add IP neighbors to physical interfaces on DUTs.You can specify fib table ID for DUT-TG interfaces. Default is 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}