以太网端口协商总结

  1. 概述:

 

  自动协商模式是端口根据另一端设备的连接速度和双工模式,自动把它的速度调节到最高的公共水平,即线路两端能具有的最快速度和双工模式。

 

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

 

   自动协商的内容主要包括双工模式、运行速率、流控等内容,一旦协商通过,链路两端的设备就锁定在这样一种运行模式下。

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

 

FLP(100BASE-T)介绍:

 

FLP的突发序列中的数据脉冲被用来构成一个16位的链路代码字(LCW)。时钟脉冲仅用于保持时序和数据脉冲的恢复。

 

                 100BASE-T的基本链路代码字的定义

上图定义了自定协商设备之间交换的初始链路代码字中每一位的位置。应在加电、复位或在某种机制要求进行重新协商之后被发送,且在自动协商过程之前必须收到三个相同的链路代码字。

下一页协议由两个消息序列构成。一个是发送消息页,用于表明将要发送的未格式化页的数目和类型;另一个是发送未格式化页,直到传输结束。

                     下一页消息页的编码

M0

M1

M2

M3

M4

M5

M6

M7

M8

M9

M10

T

ACK2

MP

ACK

NP

M0-M10: 消息代码域

T: 0=前LCW中为1,1=前LCW中为0

ACK2: 0=不能与消息兼容,1=与消息兼容

MP: 0=未格式化页,1=消息页

ACK: 0=未收到页,1=收到页

NP: 0=最后一页,1=还有其他页

                         下一页未格式化页的编码

U0

U1

U2

U3

U4

U5

U6

U7

U8

U9

U10

T

ACK2

MP

ACK

NP

U0-U10: 未格式化化代码域

其他的位同上

 

                       1000BASE-X的基本链路代码字的定义

                            PAUSE编码

       

PS1

PS2

功能

0

0

无PAUSE

0

1

发往链路伙伴的不对称PAUSE

1

0

对称的PAUSE

1

1

发往本地设备的不对称的PAUSE

                       

                          远端故障编码

RF1

RF2

功能

0

0

无错误

0

1

离线

1

0

链路失败

1

1

自动协商错误

离线:离线被远端链路伙伴用来通知本地设备它将变成不可用,例如一个将要进入测试状态的设备就可以发出这个信号。由于并不存在关于该设备何时重新变成可用的时间限制,所以当检查到该状态时自动协商有可能无法完成。

 

100BASE-T和1000BASE-X的自动协商之间差别总结

100BASE-T

1000BASE-X

指定只用于使用RJ45连接器的UPT电缆

可工作于使用各种连接器类型的电缆和铜质介质之上

使用带外快速链路脉冲突发序列来交换基本页和下一页信息

使用普通的10B/8B代码字来交换基本页和下一页的信息

在MII中定义了控制和状态寄存器

为千兆位操作而在控制和状态寄存器中定义了其他位

指定了MII管理寄存器0-10(包括100BASE-T2)

为了支持千兆位操作而加入了寄存器15,并定义了扩展状态寄存器

在基本页中定义了一位用于对称PAUSE功能

在基本页中为对称和非对称的PAUSE功能定义了二位

在基本页中定义了一位用于远端故障指示

在基本页中定义了二位用于增强了的远端故障指示

 

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

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

并行检测

为了保证在对端不能支持自协商的情况下也能连接,引入了被称为并行检测(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半双工。

2, 电口的自协商

( 电口对应的协议标准:802.3  CL28,CL40):

1. 如果(对端)有能量过来,自己又是power down,就会发起自协商。

自协商的次数是没法改的。

2. 对于1000BASE-T,自协商功能必须使能。(千兆电口只能使用自协商模式,不能使用强制模式)。两个千兆电口对接时,一端要工作在master模式,另一端则工作在slave模式。Slave一端不使用自己的时钟,而是从接收到的信号中恢复时钟,自己发送信号时就使用恢复出来的时钟。这样,可以有效保证双方的同步。但是,谁当master,谁又当slave呢?这就要通过自协商功能做出裁决。正是因为这个原因,IEEE 802.3ab-1999标准规定,自协商功能是1000BASE-T以太网的必选项。如果手工指定对接双方的master/slave模式,千兆电口也是可以正常工作。

3. 10/100-TX既能工作在强制模式,也能工作在 自协商模式。

4. 在强制100Tx模式下(Forced 100 TX),由于 默认状态下收发的线序是被固定的,因此 互联的两端可能会出现“收—收,发—发”这种情况,当然就会出现不通;解决的方法是:设置 收发自适应功能(MDIX setting)。

5. 普遍而言,博通芯片的电口自协商都能支持“以太网自动降速”(Ethernet@WireSpeed),即:在设定的次数(默认值为5次)协商失败后,降低速率。

 

 

3  SGMII:

 SGMII自协商也遵循802.3 CL37标准;

 PHY(Mater) 发送 “线路侧link状态” 给 MAC(Slave);

 MAC回应 ACK给PHY;

PHY(1000BASE-X端口) 能够自动检测 SGMII-Slave

 

4,光口自协商

对于100BASE-FX(百兆光口),只能工作在强制模式,不支持自协商模式。

   千兆光口可以工作在强制和自协商两种模式。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状态

 

 

5, 端口的快速检测

1, Mac 自动定时扫描phy 寄存器,减轻CPU 压力

2, PHY 中断输出连接到cpu 中断输入引脚,端口状态发生变化时,触发phy中断

3, 对于光口,利用光模块los 信号输出判断端口状态,FPGA 收集 光模块los 信号上报CPU

4, 对于千兆电口  802.3 CL40

 

maxwait_timer

The timer shall expire 750 ms ± 10 ms if config = MASTER or 350 ms ± 5 ms if config = SLAVE.

在MASTER 模式需要750 ms 才能检测到端口 DOWM 状态,为了加快检测速度,一般都会直接扫描 loc_rcvr_status 状态

一般查询PHY register  10  bit  13  Local Receiver Status

5, 利用芯片集成的链路检测协议: OAM/bfd , 检测最小间隔可以配置3.3ms 连续检测3次,10ms 左右就可以发现端口状态改变,并上报中断到CPU .

 

  • 4
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值