说明
- 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的版本貌似只能商用 |