光口与电口自协商的区别 下载本文

802.3标准中定义自动协商功能:它允许一个设备向链路远端的设备通告自己所运行的工作方式,并且侦测远端通告的相应的运行方式。自动协商的目的是给共享一条链路的两台设备提供一种交换信息的方法,并自动配置它们工作在最优能力下。

照字面上来讲,自动协商就是一种在两台设备间达到可能的最大传输速率的方式。它允许设备用一种方式“讨论”可能的传输速率,然后选择双方可接受的最佳速率。它们使用叫做快速链路脉冲的FLP交换各自传输能力的通告。FLP可以让对端知道源端的传输能力是怎样的。当交换FLP时,两个站点根据以下从高到低的优先级侦测双方共有的最佳方式。

? 1000BASE-T全双工 ? 1000BASE-T ? 100BASE-T2 全双工 ? 100BASE-TX 全双工 ? 100BASE-T2 ? 100BASE-T4 ? 100BASE-TX ? 10BASE-T 全双工 ? 10BASE-T

例如,A和B正在自动协商,并且A具有10/100/1000全半双工的能力,但是B只有10/100全半双工的能力,这样双方共有的最高链路能力为100,全双工。一旦双方进行自动协商,链路就会运行在双方能够支持的最佳能力下。 自动协商会产生什么问题?

有关自动协商的大多数问题是由于有一方没有工作在自动协商方式。当一个站点工作在自动协商方式而另一方没有时,只有一方发送快速链路脉冲。另一方已经设定在特定的速率和双工方式下,这样就不会跟对端进行协商。他已经被强行设定,就不会再考虑他连接端的工作方式。

由于强行设定的站点不会告诉正在协商的站点自己的速率和单双工方式,自动协商的站点就必须自己决定合适的速率和单双工方式来匹配对端,这叫做平行检测。协商站点监听从对端过来的链路脉冲能够辨别通信速率。10,100和1000Mbs以太网使用不同的信号方式,所以协商站点能识别对端的工作速率。 然而,全半双工又是另外一回事了。因为强行设定的站点不进行协商,协商站点没有方法知道强行设定站点工作在哪种双工方式下。协商站点为了避免全半双工不匹配,根据802.3标准,它必需与强行站点使用相同的速率,但是工作在半双工方式下。不管速率如何(除了10Gig),半双工是以太网的默认方式。在许多情况下,这会产生全半双工不匹配问题。

为了两端都达到全双工方式,要么两端都自动协商,要么两端都强行设定。

务必不要一端自动协商,另一端强行设定。这会导致双工不匹配。建议把两端设置留在自动协商以减少人为错误。

怎样才能知道全半双工不匹配问题?

双工不匹配会在链路上产生冲突,因为一端可以同时发和收而另一端不能。全双工站点不可能和半双工站点很好的工作。在半双工站点一侧会产生冲突。受影响端口的重传,差的吞吐率和高错误数会损害链路性能。

上面说了那么多,都是对电口而言。

电口自协商原理

是:自动协商模式是端口根据另一端设备的

连接速度和双工模式,自动把它的速度调节到最高的公共水平,即线路两端能具有的最快速度和双工模式。

自协商功能允许一个网络设备能够将自己所支持的工作模式信息传达给网络上的对端,并接受对方可能传递过来的相应信息,从而解决双工和10M/100M速率自协商问题。自协商功能完全由物理层芯片设计实现,因此并不使用专用数据包或带来任何高层协议开销。

自协商功能的基本机制是:每个网络设备在上电、管理命令发出、或是用户干预时发出FLP(快速连接脉冲),协商信息封装在这些FLP序列中。FLT中包含有时钟/数字序列,将这些数据从中提取出来就可以得到对端设备支持的工作模式,以及一些用于协商握手机制的其他信息。当一个设备不能对FLP作出有效反应,而仅返回一个NLP(普通连接脉冲)时,它被作为一个10BASE-T兼容设备。 快速链路脉冲FLP和普通链路脉冲NLP都仅使用于非屏蔽双绞线上,而不能应用在光纤媒体。

自动协商的内容主要包括双工模式、运行速率、流控等内容,一旦协商通过,链路两端的设备就锁定在这样一种运行模式下。1000M以太网也支持自协商,在此从略。

