eBPF实践篇之基础概念

本文介绍了eBPF这门革命性技术,它允许在Linux内核中安全高效地扩展功能,重点关注其在网络中的应用。文章详细阐述了eBPF的生命周期过程,包括开发、编译、加载、验证和执行,以及eBPFMaps的数据交互机制。
摘要由CSDN通过智能技术生成

前言

eBPF 是一门革命性的技术,可以在不修改内核源代码或者加载内核模块的情况下,安全和高效地拓展和增强Linux内核的功能,我们主要聚焦在eBPF在网络传输上的应用和实践🚀

基本概念

下面这张eBPF官网 https://ebpf.io/ 的一张图片
我们通过eBPF可以安全地进行网络的观测和追踪
有很多优秀的eBPF项目,比如cilium,falco,katran,pixie
eBPF允许我们使用go,c/c++,rust等语言进行开发
eBPF的代码一般具有内核层代码和用户层代码

在这里插入图片描述

eBPF的生命周期之旅

  1. 我们首先使用eBPF SDKs开发完代码

  2. 然后将代码编译为eBPF字节码

  3. 之后调用bpf系统调用,将eBPF字节码加载到内核

  4. 内核使用Verifier对eBPF字节码进行合法性和安全性检查

  5. 通过检查后使用JIT将eBPF字节码编译成本机指令集的机器码

  6. 然后将eBPF程序挂载到指定位置的内核hook点,当hook点触发时执行对应的eBPF程序,hook点可以是系统调用、内核函数、等等

  7. eBPF内核层代码和用户层代码通过eBPF Maps进行数据交互

eBPF Maps的实现原理是基于内核分配的内存区域,使用 eBPF 虚拟文件系统(eBPF VFS)进行抽象,然后内核层和用户层可以通过操作抽象出来的fd进行数据的交互,其实本质是内存共享

在这里插入图片描述

最后

我们现在应该对于eBPF有了一个初步的认知和理解,我之后写一个简单的eBPF程序来加深印象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉墨居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值