前往小程序,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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
DataX数据同步实战案例
DataX 是阿里云DataWorks数据集成的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS 等各种异构数据源之间高效的数据同步功能。
chimchim
2022/11/13
2.3K0
DataX数据同步实战案例
【Spark数仓项目】需求八:MySQL的DataX全量导入和增量导入Hive
本需求将模拟从MySQL中向Hive数仓中导入数据,数据以时间分区。测试两种导入场景,一种是将数据全量导入,即包含所有时间分区;另一种是每天运行调度,仅导入当天时间分区中的用户数据。
火之高兴
2024/07/25
3560
大数据平台 - 数据采集及治理
ETL基本上就是数据采集的代表,包括数据的提取(Extract)、转换(Transform)和加载(Load)。数据源是整个大数据平台的上游,数据采集是数据源与数仓之间的管道。在采集过程中针对业务场景对数据进行治理,完成数据清洗工作。
端碗吹水
2020/11/16
3.8K0
大数据平台 - 数据采集及治理
如何基于DataX做增量数据同步?
一、DataX数据同步原理二、全量同步实现三、增量同步的思考四、增量同步实现方案五、关于DataX高可用参考
叔牙
2023/06/21
6.1K0
如何基于DataX做增量数据同步?
datax详细介绍及使用
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。
Maynor
2022/03/11
12.4K0
datax详细介绍及使用
DataX 实现 MySQL 数据,高效同步
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/07/12
4K0
DataX 实现 MySQL 数据,高效同步
dataX是阿里开源的离线数据库同步工具的使用
DataX 是阿里开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。
凯哥Java
2022/12/16
1.4K0
dataX是阿里开源的离线数据库同步工具的使用
使用 DataX 实现 MySQL 数据的高效同步
本周赠书《性能之巅》第2版 我们公司有个项目的数据量高达五千万,但是因为报表那块数据不太准确,业务库和报表库又是跨库操作,所以并不能使用 SQL 来进行同步。当时的打算是通过 mysqldump 或者存储的方式来进行同步,但是尝试后发现这些方案都不切实际: mysqldump:不仅备份需要时间,同步也需要时间,而且在备份的过程,可能还会有数据产出(也就是说同步等于没同步) 存储方式:这个效率太慢了,要是数据量少还好,我们使用这个方式的时候,三个小时才同步两千条数据… 后面在网上查看后,发现 DataX 这
程序猿DD
2022/07/18
4.2K0
使用 DataX 实现 MySQL 数据的高效同步
大数据实训之数据可视化系列教程
https://github.com/alibaba/DataX/blob/master/introduction.md
张哥编程
2024/12/07
1420
datax实现mysql数据同步
DataX 是阿里内部广泛使用的离线数据同步工具/平台,可以实现包括 MySQL、Oracle、HDFS、Hive、OceanBase、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。DataX采用了框架 + 插件 的模式,目前已开源,代码托管在github
全栈程序员站长
2022/08/30
4.5K0
datax实现mysql数据同步
异构数据源同步之数据同步 → DataX 使用细节
里面讲到了 DataX 的概况、框架设计、核心架构、插件体系、核心优势,由阿里出品,并在阿里内部被广泛使用,其性能、稳定都是经过了严格考验的。得益于它的框架设计
青石路
2024/06/05
2.2K0
异构数据源同步之数据同步 → DataX 使用细节
大数据-数据源离线同步工具DataX的使用
DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。
码客说
2022/10/04
2K0
大数据-数据源离线同步工具DataX的使用
[DataX引擎配置错误,该问题通常是由于DataX安装错误引起,请联系您的运维解决 .]. - 在有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数
[DataX引擎配置错误,该问题通常是由于DataX安装错误引起,请联系您的运维解决 .].  - 在有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数
chimchim
2023/10/17
3.3K0
[DataX引擎配置错误,该问题通常是由于DataX安装错误引起,请联系您的运维解决 .]. - 在有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数
【踩坑实录】datax从pg同步数据到hive数据全为null问题
目录 一、问题描述 二、定位原因 三、解决方案  1、建表分隔符和导入时的分隔符不一致 1.修改建表分隔符 2.建表时直接指定好分隔符 3.针对分区表和无分区表的区别 2、字段的数据类型不一致 3、文件类型和压缩格式不对(ORC、TEXTFILE...) 4、字段值包含了分隔符,可以换一个分隔符试试 ---- 一、问题描述 hive建表ddl: create table table_name( a bigint, b string ) comment  'xx表'  partitioned by
chimchim
2022/11/13
1.3K0
【踩坑实录】datax从pg同步数据到hive数据全为null问题
分布式数据同步工具之DataX-Web部署使用
背景介绍,因为需求是外部数据和内部生产数据之间需要通步,因此dataworks的数据同步模块的源端和目标是不支持多网络环境,要么公网,要么内网,因此这种需求我们的dataworks是不能使用的,我们调研了两个工具,一个是dataxweb ,一个是dolphinscheduler ,今天的篇幅主要讲解一下搭建的dataxweb的流程。
大数据技术架构
2022/12/01
9.4K0
分布式数据同步工具之DataX-Web部署使用
Ubuntu下安装Datax-web数据交换平台
为了实现两个数据库之间的数据交换,企业级有ODI等,此处尝试DataX做小型数据交换。
geekfly
2022/08/11
9670
Ubuntu下安装Datax-web数据交换平台
Airflow自定义插件, 使用datax抽数
Airflow之所以受欢迎的一个重要因素就是它的插件机制。Python成熟类库可以很方便的引入各种插件。在我们实际工作中,必然会遇到官方的一些插件不足够满足需求的时候。这时候,我们可以编写自己的插件。不需要你了解内部原理,甚至不需要很熟悉Python, 反正我连蒙带猜写的。
Ryan-Miao
2019/10/01
3.3K0
datax数据流转小试牛刀
最近在做MySQL向infobright的迁移工作,用的方法是shell脚本的方法。之前听说过有datax的方法也可以做数据流转,今天下班后,就试了试datax的方法,整个过程还是比较顺利的。记录一下。
AsiaYe
2020/03/12
1.2K0
在TBDS部署sqoop组件及抽取数据至hive的使用方法
导语:本身TBDS平台不提供sqoop组件,若用户想在TBDS平台上使用sqoop抽取外部数据导入至TBDS平台,需要单独部署sqoop组件。
袁宋
2019/07/02
2.1K0
【YashanDB知识库】DataX迁移Hive到崖山分布式
python bin/datax.py job/hive2yashandb.json
用户10349277
2025/03/03
760
推荐阅读
相关推荐
DataX数据同步实战案例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验