描述 : gazelle 是一个无锁多线程高性能用户态协议栈解决方案。 在满足高性能、高可用的同时,具备良好的通用性和易用性。 推荐人 : 胡峰 @solarhu openEuler TC 成员,陆志浩 @MrRlu openEuler sig-high-performance-network maintainers ,吴长冶 @ nlgwcy openEuler sig-high-performance-network maintainers ,郑杰兵 @steganographer 中移苏研社区开发者 社区地址 : https://gitee.com/openeuler/gazelle
openEuler 优秀项目衡量标准
推荐奖项 openEuler 年度优秀项目 开源开放 项目采用木兰开源协议,代码托管在 openEuler 行业影响 当前项目在通信、金融等多个领域被广泛关注;已在多个客户场景落入商用规划中; 技术创新 gazelle 采用 bypass 内核的思路,打造高性能、轻量化的用户态协议栈,能大幅提升网络 IO 能力 。在满足高性能、高可用的同时,具备良好的通用性和易用性; 社区活跃 社区开发者 20+ ,来源广泛,包括高校、公司、个人开发者等,各类 pr 300+ ,讨论充分,评审意见详实。 高质量开发和运营 代码符合规范,代码质量高,文档详尽。邀请了外部领域开发者,高校个人开发者共同创新开发,每周例会 。
1. 软件介绍
网络协议栈作为现代应用的关键路径,一直是性能研究的热点。近年来,随着软硬件技术的发展,网络协议栈面临以下问题和诉求。
硬件视角:
• CPU 算力和网卡算力差距逐渐增大,单核 CPU 无法充分发挥网卡带宽的发展红利。
• 众核架构下,协议栈设计需避免 NUMA 内存访问陷阱。
软件视角:
• 现代大型软件性能要求高,往往采用多线程架构充分利用 CPU 、网卡等硬件资源,并期望随着线程数的增加软件性能线性增长。
• 应用网络模型多样,对协议栈通用性诉求高。
• 当前内核协议栈具备通用性高、分层解耦的特点,但性能不足;用户态协议栈一般面向特定场景,追求极致性能的同时, 往往无法兼顾通用性。
协议栈设计挑战:
• 数据库等场景,应用网络模型多样,且对网络性能要求高,实现兼顾高性能和通用性的协议栈软件难度大。
gazelle 是一个基于 dpdk 和 lwip 协议栈的、无锁多进程高性能用户态协议栈解决方案。在满足高性能、高可用的同时,具备良好的通用性和易用性。关键特性如下:
高性能:
• 超轻量:基于 dpdk 、 lwip 实现高性能轻量协议栈能力;
• 极致性能:基于区域大页划分、动态绑核、全路径零拷贝等技术,实现高线性度并发协议栈;
• 硬件加速:支持 TSO/CSUM/GRO 等硬件卸载,打通软硬件垂直加速路径;
通用性:
• posix 兼容:接口完全兼容 posix api ,应用零修改;
• 通用网络模型:基于 fd 路由器、代理式唤醒等机制实现自适应网络模型调度,满足任意网络应用场景;
易用性:
• 即插即用:基于 LD_PRELOAD 实现业务部署免配套,安装 Gazelle 后协议栈加速效果立刻生效;
易运维:
• 运维工具:具备流量统计、指标日志、命令行等运维手段;
2. 社区大事记
移动云高性能远程调用框架ERPC 在Gazelle 上的最佳实践与应用 openEuler Meetup 广州站宣讲获得关注 openEuler Developer Day 2022 高性能网络专题gazelle 首次亮相