TGTGInsighttelegram intelligenceLIVE / telegram public index
Post content
Post content
tc ingress 丢包和 xdp 丢包在观测性上的区别是前者可以被 tcpdump 看到而后者不能, 但是 tc egress 丢包就完全不同了, 会直接造成 send(2) 返回 -1 with errno == ENOBUFS. 而很多程序对 ENOBUFS 的处理方式是重试, 比如 ping(8). 当然这仅限 fib lookup 直连设备上的 tc egress 丢包, 如果是经过了桥, 路由, 甚至是 veth 的另一端, 都不会造成 ENOBUFS. tc egress 虽然补全了 xdp 单向 hook 的缺点, 但是有可能会造成应用程序 syscall 的行为变化, 这一定要注意.