10 #6.0.1.2 vpp1 +--------+ | +--------+
11 # +---------+ |intervpp1 |intervpp2| |vpp2
12 # | VPP1 +----------+---------+ VPP2 +---------+
14 # +--------+ | +--------+ 6:0:2::2
21 odl_mac=`ip a show dev odl | grep "link/ether" | awk '{print $2}'`
22 echo "set ip arp host-xtr1 6.0.3.100 $odl_mac" | nc 0 5002
23 echo "set ip arp host-xtr2 6.0.3.100 $odl_mac" | nc 0 5003
24 echo "set ip arp host-xtr3 6.0.3.100 $odl_mac" | nc 0 5004
26 mac=`ip netns exec vppns1 ip a show dev veth_vpp1 | grep "link/ether" | awk '{print $2}'`
27 echo "set ip arp host-vpp1 6.0.1.2 $mac" | nc 0 5002
28 echo "set ip6 neighbor host-vpp1 6:0:1::2 $mac" | nc 0 5002
30 mac=`ip netns exec vppns2 ip a show dev veth_vpp2 | grep "link/ether" | awk '{print $2}'`
31 echo "set ip arp host-vpp2 6.0.2.2 $mac" | nc 0 5003
32 echo "set ip6 neighbor host-vpp2 6:0:2::2 $mac" | nc 0 5003
34 mac=`echo "sh hard host-intervpp1" | nc 0 5002 | grep 'Ethernet address' | awk '{print $3}'`
35 echo "set ip arp host-intervpp2 6.0.3.1 $mac" | nc 0 5003
36 echo "set ip6 neighbor host-intervpp2 6:0:3::1 $mac" | nc 0 5003
38 mac=`echo "sh hard host-intervpp2" | nc 0 5003 | grep 'Ethernet address' | awk '{print $3}'`
39 echo "set ip arp host-intervpp1 6.0.3.2 $mac" | nc 0 5002
40 echo "set ip6 neighbor host-intervpp1 6:0:3::2 $mac" | nc 0 5002
43 function 2_node_topo_clean
45 echo "Clearing all VPP instances.."
49 echo "Cleaning topology.."
50 ip netns exec intervppns ifconfig vppbr down
51 ip netns exec intervppns brctl delbr vppbr
52 ip link del dev veth_vpp1 &> /dev/null
53 ip link del dev veth_vpp2 &> /dev/null
54 ip link del dev veth_intervpp1 &> /dev/null
55 ip link del dev veth_intervpp2 &> /dev/null
56 ip link del dev veth_odl &> /dev/null
57 ip link del dev veth_mr &> /dev/null
58 ip netns del vppns1 &> /dev/null
59 ip netns del vppns2 &> /dev/null
60 ip netns del intervppns &> /dev/null
62 if [ "$1" != "no_odl" ] ; then
67 function 2_node_topo_setup
70 # create vpp to clients and inter-vpp namespaces
73 ip netns add intervppns
75 # create vpp and odl interfaces and set them in intervppns
76 ip link add veth_intervpp1 type veth peer name intervpp1
77 ip link add veth_intervpp2 type veth peer name intervpp2
78 ip link add veth_odl type veth peer name odl
79 ip link add veth_mr type veth peer name mr
80 ip link set dev intervpp1 up
81 ip link set dev intervpp2 up
82 ip link set dev odl up
84 ip link set dev veth_intervpp1 up netns intervppns
85 ip link set dev veth_intervpp2 up netns intervppns
86 ip link set dev veth_odl up netns intervppns
87 ip link set dev veth_mr up netns intervppns
89 # create bridge in intervppns and add vpp and odl interfaces
90 ip netns exec intervppns brctl addbr vppbr
91 ip netns exec intervppns brctl addif vppbr veth_intervpp1
92 ip netns exec intervppns brctl addif vppbr veth_intervpp2
93 ip netns exec intervppns brctl addif vppbr veth_odl
94 ip netns exec intervppns brctl addif vppbr veth_mr
95 ip netns exec intervppns ifconfig vppbr up
97 # create and configure 1st veth client to vpp pair
98 ip link add veth_vpp1 type veth peer name vpp1
99 ip link set dev vpp1 up
100 ip link set dev veth_vpp1 up netns vppns1
102 # create and configure 2nd veth client to vpp pair
103 ip link add veth_vpp2 type veth peer name vpp2
104 ip link set dev vpp2 up
105 ip link set dev veth_vpp2 up netns vppns2
107 ip netns exec vppns1 \
109 ip link set dev lo up
110 ip addr add 6.0.1.2/24 dev veth_vpp1
111 ip route add 6.0.2.0/24 via 6.0.1.1
112 ip addr add 6:0:1::2/64 dev veth_vpp1
113 ip route add 6:0:2::0/64 via 6:0:1::1
116 ip netns exec vppns2 \
118 ip link set dev lo up
119 ip addr add 6.0.2.2/24 dev veth_vpp2
120 ip route add 6.0.1.0/24 via 6.0.2.1
121 ip addr add 6:0:2::2/64 dev veth_vpp2
122 ip route add 6:0:1::0/64 via 6:0:2::1
125 # set odl iface ip and disable checksum offloading
126 ip addr add 6.0.3.100/24 dev odl
127 ip addr add 6:0:3::100/64 dev odl
128 ethtool --offload odl rx off tx off
130 ip addr add 6.0.3.200/24 dev mr
131 ethtool --offload mr rx off tx off
133 # generate config files
134 ./scripts/generate_config.py ${VPP_LITE_CONF} ${CFG_METHOD}
140 echo "* Selected configuration method: $CFG_METHOD"
141 if [ "$CFG_METHOD" == "cli" ] ; then
142 echo "exec ${VPP_LITE_CONF}/vpp1.cli" | nc 0 5002
143 echo "exec ${VPP_LITE_CONF}/vpp2.cli" | nc 0 5003
144 elif [ "$CFG_METHOD" == "vat" ] ; then
145 ${VPP_API_TEST} chroot prefix vpp1 script in ${VPP_LITE_CONF}/vpp1.vat
146 ${VPP_API_TEST} chroot prefix vpp2 script in ${VPP_LITE_CONF}/vpp2.vat
149 echo "=== Invalid configuration method selected!"
150 echo "=== To resolve this set env variable CFG_METHOD to vat or cli."
154 if [ "$1" != "no_odl" ] ; then
155 post_curl "add-mapping" ${ODL_CONFIG_FILE1}
156 post_curl "add-mapping" ${ODL_CONFIG_FILE2}