千兆网媒体访问控制技术

1 引言


   以太网问世的25年后,以太网在 局域网中已占有统治地位。它始终坚持帧格式不变(从10Mbit/s速率升级到100Mbit/s以及1Gbit/s),给用户的局域网升级带来了很大的方便;以太网用户的增长又产生了规模效应,使得以太网的价格大幅度下降,形成良性特环。现在,数以亿计的用户使 网络的效益大大增长,并且 千兆以太网问世后很快就进入了 城域网领域。根据1998年的统计,全世界以太网 网卡总数已超过4800万块,而 ATM、 FDDI和令牌环的网卡总数仅500万块左右。


   千兆以太网问世后,以太网的发展并未停顿,1999年3月成立了IEEE802.3高速研究组(HSSG——Higher Speed Study Group)。HSSG的任务是致力于10G以太网的研究。以太网的发展历程同时也是一个和其它网络相互竞争,并逐渐取得胜利的过程。10Mbit/s以 太网最终淘汰了速率比它快60%的16Mbit/s的令牌环,100Mbit/s快速以太网也使得曾经构成最快局域网/城域网的FDDI变成了历史。千兆 以太网和10G以太网的问世,使以太网的市场占有率进一步地得到提高,使得ATM在城域网和 广域网中的地位受到更加严峻的挑战。


  2 GMAC简述


  GMAC是为了满足千兆网传输而发展起来的,它是构成千兆网必备的条件之一。GMAC在七层 ISO标准中属于数据链路层,它对逻辑链路和物理链路之间的通道进行控制和协调,可以连接各种不同物理媒介,不同物理媒介有不同的GMAC标准,GMAC的标准由IEEE802工作组制定。


  GMAC可以分为四个部分:帧发送(Frame Transmission)、帧接收(Frame Reception)、GMAC控制(GMAC Control)、媒体独立接口管理(GMII)。


  帧发送:接收GMAC客户(上层协议)传下来的数据,在数据段头尾加上一些控制信息,组成一个以太网数据帧,并将该数据帧以位数据流的形式传送到物理层,以待发送。


  帧接收:接收从物理层来的位数据流,在接收完一帧的数据后,检查该帧是否有效(如目的地址、计算校验码、字节对齐等),若有效就去除数据帧的头尾将数据字段提交给上层协议,否则就丢弃该数据帧。


  GMAC控制:用于全双工模式下控制帧的生成、检测,它处在主机和发送、接收模块之间,对普通的数据帧来说是透明的。


  媒体独立接口管理:控制物理层的输入输出操作,检查物理层的状态信息。


  3 GMAC工作模式


   GMAC本身并不会接收和发送网络数据,而只是对物理层的接收和发送的行为进行控制。物理层是真正实现数据收发功能的地方,但它不会对数据进行任何区分 和处理,当发现网络上有数据,它就把数据从网络上取下来送给GMAC,当GMAC有数据给它时,它就把数据放到网络上。GMAC的作用是把物理层送上来的 数据进行区分,如果数据包的目的地址是本机,就把数据包适当处理后提交给上层协议,如果不是就丢弃该数据包,在发送时,GMAC在待发送的数据包上加一些 信息后直接交给物理层。实际上GMAC和PHY(物理层)之间的接口是标准的,不管是什么物理网络,MAC都可以通过标准接口对物理层的行为进行控制,而 且一个GMAC可以同时管理多个PHY的行为。


  GMAC的工作方式有半双工和全双工两种。


  半双工模式:GMAC client将数据传给GMAC后,GMAC先给数据加上Preamble、FSD、FCS,组成以太网帧,然后检查载波侦听信号(CRS),若有载波信号,表示有数据正在 本地网段上传播,就等待直到载波信号消失,载波信号消失后,GMAC还要等待一个帧间延时(interFrame Spacing),若在帧间延时期间,一直没有载波信号,该以太网帧就可以开始向物理层传输。


   当物理层在传送数据的过程中,网络上同时也有其它数据在传输,就会产生冲突,(collision),物理层检查到冲突后,向GMAC发送冲突信 息,GMAC检查是normal collision还是late collision,如果是normal collision,停止传输数据,传送32位的jam数据流,然后等待一个随机时间段后进行重传,如果是late collision,在传送jam数据流后丢弃该数据包。如果重传的次数达到16次,丢弃该数据包。接收数据时,当GMAC收到一帧数据时,首先检查目的 地址是否正确,然后检查以太网帧是否8byte对齐(位长度是8的倍数),若没有对齐,将FCS前的数据段截取成字节对齐,接着根据收的数据产生CRC, 与收到的FCS比较,不相等就丢弃该帧。最后去除Preamble、FSD和FCS,将数据传给上层协议。


  全双工模式:GMAC从GMAC Client接收到数据后,不需要载波侦听和冲突检测,直接向物理层传送,其它操作与半双工相同。


  4 GAMC中几个重要概念介绍


  4.1 载波侦听


   (适用于半双工)在GMAC开始向物理层传输数据之前,GMAC进行载波侦听,如果物理网路上有载波,说明有数据正在传输,本地数据必须要等待,当侦听 到载波消失,本地数据就可以准备发送,但GSMA/CD协议规定两帧数据之间必须有inter-FrameGap(或 interFrameSpacing),以便使整个网路上的其它设备有足够的时间恢复状态,所以载波消失后还要等待interFrameGap的时间,当 inter-FrameGap结束而且其间一直没有载波时,数据就可以开始发送了,如果在interFrameGap其间侦听到载波信号,本地数据重新开 始等待过程。


  4.2 冲突检测


  (适用于半双工)在数据向物理层传输的过程中,网络上可能会同时出现两组数据在传输,当两组数据在网路上相遇时,就发生冲突(collision),GMAC检测到冲突后,判别冲突的类型:


  (1)normal collision:冲突发生在以太网帧的前512bit内,它又可分为两类:


   ①冲突发生在(Preamble+FSD)之内,则将(Preamble+FSD)传送完,接着传送一个32bit的jam数据流,然后开始back off(等待重传);


  ②站突发生在(Preamble+FSD)之后,则立即停止当前的数据传送,接着传送一个32bit的jam数据流,然后开始back off(等待重传);


  (2)late collision:突冲发生在以太网帧的512bit之后,结果冲突发生,则立即停止当前的数据传送,接着传送一个32bit的jam数据流,并且将该数据包丢弃,通知上层协议发生late collision(寄存器置位);


  * * * *传送jam数据流是为了保证本地网路的值是任意的,只要求不是有意的使其等于已经传送数据的CRC。


  4.3 Slot Time


  对于半双工来说,这是一个很重要的概念。因为半双工模式下工作时会出现冲突,就要求当冲突出现时网路上的每个设备都能检测到,所以CSMA/CD规定了与物理层紧密联系的Slot Time。


  4.4 Interframe Gap(Interframe Spacing)


   连续两帧之间的空闲时间,用于设备恢复,以便下一帧数据的接收,长度为96bit时(24个时钟周期),任何一个以太网帧,则在传输前都要等待 InterframeGap。InterframeGap分成0.06us和0.036us两个部分,如果在前面0.06us内检测到载波,停止等待,直 到载波消失再重新开始等待InterframeGap,如果在后面的0.036us内检测到载波,忽略该载波信号。InterframeGap使网路上的 各个设备都有相同的机会获得网路。


  4.5 Back off


  当发生normal collision时,就需要back off,等待数据重传,back off实际上是一个等待的过程,等待的时间r是0和二进制递增值之间的随机数,如果数据帧是第n次重传(前面n-1次都发生冲 突,n≤16),k=min(n,10),二进制递增值就是2k,所以随机数值的范围为0≤r<2k,当本地数据等待r个Slog Time后,就可以准备重传数据(需要再等待interFrameGap)。


  4.6 Pause Frame


   控制帧的一种(也是目前唯一的控制帧),在全双工模式下,A、B之间进行通信,当A的数据传送很快,造成B出现拥塞状况的时候,B可以向A发送一个 Pause Frame,要求A暂停发送数据,A收到暂停帧后,就停止数据发送,暂停的时间有Pause Frame中的字段决定,当暂停时间结束时,A继续传送数据。暂停帧是控制帧的一种,所以Length/Type的值为h8808(控制帧类型),操作码 为h0001(表示暂停),16bit的参数决定暂停的时间,单位:Slot Time,范围:h0000-hffff。在暂停期间,暂停帧仍旧能够发送和接收,若A处于暂停状态,又接收到B的一个暂停帧,则A开始等待新的暂停时 间,若新的暂停时间为0,则立即恢复以前的状态继续发送数据,所以发送一个0时间的暂停帧可以取消对方的暂停状态。


  4.7 无效数据帧


  下面几种情况的数据帧是无效的:


  ①收到的数据帧的长度和Length/Type(表示长度)的值不相等;


  ②收到的数据帧的长度不是整数个字节,在这种情况下,要进行字节对齐截取成最近的整数个字节;


  ③GMAC根据数据帧产生的CRC校验码与数据帧中的FCS不等(一般用Magic Number来检测);


  5 以太网帧的格式




  ①Preamble:该字段为7个10101010’b,数值没有实际的意义,只是让物理层做好接收数据的准备;


  ②SFD(start framc delimiter):紧跟着Preamble,固定值10101011'b,表示数据帧开始;


  ③DA(dest.MAC address):以太网帧的目的地址,可以是单机地址,也可以使多播、广播地址;


  ④SA(source MAC address):以太网帧的源地址,单机地址,如果GMAC Client给GMAC传输的数据帧中SA为空,GMAC必须填充SA;


  ⑤Length/Type:当该值小于1536时表示数据段的长度,当大于等于1536时表示上层协议的类型,此时传送的以太网帧都是固定长度的(相应于帧类型),一般用于控制等特殊用途;


  ⑥GMAC Client Data:上层协议的数据字段;


  ⑦Pad:填充字段,当GMAC Client Data的长度小于46b时,由于规定了最小以太网帧长度,所以必须对GMAC Client Data进行填充(padding),使其达到48b,填充的内容任意;


  ⑧FCS(frame check sequence):CRC字段,32 b CRC校验码由802.3规定的校验公式决定,作用范围是从DA字段到Pad字段(如果有的话);


  6 GMAC的接收框图。




  7 GMAC发送框图




  8 结束语


  GMAC是构建千兆网所必须的,随着千兆网的深入研究和广泛应用,GMAC有着广阔的前景。但GMAC芯片的设计还是有很多问题有待解决,GMAC和host端的接口问题、GMAC本身的延时控制、FIFO的大小及速度问题等待。


  参考文献


   [1] SIO/IEC 8802-3 Carrier sense multiple access with Collision Detection (CSMA/CD) access method and physical layer specifications [J]. IEEE Communications Magazine,2000


  [2] Igor Mohor Ethernet IP Core Opencores.org Feb.18-2002

你可能感兴趣的:(千兆网媒体访问控制技术)