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