ebpf相关内容

不同 ebpf 程序类型之间的映射共享

是否可以在不同的程序类型之间共享 ebpf 映射.我需要在 tc-bpf 程序和 cgroup bpf 程序之间共享一个映射.如果映射被固定到充当全局命名空间的文件系统,这应该是可能的.但是,我还没有完成这项工作. 映射由 tc-bpf 程序创建并固定到全局命名空间.由于是tc-bpf程序,所以map的类型是struct bpf_elf_map.这个bpf程序是通过iproute2加载的. ..
发布时间:2022-01-04 22:32:47 其他开发

无法以非超级用户身份运行bpf程序

我正在尝试运行一个我编写的简单bpf程序.但是我不能以非root用户身份运行它.下面是我尝试加载的程序,它基本上获取指向fd为map_fd的地图的指针(我没有在创建地图的地方显示代码).它可以以root用户身份运行,但由于某些原因,非root用户会失败. uname -a的输出 Linux 5.8.0-38-generic#43〜20.04.1-Ubuntu SMP Tue Jan 12 ..
发布时间:2021-05-30 18:38:16 其他开发

ebpf在受限C中不允许什么?

从bpf手册页: eBPF程序可以用编译后的受限C语言编写(使用clang编译器)转换为eBPF字节码.各种功能是从此受限的C中省略,例如循环,全局变量,可变参数函数,浮点数和传递结构为函数参数. AFAIK手册页未更新.我想知道在使用受限C编写eBPF程序时到底被禁止什么?手册页上说的仍然正确吗? 解决方案 这实际上与ELF文件本身“允许"的内容无关.这句话意味着,一旦编译为 ..
发布时间:2021-05-30 18:36:27 其他开发

BPF验证程序拒绝代码:

我正在尝试编写一个简单的套接字过滤器eBPF程序,该程序可以访问套接字缓冲区数据. #include#include#定义SEC(NAME)__attribute __(((section(NAME),已使用))SEC("socket_filter")int myprog(struct __sk_buff * skb){无效*数 ..
发布时间:2021-05-29 22:28:25 服务器开发

不同ebpf程序类型之间的地图共享

是否可以在不同程序类型之间共享ebpf映射.我需要在tc-bpf程序和cgroup bpf程序之间共享一个映射.如果将映射固定到充当全局名称空间的文件系统,则应该可行.但是,我没有这个工作. 该映射是由tc-bpf程序创建的,并固定到全局名称空间.由于它是tc-bpf程序,因此映射的类型为struct bpf_elf_map.该bpf程序是通过iproute2加载的. 现在,我有一个c ..
发布时间:2021-05-04 18:30:35 其他开发

参数列表过长,无法通过bpf syscall加载eBPF程序时

我正在尝试通过Go中的 bpf 系统调用加载eBPF程序,但看到系统调用返回了错误。为了限制该问题,我使用以下最小的eBPF程序,该程序什么也不做: struct task_group {}; Go程序的重要部分如下: b,err:= ioutil.ReadFile(“ bpf / bbf_tty.o”) if err!= nil { fmt.Print( ..
发布时间:2020-06-07 18:36:20 其他开发

golang,ebpf和函数持续时间

我正在玩gobpf,并且在计算跟踪的用户空间函数的持续时间时遇到问题。 我使用bpf_ktime_get_ns()读取时间,然后尝试计算增量,但得到了很多数字,尽管跟踪函数只睡了1秒。 这里是经过测试的C程序,其功能称为“ ameba”。 #include #include #include #inclu ..
发布时间:2020-06-07 18:36:13 其他开发

在BPF程序中始终获得0会话ID

我正在尝试编写一个BPF程序,该程序检查调用 tty_write 内核函数的任何进程的会话ID。我试图通过从当前 task_struct 结构中检索一个字段来做到这一点。我的代码如下: SEC(“ kprobe / tty_write”) int kprobe__tty_write(struct pt_regs * ctx) { struct task_struct * task; ..
发布时间:2020-06-07 18:36:10 其他开发

无法使用密件抄送工具将eBPF`kretprobes`附加到`napi_poll()`

想法是使用argdist来测量napi_poll()的等待时间,该等待时间返回已处理的数据包数量(称为工作). napi_poll()的执行等待时间与已处理的数据包数量之比将使我以直方图的形式平均处理每个数据包所花费的时间. 我正在使用以下命令 argdist -H 'r:c:napi_poll():u64:$latency/$retval#avg time per packet (n ..
发布时间:2020-05-02 03:45:57 其他开发

BPF:程序上下文的翻译

我查看了不同类型的BPF程序,并注意到对于不同的程序类型,上下文传递的方式也有所不同. 示例: 对于程序类型BPF_PROG_TYPE_SOCK_OPS,类型为 struct bpf_sock_ops_kern .但是,这种类型的BPF程序引用了 对于程序类型BPF_PROG_TYPE_CGROUP_SKB,类型为 struct sk_buff (例如,在 struct __sk ..
发布时间:2020-05-02 03:40:08 服务器开发

谁在BPF中创建地图

阅读man bpf和其他一些文档来源后,我印象深刻的是map只能由用户进程创建.但是,以下小程序似乎神奇地创建了bpf映射: struct bpf_map_def SEC("maps") my_map = { .type = BPF_MAP_TYPE_ARRAY, .key_size = sizeof(u32), .value_size = s ..
发布时间:2020-05-02 03:34:31 其他开发

eBPF可以修改系统调用的返回值或参数吗?

为模拟某些行为,我想将探针附加到syscall上,并在传递某些参数时修改返回值.另外,在函数的参数成为进程之前对其进行修改也就足够了. 使用BPF可以吗? 解决方案 我相信将eBPF附加到kprobes/kretprobes可使您对函数参数和返回值进行读取访问,但是您不能篡改它们.我不确定100%; IO Visor项目邮件列表或IRC频道是寻求确认的好地方(irc.oftc.net ..
发布时间:2020-05-01 09:45:47 服务器开发