如今,人们已经开始在通信中使用高带宽的光通道,在使用过程中要想优化这些光通道,存储器设计工程师就要全面了解透明模式通用帧规程(GFP-T)。本文将讨论透明模式GFP的工作原理,及其在处理编码后的SAN信息、带宽管理和检错上的应用。
在城域网设备的设计中,存储局域网(SAN)信息的传输已经成了研究重点。大公司和集团都开始向运营商寻求帮助以将SAN信息分散到多个他们需要的场所去,或者将SAN信息传送到那些不便利用SONET或同步数字系列(SDH)网络的集中型SAN存储应用中去,因而,运营商们将SAN看作一个极具赢利潜力的市场。
但如今运营商们面临一项挑战,那就是如何处理不同的信息模式。过去,城域网设备开发商通常采用密集波分复用(DWDM)技术来达到在一个单波长上传输SAN信息的目的。但问题是SAN信息无法充分利用光通道,会白白浪费城域网络中宝贵的带宽。
为了解决这一问题,国际电信联盟(ITU)开发了透明模式的通用帧规程(GFP-T)标准,它允许设计者将SAN信息打包为一个虚拟连接的管道,以便充分利用SONET/SDH网络的可用带宽,全面发挥设计者的设计能力。
GFP帧结构
图1给出了基本的GFP帧结构。在GFP帧中,帧头采用了一个双8位长度的域,该域以8字节为单位定义了GFP帧的净荷域长度,同时也定义了一个用于对净荷域检错的CRC-16检错码。
为了与这种帧结构同步对齐,成帧器寻找一个具有32位模式的序列,其中有一个正确的零循环冗余校验(CRC)提示符。如果在净荷长度定义域所定义的当前帧的终点之后,它找到了紧跟着的另一个32位的序列,那么就可确认帧对齐正确。
在GFP-T中,固定数量的用户字符被映射到一个长度已预先定义好了的GFP帧之中,于是净荷长度就固定了。这正是GFP-T比其它用来处理SAN信息映射的方法(例如GFP协议的帧映射版本)高明之处。SAN对传输延时十分敏感,因而对SAN协议而言,延时是一项非常重要的指标。在帧映射方法中,必须对所有的用户数据帧进行缓冲,这就在整个系统结构上造成了延时。而GFP-T则只会造成几个字节的映射/解映射延时。VSPACE=12 HSPACE=12 ALT="图1:GFP信息核的头部包含一个双8位长度的域和一个针对此域的CRC-16检错码。">
在那些致力于将SAN信息变换到SONET/SDH链路上去传输的工程师之中,GFP-T能够吸引如此多的的注意力,原因就在于它具备处理块编码(block code)的能力。SAN系统采用8B/10B块编码来传递数据信息和控制信息。这种块编码可将(256)种可能的数据值映射到10位代码空间的1024种数值中。进行代码分配时,必须使线路上传输的“0”和“1”的数量保持平衡。其中,有十二个这种10位的代码属于保留码,用作控制代码,数据源可以采用这些代码来向数据链路发送信令控制信息。
为了利用8B/10B线路编码在SONET/SDH等公共传输网络上有效地运行GFP-T协议,网络就必须既传送数据也传送8B/10B 控制代码信息。这种既能传送用户数据又能传送8B/10B控制代码的能力是GFP-T用于SAN应用中的另一个优势。采用透明模式通用成帧协议,可将用户的8B/10B代码解码为控制代码和8位的数据值。然后,解码后的字符中有8个字符被映射为一个64B/65B码中的8个净荷字节。
GFP-T编码结构
由以上步骤得到的64B/65B码的标志位(flag)说明了该64B/65B码中是否存在控制代码。当flag=1时,64B/65B码中有控制代码。一个控制代码字节包含3个域。个域中只有一位,用来说明该64B/65B字节中是否包含一个控制代码,如果这一位已经是一位,那么该位被置为逻辑0。
第二个域是一个三位的地址,用来说明控制代码在用户数据流中相对于其它映射到64B/65B块编码中的字符的位置。一个域是一个4位的代码,这就是控制代码。已定义的8B/10B控制代码只有12种,用4位来表示就足够了。控制代码一般放在64B/65B块的前几个字节,随后才是数据。VSPACE=12 HSPACE=12 ALT="图2:采用GFP-T可将用户的8B/10B编码解码为控制代码和8位的数据值。解码后的字符中有8个被映射为一个64B/65B码的8个净荷字节。">
要将64B/65B净荷字节与SONET/SDH净荷字节对齐,这种做法可以简化并行数据通道的实现,同时还能增加数据的可观察性。这是通过将一组含8个64B/65B代码的代码组组合到一个超级块中实现的。
在超级块结构中(见图3),净荷字节按顺序连接,后跟一个拖尾字节,拖尾字节由组成该超级块的8个64B/65B码中每个码的个标致位组合起来构成。然后是一个根据该超级块中的各位计算得到的CRC-16检错码。
GFP-T的通道大小是按照满足坏时钟误差条件下的用户数据流要求来选择的。坏时钟误差条件指传送时钟位于其容限范围的值,而用户时钟运行于值。
当传送通道为SONET/SDH时,GFP-T是以虚拟连续信号的形式传输的。为了在终端和虚拟连续通路间形成一个带宽更高的通路,通常将多个SONET同步净荷包(SPE)和SDH虚容器(VC)组合起来。
虚拟连接通路中的SPE/VC不必位于相邻时隙,这就极大地简化了其构造,同时也增加了虚拟连接的灵活性。此外,虚拟连接对中间节点是透明的。
经过虚拟连接的信号用符号“SPE/VC type-Xv”表示,其中X表示被连接的SPE/VC个数。例如,“STS-3c-7v”就是7个“STS-3c SPE”经过虚拟连接后得到的,STS-3c与SDH的VC-4-7v 相当。虚拟连接在ITU-T、ANSI和ETSI.7\8\9中均有定义。图4给出了适用于各种透明GFP客户通道的虚拟连接信道的大小。
实际应用中,SONET/SDH信道带宽肯定比传输GFP信号所需的带宽稍大一些。于是,GFP映射器的用户信号入口缓冲器就会出现下溢。有两种方法可以处理这类问题,一是在传送一个GFP帧之前先将整个帧的用户数据字符全部缓冲起来,但这种方法会增加映射器的延时,也要求增加的缓冲器具备更大容量。
第二种方法就是GFP-T标准中所采用的方法,即用一个虚构的64B/65B控制代码作为65B_PAD字符。只要入口缓冲器中没有需要发送的用户字符,映射器就认为缓冲器内有一个用户控制字符,并向其中插入一个4位的65 B_PAD字符。在GFP连接的另一端,解映射器能将这个虚构的PAD识别出来,并将其从再生的数据流中删除。
通过采用65B_PAD字符,可以将映射器入口缓冲器的大小减小至8字节(构成一个64B/65B块所需的数据量就是8字节)加上几字节的SONET/SDH开销和GFP帧开销。一般情况下,映射器总会存在8字节的延时,因为在不清楚组成块的8个字符中是否存在控制代码时,映射器无法完成64B/65B块编码。VSPACE=12 HSPACE=12 ALT="图4:SONET/SDH信道的带宽比传送GFP信号所需的带宽稍大。">
检错方法
8B/10B编码具备固有的检错功能,因为在8B/10B编码中,只要出现一位的误码,通常会导致整个代码非法。但如果为了增加带宽利用率而将数据从8B/10B码转换为64B/65B码,就会在很大程度上牺牲掉检错功能。
在64B/65B码中,有四种情况的位误码会引发严重的问题。其中,接收到的代码起始标志位出错所导致的问题为严重。因为标志位的逻辑值表示:该块中只有数据,或者既有数据也有控制代码,这一位出错会致使块中的字节被错误编译。
第二种情况和种类似,即一个块包含正确的控制字符,但一个控制代码标致位出错。
第三种错误是控制代码的定位地址出错,这时解映射器会将控制代码的定位地址按照错误的顺序放置。
当4位控制代码的逻辑值出现错误时会引发第四种问题,这时解映射器会解出错误的控制代码,导致非常严重的后果。为了避免出现以上几类问题,提高编码的检错能力,我们在超级块中采用了CRC-16检错码。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。