电口和光口自协商主要区别是在OSI 中它们所处的位置不同。对于电口来说,协商发生在链路信号传输之前;对于光口来说, 自协商机制与PCS在同一层, 这意味着光口的协商必须先建立链路同步以后才可以进行协商。

协商过程

如果两端都支持自协商,则都会接收到对方的FLP,并且把FLP中的信息解码出来。得到对方的连接能力。并且把对端的自协商能力值记录在自协商对端能力寄存器中(Auto-Negotiation Link Partner Ability Register , PHY标准寄存器地址5 )。同时把状态寄存器(PHY标准寄存器地址1)的自协商完成bit(bit5)置成1。在自协商未完成的情况下,这个bit一直为0。

然后各自根据自己和对方的最大连接能力,选择最好的连接方式Link。比如,如果双方都即支持10M也支持100M,则速率按照100M连接;双方都即支持全双工也支持半双工,则按照全双工连接。

一定连接建立后,FLP就停止发送。直到链路中断,或者得到自协商Restart命令时,才会再次发送FLP。

为了保证在对端不能支持自协商的情况下也能连接,引入了被称为并行检测(Parallel Detection)的机制。在一端打开自协商,另一端关闭自协商的情况下,连接的建立就依靠并行检测功能实现。

并行检测机制是这样的:在具有自协商能力的设备端口上,如果接收不到FLP,则检测是否有10M链路的特征信号或100M链路的特征信号。

如果设备是10M设备,不支持自协商,则在链路上发送普通连接脉冲(Normal Link Pulse)简称NLP。NLP仅仅表示设备在位,不包含其它的额外信息。NLP脉冲如图:

如果是100M设备,不支持自协商,则在没有数据的情况下,在链路上一直发送4B/5B编码的Idle符号。

并行检测机制如果检测到NLP,则知道对方支持10M速率;如果检测到4B/5B编码的Idle符号,则知道对方支持100M速率。但是对方是否支持全双工、是否支持流控帧这些信息是无法得到的。因此在这种情况下,认为对方只支持半双工,不支持全双工,且不支持流控帧。

基于以上原理,在对端不打开自协商时,打开自协商的一方只能协商成半双工模式。

802.3协议规定,通过并行检测建立连接后,PHY的状态寄存器(PHY标准寄存器地址1)的自协商完成bit(bit5)依然要置位成1,尽管链路上并非使用了真正的自协商操作。同时规定在自协商完成bit

为1的情况下,本地自协商能力寄存器(PHY标准寄存器地址4)和对端自协商能力寄存器(PHY标准寄存器地址5)是有意义的。所以,要把寄存器5中的数据更新。如果建立的连接为10M,则寄存器5的10M能力bit(bit5)置1,其它bit置0,表示对端只能支持10M半双工;如果建立的连接为100M,则寄存器5的100M能力bit(bit7)置1,其它bit置0,表示对端只能支持100M半双工。

千兆光口自协商

千兆光口可以工作在强制和自协商两种模式。802.3规范中千兆光口只支持1000M速率,支持全双工(Full)和半双工(Half)两种双工模式。

自协商和强制最根本的区别就是两者再建立物理链路时发送的码流不同,自协商模式发送的是/C/码,也就是配置(Configuration)码流,而强制模式发送的是/I/码,也就是idle码流。

千兆光口自协商过程: 1.两端都设置为自协商模式

双方互相发送/C/码流,如果连续接收到3个相同的/C/码且接收到的码流和本端工作方式相匹配,则返回给对方一个带有Ack应答的/C/码,对端接收到Ack信息后,认为两者可以互通,设置端口为UP状态

2.一端设置为自协商,一端设置为强制

自协商端发送/C/码流,强制端发送/I/码流,强制端无法给对端提供本端的协商信息,也无法给对端返回Ack应答,故自协商端DOWN。但是强制端本身可以识别/C/码,认为对端是与自己相匹配的端口,所以直接设置本端端口为UP状态

3.两端均设置为强制模式

双方互相发送/I/码流,一端接收到/I/码流后,认为对端是与自己相匹配的端口,直接设置本端端口为UP状态