阿里云基于Cilium的高性能云原生网络

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 你知道吗,这个方案基于Cilium & eBPF来实现。在此之前,Google的GKE和Anthos也宣布基于Cilium+eBPF实现了新的容器网络数据面V2方案。但阿里云的方案会有所不同,阿里云采用Terway IPVLAN+Cilium的eBPF结合的方式。

Cilium 创始人兼CTO Thomas Graf 近日撰文《How Alibaba Clouduses Cilium for High-Performance Cloud-Native Computing?》, 本文翻译自作者的英文博客。感谢Thomas Graf以及其他更多的客户,阿里云容器服务团队随时欢迎听到更多客户反馈。

1.png

近期,阿里云团队在SIG Cloud-Provider-Alibaba的会议上介绍了阿里云容器服务的新的高性能容器网络方案并且发布了一篇博客介绍。你知道吗,这个方案基于Cilium & eBPF来实现。在此之前,Google的GKE和Anthos也宣布基于Cilium+eBPF实现了新的容器网络数据面V2方案。但阿里云的方案会有所不同,阿里云采用Terway IPVLAN+Cilium的eBPF结合的方式,文章下面我们会详细分析Terway CNI(阿里云的CNI插件)的细节实现以及在博客中的测试数据。

和其他云厂商一样,阿里云也提供了ENI(弹性网卡)的产品来暴露底层IAAS层的SDN(软件定义网络)的能力。对于K8S的Pod来说,基于它可以实现云原生的虚拟化网络,而不需要再对容器网络再做一层虚拟化来降低性能的损耗以及减少网络复杂度。

云厂商的IAAS层网络已经具备虚拟化和SDN的能力,如果底层虚拟化网络的能力直接给Pods去使用,将能显著降低性能的损耗。

