Menglong Dong
Menglong Dong
你好,请问有具体的应用场景吗?skb_clone被监控,是因为可能出现报文分离的问题。比如对于TCP报文收包,如果同时存在tcpdump抓包,那么收包路径就会变成这样: 网卡收包 -> skb_clone ->原始套接口 skb_clone -> IP层 -> TCP层 即传递到TCP层的是克隆出来的新的报文,从而产生分析上的困难。 我理解,这里的分段产生的是新的skb,和原来的skb是不同的skb,不需要在同一个上下文中进行监控哈
感谢反馈!能否提供一下你这里生成的coredump文件?以及当前的nettrace用的是哪个版本呢?
内核支持BTF的话可以直接下面release中编译好的来使用。如果想自己编译的话,不需要使用Dockerfile,把代码下载到目录xxx/nettrace/,直接运行下面的命令就可以进行编译,编译完成后的目标文件在xxx/nettrace/src/nettrace。 docker run -it --rm --network=host --privileged -v xxx/nettrace:/root/nettrace -v /lib/modules/:/lib/modules/ -v /usr/src/:/usr/src/ imagedong/nettrace-build make -C /root/nettrace/ all 注意将命令中的xxx替换为正确的目录。
这个有些困难,因为路由选择的时候skb还没有构造出来,因此无法进行跟踪。
你说的是网桥(bridge)设备吗?为了降低系统的开销,nettrace里的一些跟踪函数默认是禁止了的,其中就包括bridge。可以在命令行中使用-t all来强制跟踪所有支持的函数。也可以使用-t bridge来单独跟踪网桥的处理函数。 PS:目前配置文件(trace.yaml)中网桥的处理函数比较少,只有下面四个netfilter相关的。你可以按照自己的需要增加。
你这里用的是自己采用compat模式编译的nettrace吗?从报错信息上来看,我猜测是编译环境上所采用的libbpf和bpftool的版本的问题。 目前还没有loongarch架构的docker编译环境,这里你可以尝试使用较高版本的libbpf以及bpftool,看看能不能解决问题。
这个我先分析一下,感觉像是loongarch对BPF的支持问题
> 这个工具支持交叉编译吗?我想在嵌入式设备上进行使用,但是我阅读了您的makefile后没有找到任何可以配置交叉工具链内容,我尝试使用交叉工具链直接去编译,出现了如这种在交叉工具链中没有的头文件错误 这个工具编译出来是静态链接的,对于x86和arm架构的可以直接使用。对于其他架构,暂未提供相应版本。由于工具在编译过程中依赖CLANG、libbpf、libelf等库,因此直接使用工具链进行交叉编译怕是不得行哦
> 如果能提交到 OpenWrt ,就方便了。 这个倒是可以支持,后续会尝试将其提交到buildroot上