* 描述: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/