写点什么

从编译到可执行,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:5813472

评论

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

从“被动应对”到“主动合规”——零信任架构下的等保 2.0 与密评密改双合规

权说安全

网络安全 密码 零信任

当AI代理遇上DeCloud会发生什么?

PowerVerse

AI 算力 web3 DePIN DeCloud

设计模式-策略模式

京东科技开发者

《Operating System Concepts》阅读笔记:p808-p820

codists

操作系统

原生 APP 的性能测试

北京木奇移动技术有限公司

软件外包公司 APP外包公司 APP开发公司

25年青海省正规等保测评机构名单汇总

行云管家

等保 等级保护 等保测评

如何利用科学的预算管理为企业释放更多价值

智达方通

企业管理 全面预算管理 预算管理

天猫商品详情 API 接口:功能、调用与实战攻略

tbapi

天猫商品详情接口 天猫API 天猫数据采集 天猫商品详情api

敏捷开发框架下的低代码应用:交付效率与代码质量的协同优化路径

JeeLowCode低代码平台

低代码 低代码开发 低代码平台 低代码, 低代码引擎

跨境物流公司有必要买堡垒机吗?

行云管家

网络安全 数据安全 堡垒机 跨境电商

程序员必备:使用Cursor+MCP 提高开发效率+避坑指南

博文视点Broadview

原生App和H5 App的对比

北京木奇移动技术有限公司

软件外包公司 原生APP开发 APP外包公司

Aloudata Agent 36 问,深度解惑!

Aloudata

数据分析 大模型 指标平台 ChatBI 智能问数

腾讯云全球生态大会成都峰会:一场技术与生态的深度对话

VyrnSynx

腾讯云 腾讯数字生态大会 技术嘉年华 腾讯云智能 腾讯云 AI 代码助手

百度智能云推出千帆数据智能平台

科技热闻

怎么彻底清除Mac的系统数据?MacBook释放存储空间一文通

阿拉灯神丁

存储空间 CleanMyMac 苹果电脑必备软件 系统清理软件 mac系统维护

行稳、致远 | 技术驱动下的思考感悟

京东科技开发者

AI与智能农业:如何通过精准农业提升作物产量与资源使用效率?

天津汇柏科技有限公司

人工智能

别再用“过时源码”做陪玩小程序!这版代码让用户留存率飙升60%的3个狠招

DUOKE七七

MES:助力新材料行业实现无纸化与智能制造

万界星空科技

mes 新材料 新材料mes 新材料行业

【前瞻技术布局】打破“沙漏“现象→提高生成式搜索/推荐的上限

京东科技开发者

什么是采购管理?如何做好采购管理?

积木链小链

数字化转型 数字化 智能制造

中科曙光AI竞争力领跑全国TOP100榜单

科技热闻

告别提示词混乱!梦精灵提示词管理器让创作更高效​

龙正哲

Prompt prompt 工程 提示词管理

Web3项目的开发的性能测试

北京木奇移动技术有限公司

软件外包公司 APP外包公司 APP开发公司

音乐NFT项目开发的性能优化

北京木奇移动技术有限公司

区块链技术 软件外包公司 音乐NFT

上门预约家政系统平台网站/app/小程序源码

网站,小程序,APP开发定制

驭电·新境 长安马自达MAZDA EZ-60全球首秀

极客天地

原生App和H5 App的性能比较

北京木奇移动技术有限公司

APP开发 软件外包公司 APP外包

一文彻底搞懂Transformer:原理、应用与测试开发指南

测试人

人工智能

MCP云托管最优解,揭秘国内最大MCP中文社区背后的运行时

阿里巴巴云原生

阿里云 Serverless 云原生

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