大案牍术破案纪实第三篇--我们是如何破解Splice性能下降甚至低于Direct之谜的 #59
Replies: 16 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.
-
看 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.
-
案发及破案过程
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