以太网的自协商
自动协商的目的
最早的以太网都是10M半双工的,所以需要CSMA/CD等一系列机制保证系统的稳定性。随着技术的发展,出现了全双工,接着又出现了100M,以太网的性能大大改善。但是随之而来的问题是:如何保证原有以太网络和新以太网的兼容?
于是,提出了自动协商技术来解决这种矛盾。自动协商的主要功能就是使物理链路两端的设备通过交互信息自动选择同样的工作参数。自动协商的内容主要包括双工模式、运行速率以及流控等参数。一旦协商通过,链路两端的设备就锁定在同样的双工模式和运行速率。
以太网速率双工自协商在如下标准中定义:
百兆以太网标准:IEEE 802.3u
IEEE 802.3u规范将自协商作为可选功能。
千兆以太网标准:IEEE 802.3z
IEEE 802.3z规范将自协商作为强制功能,所有设备必须遵循并且必须默认启用自协商。
自动协商原理
自动协商是网络设备间建立连接的一种方式。它允许一个网络设备将自己所支持的工作模式信息传达给网络上的对端,并接受对端可能传递过来的信息。设备双方根据彼此工作模式信息的交集,按照双方都支持的最优工作模式建立连接。
对于使用双绞线连接的以太网,如果没有数据传输时,链路并不是一直空闲,而是每隔16ms发送一个高脉冲,用来维护链路层的连接,这种脉冲成为NLP(Normal Link Pulse)码流。在NLP码流中再插入一些频率更高的脉冲,可用来传递更多的信息,这串脉冲成为FLP(Fast Link Pulse)码流,如图1-3所示。自协商功能的基本机制就是将协商信息封装进FLP码流中,以达到自协商的目的。
对于使用光模块和光纤连接的以太网,与使用双绞线连接的以太网类似,也是靠发送码流来进行自协商的,这种码流称为C码流,也就是配置(Configuration)码流。与电口不同的是,光口一般不协商速率,并且一般工作在双工模式,所以自协商一般只用来协商流控。
如果协商通过,网卡就把链路置为激活状态,可以开始传输数据了。如果不能通过,则该链路不能使用。
如果有一端不支持自动协商,则支持自动协商的一端选择一种默认的方式工作,一般情况下是10M半双工模式。
自协商完全由物理层芯片设计实现,IEEE 802.3规范要求在下列任一情况下启动自协商:- 链路中断后恢复
- 设备重新上电
- 任何一端设备复位
- 有重新自协商(Renegotiation)请求
除此之外,连接双方并不会一直发送自协商码流。自协商并不使用专用数据包或带来任何高层协议开销。
接口的自动协商规则
当接口对接时,双方能否正常通信和两端接口设置的工作模式是否匹配相关。- 当两端接口都工作在相同类型的非自协商模式时,双方可以正常通信。
- 当两端接口都工作在自协商模式时,双方通过协商可以正常通信,最终的协商结果取决于能力低的一端,通过自协商功能还可以协商流量控制功能。
当两端接口一端的工作模式为自协商,对端为非自协商时,接口最终协商的工作模式和对端设置的工作模式相关。