AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

从编译到可执行,eBPF 加速容器网络原理分析

  • 2023-01-05
    北京
  • 本文字数:1322 字

    阅读完需:约 4 分钟

从编译到可执行,eBPF 加速容器网络原理分析

eBPF(extended Berkeley Packet Filter) 是一种可以在 Linux 内核中运行用户编写的程序,而不需要修改内核代码或加载内核模块的技术。简单说,eBPF 让 Linux 内核变得可编程化了。本文整理自龙蜥大讲堂第 57 期,浪潮信息 SE 王传国从原理上分析了 eBPF 的加载工作过程,解释了它如何保证系统运行稳定以及它能加速网络的原因。

1. eBPF 加载过程


我们知道,一般 eBPF 的加载过程,首先是写 C 代码,然后用 llvm lang 编译成  ELF 文件,接着用 libelf 对 ELF 文件进行解析,解析之后按照 libbpf 所需要的格式进行数据的整理、组织,再通过 BPF 的系统调用,可以将这些数据都加载到内核里面,包括程序翻译出来的 eBPF 指令集。


在内核里面有校验器负责对程序进行校验,有 JIT 对程序进行翻译解析。

1.1 重定位


BPF 基础设施提供了一组有限的“稳定接口”, 使用 convert_ctx_access 对各种 CTX 进行转换,在内核版本升级时保证稳定。


CO-RE 核心思想就是采用(BTF)非硬编码的形式对成员在结构中的偏移位置进行描述,解决不同版本之间的差异。


需要重定位的元素:Map、函数调用、Helper 函数调用、字段、Extern 内核符号和 kconfig。

1.2 安全性检查:数据、指令、循环


数学计算除数不能为 0,指令调用范围[0, prog->len)深度优先遍历排除环。

1.3 eBPF 指令集


1.4 指针安全性检查



确定指针类型、范围纠正,识别不了的指针类型不允许引用。



范围检查,不同的指针类型有不同的检查方法和范围。

2. eBPF 加速容器网络


主要涉及的 eBPF 程序类型:XDP、tc、sock_ops


它们加速网络性能的基本原理都是把数据直接从一端(网口/socket)的发送队列传递到另一端的接收或发送队列,绕过不需要的网络协议栈。



XDP 位于整个 Linux 内核网络软件栈的底部,还未生成 skb,能够非常早地识别并丢弃攻击报文,具有很高的性能;但是在虚拟机中有时候可能无法支持 XDP 程序的加载,例如虚拟机网卡的接收队列太少。



在 tc 功能的 sch_handle_ingress、sch_handle_egress 添加 hook 点,分别是 tc ingress 和 tc egress,没有 XDP 那么多要求,基本上所有的 OS 中都能使用,绕过 netfilter 等非必要的内核网络协议栈路径,能极大地提升网络性能,降低延迟。



技术概述:把数据从一端 socket 发送队列直接发送到对端 socket 的接收队列或发送队列。

sockops:挂载到 cgroup,监控整个 cgroup 中所有 socket 的握手和挥手(主动|被动),记录 tcp 连接。

sockmap:存储数据特征与 socket 句柄的关系。写数据时执行 bpf_map_update,修改对应 socket 的 sendmsg 函数指针。

sk_msg:使用 sockmap 对数据进行 redirect 判定。



经过我们的测试,如果用 Cilium 替换 calico,用 TCP Throughput 模式测,那么 pod 间的通讯性能 tcp 吞吐量提升 58%、sockops 提升 153%、跨节点也能提升 24%。


如果用 TCP-RR 模式来测,那么相比 calico 同节点能提升 28%、sockops 提升 200.82%、跨节点提升 43%。


如果用 TCP_CRR 模式去测的话, calico 同节点能提升 40%、sockops 提升 35% 、跨节点提升 55%。 


Cilium 在提升性能的时候,它对于 CPU 的占用降低了 10% 以上,因此我们测试的结果是 Cilium 的性能要明显优于使用 iptables 的 calico。所以说目前我们打算使用 Cilium 优化我们的容器网络。

2023-01-05 10:5812014

评论

发布
暂无评论
发现更多内容

软件测试学习笔记丨Jenkins安装与配置-霍格沃兹测试开发学社

测试人

软件测试 jenkins

阿里云天池AI课程证书学习计划

阿里云天池

阿里云

win版Adobe Media Encoder 2024(Me2024)直装版

iMac小白

Media Encoder 2024 Media Encoder下载 Media Encoder破解版

win版Photo Pos Pro Premium(图片编辑工具) v4.05.36 激活版

iMac小白

Photo Pos Pro下载 Photo Pos Pro激活版 Photo Pos Pro直装版

解读注意力机制原理,教你使用Python实现深度学习模型

华为云开发者联盟

Python 人工智能 华为云 华为云开发者联盟 企业号2024年5月PK榜

蚂蚁数科 MAPPIC 密态计算云平台入驻阿里云计算巢

蚂蚁数科技术园

阿里云 隐私计算 数据要素

事业-最佳实践-项目管理-MVP版本拆解

南山

项目管理 MVP MVP版本 需求拆解 项目拆解

事业-最佳实践-项目管理-项目关键节点

南山

项目管理 关键节点

win版Irix HDR Pro(HDR图像编辑处理)v2.3.26 直装版

iMac小白

Irix HDR Pro下载 Irix HDR Pro直装版 Irix HDR Pro激活版

win版Adobe Premiere Pro 2024 (Pr2024)直装版

iMac小白

Premiere Pro 2024下载 Premiere Pro 2024激活版 Premiere Pro 2024破解版 Premiere Pro 2024直装版

win版VideoProc Converter AI(全能视频处理) v7.0 激活版

iMac小白

从智能马桶到“万物互联”生态,这家国货品牌领跑卫浴新趋势

Alter

数据应用场景,欢迎分享!

蛙人族

Data 大数据‘’

专家解读 | NIST网络安全框架(2):核心功能

权说安全

网络安全

win版Adobe After Effects 2024(Ae2024)直装版

iMac小白

After Effects 2024下载 After Effects 2024直装 After Effects 2024激活

win版Pro Motion NG(像素绘图工具)v8.0.9 特别版下载

iMac小白

Pro Motion NG下载 Pro Motion NG激活版 Pro Motion NG破解版 Pro Motion NG特别版 Pro Motion NG软件

win版FlowHeater(数据源转换器) v4.4.2 特别版

iMac小白

FlowHeater下载 FlowHeater特别版 FlowHeater激活版

win版Cloanto Amiga Forever(Amiga仿真软件) v10.3.2 激活版

iMac小白

纯CSS丝滑边框线条动画

南城FE

CSS 前端 动画

被众多AI大佬看好的具身智能到底是什么?它凭什么成为下一个AI浪潮?

博文视点Broadview

取代或转型?人工智能对软件测试的影响(内附工具推荐)

禅道项目管理

人工智能 AI 软件测试 自动化测试 测试人员

数据价值的挖掘,有哪些实现路径呢?

蛙人族

Data 数据集 阿里云; 大数据‘’

【等保小知识】等保服务是一次性服务吗?为什么?怎么理解?

行云管家

等保 等级保护 等保测评 等保服务

事业-最佳实践-架构-团队技术规划

南山

架构 规划 架构规划

寻找高质量数据之旅:您的数据指南 ️

蛙人族

Data 数据集 数据集成 阿里云; 大数据‘’

win版Autodesk Revit 2025(三维建模软件) v2025.1 特别版

iMac小白

从编译到可执行,eBPF 加速容器网络原理分析_文化 & 方法_王传国_InfoQ精选文章