大案牍术破案纪实第三篇--我们是如何破解Splice性能下降甚至低于Direct之谜的 #59
Replies: 17 comments 21 replies
-
看了下,官方版纯净的debian系统默认都是0 |
Beta Was this translation helpful? Give feedback.
-
很棒,很有耐心👍 |
Beta Was this translation helpful? Give feedback.
-
什么场景下路由器会不需要转发呢,旁路由? |
Beta Was this translation helpful? Give feedback.
-
后续1: |
Beta Was this translation helpful? Give feedback.
-
目前的结论:
2.如必须要设置此参数(如在主路由上),那么同设备上的xray的流控模式建议为
|
Beta Was this translation helpful? Give feedback.
-
今天刚开始尝试新魔法,晚上在软路由上调试,换了splice之后感觉确实不如Direct快,还以为是网络波动。恰好看到这个帖子,破案了。 我的OWRT,配置写在/etc/sysctl.d/10-default.conf里,ipv4和v6都是1 |
Beta Was this translation helpful? Give feedback.
-
在我的单网卡 openwrt 旁路由上如果加上下面两条指令,旁路由下的设备无法访问网络,旁路由自身可以正常联网;去掉后则恢复正常。枯了😭
|
Beta Was this translation helpful? Give feedback.
-
Hi,请教一下大佬, |
Beta Was this translation helpful? Give feedback.
-
软路由下Splice没卵用的话,那50%的用户要告别Splice了 |
Beta Was this translation helpful? Give feedback.
-
如果使用iptables分流的话还是需要内核转发的,比如我直接用iptables+geoip进行转发 |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
看 CloudFlare 这篇博文时看到作者也遇到过 搜了下开启 IP forwarding 会导致 Large Receive Offload (LRO) 无法使用,从 RedHat 文档 来看只有 LRO 会受影响,所以或许性能问题与此相关?
一个判断是否与 LRO 有关的思路:在关闭 forwarding 的状态下,强制关闭网卡 LRO 然后测试性能,看是否有性能下降。 我手头目前没有方便做测试的环境,所以不好意思不能测试后给结论。 |
Beta Was this translation helpful? Give feedback.
-
N1旁路由模式,关闭转发会导致国内无法上网,转发应该还是影响nat |
Beta Was this translation helpful? Give feedback.
-
我用斐讯N1刷OPENWRT做,旁路由,xray设置成TPROXY方式,关闭了转发之后, 客户端不管国内还是国外, 都无法上网, 如果我使用直连国内模式的话(iptables + ipset实现),国内的网站不影响, 国外的域名就挂掉, 而N1自身无论用何种方式, 国内外都不受影响. |
Beta Was this translation helpful? Give feedback.
-
今天发现接入另一个网段的摄像头连不上群晖了,排查了好久,才发现是ip转发的问题。还是弄不清楚ip转发具体含义,透明代理里防火墙不是设置好私有ip地址return了吗??? |
Beta Was this translation helpful? Give feedback.
-
请教下大佬,根据您的实验结果,NAT表是空的,开ip转发影响性能吗?如果不开ip转发,那么透明代理下的局域网设备ping不通外网,这个怎么解决? |
Beta Was this translation helpful? Give feedback.
-
想知道测试的时候内核版本是多少? tcp: fix delayed acks behavior for SO_RCVLOWAT(796f82eafc) tcp: fix SO_RCVLOWAT and RCVBUF autotuning(d1361840f8) 我自己 A(iperf3客户端) - B(使用splice) - C(iperf3服务端)开启或关闭IP转发性能没有明显差异, CPU占用情况也是如此 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
案发及破案过程
splice上线以后,陆陆续续有一些用户反映"splice模式为什么比direct还慢",但也有用户觉得"没有这个问题啊"
这个谜案一直未解.
反复测试后终于偶然复现了这个现象.
在测试透明代理的测试环境里,偶然发现了splice模式居然真的比direct还慢!
首先怀疑是硬件问题,使用同样硬件copy同样程序版本和配置,测速正常.
于是快照出问题的vps,重装系统,测速正常.
恢复快照,测速也正常!(震惊.jpg)
(其实此时相当于已重启了机器)
(测试vps这几天主要是用来测试各种透明代理模式的,做过增加iptables规则的改动,但已清除.)
于是增加同样iptables,测速依旧正常.
百思不得其解(
我到底做了什么导致这个)之后....开始翻看历史命令(我tm到底做了什么)....逐条翻看验证.....
我tm直接哭了.jpg
发现有一句 曾经执行过 sysctl -w net.ipv6.conf.all.forwarding=1 相当可疑(重启后则失效)
遂执行并测速,发现果然是元凶!
结案陈词
至此迷案基本告破,再经过若干回合,深入破解后,结论如下
更多的研究:
受影响的用户只存在于软路由,因为硬路由都有HARDWARE NAT.
关于HARDWARE NAT的相关测试证明,HARDWARE NAT把NAT交给了独立硬件,大大减少了抢占CPU,因此硬路由上,NAT不会对Xray性能造成影响.
至此可以得出结论:
开启了此设置的软路由用户中有一部分觉得"splice模式比direct还慢",而没有开启此设置的软路由用户觉得正常.
关于这个设置的转发是什么作用,何时需要何时不需要,请见ip_forward与路由转发
建议解决方案
额外补充测试
特别致谢
感谢文学大湿 瓜瓜 给我起的标题
& 所有提供测试反馈的TG群友们
Beta Was this translation helpful? Give feedback.
All reactions