diff --git a/Nginx-2.png b/Nginx-2.png new file mode 100644 index 0000000000000000000000000000000000000000..fa7e3eae7eb222ccb78369d33bad7ef596f4ae45 Binary files /dev/null and b/Nginx-2.png differ diff --git a/README.md b/README.md index b3396ab42ac98091825199c21a0a7ae59d876031..35e133bd5b1cdf175797a61f2497c4e10f138f23 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,61 @@ -# gazelle-cni - -gazelle是一个高性能容器网络插件,基于xdp、dpdk技术开发,支持TCP/UDP协议能力; +# Gazelle-cni #### 动机 -todo:写清楚创建gazelle-cni项目的背景、要解决的问题及目标; +Gazelle是一款华为内部已商用的用户态协议栈,支持TCP/UDP协议栈,其性能、适用性相比较同类软件而言存在诸多优势,包括并发线性度、低时延、易用性等方面。 -#### 总体介绍 +性能参考加速Nginx的效果图如下: + +![](./Nginx-2.png) + +​ 线性度接近1 + +![](./nginx-1.png) -todo:总体介绍gazelle-cni,写清楚是如何工作的,主要的部件及总体架构;部件的详细介绍链接到其他md页; +​ 时延全面占优 -#### 入门 +易用性方面特点:无需应用修改代码,无需要应用重新编译,加速库安装即可用。 -##### 安装 -todo:给出gazelle-cni的安装步骤; -##### 部署 +Gazelle-CNI项目的是希望开源华为内部Gazelle商业项目,并将其应用到云原生场景,作为加速云原生ServiceMesh的重要技术之一。 -todo:给出gazelle-cni的部署步骤; +云原生场景中ServiceMesh已经成为各云场景中的标配组件,而其中istio实现的事实标准。Envoy是istio其中的数据面组件,所以本项目的目标是加速Envoy组件。 -##### 业务配套 +#### 目标 + +性能:提升服务网格数据面性能,达到集群内服务访问时延降低30%,集群内服务访问吞吐量提升30%。 + +易用性:开源istio无需修改代码,无需重新构建,实现即插即用。 + +#### 总体介绍 -todo:介绍上层应用如何使用gazelle-cni +Envoy作为istio的数据面组件,接管网格内的所有对外的数据流,并完成相关的LB、统计等功能。数据流视图参考下图: -#### 特性说明 +![](./envoy-1.png) -todo:介绍gazelle-cni的关键特性; +其中我们可以看到整个数据流路径冗长,对服务网格的性能存在瓶颈。所以我们对其整个数据路径进行加速,加速方案如下: -#### 适用场景 +![](./envoy-2.png) -todo:介绍下基于gazelle-cni的不同应用场景下的解决方案; +其中的加速加速包括: -#### 演进规划 +1. Gazelle CNI:基于华为内部商业项目Gazelle进行改造。 +2. socket-map:使用eBPF的sockmap技术实现socket之间加速。 +3. XDP Bridge:使用XDP技术实现Bridge功能,并将其作为kubelet缺省拉起的Bridge。 -##### 设计 +#### 路标规划(暂定) -请点击[这里](./Design.md) +0. Gazelle项目开源:2021.6.30之前完成源码开源。 +1. Gazelle-CNI 技术demo演示:2021.3.30之前完成demo演示,Envoy能够同时应用Gazelle协议栈以及内核协议栈,完成单节点加速。 +2. Gazelle-CNI 技术开发:2021.5.30之前完成Gazelle项目的CNI适配,以及AF_XDP适配。 +3. socket-map技术:2021.6.30之前完成技术开发。 +4. XDP bridge技术:2021.7.30之前完成技术开发。 +#### 加入我们 -#### 如何加入 +目前Gazelle技术已经成熟,但是Gazelle-CNI等其他技术目前正在设计、原型验证阶段,欢迎社区内感兴趣的同学能够加入我们的项目设计、开发中。 -#### 许可证 +#### 联系我们 -#### 联系我们 \ No newline at end of file + [high-performance-network@openeuler.org](mailto:high-performance-network@openeuler.org) [dev@openeuler.org](mailto:dev@openeuler.org) \ No newline at end of file diff --git a/envoy-1.png b/envoy-1.png new file mode 100644 index 0000000000000000000000000000000000000000..fbf9dd5c6ba88bba6f444c4a6ad7574d17ec25be Binary files /dev/null and b/envoy-1.png differ diff --git a/envoy-2.png b/envoy-2.png new file mode 100644 index 0000000000000000000000000000000000000000..c332a985377064aa2066b26876024642ff1a4170 Binary files /dev/null and b/envoy-2.png differ diff --git a/nginx-1.png b/nginx-1.png new file mode 100644 index 0000000000000000000000000000000000000000..563024b0f49267c02174343587279fa38f54f0e9 Binary files /dev/null and b/nginx-1.png differ