说明

  • DPDK已经发展了快14年了,已经非常的成熟,很多项目都在用它来开发用户态的网络功能。
  • 但是DPDK的每个版本的API都存在者比较明显的差异,特别是API的名字。所以一些大型项目如果停止更新了,使用新版DPDK运行它们就会很麻烦。
  • 除此之外,一些智能网卡设备已经不能很好的支持老版本的DPDK(DPDK 20之前的版本),再想使用DPDK-ANS和mTCP这种用户态协议栈就很难操作了,特别对新手来说很不友好。
  • 本人从2022年开始进行的DPDK开发,用过很多基于它开发的程序和框架,因此在这里推荐一下我觉得还挺好用的并且勤加更新的相关项目吧。

用户态协议栈

名称 链接 使用感受
F-Stack http://f-stack.org/ 国内更新的最勤的栈了,腾讯写的,移植了FreeBSD协议栈,自带的nginx也很好用
Seastar https://seastar.io/ 有很多例子,使用C++写的,支持很多C++新特性(协程),对我这个菜鸡来说比较难学明白
lwip https://savannah.nongnu.org/projects/lwip/ 这个需要自己为lwip写一个驱动层,一两百行代码就可以搞定,在Arm设备上挺好用的
gazelle https://gitee.com/openeuler/gazelle openeuler旗下的开源产品,为数不多能在不怎么修改源代码情况下做好应用移植的协议栈,基于lwip关键还支持MySQL

软件交换机

名称 链接 使用感受
OvS-DPDK https://docs.openvswitch.org/en/latest/howto/dpdk/ 智能网卡厂商一定会支持的,生态挺好的
VPP https://wiki.fd.io/view/VPP 向量包处理改善性能,和OvS一样集成了很多软件交换机的功能,貌似企业挺偏爱这个

测试仪

名称 链接 使用感受
DPDK-Pktgen https://git.dpdk.org/apps/pktgen-dpdk/ 配置简单且性能不错,做UDP测试很舒适,就是安装的时候找难找合适的DPDK版本来编译
TRex https://trex-tgn.cisco.com/ 思科出品,必属精品!功能很齐全,但是好复杂,学起来头晕
dperf https://github.com/baidu/dperf 百度的测试仪,软件作者很友好,能测CPS、并发链接数和RTT,真滴令人感动!

四层负载均衡器

名称 链接 使用感受
DPVS https://github.com/iqiyi/dpvs 爱奇艺出品且勤加更新,用起来和LVS没啥区别,源码也很美丽,就是必须做full-nat有点难搞
HDSLB https://github.com/intel/high-density-scalable-load-balancer Intel新出的,据说性能很客观,基于VPP的版本貌似只能商用
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