前一阵子搞TAP设备,学了一点以太网自协商,怕忘了,整理如下:
1. ANEG简介
Autonegotiation,自协商,为连接在线路两端的端口提供工作方式,使数据传输在最高效的线路上,包括协商速率和双工等信息
ANEG工作在协议栈的层次:先看百兆自协商
再看千兆自协商
注意:千兆电口(1000BASE-T)和千兆光口(1000BASE-[S|L|C]X)自协商层次是不一样的
2 FLP(Fast Link Pulse)
传统的10BASE-T标准中包括了一个链路测试机制来维持链路。在网络空闲(没有数据传输)时,收发器会每隔16ms发送一个100纳秒的正常链路脉冲NLP(Normal Link Pulse),也叫LTP(Link Test Pulse)。
如果在50到150ms内都没有收到数据分组或者NLP,说明链路出现了故障.
自协商是通过link两端交换FLP来实现的,FLP和NLP是兼容的,如下图所示:
自协商功能完全由物理层芯片设计实现,因此并不使用专用数据包或带来任何高层协议开销。
如上图所示,D0,D1,D2....D15这16个FLP组成一个Page,其中就包含自协商信息。下面就讲讲这些Page。
3 Base Page
自协商发的第一个FLP是 Base Page,格式如下所示
比较重要的字段是Technology ability 和 Next Page
Technology ability字段描述本地PHY的能力,注意A0~A7
Next Page字段描述PHY是否有其他功能,是否有Next Page需要交换(Message Page、Unformatted Page)
下面是一个BasePage的示例
4 Next Page
Next Page分为两种:Message Page、Unformatted Page,格式如下:
MP字段:MP为0时,Message Page
MP为1时,Unformatted Page
T字段:用来order the Next Page:1,0,1,0,1,0....
link partner检查它就可以知道收到的Next Page是否乱序,是否丢失
下面是两种Next Page字段的详细定义:
4 GE Master Slave
看IEEE 802.3规范,在两种接口中定义了master/slave:100BASE-T2(无视) 和 1000Base-T(重点)
Master PHY and slave PHY : Within IEEE 802.3, in a 100BASE-T2 or 1000BASE-T link containing a pair of PHYs, the Master PHY that uses an external clock for generating its clock signals to determine the timing of transmitter and receiver operations. It also uses the master transmit scrambler generator polynomial for side-stream scrambling. The Slave PHY that recovers its clock from the received signal and uses it to determine the timing of transmitter operations. It also uses the slave transmit scrambler generator polynomial for side-stream scrambling. Master and slave PHY status is determined during the Auto-Negotiation process that takes place prior to establishing the transmission link. See also: slave Physical Layer (PHY).
具有千兆性能的设备还要确认从哪边的设备取时钟源。因为千兆链路的两端必须同步,所以只有一边的设备(主设备)可以用它的内时钟作为发送数据的基准。另外的一个从设备必须从主设备传送来的数据中提取时钟作为基准。
Master和Slave到底有啥区别,两点不同(网上搜的,搞驱动的意思意思就行了,不用深抠):
(1)发送的时钟不同:Master采用本地时钟发送,Slave采用线路恢复的时钟发送。
(2)发送的扰码多项式不同:
gM(x) =1+x13+x33
gS(x) =1+x20+x33
接收侧的接收解码多项式和发送侧的正好相反,应该和对端发送的一样。
也就是Master的解扰多项式是gS(x) =1+x20+x33;Slave的采用gM(x) =1+x13+x33。
Master和Slave的仲裁方法,搞驱动的就得知道了
Master/Slave通过MII management Register Set的地址0x9 MASTER-SLAVE Control Register来设定
至于Master/Slave协商后的状态,放在地址0xa MASTER-SLAVE Status Register中。
仲裁优先级:
1、 Manually set的最高;
2、 中继设备(repeater device)比终端设备(DTE device)高;
3、 靠同步的Seed来决定;
4、 点背的情况,seed连续好几次都一样,那么重新启动自协商,重新发布Seed
5、并行检测(Parallel Detection)
为了保证在对端不能支持自协商的情况下也能连接,引入了被称为并行检测(Parallel
Detection)的机制。在一端打开自协商,另一端关闭自协商的情况下,连接的建立就依靠
并行检测功能实现。
并行检测机制是这样的:在具有自协商能力的设备端口上,如果接收不到FLP,则检测
是否有10M链路的特征信号或100M 链路的特征信号
有这么一种情况:链路的A端自协商,链路B端强制。
A 端上电,发出FLP; B端不会对FLP做出有效的反应,它只是发NLP(10M)或IDLE(100M)
不管NLP还是IDLE,都不含网口工作方式、能力的信息。
10M时,B端会发曼切斯特二元码;百兆时,A端发MLT3三元码。
所以,A端只能通过链路的码型来判断B端的工作速率,但是却不能判断B的双工模式。
大多数情况下,为了和以前的设备兼容,A端的设备都会采用半双工。
这样就会有duplex mismatch的问题:A端半双工,B端全双工。
链路上数据流量小的时候,如ping,不会有问题,流量一大,丢包就会很严重。
下图说明问题:
阅读(22990) | 评论(0) | 转发(0) |