搭建 ebpf 开发测试环境

0 内容说明

这部分主要讲述了如何通过官网学习ebpf,以及如何搭建自己的ebpf开发测试环境,主要是需要安装哪些工具链。

1 ebpf在线学习

ebpf官网中提供了一个快速在线学习ebpf的路径,在这个学习平台中一共有两项学习内容,一个是学习观察ebpf的内部组件,一个是学习编写ebpf,每个大概学习30分钟,是快速学习ebpf非常好的途径。
ebpf Lab实验室地址: eBPF - Introduction, Tutorials & Community Resources

ebpf Lab实验室

1.1 第一个学习工具

这部分教学摘取了 opensnoop 示例,教你如何处理 eBPF 工具,观察它加载其组件,甚至将你自己的跟踪添加到源 eBPF 代码中。一共有五个步骤,进入学习后,可以安装它的提示步骤进行操作,在操作过程中可以了解部分ebpf 工具的用法。
在这里插入图片描述
在这里插入图片描述

1.2 第二个学习工具

这部分在说如何编写第一个 eBPF Hello World 程序,并深入了解 eBPF 的所有关键概念和工具,例如 eBPF 映射、字节码、bpftool、xdp 和 eBPF 验证器。

在这里插入图片描述
在这里插入图片描述

2 搭建Ebpf开发环境

如果想要更好的使用ebpf,内核版本建议>=4.9,尽管较低的内核版本(3.15以后)也支持ebpf,但是编译和运行起来会有问题,所以建议使用高版本的内核,我使用的是ubuntu22.04,内核版本为6.2。

2.1 libbpf

libbpf是开发ebpf的核心部分,一般需要将其作为子模块(库)使用,在很多开源项目中都存在libbpf的文件,但是里面并不存在源码需要自行下载编译。

$ git submodule update --init
$ git submodule add https://github.com/libbpf/libbpf/ libbpf

2.2 安装依赖-Debian/Ubuntu

主要的依赖有 libbpf, llvm, clang, libxdp和 libelf;
LLVM+clang主要是将按照 ebpf 规范编写的 .c 文件(一般命名为*.bpf.c)编译为BPF 字节码,这些字节码会存储在一个 ELF 目标文件中(libelf),elf文件一般会命名为*.bpf.o,然后通过 libbpf 通过 bpf()函数的系统调用加载到内核中。libxdp 里有管理xdp的函数。

$ sudo apt install clang llvm libelf-dev libpcap-dev build-essential
$ sudo apt install linux-perf
$ sudo apt install linux-tools-$(uname -r)

2.3 内核头文件依赖关系

$ sudo apt install linux-headers-$(uname -r)

2.4 bpftool工具

$ sudo apt install linux-tools-common linux-tools-generic

参考:
ebpf Lab
Setup dependencies

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/214812.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在Spring Boot中隔离@Async异步任务的线程池

在异步任务执行的时候,我们知道其背后都有一个线程池来执行任务,但是为了控制异步任务的并发不影响到应用的正常运作,我们需要对线程池做好相关的配置,以防资源过度使用。这个时候我们就考虑将线程池进行隔离了。 那么我们为啥要…

高校人员信息管理系统C++

代码:https://mbd.pub/o/bread/ZZeZk5lx 一、基本内容论述 1、问题描述 某高校有四类员工:教师、实验员、行政人员、教师兼行政人员;共有的信息包括:编号、姓名、性别、年龄等。其中,教师还包含的信息有:所…

2023年GopherChina大会-核心PPT资料下载

一、峰会简介 自 Go 语言诞生以来,中国便是其应用最早和最广的国家之一,根据 Jetbrains 在 2021 年初做的调查报告,总体来说目前大概有 110 万专业的开发者 选择 Go 作为其主要开发语言。就其全球分布而言, 居住在亚洲的开发者最多&#xff…

矩阵元素求和:按行、按列、所有元素np.einsum()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 矩阵元素求和: 按行、按列、所有元素 np.einsum() [太阳]选择题 下列说法正确的是: import numpy as np A np.array([[1, 2],[3, 4]]) print("【显示】A") p…

为何要3次握手?TCP协议的稳定性保障机制

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

绝地求生在steam叫什么?

绝地求生在Steam的全名是《PlayerUnknowns Battlegrounds》,简称为PUBG。作为一款风靡全球的多人在线游戏,PUBG于2017年3月23日正式上线Steam平台,并迅速成为一部热门游戏。 PUBG以生存竞技为核心玩法,玩家将被投放到一个辽阔的荒…

布林线BOLL的实战应用技巧

一、认识布林线BOLL 布林线BOLL,又称布林带,是股市中非常常用的一个技术指标。 以金斗云智投电脑版软件为例,任意打开一支个股,选择BOLL指标,在K线区域就可以看到上中下排列的3条线,这3条线就组成了布林带。…

