![为什么我的交换机和路由器之间的链路总是协商半双工模式?](https://linux22.com/image/599597/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%E4%BA%A4%E6%8D%A2%E6%9C%BA%E5%92%8C%E8%B7%AF%E7%94%B1%E5%99%A8%E4%B9%8B%E9%97%B4%E7%9A%84%E9%93%BE%E8%B7%AF%E6%80%BB%E6%98%AF%E5%8D%8F%E5%95%86%E5%8D%8A%E5%8F%8C%E5%B7%A5%E6%A8%A1%E5%BC%8F%EF%BC%9F.png)
我有一台 Cisco 2950 交换机,它的一个端口连接到我的 ISP 提供的 Internet 路由器;我无法访问路由器配置,但我可以管理交换机。
如果我将所有交换机端口保留为其默认设置(速度和双工模式的自动协商),则此链路始终以 100 MBit/s 的速度连接,但处于半双工模式。
我试过更换电缆,也试过将链路移至另一个交换机端口:结果总是一样。连接到同一端口(或任何交换机端口)的其他设备完全没有问题。
可以猜测有人将路由器配置为仅以半双工模式连接...但是,问题在于:如果我手动强制交换机端口为全双工模式(duplex full
在接口配置中),则链路将启动、保持启动并且完全稳定。
所以:
- 路由器不会强制将连接设置为半双工模式,否则如果我强制交换机端设置为全双工,它根本无法连接。
- 没有实际的链接问题,否则全双工连接将无法建立或至少会出现一些错误。
- 但如果我让端口自由自动协商,它总是以半双工模式连接。
为什么?
答案1
路由器可能设置为全双工或半双工。当一个设备(您的路由器)被强制设置为全双工或半双工时,它会完全停止尝试协商双工。它甚至不会告诉对方它设置成什么。
当另一台设备(您的交换机)没有收到其协商尝试的响应时,它会采用默认的最安全选择,即半双工。
千兆以太网通过不允许全双工以外的任何方式解决了这个问题。
答案2
除了 longneck 提供的答案之外,我还想添加戴尔文档中有关自动协商的这段简介:
非自协商100BaseT设备与自协商设备之间的通信遵循以下步骤:
- DTE 在链路故障模式下启动并传输 FLP。
- 100BaseTX 链路伙伴加电并发送空闲符号。
- DTE 并行检测功能检测空闲符号,绕过自动协商功能,将控制权交给 100BaseTX PMA,并传输空闲。
- 以 100 Mbps 半双工建立链路。
这张图显示了可能的链接状态:
答案3
ISP 路由器可能未使用与您的交换机相同的自动协商算法。例如,ISP 路由器可以使用 1995 年的 IEEE 802.3u 以太网标准,其中自动协商的实施是可选的并且部分规范可以进行解释;而您的交换机可能是 UpToDate,并符合 1999 年的 IEEE 802.3 标准。
一个绕过方法是购买与该路由器同一制造商的交换机,并希望(在这个新交换机中)找到与该 ISP 路由器使用的相同的自动协商算法。