@
FabricPath @
tkl @
heiher 找到了这封邮件:
https://www.spinics.net/lists/netdev/msg107539.html可见 LRO 在特定情况下是有性能优势的,也可见 iptables 无法使用 LRO 。
但是我忽略了 GRO 的影响。有 GRO 的情况下,LRO 的“边际收益”并不大,更不用说内存拷贝的开销了。
所以 iptables 更快是对的。但原因并不是 iptables 更简单所以一定更快这么简单。
昨天上班时和 Stephen Hemminger 聊了一下这个问题,结论如下:
1. 如果网络不稳定,带宽不太高,那 nginx 等 L4 代理能改善 timing 和 congestion control ,throughput 会更好一点。
2. 这封邮件说的情况可能存在,但肯定是个非常少见的 corner case 。支持 LRO 的设备本来就少,Linux 社区也倾向于废弃 LRO 改用 GRO 。
3. 所以如果是比较干净的网络,那还是用 iptables 更快。
4. 如果想要 nginx 的灵活性,但又想要 iptables 的性能,可以考虑 BPF/XDP 。