问题标签 [ebpf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
llvm-clang - 构建 ebpf 时,我得到“未知目标三重 'bpf',请使用 -triple 或 -arch”
我刚刚开始在 VM 中试验 XDP。我尝试为 bpf 构建并遇到错误,我该如何解决?
llvm-clang - Linux 的 BPF 程序中是否允许循环?
我正在考虑在内核中复制数据包并转发到 5 个主机(单播)的解决方案。计划为此使用 eBPF/XDP。
我尝试循环 5 次,在循环内我计划克隆数据包,修改 DST IP 地址,更新 cksum 并在接收到的同一 intf 上发送数据包。
我在某处读到不能在 XDP 中使用循环,所以不确定这是否可行?
请需要专家的建议。
ebpf - EBPF 新手:需要帮助,在加载 EBF 代码时遇到错误
我写了一个 bpf 代码并用 clang 编译,在尝试加载时,我遇到了一个错误。我无法理解为什么以及如何解决它,需要专家的建议。
我在 VM 操作系统中运行此代码:Ubuntu 18.04.2 内核:Linux 4.18.0-15-generic x86_64
我尝试了简单的程序,我能够加载但不能使用这个程序。
看到的错误:
performance-testing - linux - 如何对事件之间的 CPU 使用情况进行采样
我想做类似“perf record -g -p PID -- sleep 60”之类的事情,但要将堆栈采样限制在特定时间段内,以避免应用程序中运行的许多线程产生噪音。
所以这个想法是,每当函数 X() 在线程 T 上运行时,我就开始在线程 T 上采集 cpu 样本,直到函数 Y() 在同一个线程上运行。输出可以限制为每个函数的 cpu% - 有和没有被调用者。
作为这种选择性采样的替代方法,我可以记录所有样本并过滤后处理阶段不感兴趣的样本。
关于如何做到这一点的任何想法?
ubuntu - eBPF / XDP 无法在 Ubuntu 16.04.6 上编译
升级 Ubuntu 16.04 后,无法再编译 eBPF。该bpf.h
文件缺少关键结构,并且uapi
似乎没有安装标头。
示例代码:
编译clang -target bpf -O2 -c xdp.c -o xdp.o
这将返回错误:
没有提到XDP
有什么问题?
dtrace - eBPF vs. System vs. DTrace
CentOS 未来主要支持哪一个?
我不是这些工具的专家,所以我想知道我应该更深入地学习哪个工具。
谢谢
linux - TCP 状态从 SYN_RECV 变为 ESTABLISHED 需要多长时间?
在玩 eBPF 时,我尝试了 tcpstates,发现 TCP 状态转换 SYN_RECV -> ESTABLISHED 的时间非常短
我的测试数字:
从握手图中看起来从 SYN_RECV 到 ESTABLISHED 的转换时间应该接近主机之间的 RTT?
TCP 快速打开在主机上关闭。
操作系统:Ubuntu 18.10(GNU/Linux 4.18.0-21-generic x86_64)
是错误还是我错了?
更新:
tcpdump -ttttv
此 tcpdump 中主机之间的 ping 时间约为 83 毫秒
c - eBPF:连接到 security_socket_connect 时如何读取 sockaddr 结构
正如演示文稿Security Monitoring with eBPF中所建议的那样,我正在尝试连接security_socket_connect。
虽然我的基于gobpf / bcc的代码部分有效,但我似乎无法读取sockaddr
结构中的 IP 地址。
相关部分如下所示:
之后,我尝试读取 addr2 中的 IP 地址。第一次尝试是:
第二次尝试是bpf_probe_read
:
两个选项都出现相同的错误:
可以在此处找到带有可构建示例的 repo:socket-connect-bpf
networking - 来自内核空间和用户空间的 eBPF(BCC) 目标 IP 地址不匹配
我正在使用 eBPF 和 BCC 打印出我收到的数据包的 IP 地址。
对于内核,我编写了一个从 ip_t -> dst 打印出来的代码;我认为它是目的地的地址。
对于用户空间,我编写了一个代码来从字节码中打印出用户地址。
我已经用其他变量检查了很多次,看看我的程序是否向我显示了数据包头中存储的正确数据值,并且除了地址之外它都运行良好。
因此,对于用户级别,我得到:目标 ip 地址 = 203.237.53.121
这是我给服务器的静态 IP 地址。
但是,当我打印出 ip_t -> dst 时,我得到:3421320703
我不明白为什么他们会有不同的输出。
我正在尝试最终构建一个程序,我的目标是仅从特定的发件人 IP 地址等获取数据包。
如果有人可以帮助我,那就太好了。
谢谢 :)