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}
}
|