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
29 echo "set ip6 neighbor host-intervpp2 6:0:3::1 $mac" | nc 0 5003
31 mac=`echo "sh hard host-intervpp2" | nc 0 5003 | grep 'Ethernet address' | awk '{print $3}'`
32 echo "set ip arp host-intervpp1 6.0.3.2 $mac" | nc 0 5002
33 echo "set ip6 neighbor host-intervpp1 6:0:3::2 $mac" | nc 0 5002
36 function 2_node_topo_clean
38 echo "Clearing all VPP instances.."
42 echo "Cleaning topology.."
43 ip netns exec intervppns ifconfig vppbr down
44 ip netns exec intervppns brctl delbr vppbr
45 ip link del dev veth_vpp1 &> /dev/null
46 ip link del dev veth_vpp2 &> /dev/null
47 ip link del dev veth_intervpp1 &> /dev/null
48 ip link del dev veth_intervpp2 &> /dev/null
49 ip link del dev veth_odl &> /dev/null
50 ip netns del vppns1 &> /dev/null
51 ip netns del vppns2 &> /dev/null
52 ip netns del intervppns &> /dev/null
54 if [ "$1" != "no_odl" ] ; then
59 function 2_node_topo_setup
62 # create vpp to clients and inter-vpp namespaces
65 ip netns add intervppns
67 # create vpp and odl interfaces and set them in intervppns
68 ip link add veth_intervpp1 type veth peer name intervpp1
69 ip link add veth_intervpp2 type veth peer name intervpp2
70 ip link add veth_odl type veth peer name odl
71 ip link set dev intervpp1 up
72 ip link set dev intervpp2 up
73 ip link set dev odl up
74 ip link set dev veth_intervpp1 up netns intervppns
75 ip link set dev veth_intervpp2 up netns intervppns
76 ip link set dev veth_odl up netns intervppns
78 # create bridge in intervppns and add vpp and odl interfaces
79 ip netns exec intervppns brctl addbr vppbr
80 ip netns exec intervppns brctl addif vppbr veth_intervpp1
81 ip netns exec intervppns brctl addif vppbr veth_intervpp2
82 ip netns exec intervppns brctl addif vppbr veth_odl
83 ip netns exec intervppns ifconfig vppbr up
85 # create and configure 1st veth client to vpp pair
86 ip link add veth_vpp1 type veth peer name vpp1
87 ip link set dev vpp1 up
88 ip link set dev veth_vpp1 up netns vppns1
90 # create and configure 2nd veth client to vpp pair
91 ip link add veth_vpp2 type veth peer name vpp2
92 ip link set dev vpp2 up
93 ip link set dev veth_vpp2 up netns vppns2
95 ip netns exec vppns1 \
98 ip addr add 6.0.1.2/24 dev veth_vpp1
99 ip route add 6.0.2.0/24 via 6.0.1.1
100 ip addr add 6:0:1::2/64 dev veth_vpp1
101 ip route add 6:0:2::0/64 via 6:0:1::1
104 ip netns exec vppns2 \
106 ip link set dev lo up
107 ip addr add 6.0.2.2/24 dev veth_vpp2
108 ip route add 6.0.1.0/24 via 6.0.2.1
109 ip addr add 6:0:2::2/64 dev veth_vpp2
110 ip route add 6:0:1::0/64 via 6:0:2::1
113 # set odl iface ip and disable checksum offloading
114 ip addr add 6.0.3.100/24 dev odl
115 ip addr add 6:0:3::100/64 dev odl
116 ethtool --offload odl rx off tx off
118 # generate config files
119 ./scripts/generate_config.py ${VPP_LITE_CONF} ${CFG_METHOD}
125 echo "* Selected configuration method: $CFG_METHOD"
126 if [ "$CFG_METHOD" == "cli" ] ; then
127 echo "exec ${VPP_LITE_CONF}/vpp1.cli" | nc 0 5002
128 echo "exec ${VPP_LITE_CONF}/vpp2.cli" | nc 0 5003
129 elif [ "$CFG_METHOD" == "vat" ] ; then
130 ${VPP_API_TEST} chroot prefix vpp1 script in ${VPP_LITE_CONF}/vpp1.vat
131 ${VPP_API_TEST} chroot prefix vpp2 script in ${VPP_LITE_CONF}/vpp2.vat
134 echo "=== Invalid configuration method selected!"
135 echo "=== To resolve this set env variable CFG_METHOD to vat or cli."
139 if [ "$1" != "no_odl" ] ; then
140 post_curl "add-mapping" ${ODL_CONFIG_FILE1}
141 post_curl "add-mapping" ${ODL_CONFIG_FILE2}