![为什么某些 TCP 连接非常慢,除了在路由器上运行数据包捕获时?](https://linux22.com/image/784626/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%9F%90%E4%BA%9B%20TCP%20%E8%BF%9E%E6%8E%A5%E9%9D%9E%E5%B8%B8%E6%85%A2%EF%BC%8C%E9%99%A4%E4%BA%86%E5%9C%A8%E8%B7%AF%E7%94%B1%E5%99%A8%E4%B8%8A%E8%BF%90%E8%A1%8C%E6%95%B0%E6%8D%AE%E5%8C%85%E6%8D%95%E8%8E%B7%E6%97%B6%EF%BC%9F.png)
我的 MikroTik RouterBOARD hEX - RB750Gr3(运行路由器操作系统 7.8)遇到了一个奇怪的问题。
某些 TCP 连接非常慢,例如这个 93 KB 的文件需要很长时间才能从路由器 LAN 中的客户端下载:
curl https://gewerbeauskunft.bremen.de/navigaweb/res/themes/System_09.12.06/js/jquery-1.11.3.min.js > /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 95957 0 95957 0 0 1998 0 --:--:-- 0:00:48 --:--:-- 1279
耗时48秒!
该问题可重现,且也会发生在同一 LAN 上的其他客户端上。
但是,在路由器本身上获取文件很快:
[admin@MikroTik] > /tool/fetch url="https://gewerbeauskunft.bremen.de/navigaweb/res/themes/System_09.12.06/js/jquery-1.11.3.min.js"
status: finished
downloaded: 93KiB-z pause]
total: 0KiB
duration: 1s
所以我想看看发生了什么,并开始在路由器上捕获数据包:
[admin@MikroTik] /tool/sniffer> set filter-dst-ip-address="141.91.174.108"
[admin@MikroTik] /tool/sniffer> start
然后在我的一个客户端上再次运行上面的 curl 命令:
curl https://gewerbeauskunft.bremen.de/navigaweb/res/themes/System_09.12.06/js/jquery-1.11.3.min.js > /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 95957 0 95957 0 0 444k 0 --:--:-- --:--:-- --:--:-- 457k
令我惊讶的是,它立即就完成了。停止数据包捕获后,它又变慢了。我多次重现了这种情况,以确保这不是巧合。
这里发生了什么?
答案1
可能是由 MikroTik 的 Fasttrack 功能引起的。尝试禁用 中的任何 Fasttrack 规则/ip/firewall
。