FAQ-以太网自协商的详细过程

发布时间:  2015-02-13 浏览次数:  524 下载次数:  0
问题描述
Q:以太网自协商的详细过程
解决方案
A:
自协商机制有两种,一种称为:Autonegotiation,另一种称为:Autosensing/Speed Detection。

Autonegotiation包含以下要点:

标准的协商速度的握手机制,自动配置到最可能的连接(也就是100M全双工之类),能够和旧的或不支持自协商的设备互连。

Autosensing/Speed Detection包含以下要点:

仅仅自动配置到10M或100M,而不作双工设置。

10BASE-T的以太网接口(它只支持10M,不支持自协商)在链路UP之前会发送Link Test Pulse(LTP),该脉冲用以检测链路是否应该UP;而100BASE-T以太网接口(它只支持100M,不支持自协商)在链路UP之前会发送FAST ETHERNET IDLE流,用以检测链路是否应该UP。

支持自协商(Autonegotiation)的以太网接口则在链路UP之前发送FLP,FLP实际上是一组LTP和数据脉冲的组合,它们表明一种含义:例如我支持100M全双工。较旧的设备例如10BASE-T仍然将这些FLP识别为LTP,而自协商设备则能够识别FLP的含义并通过交互这种握手信息来使链路成为最优配置。如果自协商设备看到有一般的LTP(不是有特定含义的FLP)输入,它就将本端设置为10M半双工。如果自协商设备看到有FAST ETHERNET IDLE输入,它就将本端设置为100M半双工。以上所述的自协商机制只对10/100兆铜缆接口或千兆光/电口有效,100BASE-FX不支持自协商。

下面举例说明10/100M自协商的过程:

如图1所示,两台支持自协商的设备互连。

图1 两台支持自协商的设备互连示意图


设备A和设备B都向外发送FLP,每台设备收到对端的FLP后在自己的FLP中将确认BIT置位,然后每台设备将自己的速率和双工设置为双方都支持的最优模式,并开始发送FAST ETHERNET IDLE,然后链路就UP了。

如图2所示,一台自协商设备和10BASE-T设备互连。

图2 一台自协商设备和10BASE-T设备互连示意图


设备A向外发送FLP,而设备B发送普通LTP。设备A“平行检测”到对端的LTP后,将本端置为10M半双工。这种情况有个危险情况,就是当B是10M全双工时,A协商的结果也是10M半双工。

如图3所示,一台自协商设备和100BASE-T设备互连。

图3 一台自协商设备和100BASE-T设备互连示意图


设备A向外发送FLP,而设备B发送FAST ETHERNET IDLE。设备A“平行检测”到对端的IDLE后,将本端置为100M半双工,并开始发送FAST ETHERNET IDLE。这种情况有个危险情况,就是当B是100M全双工时,A协商的结果也是100M半双工。

如图4所示,自协商引起的双工不匹配。

图4 两自协商引起的双工不匹配示意图


设备A是自协商状态,设备B虽然支持自协商,但却被设置为100M全双工,并且关闭自协商功能。故设备A发送FLP,而设备B发送FAST ETHERNET IDLE。设备A收到设备B的IDLE后就将本端设置为100M半双工,而设备B是强制的100M全双工,所以会出现下列问题:如果设备A和设备B同时发送一帧,设备A会认为发生了冲突并破坏自己发送的帧并丢弃设备B的帧,然后试图重发自己的帧。而设备B则不会重发帧,并将设备A的帧看作是corrupted帧。所以设备A这一侧会纪录很多Late Collisions,而设备B则会纪录很多CRC ERROR帧。

如图5所示,错误配置引起的连接不UP。

图5 错误配置引起的连接不UP案例示意图


设备A被配置为100M全双工并使能自协商,设备B被配置为100M半双工(或仅仅是半双工)并使能自协商。每台设备都收到对端的FLP但由于双工不匹配又无法更改本地的状态,所以链路不会UP。

自协商设备和Autosensing设备的互操作。

Autosensing设备不使用FLP,且将FLP识别为LTP。Autosensing设备初始时总是发送FAST ETHERNET IDLE,但是当收到了LTP或FAST ETHERNET IDLE后,本端会改变发送的脉冲,即收到了LTP,本端就发送LTP,收到了FAST ETHERNET IDLE,本端继续发送FAST ETHERNET IDLE。这就有下列情况:设备A是自协商设备,设备B是Autosensing设备。初始设备A发送FLP,设备B发送FAST ETHERNET IDLE,设备A收到FAST ETHERNET IDLE后将本端设置为100M半双工,并开始发送FAST ETHERNET IDLE;设备B肯定先收到A的FLP并将其识别为LTP,同时将本端设置为10M半双工,同时发送LTP。链路UP(设备A以后发送的FAST ETHERNET IDLE都被B认为是垃圾数据,A也可能不理会B的LTP)。这就出现了一端10M,另一端100M的情况。

图6 自协商设备和Autosensing设备的互操作


或者初始设备A发送FLP,设备B发送FAST ETHERNET IDLE,设备B先收到A的FLP并将其识别为LTP,同时将本端设置为10M半双工,并发送LTP;设备A收到B的LTP后并将本端设置为10M半双工,链路UP。

图7 两台支持自协商的设备互连示意图


下面说明1000M自协商的过程:

千兆自协商和10/100兆自协商使用同样的机制,1000BASE-LX和1000BASE-SX使用自协商机制来协商双工和流控。1000BASE-T设备的自协商还会包含附加域(例如是MASTER还是SLAVE)的协商。千兆设备几乎没有半双工的情况(虽然可以协商),所以很多双工的问题都不存在了。

如图8所示,1000BASE-LX和1000BASE-SX自协商和非自协商的互连。

图8 两台支持自协商的设备互连示意图


设备A使能自协商,设备B关闭自协商,这种结果是一端UP,一端DOWN或两端都不UP。

如图9所示,1000BASE-T自协商和非自协商的互连。

图9 1000BASE-T自协商和非自协商的互连示意图


设备A使能自协商,设备B关闭自协商,这种结果是一端UP,一端DOWN或两端都不UP。但设备这种情况可以UP。

说明:
两个互连的电接口,一端设置成强制,一端设置成自协商,电口可以UP。但是强烈建议用户不要这样使用,否则可能会出现报文交互异常的现象。

END