| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> libbpf eBPF对TCP下手了 -> 正文阅读 |
|
[系统运维]libbpf eBPF对TCP下手了 |
eBPF这项新技术会成为又一个内核玩家们的新圣地。 而我对eBPF了解的越多,就愈发追捧这门技术,乃至有些痴迷,“eBPF造万物”的字眼快要在我嘴里破口而出,背后的原因,是内核给了eBPF足够的空间,去接管系统的一切。 但一个TCP玩家,学习eBPF的目的自然还是服务本源。TCP是我现在的工作,所以我只好把目光从全局回缩一下,先试着捣鼓eBPF对TCP的玩法。 BPF是我的新武器,所以我总想着在这玩出点什么名堂。 于是乎,我放弃了BCC这类框架,直接上手libbpf。 如果感兴趣,请戳下面链接: 刚接触eBPF,会偏执的认为这只是一个白盒测试,最有价值的是在于可以追踪应用程序/内核程序的一切信息,动态追踪是它的助燃器。尽管如此,我已经觉得eBPF很厉害了。 但玩了一段时间后,渐渐从BCC这些应用层框架的阵地偏向了kernel(kernel里实现了libbpf、bpftool等)。于是乎,我在kernel里熟悉着libbpf,bpftool、cgroup的同时,也掀开了BPF的幕帘。 eBPF 不仅能监控系统上的数据,甚至可以拿来改变系统的行为。 并且,它绝对安全! 对eBPF有了解的,大多都知道XDP可以在网络收发包的流程里,操作数据包内容,这也是XDP兴起的主要原因。但当内核协议栈拥有了实时处理数据包内容的能力时,相比XDP,就意味着不需要知道偏移量等背景信息,不需要考虑网络包分片的影响,在每个封包/解包的过程中去处理工作。在指定过程中自定义操作,如:二层对Ethernet头处理,三层对IP头处理,四层对TCP、UDP头处理等等。 所以,当你有需要对数据包内容进行自定义操作时,除了XDP,你也可以选用内核协议栈的BPF,(内核协议栈的ebpf技术实现依赖于libbpf)。 实例最后,给出一个样例:在数据包TCP头部封装时,往TCP Options里注入IP:Port二元组。
你也完全可以对IP头部的IP Options做如上注入信息的操作。 结果性能基准工具iperf3结合tcpdump数据包分析 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 20:35:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |