网络报文分析利器eBPF

摘要:
eBPF是一个强大的网络消息分析工具,对于网络工程师来说,使用Wireshark来捕获和分析消息是一件很常见的事情。Linux内核从2.1版开始支持BPF,eBPF是BPF的增强。传统的BPF技术通常称为cBPF。为了提高分组过滤性能,BPF优化了过滤机制。EBPF通过添加更多寄存器并将字长从32位增加到64位,扩展了经典的BPF机制,从而可以在单个周期内处理更多数据。同时,eBPF还允许对其他模块的特定接口进行有限的调用,扩展了eBPF的功能。

网络报文分析利器eBPF

对于网络工程师来说,使用Wireshark抓取报文并进行分析,是分析问题过程中再平常不过的一件事了。对于使用者简单的功能,其实现可能是复杂的,BPF(Berkeley Packet Filter )就是这种。

BPF是Wireshark的后端技术,也可以说是命令行工具tcpdump的后端技术。因为Wireshark和tcmdump依赖的都是libpcap库,而libpcap库使用的就是BPF技术。linux kernle从2.1版本开始支持BPF功能,而eBPF正是对于BPF的增强,传统的BPF技术一般称之为cBPF。

从名字上可以看出,BPF技术的初衷是作为包过滤工具。因为网络中存在各种报文,而分析问题,查看协议的时候只关系某些特征的报文,因此包过滤功能就格外有用。我们可以试着想一想,如果让我们设计一个包过滤工具如何去做?一般的想法是在驱动收包或者发包的地方,添加钩子或者内核模块,逐个包进行比较,如果过滤规则比较复杂,则每个报文都需要花费大量的指令去处理。这样的效果是处理速度慢,同时也会影响正常报文的处理,比如过滤机制影响了TCP收发包的时延判断,导致TCP连接本身受影响。

为了提升上述包过滤性能,BPF对过滤机制进行了优化。简单来说,BPF在内核实现了一个包过滤虚拟机,用户态程序(tcpdump)通过系统调用,将BPF字节码数据发送给内核的BPF机制,BPF机制在驱动层面对每个报文执行字节码,同时将过滤后的报文通知到用户态的程序。

eBPF对经典BPF机制进行了扩展,增加了更多的寄存器,同时将字长从32位增加到64位,以便可以在单个周期内处理更多的数据。eBPF在内核中支持JIT即时编译,机器指令和寄存器可以一一对应;同时增加了Verifier验证器,以保证在内核中执行的字节码是安全的。同时eBPF还允许有限调用其他模块的特定接口,扩展了eBPF的功能。

免责声明:文章转载自《网络报文分析利器eBPF》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何利用pip自动生成和安装requirements.txt依赖imagepicker插件的使用方法和选择按钮汉化下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

基础面试题

1. 为什什么学习Python? Life is short, You need Python 2. 通过什什么途径学习的Python? pass 3. Python和Java、PHP、C、C#、C++等其他语⾔言的对比? pass 4. 简述解释型和编译型编程语言? 将由高级语言编写的程序文件转换为可执行文件(二进制的)有两种方式,编译和解释,编译是在...

函数的调用过程与出入栈

函数调用的过程 线程执行的基本行为是函数调用,每次函数调用的数据都是通过Java栈传递的。Java栈与数据结构上的栈有类似的含义,它是一块先进后出的数据结构,只支持入栈和出栈两种操作。Java栈的主要内容是栈帧。每次函数调用都会有一个对应的栈帧被压入Java栈,每次函数调用结束(无论是正常返回或者抛出异常),都会有一个栈帧被弹出Java栈。 如图所示,函数...

wireshark 基础,颜色规则,过滤条件使用与多条过滤

关于抓到的通讯包的颜色,黑色是坏包,灰色是tcp的开始和结束的包,等等 打开wireshark,最好管理员权限,否则可能会有问题  选择网络接口,这里用的wifi,所以只有WLAN有信号在动  点击表达式,这是汉化后的版本  我需要ip目的地址为*.*.*.*的包,搜索中输入ip.dst,另外ip.src,上面找到ipv4里面的条目即可,关系选择等于...

jvm内存模型和内存分配

1.什么是jvm? (1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的。 (2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域。 (3)JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改...

蛋疼的经历--wireshark不能启动的问题

事情是这样子的,最近新入职,安装了wireshark,,,在急需要其观察数据包结构,,,,写代码时,,,,卡了,,,我的天!!! 刚开始是提示说,找不到动态链接库api-ms-win-crt-runtime-|1-1-0.dll,于是找到这个文件,,,并放到 C盘下的 windows/system32/ 下 , 后来又找到api-ms-相关的动态链接库放到...

利用Wireshark截取数据包,并对数据包进行解析

利用Wireshark截取ICMP数据包,并对数据包进行解析 wireshark安装文件下载地址:http://yunpan.cn/QiHGK5sPtWRyN (提取码:0bbc) 安装步骤: 解压文件之后,在wireshark-win32-1.4.9中文版文件夹中找到安装文件,双击即可安装。 安装完成之后,双击wireshark图标即可启动,界面如下:...