关于eBPF TC程序上下文skb的一些“小”坑

2023-12-20 11:55:34 浏览数 (3)

前言

最近在eBPF的TC程序中对TCP的checksum进行重计算,其中遇到了点“小”问题。

问题描述

在重计算checksum后,发现携带payload的报文checksum总是计算错误:

抓包截图抓包截图

刚开始是以为没有考虑末尾单字节,但是代码单独拉出来做单元测试又没有问题。

问题定位

最后把skb->data_end - skb->data看了以下长度,发现这个长度和前面无payload的报文长度一样,最后才发现skb->data_end其实是报文4层网络头的结束位置,而且我计算checksum的结束位置正是skb->data_end,实在是很“坑”,这个命名怎么看都像是...

0 人点赞