eBPF网络入门

eBPF网络入门

主要实现的功能收到网络数据包时写Hello World和跟踪管道的计数器。

#include <linux/bpf.h>
#include <bpf/bpf_helpers.h>

int counter = 0;

SEC("xdp")
int hello(struct xdp_md *ctx) {
    bpf_printk("Hello World %d", counter);
    counter++; 
    return XDP_PASS;
}

char LICENSE[] SEC("license") = "Dual BSD/GPL";

程序保存为hello-func.bpf.c
编译:clang -target bpf -I/usr/include/x86_64-linux-gnu -O2 -o hello.bpf.o -c hello.bpf.c

将程序加载到内核

用bpftool攻击将程序加载到内核:bpftool prog load hello.bpf.o /sys/fs/bpf/hello
查看是否加载成功:sudo ls /sys/fs/bpf

检查加载程序

用bpftool prog list 查看程序是否加载成功
bpftool prog show id xx --pretty ,将配置文件展示成json格式。

用bpftool来查看转换后的字节码

sudo bpftool prog dump xlated name hello

将时间加载到网卡

sudo bpftool net attach xdp id xx dev eth0

查看已加载的程序
sudo bpftool net list / ip link

查看输出
sudo cat /sys/kernel/debug/tracing/trace_pipe

分离程序

从网卡上删除程序
sudo bpftool net detach xdp dev eth0
卸载程序
rm /sys/fs/bpf/hello
rm /sys/fs/bpf/hello

参考:https://learning.oreilly.com/library/view/learning-ebpf/9781098135119/ch02.html#running_quotation_markhello_worldquotat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
eBPF(extended Berkeley Packet Filter)是一种在Linux内核中执行程序的技术,它可以用于网络分析、性能监控、安全审计等多种用途。下面是一个eBPF入门实践教程的大致步骤: 1. 确保你的系统支持eBPF:你需要一个运行Linux内核4.1或更高版本的机器,并且要启用eBPF功能。你可以通过运行`uname -r`命令来检查你的内核版本。 2. 安装所需的工具:你需要安装clang编译器、LLVM和libbpf库。这些工具可以帮助你编写和编译eBPF程序。你可以使用包管理器(如apt、yum等)来安装这些工具。 3. 学习eBPF原理:了解eBPF的基本概念和工作原理是很重要的。eBPF程序是一种在内核中执行的小型虚拟机程序,它可以通过钩子函数与内核交互并处理数据。 4. 编写eBPF程序:使用C语言编写eBPF程序,并使用clang编译器将其编译为eBPF字节码。eBPF程序可以通过BPF syscall加载到内核中。 5. 调试和测试:在运行eBPF程序之前,你可以使用bpftoolbpfsyscall等工具进行调试和测试。这些工具可以帮助你检查eBPF程序的正确性和性能。 6. 部署eBPF程序:一旦你的eBPF程序通过测试,你可以使用ip、tc等工具将其部署到实际的网络环境中。这些工具允许你在网络数据包到达内核之前或之后执行eBPF程序。 以上是一个简单的eBPF入门实践教程的大致步骤。在实际使用中,你可能会遇到更多的挑战和复杂性。但通过不断学习和实践,你将能够掌握eBPF技术并应用于各种场景中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值