10 #6.0.1.2 vpp1 +--------+ | +--------+
11 # +---------+ |intervpp1 |intervpp2| |vpp2
12 # | VPP1 +----------+---------+ VPP2 +---------+
14 # +--------+ | +--------+ 6:0:2::2
21 mac=`ip netns exec vppns1 ip a show dev veth_vpp1 | grep "link/ether" | awk '{print $2}'`
22 echo "set ip arp host-vpp1 6.0.1.2 $mac" | nc 0 5002
23 echo "set ip6 neighbor host-vpp1 6:0:1::2 $mac" | nc 0 5002
25 mac=`ip netns exec vppns2 ip a show dev veth_vpp2 | grep "link/ether" | awk '{print $2}'`
26 echo "set ip arp host-vpp2 6.0.2.2 $mac" | nc 0 5003
27 echo "set ip6 neighbor host-vpp2 6:0:2::2 $mac" | nc 0 5003
29 mac=`echo "sh hard host-intervpp1" | nc 0 5002 | grep 'Ethernet address' | awk '{print $3}'`
30 echo "set ip arp host-intervpp2 6.0.3.1 $mac" | nc 0 5003
31 echo "set ip6 neighbor host-intervpp2 6:0:3::1 $mac" | nc 0 5003
33 mac=`echo "sh hard host-intervpp2" | nc 0 5003 | grep 'Ethernet address' | awk '{print $3}'`
34 echo "set ip arp host-intervpp1 6.0.3.2 $mac" | nc 0 5002
35 echo "set ip6 neighbor host-intervpp1 6:0:3::2 $mac" | nc 0 5002
38 function 2_node_topo_clean
40 echo "Clearing all VPP instances.."
44 echo "Cleaning topology.."
45 ip netns exec intervppns ifconfig vppbr down
46 ip netns exec intervppns brctl delbr vppbr
47 ip link del dev veth_vpp1 &> /dev/null
48 ip link del dev veth_vpp2 &> /dev/null
49 ip link del dev veth_intervpp1 &> /dev/null
50 ip link del dev veth_intervpp2 &> /dev/null
51 ip link del dev veth_odl &> /dev/null
52 ip link del dev veth_mr &> /dev/null
53 ip netns del vppns1 &> /dev/null
54 ip netns del vppns2 &> /dev/null
55 ip netns del intervppns &> /dev/null
57 if [ "$1" != "no_odl" ] ; then
62 function 2_node_topo_setup
65 # create vpp to clients and inter-vpp namespaces
68 ip netns add intervppns
70 # create vpp and odl interfaces and set them in intervppns
71 ip link add veth_intervpp1 type veth peer name intervpp1
72 ip link add veth_intervpp2 type veth peer name intervpp2
73 ip link add veth_odl type veth peer name odl
74 ip link add veth_mr type veth peer name mr
75 ip link set dev intervpp1 up
76 ip link set dev intervpp2 up
77 ip link set dev odl up
79 ip link set dev veth_intervpp1 up netns intervppns
80 ip link set dev veth_intervpp2 up netns intervppns
81 ip link set dev veth_odl up netns intervppns
82 ip link set dev veth_mr up netns intervppns
84 # create bridge in intervppns and add vpp and odl interfaces
85 ip netns exec intervppns brctl addbr vppbr
86 ip netns exec intervppns brctl addif vppbr veth_intervpp1
87 ip netns exec intervppns brctl addif vppbr veth_intervpp2
88 ip netns exec intervppns brctl addif vppbr veth_odl
89 ip netns exec intervppns brctl addif vppbr veth_mr
90 ip netns exec intervppns ifconfig vppbr up
92 # create and configure 1st veth client to vpp pair
93 ip link add veth_vpp1 type veth peer name vpp1
94 ip link set dev vpp1 up
95 ip link set dev veth_vpp1 up netns vppns1
97 # create and configure 2nd veth client to vpp pair
98 ip link add veth_vpp2 type veth peer name vpp2
99 ip link set dev vpp2 up
100 ip link set dev veth_vpp2 up netns vppns2
102 ip netns exec vppns1 \
104 ip link set dev lo up
105 ip addr add 6.0.1.2/24 dev veth_vpp1
106 ip route add 6.0.2.0/24 via 6.0.1.1
107 ip addr add 6:0:1::2/64 dev veth_vpp1
108 ip route add 6:0:2::0/64 via 6:0:1::1
111 ip netns exec vppns2 \
113 ip link set dev lo up
114 ip addr add 6.0.2.2/24 dev veth_vpp2
115 ip route add 6.0.1.0/24 via 6.0.2.1
116 ip addr add 6:0:2::2/64 dev veth_vpp2
117 ip route add 6:0:1::0/64 via 6:0:2::1
120 # set odl iface ip and disable checksum offloading
121 ip addr add 6.0.3.100/24 dev odl
122 ip addr add 6:0:3::100/64 dev odl
123 ethtool --offload odl rx off tx off
125 ip addr add 6.0.3.200/24 dev mr
126 ethtool --offload mr rx off tx off
128 # generate config files
129 ./scripts/generate_config.py ${VPP_LITE_CONF} ${CFG_METHOD}
135 echo "* Selected configuration method: $CFG_METHOD"
136 if [ "$CFG_METHOD" == "cli" ] ; then
137 echo "exec ${VPP_LITE_CONF}/vpp1.cli" | nc 0 5002
138 echo "exec ${VPP_LITE_CONF}/vpp2.cli" | nc 0 5003
139 elif [ "$CFG_METHOD" == "vat" ] ; then
140 ${VPP_API_TEST} chroot prefix vpp1 script in ${VPP_LITE_CONF}/vpp1.vat
141 ${VPP_API_TEST} chroot prefix vpp2 script in ${VPP_LITE_CONF}/vpp2.vat
144 echo "=== Invalid configuration method selected!"
145 echo "=== To resolve this set env variable CFG_METHOD to vat or cli."
149 if [ "$1" != "no_odl" ] ; then
150 post_curl "add-mapping" ${ODL_CONFIG_FILE1}
151 post_curl "add-mapping" ${ODL_CONFIG_FILE2}