为什么某些 TCP 连接非常慢,除非在路由器上运行数据包捕获?

aar*_*nk6 1 mikrotik routeros tcp

我的 MikroTik RouterBOARD hEX - RB750Gr3(运行 Router OS 7.8)有一个奇怪的问题。

\n

某些 TCP 连接非常慢,例如这个 93 KB 文件需要很长时间才能从 router\xe2\x80\x99s LAN 中的客户端下载:

\n
curl https://gewerbeauskunft.bremen.de/navigaweb/res/themes/System_09.12.06/js/jquery-1.11.3.min.js > /dev/null\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100 95957    0 95957    0     0   1998      0 --:--:--  0:00:48 --:--:--  1279\n\n
Run Code Online (Sandbox Code Playgroud)\n

花了48秒!

\n

这是可重现的,并且也会发生在同一 LAN 上的其他客户端上。

\n

然而,在路由器本身上获取文件速度很快:

\n
[admin@MikroTik] > /tool/fetch url="https://gewerbeauskunft.bremen.de/navigaweb/res/themes/System_09.12.06/js/jquery-1.11.3.min.js"\n      status: finished\n  downloaded: 93KiB-z pause]\n       total: 0KiB\n    duration: 1s\n
Run Code Online (Sandbox Code Playgroud)\n

所以我想看看\xe2\x80\x99s发生了什么,并开始在路由器上捕获数据包:

\n
[admin@MikroTik] /tool/sniffer> set filter-dst-ip-address="141.91.174.108"\n[admin@MikroTik] /tool/sniffer> start\n
Run Code Online (Sandbox Code Playgroud)\n

然后在我的一个客户端上再次运行上面的curl命令:

\n
curl https://gewerbeauskunft.bremen.de/navigaweb/res/themes/System_09.12.06/js/jquery-1.11.3.min.js > /dev/null\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100 95957    0 95957    0     0   444k      0 --:--:-- --:--:-- --:--:--  457k\n
Run Code Online (Sandbox Code Playgroud)\n

令我惊讶的是,它立刻就结束了。停止抓包后,又变慢了。我\xe2\x80\x99已经重复了很多次,以确保它\xe2\x80\x99s不是巧合。

\n

这里发生了什么\xe2\x80\x99s?

\n

不确定是否相关,但可能值得注意的是,互联网连接是通过 MTU 为 1492 的 PPPoE 隧道建立的。但是,MSS 钳位已启用并且似乎工作正常。我可以看到 MMS 值从 1460 减少到 1452:

\n
1   0.000000    192.168.88.218  141.91.174.108  TCP 78  56741 \xe2\x86\x92 443 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=64 TSval=1863267890 TSecr=0 SACK_PERM\n2   0.000029    192.168.88.218  141.91.174.108  TCP 78  [TCP Retransmission] [TCP Port numbers reused] 56741 \xe2\x86\x92 443 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=64 TSval=1863267890 TSecr=0 SACK_PERM\n3   0.000154    79.213.184.215  141.91.174.108  TCP 78  56741 \xe2\x86\x92 443 [SYN] Seq=0 Win=65535 Len=0 MSS=1452 WS=64 TSval=1863267890 TSecr=0 SACK_PERM\n
Run Code Online (Sandbox Code Playgroud)\n

我还用 MTU 设置为 1450 的客户端进行了测试,仍然存在同样的问题。

\n

小智 5

可能是由 MikroTik\xe2\x80\x99s Fasttrack 功能引起的。尝试禁用 中的任何 Fasttrack 规则/ip/firewall

\n