### 认识自协商——自协商的工作机理
#### 前言
随着网络技术的发展,以太网作为最常用的数据通信技术之一,其自协商能力成为了解决不同设备之间连接兼容性问题的重要手段。然而,在实际应用中,经常会遇到一端开启自协商功能而另一端关闭的情况,导致协商结果不符合预期。例如,当A端口开启自协商功能而B端口关闭自协商功能且被设置为100M全双工模式时,A端口可能会被协商为100M半双工模式,而非我们期望的100M全双工模式。本文将深入探讨自协商的工作原理,解释为什么会出现这种现象。
#### 自协商工作机理
自协商是通过快速连接脉冲(Fast Link Pulse, FLP)信号实现的。具备自协商能力的端口会在没有连接(Link)的情况下持续发送FLP信号,该信号中包含了端口的能力信息,包括支持的速率、双工模式、流控能力等。这些信息来源于自协商能力寄存器(Auto-Negotiation Advertisement Register, ANAR),位于PHY标准寄存器地址4。
- **FLP的编码方式**:FLP采用脉冲位置编码的方式携带数据,每个FLP突发包含33个脉冲位置。其中,17个奇数位置为固定的时钟脉冲,用于同步;16个偶数位置用于表示数据,有脉冲表示1,无脉冲表示0。这意味着每次FLP突发可以传输16比特的数据。
- **自协商过程**:如果两端都支持自协商,则它们能够接收到对方的FLP信号,并解码出对方的连接能力。这些信息会被记录在自协商对端能力寄存器(Auto-Negotiation Link Partner Ability Register, ANLPAR,PHY标准寄存器地址5)中。一旦自协商完成,端口的状态寄存器(PHY标准寄存器地址1)中的自协商完成标志(bit5)会被置1。
- **连接选择**:双方根据自身与对方的最大连接能力选择最优的连接方式。例如,如果双方都支持10M和100M速率以及全双工和半双工模式,则会按照较高的100M速率和全双工模式进行连接。
一旦建立了确定的连接,FLP信号就会停止发送,除非链路中断或收到自协商重启命令。
#### 并行检测
并行检测(Parallel Detection)是一种辅助机制,确保在对端设备不支持自协商的情况下仍能建立连接。
- **10M设备**:如果对端设备仅支持10M速率且不支持自协商,则会发送普通连接脉冲(Normal Link Pulse, NLP),表明设备存在但不包含其他信息。
- **100M设备**:如果对端设备支持100M速率且不支持自协商,则会在没有数据传输时发送4B/5B编码的空闲符号(Idle Symbol)。
具备自协商能力的设备会检测是否有NLP或4B/5B编码的空闲符号。如果检测到NLP,则表明对方支持10M速率;如果检测到4B/5B编码的空闲符号,则表明对方支持100M速率。在这种情况下,由于无法获取对端设备的双工模式和流控能力等信息,所以默认为对方仅支持半双工模式,不支持全双工模式及流控帧。
根据802.3协议的规定,通过并行检测建立连接后,PHY状态寄存器(PHY标准寄存器地址1)的自协商完成标志(bit5)应置为1。此时,本地自协商能力寄存器(地址4)和对端自协商能力寄存器(地址5)应包含有意义的信息。因此,寄存器5中的数据需要更新:
- 如果建立的连接为10M,则寄存器5的10M能力标志(bit5)置1,其他标志置0,表明对端仅支持10M半双工模式。
- 如果建立的连接为100M,则寄存器5的100M能力标志(bit7)置1,其他标志置0,表明对端仅支持100M半双工模式。
#### 结论
通过对自协商及其相关机制的理解,我们可以更好地解释为什么当一端开启自协商功能而另一端关闭时,协商结果可能与预期不符。并行检测机制虽然有助于在对端设备不支持自协商的情况下建立连接,但也限制了连接的能力,特别是对于双工模式的选择。了解这些原理有助于我们在部署网络时做出更合理的决策。
2025-07-19 22:53:14
69KB
认识自协商
1