【Three.js】创建CAD标注线

目录 📖前言 🐞创建箭头对象 🐬创建文字 👻箭头两端的线段 ✈️封装方法 📖前言 CAD标注线在工程和制造领域中被广泛用于标记零部件、装配体和机械系统的尺寸、距离、角度等信息。它们帮助工程师和设计师更好地理…

web自动化 -- selenium及应用

selenium简介 随着互联网的发展,前端技术不断变化,数据加载方式也不再是通过服务端渲染。现在许多网站使用接口或JSON数据通过JavaScript进行渲染。因此,使用requests来爬取内容已经不再适用,因为它只能获取服务器端网页的源码&am…

计算机网络体系的形成

目录 1、开放系统互连参考模型OSI/RM 2、两种国际标准 3、协议与划分层次 4、网络协议的三要素 5、划分层次 (1)文件发送模块使两个主机交换文件 (2)通信服务模块 (3)接入网络模块 6、分层带来的好…

Linux下Python调用C语言

一:Python调用C语言场景 1,已经写好的C语言代码,不容易用Python实现,想直接通过Python调用写好的C语言代码 2,C比Python快(只是从语言层面,不能绝对说C程序就是比Python快) 3&…

docker配置redis插件

docker配置redis插件 运行容器redis_6390 docker run -it \ --name redis_6390 \ --privileged \ -p 6390:6379 \ --network wn_docker_net \ --ip 172.18.12.19 \ --sysctl net.core.somaxconn1024 \ -e TIME_ZONE"Asia/Shanghai" -e TZ"Asia/Shanghai"…

电磁兼容EMC理论基础汇总

目录 0. 序言 1. EMC的基础介绍 1.1 EMC电磁兼容的定义 1.2 EMC的重要性 1.3 EMC的三要素 2. 库仑定律 3. 趋肤效应与趋肤深度 4. 电阻抗公式 4.1 电阻 4.2 容抗 4.3 感抗 4.4 电路元件的非理想性 5. 麦克斯韦方程组 5.1 高斯磁定律 5.2 高斯定律 5.3 法拉…

【FPGA】Verilog:二进制并行加法器 | 超前进位 | 实现 4 位二进制并行加法器和减法器 | MSI/LSI 运算电路

Ⅰ. 前置知识 0x00 并行加法器和减法器 如果我们要对 4 位加法器和减法器进行关于二进制并行运算功能,可以通过将加法器和减法器以 N 个并行连接的方式,创建一个执行 N 位加法和减法运算的电路。 4 位二进制并行加法器 4 位二进制并行减法器 换…

YoloV8改进策略:Swift Parameter-free Attention,无参注意力机制,超分模型的完美迁移

摘要 https://arxiv.org/pdf/2311.12770.pdf https://github.com/hongyuanyu/SPAN SPAN是一种超分网络模型。SPAN模型通过使用参数自由的注意力机制来提高SISR的性能。这种注意力机制能够增强重要信息并减少冗余,从而在图像超分辨率过程中提高图像质量。 具体来说,SPAN模…

J-Link RTT的使用(原理 + 教程 + 应用 + 代码)

MCU:STM32F407VE MDK:5.29 IAR:8.32 目录--点击可快速直达 目录 写在前面什么是RTT?RTT的工作原理RTT的性能快速使用教程高级使用教程附上测试代码2019年12月27日更新--增加打印float的功能 写在前面 本文介绍了J-Link RTT的部分使用内容,很多地方参考和使用…

ImportError: cannot import name ‘metadata‘ from ‘importlib‘

yolov8 编译问题 ImportError: cannot import name ‘metadata’ from ‘importlib’ 将 from importlib import metadata 更改为 import importlib_metadata as metadata

canvas绘制单个圆和同心圆

代码实现&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdev…

【Java 基础】18 I/O流

文章目录 1.基本概念2.字节流3.字符流4.标准输入输出5.最佳实践 I/O流&#xff08;Input/Output 流&#xff09;是计算机程序中不可或缺的一部分&#xff0c; 往大了说所有的操作都是IO。Java 提供了强大而灵活的 I/O 框架&#xff0c;支持各种数据的 读取和 写入操作。 1.基…

网络安全--网络环境构成,系统的安全

2. 网络攻防环境 目标 了解攻防环境构成了解入侵检测系统&#xff08;平台&#xff09;的部署位置 2.1. 环境构成 2.1.1. 环境框图 一个基本的网络攻防实验环境包括&#xff1a;靶机、攻击机、入侵检测分析系统、网络连接四部分组成。 一个基础的网络攻防实验环境需要如下…
最新文章