On 27 May 2013 11:34, Stefan Hajnoczi wrote: > 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. > Yep! > 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. This would be a great solution from my perspective. This is the design that I am now struggling to find a good implementation strategy for. > 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. > Thanks for the reference! I was not aware of this work and it sounds highly relevant. 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. > The switch talks to hardware using a built-in userspace ("kernel bypass") device driver. The switch runs in a single userspace process with realtime priority and polls for traffic. The design is similar to what Intel are now promoting with their Data Plane Development Kit. The only system call in the main traffic loop is to sleep for a microsecond or so when idle. The Intel 10G NIC driver is written in Lua btw, in case anybody is curious to check out something so exotic here's the link: https://github.com/SnabbCo/snabbswitch/blob/master/src/intel10g.lua