Auto Negotiation - awokezhou/communication GitHub Wiki
Summary
在今天的计算机网络中,AN(Auto-Negotiation,自协商)是一种非常重要的即插即用技术。AN作为一种算法被定义在 IEEE 802.3 Section 28 中,并于1997年首次作为 IEEE 802.3u standard Fast Ethernet 的一部分被包含。AN非常好的后向兼容了以前的协议标准。在1999年推出的IEEE 802.3ab standard Gigabit Ethernet 中,AN被增强用以支持千兆以太网。
AN为在同一个传输媒介上的两台网络设备共同协商速率(speed)、双工模式(duplex)和控制方式定义了很好的协议。其存在于ISO/OSI协议层的PHY层,由软件、硬件或软硬件共同实现。
MDI(Medium Dependent Interface)
MII(Media Independent Interface)
AUTONEG(Auto-Negotiation)
PCS(Physical Coding Sublayer)
PMA(Physical Medium Attachment)
PHY(Physical Layer Device)
PMD(Physical Medium Dependent)
AN可以通过PMA的业务接口消息PMA_LINK.request和PMA_LINK.indicate和PMA层通信
AN简介
为什么使用AN
在AN还未出现以前,有两个阶段。第一个阶段是单速率,即100Mb/s速率标准还未推出,以太网速率统一为10Mb/s,这时两个设备放在一起,它们可以工作,但是如果双工模式不匹配,会有很多丢包。第二个阶段是多速率,即100Mb/s推出后,甚至是Gigabit速率推出后,需要手动对通信双方的速率和双工模式进行配置,如果不匹配,网络无法连通。
IEEE 802.3u 100Mb/s和IEEE 802.3ab standard Gigabit Ethernet推出后,网络设备工作在多种多样的速率和双工模式下,每种都有自己的信令类型,比如10BASE-T Half和Full Duplex模式使用曼彻斯特编码,100BASE-TX Half和Full模式使用三电平编码,100BASE-T4使用8BT6编码,100BASE-T2使用2dPAM-5编码,1000BASE-T Half和Full模式使用4dPAM-5编码。由于不同速率不同双工不同速率和双工模式之间使用不同的编码格式和信令,它们无法直接进行通信。
设备的速率和双工模式变得越来越多,越来越复杂,为什么要让用户来配置这么麻烦的事情?复杂的配置已经把用户搞得晕头转向,更不用说要配置48 port或者96 port 交换机的网络管理人员!设计一种在通信双方自动协商出最佳速率最佳双工模式的协议,可以大大减少用户和网络管理者的配置工作,也减少配置出错的可能性。
什么是AN
操作模式
网络设备在连接到媒介后,会自动与对端设备交换一些管理信息,这些信息主要是由每个设备的操作模式构成的,操作模式包括以下内容
-
速率,10BASE-T/100BASE-TX/1000BASE-T/10GBASE-T/…
-
双工,Full Duplex/Half Duplex
-
Pause模式,同步/异步
-
etc
设备将会发送自己的操作模式,接收对端的操作模式,并决定最佳的操作模式
与MAC层的接口
MAC层通过MII接口对PHY层的工作进行管理(关于MII接口详见MAC和PHY),而AN处于PHY的底部,自然也要受到MAC的管理。
PHY层对AN的管理位于PCS层,通过一些和自协商相关的寄存器对PHY层的自协商进行配置,位于更高层的MAC可以通过MDC/MDIO接口对PHY层的自协商寄存器进行配置以管理PHY的自协商工作
若干个PHY层的AN寄存器存储着本设备的操作模式信息,这些寄存器也控制着设备的重新协商以及PMAs的开关。这些寄存器包括:
-
Control Register,控制寄存器,管理PHY的reset、AN使能、重新协商、速率选择和双工模式等
-
Status Register,状态寄存器,包括PHY支持的速率模式、AN能力、连接状态、Jabber检测等
-
Auto-Negotiation Advertisement Register,自协商通知寄存器,包含自己支持的自协商速率、双工模式,PAUSE等
-
Link Partner Base Page Ability,连接对端基页寄存器,存储自协商对端速率、双工模式等
-
Auto-Negotiation Expansion Register,自协商扩展寄存器
-
Auto-Negotiation Next Page Transmit Register,自协商Next Page 传输寄存器
-
Link Partner Ability Next Page Register,自协商对端Next Page寄存器
-
Master/Slave Control Register,主/从控制寄存器,包括主从配置使能、主从配置值、端口类型等
-
Master/Slave Status Register,主从状态寄存器,包括主从状态等信息
与媒介的接口
AN仅仅使用脉冲信号在媒介中进行自协商工作,使用的信号与10BASE-T相似,这使得较老的10BASE-T标准仍然可以使用自协商。10Mb/s标准通过传输和接收LIT(Link Integrity Test,连接完整性测试)脉冲来检测与另一个设备的活跃连接。LIT后来改名为NLP(Normal Link Pulses,正常连接脉冲),它们是一样的,它由一个持续时间为100ns,间隔为16ms(+/-8ms)的单极性正向脉冲构成。
在100Mb/s标准中,使用了FLP(Fast Link Pulse,快速连接脉冲)代替NLP,一个单一的FLP突发由一个串行的33个脉冲构成,总共长为2ms,突发之间的间隔仍为16+/-8ms,每个单独的脉冲持续125us,间隔为62.5+/-7us。
如上图,NLP为一个单脉冲,FLP为一串突发。FLP的脉冲由数据信号和时钟信号交替,第一个脉冲为时钟信号,然后偶数位为数据信号,奇数位为时钟信号。数据信号共16个bit,有脉冲代表1,没有脉冲代表0,一共2Byte。这2字节的数据组成了LCW(Link Code Word,连接码字),自协商信息就在其中。
AN如何工作
管理信息交换
自协商很大一部分工作就是在连接建立之前,互相交换管理信息。信息传输的形式就是FLP,16bit的数据与17bit的时钟信号交替,16bit数据包含要交换的信息,如上文说到的,这16bit叫做LCW、FLP Burst或者Page。
在自协商过程中,有3种Page:Base Page、Message Page和Unformatted Page,Message Page和Unformatted Page统称Next Pages。
- The Base Page
Base Page总是被传输的第一个Page,包含10BASE-T、100BASE-TX、100BASET4、和PAUSE的能力。这个Page表示一次自协商程序的开始。
- Next Pages
Next Pages在Base Page之后,有Message Page和Unformatted Page两种。Message Page中每一个会携带一个序号,标识出不同类型,由协议规定,例如一个序号为8的Message Page表示两个Unformatted Page即将到来,并且它们要携带000BASE-T能力的信息。Unformatted Page包含11bit的信息,这些Page的内容可以由先前的Message Page来定义。
上表中显示了3种Page的每一bit的含义,每一种类型的Page长度都为16bit,但是配置有些不同。其中某些bit比较特殊
-
Acknowledge Bit:告诉连接对端本设备已经接收到了它的最后一个Page
-
NextPage Bit:告诉连接对端在当前Page之后本设备将要发送下一个Page
-
Toggle Bit:允许对端来区分连续Page之间的不同
-
Message Page Bit:告诉连接对端这个Page携带了Message序号,对端可以此知道下一个将要接收的是什么Page
Next Page交换
Next Page的存在,使得自协商能够传输和交换的信息量更多,这对于1000BASE-T,或者是即将到来的10GBASE-T,还有其他的新技术而言,都是很有利的。Next Page的交换是依靠在每一个Page末尾即Bit15的“Next Page”位来生效的,当这一位被置位,表明连接对端想要发送一些附加Page过来,而不是发送连接信号。如果设备没有Pages要发送了,会发送一个“NULL Message” Page,表明连接的结束。
典型的Next Page交换有以下几种
- Message Code 8 Page,随后两个Unformatted Pages,作为1000BASE-T能力的交换
- Message Code 7 Page,随后一个Unformatted Pages,作为100BASE-T2能力的交换
- Message Code 4 Page,随后一个Unformatted Pages,表明Unformatted Page携带一个远程错误信息