在使用Open vSwitch的环境中,既可以使用DPDK代替Open vSwitch的内核组件,让数据包处理在用户态进行;也可以使用eBPF优化(甚至取代)Open vSwitch内核组件,令内核态数据路径变得更加灵活可扩展。
在Open vSwitch 2016 Conference上,就有一个Presentation是提出了eBPF取代OVS内核路径的想法。如下图所示:
如果使用eBPF实现OVS的内核路径,则拓展性更好;由于eBPF的JIT特性,使得这个组件与内核版本解耦;当然,可能存在着性能损失。
DPDK提供了一组库文件和Poll Mode的网卡驱动;使用DPDK替代原有的OVS内核数据路径,则可以令数据包的处理更多地处于用户态之中。
eBPF和DPDK却走在两条不同的道路之上,未来的发展难以轻易预测。合理的策略就是风险对冲,二者都了解一下,不至于日后束手无措。