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-intervpp1 6.0.3.100 $odl_mac" | nc 0 5002
23 echo "set ip arp host-intervpp2 6.0.3.100 $odl_mac" | nc 0 5003
25 mac=`ip netns exec vppns1 ip a show dev veth_vpp1 | grep "link/ether" | awk '{print $2}'`
26 echo "set ip arp host-vpp1 6.0.1.2 $mac" | nc 0 5002
27 echo "set ip6 neighbor host-vpp1 6:0:1::2 $mac" | nc 0 5002
29 mac=`ip netns exec vppns2 ip a show dev veth_vpp2 | grep "link/ether" | awk '{print $2}'`
30 echo "set ip arp host-vpp2 6.0.2.2 $mac" | nc 0 5003
31 echo "set ip6 neighbor host-vpp2 6:0:2::2 $mac" | nc 0 5003
33 mac=`echo "sh hard host-intervpp1" | nc 0 5002 | grep 'Ethernet address' | awk '{print $3}'`
34 echo "set ip arp host-intervpp2 6.0.3.1 $mac" | nc 0 5003
35 echo "set ip6 neighbor host-intervpp2 6:0:3::1 $mac" | nc 0 5003
37 mac=`echo "sh hard host-intervpp2" | nc 0 5003 | grep 'Ethernet address' | awk '{print $3}'`
38 echo "set ip arp host-intervpp1 6.0.3.2 $mac" | nc 0 5002
39 echo "set ip6 neighbor host-intervpp1 6:0:3::2 $mac" | nc 0 5002
42 function 2_node_topo_clean
44 echo "Clearing all VPP instances.."
48 echo "Cleaning topology.."
49 ip netns exec intervppns ifconfig vppbr down
50 ip netns exec intervppns brctl delbr vppbr
51 ip link del dev veth_vpp1 &> /dev/null
52 ip link del dev veth_vpp2 &> /dev/null
53 ip link del dev veth_intervpp1 &> /dev/null
54 ip link del dev veth_intervpp2 &> /dev/null
55 ip link del dev veth_odl &> /dev/null
56 ip link del dev veth_mr &> /dev/null
57 ip netns del vppns1 &> /dev/null
58 ip netns del vppns2 &> /dev/null
59 ip netns del intervppns &> /dev/null
61 if [ "$1" != "no_odl" ] ; then
66 function 2_node_topo_setup
69 # create vpp to clients and inter-vpp namespaces
72 ip netns add intervppns
74 # create vpp and odl interfaces and set them in intervppns
75 ip link add veth_intervpp1 type veth peer name intervpp1
76 ip link add veth_intervpp2 type veth peer name intervpp2
77 ip link add veth_odl type veth peer name odl
78 ip link add veth_mr type veth peer name mr
79 ip link set dev intervpp1 up
80 ip link set dev intervpp2 up
81 ip link set dev odl up
83 ip link set dev veth_intervpp1 up netns intervppns
84 ip link set dev veth_intervpp2 up netns intervppns
85 ip link set dev veth_odl up netns intervppns
86 ip link set dev veth_mr up netns intervppns
88 # create bridge in intervppns and add vpp and odl interfaces
89 ip netns exec intervppns brctl addbr vppbr
90 ip netns exec intervppns brctl addif vppbr veth_intervpp1
91 ip netns exec intervppns brctl addif vppbr veth_intervpp2
92 ip netns exec intervppns brctl addif vppbr veth_odl
93 ip netns exec intervppns brctl addif vppbr veth_mr
94 ip netns exec intervppns ifconfig vppbr up
96 # create and configure 1st veth client to vpp pair
97 ip link add veth_vpp1 type veth peer name vpp1
98 ip link set dev vpp1 up
99 ip link set dev veth_vpp1 up netns vppns1
101 # create and configure 2nd veth client to vpp pair
102 ip link add veth_vpp2 type veth peer name vpp2
103 ip link set dev vpp2 up
104 ip link set dev veth_vpp2 up netns vppns2
106 ip netns exec vppns1 \
108 ip link set dev lo up
109 ip addr add 6.0.1.2/24 dev veth_vpp1
110 ip route add 6.0.2.0/24 via 6.0.1.1
111 ip addr add 6:0:1::2/64 dev veth_vpp1
112 ip route add 6:0:2::0/64 via 6:0:1::1
115 ip netns exec vppns2 \
117 ip link set dev lo up
118 ip addr add 6.0.2.2/24 dev veth_vpp2
119 ip route add 6.0.1.0/24 via 6.0.2.1
120 ip addr add 6:0:2::2/64 dev veth_vpp2
121 ip route add 6:0:1::0/64 via 6:0:2::1
124 # set odl iface ip and disable checksum offloading
125 ip addr add 6.0.3.100/24 dev odl
126 ip addr add 6:0:3::100/64 dev odl
127 ethtool --offload odl rx off tx off
129 ip addr add 6.0.3.200/24 dev mr
130 ethtool --offload mr rx off tx off
132 # generate config files
133 ./scripts/generate_config.py ${VPP_LITE_CONF} ${CFG_METHOD}
139 echo "* Selected configuration method: $CFG_METHOD"
140 if [ "$CFG_METHOD" == "cli" ] ; then
141 echo "exec ${VPP_LITE_CONF}/vpp1.cli" | nc 0 5002
142 echo "exec ${VPP_LITE_CONF}/vpp2.cli" | nc 0 5003
143 elif [ "$CFG_METHOD" == "vat" ] ; then
144 ${VPP_API_TEST} chroot prefix vpp1 script in ${VPP_LITE_CONF}/vpp1.vat
145 ${VPP_API_TEST} chroot prefix vpp2 script in ${VPP_LITE_CONF}/vpp2.vat
148 echo "=== Invalid configuration method selected!"
149 echo "=== To resolve this set env variable CFG_METHOD to vat or cli."
153 if [ "$1" != "no_odl" ] ; then
154 post_curl "add-mapping" ${ODL_CONFIG_FILE1}
155 post_curl "add-mapping" ${ODL_CONFIG_FILE2}