MTU,DSL路由器和拖延TCP

我发现拖延TCP连接问题。 当我尝试从我的家庭networking远程系统scp的东西出现问题。 我的家庭networking通过PPPoE(ADSL +)连接到互联网,一旦我的家庭networking工作,一切正常。 ADSL路由器的MTU设置为1492,但是使用该设置,远程系统的scp无法工作 – 失速! 当我将路由器上的MTU更改为1500时,该scp可以正常工作,但从本地networking访问互联网对于大部分www站点(甚至是本地站点)来说都非常缓慢。 只是想知道问题的存在 – 我的ISP阻止ICMP等? 谢谢!

PPPoE需要8个字节的封装/标题数据,这就是为什么只能在以太网上使用1492字节的MTU。 但通常情况下,这种事情是通过pathMTU协商来整理的。

如果有人阻塞ICMP,则pathMTU协商将不起作用。

您的选项摆脱了PPPoE或更改远程系统上的MTU来处理您的半连接。 是的,我意识到两者都不理想。

一些networking服务器,特别是像Akamai,亚马逊等一些常见的CDN似乎在默认情况下阻止ICMPstream量(这显然是一个非常糟糕的主意)。

我第一次怀疑我的提供商configuration错误,但我已经检查过了(我从互联网主机发送了一些大型数据包到我的DSL路由器,并且在DSL链路之前收到来自路由器的“需要ICMP碎片”的数据包。

显然,我的DSL提供商曾经为所有的客户在他们的接入路由器上进行MSS钳位,但似乎他们已经停止了。

我已经通过在我的DSL路由器上实现MSS钳制来解决这个问题,现在它以一种限制下行链路最大段大小的方式来重写传出的SYN数据包。 启用它的命令是:

iptables -A FORWARD -o ppp0 -p tcp \ --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 

如果你的家庭路由器不支持iptables,你可以通过修改FORWARD到OUTPUT来修改它,使其工作在本地主机上,但是我从来没有尝试过。