summaryrefslogtreecommitdiffstats
path: root/tests/data_plane/vpp_lite_topo/topologies/two_customers_topo.sh
blob: f594d4530c6ec46c5668a4684e36d0ca5f858863 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/usr/bin/env bash

function two_customers_topo_clean {
  echo "Clearing all VPP instances.."
  pkill vpp --signal 9
  rm /dev/shm/*

  echo "Cleaning topology.."
  ip netns exec intervpp-ns ifconfig vppbr1 down
  ip netns exec intervpp-ns brctl delbr vppbr1
  ip link del dev vpp1_cus1 &> /dev/null
  ip link del dev vpp2_cus1 &> /dev/null
  ip link del dev vpp1_cus2 &> /dev/null
  ip link del dev vpp2_cus2 &> /dev/null
  ip link del dev intervpp1 &> /dev/null
  ip link del dev intervpp2 &> /dev/null
  ip link del dev odl &> /dev/null

  ip netns del vpp1-cus1-ns &> /dev/null
  ip netns del vpp1-cus2-ns &> /dev/null
  ip netns del vpp2-cus1-ns &> /dev/null
  ip netns del vpp2-cus2-ns &> /dev/null
  ip netns del intervpp-ns &> /dev/null

  odl_clear_all
}

function two_customers_topo_setup {
  echo "Configuring topology..."
  ip netns add vpp1-cus1-ns
  ip netns add vpp1-cus2-ns
  ip netns add vpp2-cus1-ns
  ip netns add vpp2-cus2-ns
  ip netns add intervpp-ns

  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 intervpp-ns
  ip link set dev veth_intervpp2 up netns intervpp-ns
  ip link set dev veth_odl up netns intervpp-ns

  ip netns exec intervpp-ns brctl addbr vppbr1
  ip netns exec intervpp-ns brctl addif vppbr1 veth_intervpp1
  ip netns exec intervpp-ns brctl addif vppbr1 veth_intervpp2
  ip netns exec intervpp-ns brctl addif vppbr1 veth_odl
  ip netns exec intervpp-ns ifconfig vppbr1 up

  # customer1 configuration on vpp1
  ip link add veth_vpp1_cus1 type veth peer name vpp1_cus1
  ip link set dev vpp1_cus1 up
  ip link set dev veth_vpp1_cus1 up netns vpp1-cus1-ns

  ip netns exec vpp1-cus1-ns \
    bash -c "
      ip link set dev lo up
      ip addr add 6.0.2.2/24 dev veth_vpp1_cus1
      ip addr add 6:0:2::2/64 dev veth_vpp1_cus1
      ip route add 6.0.4.0/24 via 6.0.2.1
      ip route add 6:0:4::0/64 via 6:0:2::1
  "

  # customer2 configuration on vpp1
  ip link add veth_vpp1_cus2 type veth peer name vpp1_cus2
  ip link set dev vpp1_cus2 up
  ip link set dev veth_vpp1_cus2 up netns vpp1-cus2-ns

  ip netns exec vpp1-cus2-ns \
    bash -c "
      ip link set dev lo up
      ip addr add 6.0.2.2/24 dev veth_vpp1_cus2
      ip addr add 6:0:2::2/64 dev veth_vpp1_cus2
      ip route add 6.0.4.0/24 via 6.0.2.1
      ip route add 6:0:4::0/64 via 6:0:2::1
  "

  # customer1 configuration on vpp2
  ip link add veth_vpp2_cus1 type veth peer name vpp2_cus1
  ip link set dev vpp2_cus1 up
  ip link set dev veth_vpp2_cus1 up netns vpp2-cus1-ns

  ip netns exec vpp2-cus1-ns \
    bash -c "
      ip link set dev lo up
      ip addr add 6.0.4.4/24 dev veth_vpp2_cus1
      ip addr add 6:0:4::4/64 dev veth_vpp2_cus1
      ip route add 6.0.2.0/24 via 6.0.4.1
      ip route add 6:0:2::0/64 via 6:0:4::1
  "

  # customer2 configuration on vpp2
  ip link add veth_vpp2_cus2 type veth peer name vpp2_cus2
  ip link set dev vpp2_cus2 up
  ip link set dev veth_vpp2_cus2 up netns vpp2-cus2-ns

  ip netns exec vpp2-cus2-ns \
    bash -c "
      ip link set dev lo up
      ip addr add 6.0.4.4/24 dev veth_vpp2_cus2
      ip addr add 6:0:4::4/64 dev veth_vpp2_cus2
      ip route add 6.0.2.0/24 via 6.0.4.1
      ip route add 6:0:2::0/64 via 6:0:4::1
  "

  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

  # generate config files
  ./scripts/generate_config.py ${VPP_LITE_CONF} ${CFG_METHOD}

  sleep 3
  start_vpp 5002 vpp1
  start_vpp 5003 vpp2

  echo "* Selected configuration method: $CFG_METHOD"
  if [ "$CFG_METHOD" == "cli" ] ; then
    echo "exec ${VPP_LITE_CONF}/vpp1.cli" | nc 0 5002
    echo "exec ${VPP_LITE_CONF}/vpp2.cli" | nc 0 5003
  elif [ "$CFG_METHOD" == "vat" ] ; then
    sleep 2
    ${VPP_API_TEST} chroot prefix vpp1 script in ${VPP_LITE_CONF}/vpp1.vat
    ${VPP_API_TEST} chroot prefix vpp2 script in ${VPP_LITE_CONF}/vpp2.vat
  else
    echo "=== WARNING:"
    echo "=== Invalid configuration method selected!"
    echo "=== To resolve this set env variable CFG_METHOD to vat or cli."
    echo "==="
  fi

  post_curl "add-mapping" ${ODL_CONFIG_FILE1}
  post_curl "add-mapping" ${ODL_CONFIG_FILE2}
  post_curl "add-mapping" ${ODL_CONFIG_FILE3}
  post_curl "add-mapping" ${ODL_CONFIG_FILE4}
}