On Sun, May 26, 2013 at 11:32:49AM +0200, Luke Gorrie wrote: > Stefan put us onto the highly promising track of vhost/virtio. We have > implemented this between Snabb Switch and the Linux kernel, but not > directly between Snabb Switch and QEMU guests. The "roadblock" we have hit > is embarrasingly basic: QEMU is using user-to-kernel system calls to setup > vhost (open /dev/net/tun and /dev/vhost-net, ioctl()s) and I haven't found > a good way to map these towards Snabb Switch instead of the kernel.
vhost_net is about connecting the a virtio-net speaking process to a tun-like device. The problem you are trying to solve is connecting a virtio-net speaking process to Snabb Switch. Either you need to replace vhost or you need a tun-like device interface. Replacing vhost would mean that your switch implements virtio-net, shares guest RAM with the guest, and shares the ioeventfd and irqfd which are used to signal with the guest. At that point your switch is similar to the virtio-net data plane work that Ping Fan Liu is working on but your switch is in a separate process rather than a thread. How does your switch talk to hardware? If you have userspace NIC drivers that bypass the Linux network stack then the approach I mentioned fits well. If you are using the Linux network stack then it might be better to integrate with vhost maybe as a tun-like device driver. Stefan