
* 描述: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 后协议栈加速效果立刻生效; 易运维: * 运维工具:具备流量统计、指标日志、命令行等运维手段; [cid:image001.jpg@01D9FE92.0F362FB0] 2. 社区大事记 * 移动云高性能远程调用框架ERPC在Gazelle上的最佳实践与应用<https://mp.weixin.qq.com/s/v9BccDo2vA4mc1t-Y0J8_g> * openEuler Meetup 广州站宣讲获得关注<https://www.openeuler.org/zh/news/20221112-Guangzhou.html> * openEuler Developer Day 2022 高性能网络专题gazelle首次亮相<https://v1.openeuler.org/zh/interaction/summit-list/devday2022/>