对于阿里云,容器网络模型如下图所示:
2.png
(源自: https://www.alibabacloud.com/blog/how-does-alibaba-cloud-build-high-performance-cloud-native-pod-networks-in-production-environments_596590)

为了实现这个模型,CNI层面直接与阿里云的API交互来申请Pod所需的底层ENI网络资源。阿里云自研了Terway的CNI插件来实现这样的模型。在阿里云官方的博客中有详细的内部实现的介绍和遇到的挑战。这里我们重点关注在他们如何使用IPVLAN和eBPF来提升Kubernetes的Service和NetworkPolicy的性能和扩展性。

使用IPVLAN来实现更好的网络可扩展性和性能

单个ENI可以给Pod独占或者给多个Pod去共享。当ENI被多个Pod共享时,就需要对包做一些路由决策来确保Pod的流量路由到其对应的ENI上面。使用共享ENI的方式,一个ENI可以虚拟化出10-20个IP,从而可以大大增加节点上的Pod的部署密度,但是缺点是需要引入bridge或者策略路由带来额外的性能开销。后面的性能对比中就能看到具体的开销。

为了提升共享ENI的性能,IPVLAN就是一个很好的选择,IPVLAN可以将ENI很轻量的虚拟化出多个子接口来连接多个Pod到单个ENI上面。Terway的CNI通过IPVLAN来降低共享ENI的开销,并且结合Cilium在IPVLAN的网络模式下提供了高效的NetworkPolicy和Service的实现。并且将实现向Cilium官方提了 pull request.
3.png
(源自: https://www.alibabacloud.com/blog/how-does-alibaba-cloud-build-high-performance-cloud-native-pod-networks-in-production-environments_596590)

下面是不同模式的性能对比,其中还包含了基于云原生的ENI网络与基于overlay的Flannel的性能优势。
a.png
(源自: https://www.alibabacloud.com/blog/how-does-alibaba-cloud-build-high-performance-cloud-native-pod-networks-in-production-environments_596590)

你不一定要选择其中一个模型,可以根据需要对高性能的选择调度到独占ENI,对于其他的Pod使用共享ENI的模式。

**使用eBPF来解决Kubernetes Service和NetworkPolicy的扩展性问题
**
很长一段时间,Kubernetes的标准的kube-proxy的实现是采用iptables模式,由于iptables的顺序匹配,导致这种解决方案的扩展性非常受限。
5.png

(源自: https://www.alibabacloud.com/blog/how-does-alibaba-cloud-build-high-performance-cloud-native-pod-networks-in-production-environments_596590)

可以看到当服务数量增加到一定阈值后,延迟就会大幅增加。更严重的是,由于服务表项在iptables规则链中匹配的顺序不同,会导致服务访问的首包的延迟会随机的变差。

基于这些原因,所以阿里云才会基于eBPF来优化Kubernetes的可扩展性。

效果怎么样呢?下面是阿里云团队测试的性能对比。基于eBPF的方案的网络的性能和可扩展性优于kube-proxy的iptables和IPVS模式:
6.png

(源自: https://www.alibabacloud.com/blog/how-does-alibaba-cloud-build-high-performance-cloud-native-pod-networks-in-production-environments_596590)

通过eBPF简化链路,性能显著提升,相对iptables模式提升了32%,相对IPVS模式提升62%。

与Kubernetes Server类似,基于eBPF同样可以优化Kubernetes的NetworkPolicy。
7.png

(源自: https://www.alibabacloud.com/blog/how-does-alibaba-cloud-build-high-performance-cloud-native-pod-networks-in-production-environments_596590)

框框中的"BPF-agent"就是独立于Terway CNI之外运行的Cilium的agent,用于提供Kubernetes的Service和NetworkPolicy实现:

我们使用 Cilium 作为节点上的 BPF-agent 去配置容器网卡的 BPF 规则,已贡献 Terway 相关适配:https://github.com/cilium/cilium/pull/10251
8.png

(源自: https://www.alibabacloud.com/blog/how-does-alibaba-cloud-build-high-performance-cloud-native-pod-networks-in-production-environments_596590)

遗憾的是,在这一篇文章中阿里云没有提供最终的优化的对比。Cilium团队早期做过Cilium在IPVLAN和veth模式的对比博客,可以作为粗略的参考。
总结
我们非常高兴和欢迎阿里云加入和贡献到Cilium社区,如果需要了解更多可以参考如下内容:
Cilium Overview
Cilium GitHub
How Does Alibaba Cloud Build High-Performance Cloud-Native Pod Networks in Production Environments?
What is eBPF?

作者:Thomas Graf Cilium的联合创始人和CTO以及Isovalent(Cilium背后的公司)的联合创始人。在此之前,他在Red Hat和思科从事Linux内核和中断开源项目的研发工作。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
25天前
|
大数据 云计算
中国网络大会专题论坛 | 下一代超大规模高性能公共云网络
中国计算机学会ChinaNet上,阿里云洛神云网络将与知名学术届代表一起共话下一代超大规模高性能公共云网络的关键技术。
|
13天前
|
消息中间件 编解码 网络协议
Netty从入门到精通:高性能网络编程的进阶之路
【11月更文挑战第17天】Netty是一个基于Java NIO(Non-blocking I/O)的高性能、异步事件驱动的网络应用框架。使用Netty,开发者可以快速、高效地开发可扩展的网络服务器和客户端程序。本文将带您从Netty的背景、业务场景、功能点、解决问题的关键、底层原理实现,到编写一个详细的Java示例,全面了解Netty,帮助您从入门到精通。
49 0
|
15天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 10 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
15天前
|
大数据 云计算
2024 CCF中国网络大会专题论坛丨下一代超大规模高性能公共云网络 精彩回顾
中国计算机学会ChinaNet上,阿里云洛神云网络将与知名学术届代表一起共话下一代超大规模高性能公共云网络的关键技术。
|
1月前
|
运维 Cloud Native 数据可视化
阿里云云原生应用组装平台BizWorks满分通过最新评估
阿里云BizWorks满分通过《基于云计算的业务组装平台能力成熟度模型》评测,获得优秀级(最高等级),广东移动联合阿里云BizWorks团队开展的组装式应用实践获得第三届“鼎新杯”数字化转型应用优秀案例一等奖。
198 3
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 09 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
1月前
|
人工智能 自然语言处理 关系型数据库
阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成
近日,阿里云云原生数据仓库 AnalyticDB PostgreSQL 版已完成和开源LLMOps平台Dify官方集成。
|
1月前
|
运维 Cloud Native 持续交付
云原生技术解析:从IO出发,以阿里云原生为例
【10月更文挑战第24天】随着互联网技术的不断发展,传统的单体应用架构逐渐暴露出扩展性差、迭代速度慢等问题。为了应对这些挑战,云原生技术应运而生。云原生是一种利用云计算的优势,以更灵活、可扩展和可靠的方式构建和部署应用程序的方法。它强调以容器、微服务、自动化和持续交付为核心,旨在提高开发效率、增强系统的灵活性和可维护性。阿里云作为国内领先的云服务商,在云原生领域有着深厚的积累和实践。
57 0
|
2月前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
针对软件供应链的攻击事件在以每年三位数的速度激增,其中三方或开源软件已经成为攻击者关注的重要目标,其攻击方式和技术也在不断演进。通过供应链的传播,一个底层软件包的漏洞的影响范围可以波及世界。企业亟需更加标准和完善的供应链风险洞察和防护机制。本文将结合最佳实践的形式,面向容器应用完整的生命周期展示如何基于容器服务ACK/ACR/ASM助力企业构建云原生软件供应链安全。
下一篇
无影云桌面