AX88179的IPv6 UDP校验和卸载bug

昨天在和同学调试时, 发现同学的路由器偶尔能收到一些UDP校验和错误的RIPng报文。我一开始觉得是同学代码有bug, 但是仔细查看了校验和计算相关逻辑, 都没有发现任何问题。今天, 经抓包, 我发现我主机发出的UDP校验和没有任何问题。然而, 用另一个主机抓包, 我又发现我的USB网卡(AX88179芯片)发出的UDP校验和本身就是错的, 这说明是这个芯片的UDP校验和卸载的问题。具体而言, 这个出错的UDP报文的校验和字段是ffff, 但芯片的UDP校验和卸载将其改成了0000。这是不对的, 因为IPv6的UDP要求, 如果算出来的校验和是0000, 需要填写ffff0000表示没有校验和, 对于IPv6的UDP不合法。

差点让同学以为自己代码写错了。

注: 关闭发送方校验和卸载的命令为: sudo ethtool --offload <网络接口> tx off

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

本文链接:https://twd2.me/archives/17519QrCode