summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2016-07-29 23:24:17 +0200
committerFlorin Coras <fcoras@cisco.com>2016-08-01 17:31:29 +0200
commit8719d3152d10974926175f63975d1b0290fd7237 (patch)
treeafa1450104ebf5a44d4fde88c3acc0dc46bc640c
parent51b44223b063eeccccd078d39ab08f5d16629e22 (diff)
Basic l2 over ip4 tests
Change-Id: I8bd9253bac3759018ca752574cae575b129df3e6 Signed-off-by: Florin Coras <fcoras@cisco.com>
-rw-r--r--tests/data_plane/configs/odl/basic/l2o4/vpp1.json30
-rw-r--r--tests/data_plane/configs/odl/basic/l2o4/vpp2.json30
-rw-r--r--tests/data_plane/configs/vpp_lite_config/basic/l2o4/vpp1.config16
-rw-r--r--tests/data_plane/configs/vpp_lite_config/basic/l2o4/vpp2.config16
-rw-r--r--tests/data_plane/vpp_lite_topo/test_driver/basic_l2.sh54
-rwxr-xr-xtests/data_plane/vpp_lite_topo/tests/test_basic_l2o4.sh10
-rw-r--r--tests/data_plane/vpp_lite_topo/topologies/basic_topo_l2.sh113
7 files changed, 269 insertions, 0 deletions
diff --git a/tests/data_plane/configs/odl/basic/l2o4/vpp1.json b/tests/data_plane/configs/odl/basic/l2o4/vpp1.json
new file mode 100644
index 0000000..4869c49
--- /dev/null
+++ b/tests/data_plane/configs/odl/basic/l2o4/vpp1.json
@@ -0,0 +1,30 @@
+{
+ "input": {
+ "mapping-record": {
+ "recordTtl": 1440,
+ "action": "NoAction",
+ "authoritative": true,
+ "eid": {
+ "virtual-network-id": 10,
+ "address-type": "ietf-lisp-address-types:mac-afi",
+ "mac": "08:11:11:11:11:11"
+ },
+ "LocatorRecord": [
+ {
+ "locator-id": "ISP1",
+ "priority": 1,
+ "weight": 1,
+ "multicastPriority": 255,
+ "multicastWeight": 0,
+ "localLocator": true,
+ "rlocProbed": false,
+ "routed": false,
+ "rloc": {
+ "address-type": "ietf-lisp-address-types:ipv4-afi",
+ "ipv4": "6.0.3.1"
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/data_plane/configs/odl/basic/l2o4/vpp2.json b/tests/data_plane/configs/odl/basic/l2o4/vpp2.json
new file mode 100644
index 0000000..7c49929
--- /dev/null
+++ b/tests/data_plane/configs/odl/basic/l2o4/vpp2.json
@@ -0,0 +1,30 @@
+{
+ "input": {
+ "mapping-record": {
+ "recordTtl": 1440,
+ "action": "NoAction",
+ "authoritative": true,
+ "eid": {
+ "virtual-network-id": 10,
+ "address-type": "ietf-lisp-address-types:mac-afi",
+ "mac": "08:22:22:22:22:22"
+ },
+ "LocatorRecord": [
+ {
+ "locator-id": "ISP1",
+ "priority": 1,
+ "weight": 1,
+ "multicastPriority": 255,
+ "multicastWeight": 0,
+ "localLocator": true,
+ "rlocProbed": false,
+ "routed": false,
+ "rloc": {
+ "address-type": "ietf-lisp-address-types:ipv4-afi",
+ "ipv4": "6.0.3.2"
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/data_plane/configs/vpp_lite_config/basic/l2o4/vpp1.config b/tests/data_plane/configs/vpp_lite_config/basic/l2o4/vpp1.config
new file mode 100644
index 0000000..f58c606
--- /dev/null
+++ b/tests/data_plane/configs/vpp_lite_config/basic/l2o4/vpp1.config
@@ -0,0 +1,16 @@
+create host-interface name vpp1
+set int state host-vpp1 up
+set int ip address host-vpp1 6.0.1.1/24
+
+create host-interface name intervpp1
+set int state host-intervpp1 up
+set int ip address host-intervpp1 6.0.3.1/24
+
+lisp enable
+
+lisp locator-set add ls1 iface host-intervpp1 p 1 w 1
+lisp map-resolver add 6.0.3.100
+
+lisp eid-table map vni 10 bd 10
+set interface l2 bridge host-vpp1 10
+lisp eid-table add vni 10 eid 08:11:11:11:11:11 locator-set ls1
diff --git a/tests/data_plane/configs/vpp_lite_config/basic/l2o4/vpp2.config b/tests/data_plane/configs/vpp_lite_config/basic/l2o4/vpp2.config
new file mode 100644
index 0000000..97dc81e
--- /dev/null
+++ b/tests/data_plane/configs/vpp_lite_config/basic/l2o4/vpp2.config
@@ -0,0 +1,16 @@
+create host-interface name vpp2
+set int state host-vpp2 up
+set int ip address host-vpp2 6.0.1.2/24
+
+create host-interface name intervpp2
+set int state host-intervpp2 up
+set int ip address host-intervpp2 6.0.3.2/24
+
+lisp enable
+
+lisp locator-set add ls1 iface host-intervpp2 p 1 w 1
+lisp map-resolver add 6.0.3.100
+
+lisp eid-table map vni 10 bd 10
+set interface l2 bridge host-vpp2 10
+lisp eid-table add vni 10 eid 08:22:22:22:22:22 locator-set ls1
diff --git a/tests/data_plane/vpp_lite_topo/test_driver/basic_l2.sh b/tests/data_plane/vpp_lite_topo/test_driver/basic_l2.sh
new file mode 100644
index 0000000..c744dc1
--- /dev/null
+++ b/tests/data_plane/vpp_lite_topo/test_driver/basic_l2.sh
@@ -0,0 +1,54 @@
+source config.sh
+source odl_utils.sh
+source topologies/basic_topo_l2.sh
+
+ODL_CONFIG_FILE1="vpp1.json"
+ODL_CONFIG_FILE2="vpp2.json"
+
+if [ "$1" == "clean" ] ; then
+ basic_topo_clean
+ exit 0
+fi
+
+if [[ $(id -u) != 0 ]]; then
+ echo "Error: run this as a root."
+ exit 1
+fi
+
+function test_basic
+{
+ if [ "$3" != "no_setup" ] ; then
+ basic_topo_setup
+ fi
+
+ if [ "$3" == "wait" ] ; then
+ read -p "press any key to continue .." -n1
+ fi
+
+ test_result=1
+
+ ip netns exec vppns1 "${1}" -w 15 -c 1 "${2}"
+ rc=$?
+
+ if [ "$3" == "wait" ] ; then
+ read -p "press any key to continue .." -n1
+ fi
+
+ if [ $rc -ne 0 ] ; then
+ echo "No response received!"
+ basic_topo_clean
+ exit $test_result
+ fi
+
+ # test done
+
+ basic_topo_clean
+ if [ $rc -ne 0 ] ; then
+ echo "Test failed: No ICMP response received within specified timeout limit!"
+ else
+ echo "Test passed."
+ test_result=0
+ fi
+
+ exit $test_result
+}
diff --git a/tests/data_plane/vpp_lite_topo/tests/test_basic_l2o4.sh b/tests/data_plane/vpp_lite_topo/tests/test_basic_l2o4.sh
new file mode 100755
index 0000000..a821b3b
--- /dev/null
+++ b/tests/data_plane/vpp_lite_topo/tests/test_basic_l2o4.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+# Test basic LISP functionality (l2 over ip4)
+
+VPP_LITE_CONF=`pwd`/../configs/vpp_lite_config/basic/l2o4
+ODL_CONFIG_DIR=`pwd`/../configs/odl/basic/l2o4
+
+source test_driver/basic_l2.sh
+
+test_basic ping "6.0.1.12"
diff --git a/tests/data_plane/vpp_lite_topo/topologies/basic_topo_l2.sh b/tests/data_plane/vpp_lite_topo/topologies/basic_topo_l2.sh
new file mode 100644
index 0000000..3b6fee3
--- /dev/null
+++ b/tests/data_plane/vpp_lite_topo/topologies/basic_topo_l2.sh
@@ -0,0 +1,113 @@
+#!/usr/bin/env bash
+
+function basic_topo_clean
+{
+ echo "Clearing all VPP instances.."
+ pkill vpp --signal 9
+ rm /dev/shm/*
+
+ echo "Cleaning topology.."
+ ip netns exec intervppns ifconfig vppbr down
+ ip netns exec intervppns brctl delbr vppbr
+ ip link del dev veth_vpp1 &> /dev/null
+ ip link del dev veth_vpp2 &> /dev/null
+ ip link del dev veth_intervpp1 &> /dev/null
+ ip link del dev veth_intervpp2 &> /dev/null
+ ip link del dev veth_odl &> /dev/null
+ ip netns del vppns1 &> /dev/null
+ ip netns del vppns2 &> /dev/null
+ ip netns del intervppns &> /dev/null
+
+ if [ "$1" != "no_odl" ] ; then
+ odl_clear_all
+ fi
+}
+
+function set_arp
+{
+ mac1=`ip netns exec vppns1 ip a show dev veth_vpp1 | grep "link/ether" | awk '{print $2}'`
+ ip netns exec vppns2 arp -s 6.0.1.11 $mac1
+
+ mac2=`ip netns exec vppns2 ip a show dev veth_vpp2 | grep "link/ether" | awk '{print $2}'`
+ ip netns exec vppns1 arp -s 6.0.1.12 $mac2
+}
+
+function basic_topo_setup
+{
+
+ # create vpp to clients and inter-vpp namespaces
+ ip netns add vppns1
+ ip netns add vppns2
+ ip netns add intervppns
+
+ # create vpp and odl interfaces and set them in intervppns
+ ip link add veth_intervpp1 type veth peer name intervpp1
+ ip link add veth_intervpp2 type veth peer name intervpp2
+ ip link add veth_odl type veth peer name odl
+ ip link set dev intervpp1 up
+ ip link set dev intervpp2 up
+ ip link set dev odl up
+ ip link set dev veth_intervpp1 up netns intervppns
+ ip link set dev veth_intervpp2 up netns intervppns
+ ip link set dev veth_odl up netns intervppns
+
+ # create bridge in intervppns and add vpp and odl interfaces
+ ip netns exec intervppns brctl addbr vppbr
+ ip netns exec intervppns brctl addif vppbr veth_intervpp1
+ ip netns exec intervppns brctl addif vppbr veth_intervpp2
+ ip netns exec intervppns brctl addif vppbr veth_odl
+ ip netns exec intervppns ifconfig vppbr up
+
+ # create and configure 1st veth client to vpp pair
+ ip link add veth_vpp1 type veth peer name vpp1
+ ip link set dev vpp1 up
+ ip link set dev veth_vpp1 address 08:11:11:11:11:11
+ ip link set dev veth_vpp1 up netns vppns1
+
+ # create and configure 2nd veth client to vpp pair
+ ip link add veth_vpp2 type veth peer name vpp2
+ ip link set dev vpp2 up
+ ip link set dev veth_vpp2 address 08:22:22:22:22:22
+ ip link set dev veth_vpp2 up netns vppns2
+
+ ip netns exec vppns1 \
+ bash -c "
+ ip link set dev lo up
+ ip addr add 6.0.1.11/24 dev veth_vpp1
+ ip addr add 6:0:1::11/64 dev veth_vpp1
+ "
+
+ ip netns exec vppns2 \
+ bash -c "
+ ip link set dev lo up
+ ip addr add 6.0.1.12/24 dev veth_vpp2
+ ip addr add 6:0:1::12/64 dev veth_vpp2
+ "
+
+ # set odl iface ip and disable checksum offloading
+ ip addr add 6.0.3.100/24 dev odl
+ ip addr add 6:0:3::100/64 dev odl
+ ethtool --offload odl rx off tx off
+
+ # start vpp1 and vpp2 in separate chroot
+ ${VPP_LITE_BIN} \
+ unix { log /tmp/vpp1.log cli-listen \
+ localhost:5002 full-coredump \
+ exec ${VPP_LITE_CONF}/vpp1.config } \
+ api-trace { on } api-segment {prefix xtr1}
+
+ ${VPP_LITE_BIN} \
+ unix { log /tmp/vpp2.log cli-listen \
+ localhost:5003 full-coredump \
+ exec ${VPP_LITE_CONF}/vpp2.config } \
+ api-trace { on } api-segment {prefix xtr2}
+
+ if [ "$1" != "no_odl" ] ; then
+ post_curl "add-mapping" ${ODL_CONFIG_FILE1}
+ post_curl "add-mapping" ${ODL_CONFIG_FILE2}
+ fi
+
+ # avoid arp requests
+ set_arp
+}
+