Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >高级功能 | 使用 eBPF 加速节点内 TCP 通信

高级功能 | 使用 eBPF 加速节点内 TCP 通信

作者头像
灵雀云
发布于 2022-11-29 08:01:12
发布于 2022-11-29 08:01:12
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

" 如果你怀念 SDN 领域丰富的网络能力却在云原生领域苦苦追寻而不得,那么 Kube-OVN 将是你的最佳选择。本系列我们将逐个介绍Kube-OVN高级功能的工作原理及使用路径,帮你尽快征服容器网络难题!"

在一些边缘和 5G 的场景下,同节点内的 Pod 之间会进行大量的 TCP 通信,通过使用 Intel 开源的istio-tcpip-bypass[1] 项目,Pod 可以借助 eBPF 的能力绕过主机的 TCP/IP 协议栈,直接进行 socket 通信,从而大幅降低延迟并提升吞吐量。

基本原理

在当前的实现下,同主机的两个 Pod 进行 TCP 进行通信需要经过大量的网络栈,包括 TCP/IP, netfilter,OVS 等如下图所示:

istio-tcpip-bypass 插件可以自动分析并识别出同主机内的 TCP 通信,并绕过复杂的内核栈从而可以直接进行 socket 间的数据传输, 来降低网络栈处理开销,如下图所示:

由于该组件可以自动识别同主机内的 TCP 通信,并进行优化。在基于代理模式的 Service Mesh 环境下,该组件也可以增强 Service Mesh 的性能表现。

更多技术实现细节可以参考 【Tanzu Service Mesh Acceleration using eBPF】[2]

环境准备

eBPF 对内核版本有一定要求,推荐使用 Ubuntu 20.04 和 Linux 5.4.0-74-generic 版本内核进行实验。

实验步骤

在同一个节点上部署两个性能测试 Pod,若集群内存在多台机器需要指定 nodeSelector

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# kubectl create deployment perf --image=kubeovn/perf:dev --replicas=2
deployment.apps/perf created
# kubectl get pod -o wide
NAME                    READY   STATUS    RESTARTS   AGE   IP           NODE     NOMINATED NODE   READINESS GATES
perf-7697bc6ddf-b2cpv   1/1     Running   0          28s   100.64.0.3   sealos   <none>           <none>
perf-7697bc6ddf-p2xpt   1/1     Running   0          28s   100.64.0.2   sealos   <none>           <none>

进入其中一个 Pod 开启 qperf server,在另一个 Pod 中启动 qperf client 进行性能测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# kubectl exec -it perf-7697bc6ddf-b2cpv sh
/ # qperf

# kubectl exec -it perf-7697bc6ddf-p2xpt sh
/ # qperf -t 60 100.64.0.3 -ub -oo msg_size:1:16K:*4 -vu tcp_lat tcp_bw
部署 istio-tcpip-bypass 插件:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl apply -f https://raw.githubusercontent.com/intel/istio-tcpip-bypass/main/bypass-tcpip-daemonset.yaml
再次进入 perf client 容器进行性能测试:
# kubectl exec -it perf-7697bc6ddf-p2xpt sh
/ # qperf -t 60 100.64.0.3 -ub -oo msg_size:1:16K:*4 -vu tcp_lat tcp_bw

测试结果

根据测试结果 TCP 延迟在不同数据包大小的情况下会有 40% ~ 60% 的延迟下降,在数据包大于 1024 字节时吞吐量会有 40% ~ 80% 提升。

