On 1/28/25 12:46 AM, Jason Xing wrote:
"Timestamping is key to debugging network stack latency. With SO_TIMESTAMPING, bugs that are otherwise incorrectly assumed to be network issues can be attributed to the kernel." This is extracted from the talk "SO_TIMESTAMPING: Powering Fleetwide RPC Monitoring" addressed by Willem de Bruijn at netdevconf 0x17). There are a few areas that need optimization with the consideration of easier use and less performance impact, which I highlighted and mainly discussed at netconf 2024 with Willem de Bruijn and John Fastabend: uAPI compatibility, extra system call overhead, and the need for application modification. I initially managed to solve these issues by writing a kernel module that hooks various key functions. However, this approach is not suitable for the next kernel release. Therefore, a BPF extension was proposed. During recent period, Martin KaFai Lau provides invaluable suggestions about BPF along the way. Many thanks here! In this series, I only support foundamental codes and tx for TCP.
*fundamental*. May be just "only tx time stamping for TCP is supported..."
This approach mostly relies on existing SO_TIMESTAMPING feature, users only needs to pass certain flags through bpf_setsocktopt() to a separate tsflags. Please see the last selftest patch in this series. After this series, we could step by step implement more advanced functions/flags already in SO_TIMESTAMPING feature for bpf extension.
Patch 1-4 and 6-11 can use an extra "bpf:" tag in the subject line. Patch 13 should be "selftests/bpf:" instead of "bpf:" in the subject.
Please revisit the commit messages of this patch set to check for outdated comments from the earlier revisions. I may have missed some of them.
Overall, it looks close. I will review at your replies later. Willem, could you also take a look? Thanks.