以太网自协商
0赞一、自动协商模式
自动协商模式是端口根据另一端设备的连接速度和双工模式,自动把它的速度调节到最高的公共水平,即线路两端能具有的最快速度和双工模式。
自协商功能允许一个网络设备能将自己所支持的工作模式信息传送给网络上的对端,并接受对方可能传递过来的相应信息,从而解决双工和10M/100M速率自协商问题。自协商功能完全由物理层芯片设计实现,因此并不使用专用数据包或带来任何高层协议开销。
自动协商标准允许不同以太网标准的设备-从10BasT到1000BaseT,在网络中共存,减少网络不兼容的风险,使以太网可以平滑的向快速以太网和千兆以太网过度。如今网络上存在着10BaseT、100BaseTX和1000BaseT几种技术,都使用同样的RJ-45连接器,存在着电气特性不兼容和使网络中断的风险。随着同轴千兆以太网的出现,网络上需要支持三种速率的设备:10M、100M和1000M。为此IEEE提出一种自动协商技术来消除不同技术之间的接口兼容性问题。
二、协商过程
如今网络上存在着10BaseT、100BaseTX和1000BaseT几种技术,都使用同样的RJ-45连接器,存在着电气特性不兼容和使网络中断的风险。随着同轴千兆以太网的出现,网络上需要支持三种速率的设备:10M、100M和1000M。为此IEEE提出一种自动协商技术来消除不同技术之间的接口兼容性问题。
千兆光口自协商过程:
1.两端都设置为自协商模式
双方互相发送/C/码流,如果连续接收到3个相同的/C/码且接收到的码流和本端工作方式相匹配,则返回给对方一个带有Ack应答的/C/码,对端接收到Ack信息后,认为两者可以互通,设置端口为UP状态。
2.一端设置为自协商,一端设置为强制
自协商端发送/C/码流,强制端发送/I/码流,强制端无法给对端提供本端的协商信息,也无法给对端返回Ack应答,故自协商端DOWN。但是强制端本身可以识别/C/码,认为对端是与自己相匹配的端口,所以直接设置本端端口为UP状态。
3.两端均设置为强制模式
双方互相发送/I/码流,一端接收到/I/码流后,认为对端是与自己相匹配的端口,直接设置本端端口为UP状态
快速链接脉冲(FLPs)和普通链接脉冲(NLPs)
自动协商的执行是通过FLPs来实现的。NLPs是周期为16ms左右的脉冲,脉冲宽度为100ns(10base-T)、10ns(100base-TX)。FLPs类似于NLPs,它是连续的17~33个的脉冲用来传输16bit的连接码(link code word)以进行自动协商,码宽为125us,在125us码宽中间有脉冲为1,无脉冲为0。link code word并不是以太网通信结点的有效数据,只被PHY接口模块识别。
以太网端口电口工作模式简单介绍。
1.以太网口的两端工作模式(10M半双工、10M全双工、100M半双工、100M全双工、自协商)必须设置一致。
2.如果一端是固定模式(无论是10M、100M),另外一端是自协商模式,即便能够协商成功,自协商的那一端也将只能工作在半双工模式。
3.如果一端工作在全双工模式,另外一端工作在半双工模式(包括自协商出来的半双工,也一样处理),Ping是没有问题的,流量小的时候也没有任何问题,流量达到约15%以上时,就会出现冲突、错包,最终影响了工作性能。
4.对于两端工作模式都是自协商,最后协商成的结果是“两端都支持的工作模式中优先级最高的那一类”。
5. 如果A端自协商,B端设置为100M全双工,A协商为100M半双工后,再强制将B改为10M全双工,A端也会马上向下协商到10M半双工;如果A端自协商,B端设置为10M全双工,A协商为10M半双工后,再强制将B改为100M全双工,会出现协商不成功,连接不上!这个时候,如果插拔一下网线,又会重新协商在100M半双工。
当链路两端设备设置的双工模式不匹配,一个全双工一个半双工,链路就会降速。当双方同时发送数据时,会发生以下情况:
半双工设备检测到冲突,导致发送数据失败,丢弃接收的数据,将尝试重新发送数据。
全双工设备不会重发数据,发现接收的数据是错误的,标记CRC错误。
应用层超时并不断重发,导致速率非常低。
以RTL8211为例,在其手册中给出了相应的自协商过程。如下图:
按照如上图所示时序进行数据通信,即可完成自协商。