在测试的硬件环境下,数据包小于 512 字节时,使用 eBPF 优化吞吐量指标会低于默认配置下的吞吐量。该情况可能和默认配置下网卡开启 TCP 聚合优化相关。如果应用场景对小包吞吐量敏感,需要在相应环境下 进行测试判断是否开启 eBPF 优化。我们也会后续对 eBPF TCP 小包场景的吞吐量进行优化。 在此感谢Intel 团队给予的大力支持! 作者:Luyao Zhong / Intel Senior Software Engineer 文章链接 1、istio-tcpip-bypass:https://github.com/intel/istio-tcpip-bypass 2、Tanzu Service Mesh Acceleration using eBPF:https://blogs.vmware.com/networkvirtualization/2022/08/tanzu-service-mesh-acceleration-using-ebpf.html/ 更多功能介绍,请见Kube-OVN 最新中文文档(点击阅读原文):https://kubeovn.github.io/docs/v1.10.x/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生技术社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
大规模服务网格性能优化 | Aeraki xDS 按需加载
钟华,腾讯云专家工程师,Istio project member、contributor,专注于容器和服务网格,在容器化和服务网格生产落地方面具有丰富经验,目前负责 Tencent Cloud Mesh 研发工作。 Istio 在大规模场景下 xDS 性能瓶颈 xDS 是 istio 控制面和数据面 envoy 之间的通信协议,x 表示包含多种协议的集合,比如:LDS 表示监听器,CDS 表示服务和版本,EDS 表示服务和版本有哪些实例,以及每个服务实例的特征,RDS 表示路由。可以简单的把 xDS 理解
腾讯云原生
2021/12/22
1.6K0
eBPF 在网易轻舟云原生的应用实践
eBPF 是 Linux Kernel 3.15 中引入的全新设计,将原先的 BPF 发展成一个指令集更复杂、应用范围更广的“内核虚拟机”。
深度学习与Python
2020/07/31
3K0
eBPF 在网易轻舟云原生的应用实践
告别 Sidecar—— 使用 EBPF 解锁内核级服务网格
译者注:本文作者是 Isovalent 联合创始人 & CTO,原文标题 How eBPF will solve Service Mesh - Goodbye Sidecars[1],译者宋净超。作者回顾了 Linux 内核的连接性,实现服务网格的几种模式,以及如何使用 eBPF 实现无 Sidecar 的服务网格。
CNCF
2021/12/13
1.4K0
告别 Sidecar—— 使用 EBPF 解锁内核级服务网格
如何利用eBPF程序监控Kubernetes
对 Kubernetes 集群进行监控对于确保容器化应用程序的健康、性能和可靠性至关重要。Kubernetes 提供了强大的监控工具套件和集成,但是当您需要深入内核和网络级别的复杂性时,eBPF(扩展的伯克利包过滤器)就成为了无价的资源。在本文中,我们将探索惊人的 eBPF 功能,以及如何利用它提升 Kubernetes 监控策略。
云云众生s
2024/03/28
2470
如何利用eBPF程序监控Kubernetes
eBPF 和 Wasm:探索服务网格数据平面的未来
本文翻译自 Vivian Hu 的 《eBPF and Wasm: Exploring the Future of the Service Mesh Data Plane》[1]。
米开朗基杨
2022/02/28
7840
eBPF 和 Wasm:探索服务网格数据平面的未来
使用Istio治理微服务入门
转载来源: https://www.cnblogs.com/williamjie/p/9442340.html
wxilejun
2022/10/05
4600
Manage ONAP Microservices with Istio Service Mesh
In the previous post How service mesh can help during the ONAP Microservice journey, we have discussed why the community wants ONAP to evolve towards Microservice architecture and how service mesh approach could help during the journey. Now it’s time to dip our toe in the water, let’s try out Istio with ONAP by following the below steps.
赵化冰
2022/08/01
2830
Manage ONAP Microservices with Istio Service Mesh
istio多集群链路追踪,附实操视频
这里的可观察性主要指服务网格的可观察性,也就是需要观测服务网格中运行的微服务。为什么可观察性很重要,因为随着微服务架构的流行,一个系统可能运行成百上千微服务,如果系统出现故障,定位问题带来很大的问题。有了观测系统,就能更好的分析问题发生的原因,已经更好的监控告警。服务网格可观察性主要分为三个大类,分别是log,metrics,tracing。log是指将分布式系统的日志收集起来集中存储,用于日志分析,常用的工具如efk。metrics是指收集服务网格的监控指标,进行监控告警,常用工具比如prometheus。tracing是指分布式链路追踪,用于可视化显示服务调用的依赖关系,及获取延迟数据,常用工具如zipkin,jaeger等。本文关注的是tracing,这里我们用到了zipkin作为tracing工具。
用户5166556
2023/03/18
6030
istio多集群链路追踪,附实操视频
Istio 的高级边缘流量控制(一)
在上一篇文章 Istio 出口流量的 TLS 中,我演示了如何在网格内部直接通过 HTTP 协议访问外部加密服务,并揭示了其背后 Envoy 的配置逻辑。
米开朗基杨
2019/08/29
1.7K0
Istio 的高级边缘流量控制(一)
Istio ambient 模式中使用 eBPF 进行流量重定向
在 Istio ambient[1] 模式中,运行在每个 Kubernetes 工作节点上的 istio-cni 组件负责将应用程序流量重定向到该节点上的零信任隧道代理(ztunnel)。默认情况下,这依赖于 iptables 和 Generic Network Virtualization Encapsulation (Geneve)[2] 隧道来实现这种重定向。现在我们增加了基于 eBPF 的流量重定向方法的支持。
灵雀云
2023/09/07
5490
Istio ambient 模式中使用 eBPF 进行流量重定向
eBPF 技术实践:加速容器网络转发,耗时降低60%+
Linux 具有功能丰富的网络协议栈,并且兼顾了非常优秀的性能。但是,这是相对的。单纯从网络协议栈各个子系统的角度来说,确实做到了功能与性能的平衡。不过,当把多个子系统组合起来,去满足实际的业务需求,功能与性能的天平就会倾斜。
深度学习与Python
2022/11/28
1.3K0
eBPF 技术实践:加速容器网络转发,耗时降低60%+
微服务时代的 TCP/IP:Service Mesh 的演进之路
在 Intenet 实现计算机互联之前,最开始人们想象的计算机之间服务的交互方式是这样的:
Flowlet
2023/08/11
4630
微服务时代的 TCP/IP:Service Mesh 的演进之路
Secure ONAP Microservices with Istio Mutual TLS Authentication and RBAC
In the previous post Manage ONAP Microservices with Istio Service Mesh, we went through the steps of how to install Istio and integrate it with ONAP platform, it’s super simple and has nearly no impact to the existing projects. Now let’s enable Istio auth to secure the inter-service communication inside ONAP, it will need a little bit more efforts, but it’s worth with the benefits brought by it.
赵化冰
2022/08/01
1.1K0
eBPF 如何简化服务网格
本文译自 How eBPF Streamlines the Service Mesh[1]。
CNCF
2021/11/01
1.2K0
六, 跨语言微服务框架 - Istio Ingress和Egress详解(解决Istio无法外网访问问题)
在微服务中另外一个重点就是网关,网关理论包含入口网关和出口网关,传统意义上的网关很难做到出口网络控制,但是对于Istio是一件非常轻松的事情(因为所有的出口流量都会经过Istio),入口网关控制解析路由数据流向,出口网关控制对外访问的限制,在Istio中使用了 Ingress和Egress 来实现网关的功能.
喵了个咪233
2019/05/26
4.5K0
Cilium系列-6-从地址伪装从IPtables切换为eBPF
将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提升 Cilium 的网络性能. 具体调优项包括不限于:
东风微鸣
2023/09/01
5280
Cilium系列-6-从地址伪装从IPtables切换为eBPF
绕过conntrack,使用eBPF增强 IPVS优化K8s网络性能
作者范建明、洪志国、张浩,均为腾讯云容器产品中心高级工程师,负责容器网络和Service Mesh,容器Runtime,调度等相关研发工作。
腾讯云原生
2020/08/27
7.4K1
eBPF技术简介
“eBPF 是我见过的 Linux 中最神奇的技术,没有之一,已成为 Linux 内核中顶级子模块,从 tcpdump 中用作网络包过滤的经典 cbpf,到成为通用 Linux 内核技术的 eBPF,已经完成华丽蜕变,为应用与神奇的内核打造了一座桥梁,在系统跟踪、观测、性能调优、安全和网络等领域发挥重要的角色。为 Service Mesh 打造了具备 API 感知和安全高效的容器网络方案 Cilium,其底层正是基于 eBPF 技术”
CNCF
2020/08/24
16.7K1
eBPF技术简介
Service Mesh 的未来在于网络
作者 | Bill Mulligan 译者 | 张卫滨 策划 | 丁晓昀 长期以来,服务网格(Service Mesh)一直被认为是云原生的未来,能够实现一些新的特性,比如金丝雀部署、故障转移和 mTLS,同时还能支持一些“传统的”网络特性,如流量路由、可观测性、错误处理和故障排查等。 服务网格承诺将网络安全、服务发现和渐进式的交付实践(如蓝 / 绿和金丝雀部署)转变成开发人员的自助服务接口。但是,当我们从营销炒作转到实际实现时,会发现完全不同的情况。 在最近的 CNCF 服务网格调查中,人们反映
深度学习与Python
2023/05/09
2250
Service Mesh 的未来在于网络
干货|如何步入Service Mesh微服务架构时代
大家好!我是"无敌码农",今天要和大家分享的是关于新一代微服务架构——Service Mesh的具体玩法!在微服务架构盛行的今天,作为一名互联网技术从业人员,对于微服务的概念相信大家都已经耳熟能详了!而至于像Spring Cloud这样的微服务框架,因为大部分互联网公司都在此基础上构建过第一代微服务体系,所以对于做Java 的同学来说,Spring Cloud微服务体系应该是非常熟悉了!几年前我也写过一篇介绍我当时所在公司——摩拜单车基于Spring Cloud框架构建微服务体系的文章,感兴趣的可以戳下看看<<基于SpringCloud的微服务架构演变史?>>。
用户5927304
2021/03/25
1.2K0
干货|如何步入Service Mesh微服务架构时代
推荐阅读
相关推荐
大规模服务网格性能优化 | Aeraki xDS 按需加载
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验