4 ms·
dpdk and netmap is really only for applications with cooperating I/O processes. This is because the queue of received packets is shared between all process and
by chmike 10y ago
dpdk and netmap is really only for applications with cooperating I/O processes. This is because the queue of received packets is shared between all process and any of them can delete any packet.
It may not be good for CloudFlare hosting multiple web servers on the same host, but I it could be good for a database or cache server usually run in a LAN with 10Gbit/s network cards.
- gpderetta 10y agoDon't modern high performance network cards have multiple tx/rx queues which are virtualizable via IOMMU? That's a genuine question BTW, I've only a bit of experience with userspace networking with fully cooperating processes.
- jsnell 10y agoSR-IOV is good for actual virtualization, but it's pretty clumsy for trying to create isolation within a single VM. For example: - Every VF you create using SR-IOV will need to have a distinct MAC (and thus in practice different IP). But what you'd usually want for this use case is use the same IP for all apps, and do the split by destination port. - Another consequence of the previos point is that all apps would need to include their own support for ARP, DHCP, etc. Doing it centralized doesn't really work. - No promiscuous mode (at least on Intel NICs)m you only get traffic directed to one specific MAC address Now, if you didn't try to use the virtualization support but just use the separate RX/TX queues, with something like the flow director for deciding what traffic gets sent to which queue, you'd get rid of the above problems. But then you end up with the issue that DPDK makes it very hard to have separate applications access the same NIC, even on different queues.
- peterwwillis 10y agoUse VPP for namespace-specific userland applications? https://wiki.fd.io/view/VPP/What_is_VPP%3F https://wiki.fd.io/view/VPP/What_is_VPP%3F