当前位置: 首页 > news >正文

ebpf基础篇(二) ----- ebpf前世今生

bpf

要追述ebpf的历史,就不得不提bpf.
bpf(Berkeley Packet Filter)从早(1992年)诞生于类Unix系统中,用于数据包分析.
它提供了数据链路层的接口,可以在数据链路层发送和接收数据.如果网卡支持混杂模式,所有的数据包都可以被接收,即使这些数据包的目的地址是其它主机.
BPF最为熟知的应用就是tcpdump,用户可以指定过滤规则,这样就可以避免不需要的数据包被从内核拷贝到用户程序,极大地提高了性能.
这些过滤指令实际上是由内核中运行的虚拟机执行的,这个内核中的虚拟机就是BPF的实现核心.

Linux将bpf这种虚拟机的机制进行了扩展,使其不仅能应用于数据包过滤,还能应用于各种场景。
为了与之前的bpf进行区分,常见老的bpf称为cBPF(classic BPF), 新的bpf称为ebpf(extend BPF).

ebpf

1. ebpf程序的执行

1.1 验证

ebpf不需要修改内核代码,也不需要加载内核模块,就可以安全且高效的在内核中运行.
安全是因为ebpf程序需要经过内核中验证器的验证,它可以进行静态代码分析,拒绝可能crash,hang或者对内核有负作用的代码.
这种验证模式和沙箱机器不同,沙箱的运行环境是有限制的,且对执行的程序没有了解能力.
一些会被拒绝执行的ebpf程序例子有:

  1. 没有明显的退出保证(没有退出条件的for/while循环)
  2. 访问指针但缺少安全检查
1.2 执行

通过验证的ebpf程序解释执行或者由内核中的JIT编译器编译成本地代码以提高执行性能.
执行模式为

http://www.lryc.cn/news/266273.html

相关文章:

  • 我的一天:追求专业成长与生活平衡
  • 【动态规划】斐波那契数列模型
  • 机器人运动学分析与动力学分析主要作用
  • 【Java 基础】33 JDBC
  • Unity中Shader缩放矩阵
  • Nessus详细安装-windows (保姆级教程)
  • Stream流的简单使用
  • 智能优化算法应用:基于蛇优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • vue和react diff的详解和不同
  • 智能优化算法应用:基于鹈鹕算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 10:IIC通信
  • 互联网上门洗衣洗鞋小程序优势有哪些?
  • Java中如何优雅地根治null值引起的Bug问题
  • C# WPF上位机开发(子窗口通知父窗口更新进度)
  • XUbuntu22.04之跨平台容器格式工具:MKVToolNix(二百零三)
  • vue中的生命周期和VueComponent实例对象
  • Hooked协议掀起WEB3新浪潮
  • 【图文教程】windows 下 MongoDB 介绍下载安装配置
  • 算法复杂度-BigO表示法
  • 测试理论知识五:功能测试、系统测试、验收测试、安装测试、测试的计划与控制
  • 太阳能爆闪警示灯
  • 怎么为pdf文件添加水印?
  • 基于ssm医药信息管理系统论文
  • Ceph存储体系架构?
  • 详解现实世界资产(RWAs)
  • Windows漏洞利用开发——利用ROP绕过DEP保护
  • 合并两个有序链表算法(leetcode第21题)
  • 二维码初体验 com.google.zxing 实现续 - web api封装
  • Hadoop入门学习笔记——四、MapReduce的框架配置和YARN的部署
  • list集合