以太网自协商机制

 1 1 以太网技术基础

 1.1 以太网的历史

 最初的以太网模型是1972年的Alto Aloha Network,以太网使用的共享媒体技术是从纯aloha、分时隙aloha一直演进到csma/cd。最初的以太网是真正共享媒体的技术,包括10base2和10base5。由于这两种技术存在工程安装的困难,出现了采用集线器(HUB)互连的以太网10BASET。这几种以太网的技术都是半双工的,因此网络上都可能存在冲突,每一个网络都是一个冲突域,因此冲突检测机制是必须的组件。后来出现了网桥或二层交换机,它是在MAC层互连不同的网络,不同端口所连接的网络是不同的冲突域,因此在不同的端口之间不需要CSMA/CD,而且每个网桥端口都支持全双工,理论上,在全双工的方式下,网桥各端口所互连的网络都不需要冲突检测机制。

 1.2 以太网的帧结构

 以太网的帧结构分为两种:EthernetII格式和802.3格式。这二者的不同在于以太网帧承载的载荷前面究竟是长度(802.3格式)还是帧类型(EthernetII格式)。所有的EthernetII的类型域的值必须大于1536,而所有的802.3的长度域的值必须小于或等于1536。以太网的MAC地址分为全球独一无二的地址和试验性地址(体现在MAC地址的U/L比特),以及每种地址的单播、广播、组播地址(体现在MAC地址的G/I比特)。MTU是各种网络的数据帧所承载的载荷长度,例如以太网最大帧长可以为1518或1522(在加上VLAN TAG时),而最大MTU始终是1500字节。以太网的MTU最小是46字节的原因是由于共享媒体的以太网的冲突检测机制造成的,如果一帧过短,则共享媒体的另一台机器很有可能检测不到该帧的发送,故也发送了一帧,结果双方都不能检测到冲突,所以要有最小帧长。但是该种限制只是在共享媒体(半双工)的网络上会存在,对于交换式网络(全双工),理论上是不存在的。

 1.3 以太网的常见媒体

 在使用铜缆搭建的以太网中最常见的媒体是双绞线,双绞线内有4对线,遵循TIA/EIA-568-A标准。线序为橙白、橙、绿白、蓝、蓝白、绿、棕白、棕。双绞线采用的接口标准经常是RJ45。

  在使用光纤搭建的以太网中常见的几种物理媒体是单模或多模光纤,常见的光纤接口包括SC,LC,FC,MTRJ,光模块类型包括SFP,GBIC。

  光模块或光接口的常见标准是100BASE-FX或1000BASE-SX/LX,其中100BASE-FX使用多模光纤,而1000BASE-SX使用多模光纤,1000BASE-LX即可以使用多模光纤也可以使用单模光纤。

 1.4 自协商机制

 自协商机制有两种,一种称为: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. 两台支持自协商的设备互连

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

 2. 一台自协商设备和10BASE-T设备

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

 3. 一台自协商设备和100BASE-T设备

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

 4. 自协商引起的双工不匹配案例

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

 5. 错误配置引起的连接不UP案例

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

 6. 自协商设备和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的情况。

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

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

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

 1. 1000BASE-LX和1000BASE-SX自协商和非自协商的互通

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

 2. 1000BASE-T自协商和非自协商的互通

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

推荐访问:以太网 协商 机制