1source config.sh
2source odl_utils.sh
3source topologies/multihoming_topo_l2.sh
4
5ODL_CONFIG_FILE1="vpp1.json"
6ODL_CONFIG_FILE2="vpp2.json"
7ODL_CONFIG_FILE3="update_vpp2.json"
8
9if [ "$1" == "clean" ] ; then
10  multihoming_topo_clean
11  exit 0
12fi
13
14if [[ $(id -u) != 0 ]]; then
15  echo "Error: run this as a root."
16  exit 1
17fi
18
19function test_multihoming
20{
21  if [ "$3" != "no_setup" ] ; then
22    multihoming_topo_setup
23  fi
24
25  maybe_pause $3
26
27  test_result=1
28
29  ip netns exec vppns1 "${1}" -w 15 -c 1 "${2}"
30  rc=$?
31  if [ $rc -ne 0 ] ; then
32    echo "No response received!"
33
34    maybe_pause $3
35    multihoming_topo_clean
36    exit $test_result
37  fi
38
39  maybe_pause $3
40
41  # do some port sweeping to see that load balancing works
42  ip netns exec vppns1 python scripts/port_flood.py "${2}" 1000
43
44  # check that it works
45  pkts=$(echo "show int" | nc 0 5003 | grep host-intervpp12 | awk '{print $6}' | tr -d '\r')
46
47  if [ $pkts -gt 450 ] && [ $pkts -lt 550 ] ; then
48    rc=0
49  else
50    rc=1
51  fi
52
53  if [ $rc -ne 0 ] ; then
54    echo "Load balancing doesn't work!"
55
56    maybe_pause $3
57
58    multihoming_topo_clean
59    exit $test_result
60  fi
61
62  maybe_pause $3
63
64  # change IP addresses of destination RLOC
65  echo "set int ip address del host-intervpp12 6.0.3.2/24" | nc 0 5003
66  echo "set int ip address host-intervpp12 6.0.3.20/24" | nc 0 5003
67  echo "set int ip address del host-intervpp12 6:0:3::2/64" | nc 0 5003
68  echo "set int ip address host-intervpp12 6:0:3::20/64" | nc 0 5003
69  post_curl "update-mapping" ${ODL_CONFIG_FILE3}
70
71  ip netns exec vppns1 "${1}" -w 15 -c 1 "${2}"
72  rc=$?
73
74  # test done
75
76  maybe_pause $3
77
78  multihoming_topo_clean
79  print_status $rc "No ICMP response!"
80  exit $test_result
81}
82