eBPF三大件

eBPF程序在内核中通过钩子响应事件,如系统调用、函数进出、网络事件等。它们在触发时执行辅助函数,进行数据操作,如搜索、更新键值对,或处理网络元数据。eBPF字节码先经过验证,然后JIT编译,安全地与用户空间交互,利用Map共享和操作数据。
摘要由CSDN通过智能技术生成

事件和钩子
eBPF 程序是在内核中被事件触发的。在一些特定的指令被执行时时,这些事件会在钩子处被捕获。钩子被触发就会执行 eBPF 程序,对数据进行捕获和操作。钩子定位的多样性正是 eBPF 的闪光点之一。例如下面几种:

    系统调用: 当用户空间程序通过系统调用执行内核功能时。
    功能的进入和退出: 在函数退出之前拦截调用。
    网络事件: 当接收到数据包时。
    kprobe 和 uprobe: 挂接到内核或用户函数中。
    

辅助函数
eBPF 程序被触发时,会调用辅助函数。这些特别的函数让 eBPF 能够有访问内存的丰富功能。例如 Helper 能够执行一系列的任务:

    在数据表中对键值对进行搜索、更新以及删除。
    生成伪随机数。搜集和标记隧道元数据。
    把 eBPF 程序连接起来,这个功能被称为 tail call。
    执行 Socket 相关任务,例如绑定、获取 Cookie、数据包重定向等。
    

简单来说,eBPF 的工作流程:

    把 eBPF 程序编译成字节码。在载入到 Hook 之前,在虚拟机中对程序进行校验。
    把程序附加到内核之中,被特定事件触发。
    JIT 编译。
    在程序被触发时,调用辅助函数处理数据。
    在用户空间和内核空间之间使用键值对共享数据。
    
    
    eBPF 程序通过安全检查后插入钩子,被事件触发之后,程序会启动执行,

用辅助函数和 Map 来对数据进行存储和操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值