Hi Ray, > Suggest adding vpphost and iperfvpp to different network namespaces. > All that is happening at the moment is the kernel is recognizing it owns > both IPs and bypassing everything.
> You also need to add vppiperf and vppout to a bridge domain in VPP. Indeed, I thought that could be an issue. Therefore, I already had an alternative using namespaces. Here is what I use to build the topology, with bridge domain addition: _________ _____________ | | host-vpp2 | | | VPP |---- 10.10.2.1 --------vpp2 namespace-------| veth_vpp2 | |_________| | 10.10.2.2 | | |_____________| host-vpp1 10.10.1.1 | | vpp1 namespace | _____|_______ | | | veth_vpp1 | | 10.10.1.2 | |_____________| ###### BEGIN ###### # create namespaces sudo ip netns add vpp1 sudo ip netns add vpp2 # create and configure first veth pair sudo ip link add name veth_vpp1 type veth peer name vpp1 sudo ip link set dev vpp1 up sudo ip link set dev veth_vpp1 up netns vpp1 sudo ip netns exec vpp1 \ bash -c " ip link set dev lo up ip addr add 10.10.1.2/24 dev veth_vpp1 ip route add 10.10.2.0/24 via 10.10.1.1 " # create and configure second veth pair sudo ip link add name veth_vpp2 type veth peer name vpp2 sudo ip link set dev vpp2 up sudo ip link set dev veth_vpp2 up netns vpp2 sudo ip netns exec vpp2 \ bash -c " ip link set dev lo up ip addr add 10.10.2.2/24 dev veth_vpp2 ip route add 10.10.1.0/24 via 10.10.2.1 " # create and configure vpp instance sudo vpp unix { log /tmp/vpp.log cli-listen /run/vpp/cli-vpp.sock } api-segment { prefix vpp } plugins { plugin dpdk_plugin.so { disable } } sleep 1 sudo vppctl -s /run/vpp/cli-vpp.sock create host-interface name vpp1 sudo vppctl -s /run/vpp/cli-vpp.sock create host-interface name vpp2 sudo vppctl -s /run/vpp/cli-vpp.sock set int state host-vpp1 up sudo vppctl -s /run/vpp/cli-vpp.sock set int state host-vpp2 up sudo vppctl -s /run/vpp/cli-vpp.sock set int ip address host-vpp1 10.10.1.1/24 sudo vppctl -s /run/vpp/cli-vpp.sock set int ip address host-vpp2 10.10.2.1/24 # vpp bridge domain sudo vppctl -s /run/vpp/cli-vpp.sock set interface l2 bridge host-vpp1 1 sudo vppctl -s /run/vpp/cli-vpp.sock set interface l2 bridge host-vpp2 1 ###### END ###### Without the bridge domain, I'm able to ping from vpp1 to vpp2 namespaces and vice versa and see packets in VPP instance: sudo ip netns exec vpp1 ping 10.10.2.2 -c 5 sudo ip netns exec vpp2 ping 10.10.1.2 -c 5 However, iperf3 client seems to hang and never returns a result, even if "vppctl show run" tells me packets went through VPP. Still don't know why: sudo ip netns exec vpp2 iperf3 -s -D sudo ip netns exec vpp1 iperf3 -c 10.10.2.2 With bridge domain, pings don't work anymore. Are you absolutely sure I need it ? It is not used in the VPP example when connecting two instances. > Take a look at VPP bootstrap in vppsb, it does 98% of what you are > trying to do here. > https://git.fd.io/vppsb/tree/vpp-bootstrap Thanks for that but I'm not sure I need this since I already build my own vpp "box" environment. What's wrong with my topology/configuration ? All I want is to pass packets from vpp1 namespace to vpp2 namespace, and the opposite too (by using iperf3). Packets have to go through my VPP instance. Thanks for your help ! Justin _______________________________________________ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev