![为什么我在 LAN 上(通过交叉!)连接时 TCP 连接延迟很长?](https://linux22.com/image/500459/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E5%9C%A8%20LAN%20%E4%B8%8A%EF%BC%88%E9%80%9A%E8%BF%87%E4%BA%A4%E5%8F%89%EF%BC%81%EF%BC%89%E8%BF%9E%E6%8E%A5%E6%97%B6%20TCP%20%E8%BF%9E%E6%8E%A5%E5%BB%B6%E8%BF%9F%E5%BE%88%E9%95%BF%EF%BC%9F.png)
我测量了连接到同一 Cisco 交换机的两台 Linux 计算机从发送 TCP SYN 到获取 SYN/ACK 大约需要 100-150 毫秒的时间。考虑:
- 机器非常强大,并且它们和交换机的负载都不会很重。
- 通过分析两台机器上的 tcpdumps 日志,我发现问题不在于端点,而在于网络本身(客户端看到 100-150 毫秒的延迟,但服务器在大约 10 毫秒内处理响应)。
- 只有 SYN 请求较慢。之后,正常的 TCP 数据包会立即收到 ACK。
所以,我的问题是:
- 我是不是觉得这太过分了?
- 我应该瞄准什么样的延迟?
- 我该怎么做才能进一步诊断和解决这个问题?
编辑- 我们已将交换机从方程式中移除。两台计算机现在通过交叉电缆连接,但我们仍然看到问题。两台计算机都处于全双工、100 MBPS 状态。
答案1
普通嫌疑犯:
双工不匹配
- 检查开关是否存在碰撞或错误
- 检查主机是否存在冲突或错误
如果发现冲突,则表明该端为半双工,应设置为全双工。如果发现错误,请检查另一端是否有冲突。如果两端都有错误,则可能是电缆有问题。
- DNS 超时
- 登录到一台主机,使用 nslookup 查找另一台主机的 IP。您应该很快就能得到一个名称或错误
答案2
好吧,糟糕。看来我误读了 tcpdump 和 wireshark 日志。我得到的延迟是 100 微秒,而不是毫秒!
替代文本http://ironicsurrealism.blogivists.com/files/2009/10/homer-simpson-doh.gif
答案3
您检查过电缆了吗?电缆损坏和/或接线不良都会导致重试,从而大大增加延迟。
答案4
这似乎是从美国一侧到另一侧的延迟。交换机是否受管理?您可以连接到交换机并检查问题吗?我预计本地网络上的延迟小于 1-2 毫秒