一种封装数据流的方法 【技术领域】
本发明涉及数据传输技术领域,特别是指一种封装数据流的方法。
背景技术
在多业务传送平台(MSTP)的广泛应用下,出现了许多封装形式,如链路接入规程-SDH(LAPS:Link Access Procedure-SDH protocol)、高速数据链路控制协议(HDLC:High-level Data Link Control)、点对点协议(PPP:Point-to-Point Protocol)等,利用这些封装形式能够实现对多种业务的封装,并进行传送处理。目前的标准建议某种封装格式针对某个协议,如千兆以太网(GE:Gigabit Ethernet)或IP(Internet Protocol)等,或某一类协议,如8B/10B的编码业务,进行处理。
一般帧封装处理(GFP:Generic Framing Procedure)是目前常用的一种封装形式,它提供了一个通用机制用来处理高层的客户信号承载到字节同步传送网。GFP-T(Transparent Generic Framing Procedure)是针对流封装的标准,该标准规定对8B/10B的客户信号进行64B/65B编码后,将其映射成为一固定长度的GFP格式发送出去。这样,在没有接收完一帧信号时,可立即把已封装好的数据传输出去,因而,可以实现低延迟的传输。能够进行透明封装的信号包括光纤通道协议(Fibre Channel)、企业互连协议(ESCON:Enterprise Systems Connection)、光纤互连协议(FICON:Fibre Connection)和GE等。
图1所示为1GFP-T地封装结构示意图。一般的,一个GFP-T帧包含帧头(Core Header)和有效负荷域(Payload Area)两部分。在Core Header中,包括长度指示器和cHEC(Core Header Error Check)即16位的CRC(Cyclic Redundancy Code)两部分,在Payload Area中,包括4-64字节(BYTE)的有效负荷头(Payload Headers)、有效负荷信息域(PayloadInformation Field)和有效负荷校验位(Option Payload Fcs)即32位的CRC三部分。在Payload Headers中,包括16bit的有效负荷类型域(Payload TypeField)和tHEC(Type Header Error Check)即16位的CRC两部分。一个GFP的空闲(Idle)帧仅包含GFP Core Header。
应用GFP-T封装形式对8B/10B业务进行封装时,需对其进行块解码,如果8B/10B代码是一个数据字符,则10位接收字符被解码成为8位原始数据,如果8B/10B代码是一个控制字符,则10位接收字符被解码成为控制代码。经过解码后的信号再进行64B/65B编码,对数据字符而言,8位原始数据被直接封装到65B编码块中,再将65B编码块放进GFP的有效负荷域中;对控制字符而言,先将控制代码编码成为4bit控制代码,再将4bit的控制代码封装到65B编码块中,然后将65B编码块放进GFP的有效负荷域中。客户信号的每个字经过解码处理后,分别按照数据字和控制字,封装到固定长度的GFP中,应用该封装方式不需要缓冲整个帧。
由于通常的流封装业务不提供带宽收敛,所以要求映射带宽大于客户数据即编码前的基本数据速率,这样,用于封装的先进先出(FIFO)中可能会读空。当FIFO中没有为映射传输的数据,如果此时处于传送的GFP帧尾,则在帧之间插入Idle帧,如果此时处于GFP帧的传送中,则封装的GFP帧中间插入PAD字符。该PAD字符的映射方式与控制字符的映射方式相同,且它的识别和丢弃由GFP的去解封装模块执行。
GFP-T优点之一是保留了8B/10B业务的控制字,但是这也是它的一个缺点,它封装的对象必须是8B/10B的业务,做不到对任意业务的封装,同是,进行64B/65B变换也比较复杂。
随着技术的发展,在多业务传送平台上需支持越来越多业务类型,如何保证对任意业务的数据流进行封装,且保证传送中数据内容完全透明是有待解决的问题。
【发明内容】
有鉴于此,本发明的目的在于提供一种封装数据流的方法,以实现对各种业务透明传送。
为达到上述目的,本发明的技术方案是这样实现的:
一种封装数据流的方法,该方法包括以下步骤:
a、在缓冲区中预先设置存储数据的低水线值;
b、判断缓冲区中所存储数据是否达到低水线值,如果是,则对缓冲区中的数据按一定长度进行分割处理,并为分割后的数据添加帧头和帧尾,否则对缓冲区的数据不做分割处理。
较佳地,步骤a所述低水线值大于等于所分割的长度。
较佳地,该方法进一步包括:设置计数值为分割长度的字节计数器,且计数值跟据具体使用的效率与成本的关系而确定。
较佳地,该方法进一步包括:将经过串并转换的数据输入缓冲区。
较佳地,该方法进一步包括:解封装时,根据帧头界定数据区的开始,根据所分割的长度确定帧尾,将去掉帧头帧尾的数据送入缓冲区。
较佳地,解封装后的数据经并串转换处理后发送出去。
较佳地,所述缓冲区为先进先出缓冲区。
较佳地,所述帧尾为校验字段。
应用本发明,通过对收到的数据流进行计数切片,并添加帧头帧尾实现对数据流的封装。由于应用本发明的方法不需对接收的业务进行识别处理,即不需对接收业务的帧头,控制字等特殊字符进行识别处理,因此,本发明的封装方法与具体的业务无关,因而能够实现对任意业务数据流的封装处理。同时,由于本发明只是一种封装方法,因此,能够借用现行标准协议规定的一些传送方法,即本方案与现行标准协议有很好的兼容性。
【附图说明】
图1所示为1GFP-T的封装结构示意图;
图2所示为应用本发明的对业务接收端的数据流进行封装的示意图;
图3所示为应用本发明的对业务发送端的数据流进行解封装的示意图。
【具体实施方式】
下面结合附图及具体实施例,对本发明再作进一步详细说明。
本发明的思路是:不对接收的业务进行任何识别处理,只保证所传送数据流的正确性。
下面以GFP-T封装形式为实施例,具体说明本发明的封装方法。
图2所示为应用本发明的对业务接收端的数据流进行封装的示意图。业务接收端的串行电信号经串并转换模块201将串行信号转换为并行信号后,送入FIFO缓冲区202,以便于封装模块的处理。设置一个字节计数器203,该计数器的计数值N为所封装帧的数据区的长度。该计数值N是根据实际传送的效率与成本的关系来设定的,因而对于不同的业务其取值亦不同,但在同一业务的传送过程中是固定不变的。对于GFP-T封装形式而言,其不支持包中间的速率适配,为了保证包中间传送数据的连续,通过缓存进行控制,且要求映射带宽大于客户数据即编码前的基本数据速率。在FIFO缓冲区202中设置低水线值,当FIFO中所存储的数据达到低水线值后,按照先进先出顺序,对FIFO缓冲区的数据按照所设定的计数值N进行切片,以保证帧中间数据连续,并为切片后的数据添加帧头和帧尾进行封装,帧尾的校验字段(FCS)根据协议的要求可为非必选项。对于缓冲区中未被切片的数据,则合并在下一次的切片过程中进行处理。
在设定计数值N时,如果计数值N过大,则切片的长度过长,缓存的FIFO深度越大,因此可能失去了流封装的低延时的优点;如果计数值N过小,则切片长度太短,会由于帧头帧尾的增加而减小了有效带宽,所以N的取值以保证在实际应用中得到最佳的传送效率为准。
图3所示为应用本发明的对业务发送端的数据流进行解封装的示意图。对于GFP协议而言,发送端接收到远端传送来的数据帧后,通过帧头界定数据区开始,根据数据的长度N找到帧尾,如果该数据存在帧尾,则除去帧头(包括净荷头)帧尾后的数据进入FIFO缓冲区301,如果该数据中只有帧头信息,则将除去帧头(包括净荷头)后的数据送入FIFO缓冲区301。对于其它协议,如LAPS协议等,发送端接收到远端传送来的数据帧后,通过帧头界定数据区开始,根据帧尾界定帧尾,将除去帧头(包括净荷头)帧尾后的数据送入FIFO缓冲区301。由于包之间的Idle帧数据在进入缓冲区301之前就已经被识别出并被丢弃,所以缓冲区301内的是纯净荷数据。数据流按照先进先出的顺序,由并串转换模块302将并行数据转换为串行数据后发送出去。
本发明只提供了一种封装方案,因此,可借用目前标准封装协议,如GFP、LAPS等协议,规定的传送方法进行数据传送。例如,定义协议空闲包进行映射过程的速率适配,利用帧头信息的保留位传送自定义的远端性能和告警信息等,如业务接入端光纤的状态,从而使系统完成一些相应的保护操作。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换和改进,均应包含在本发明的保护范围之内。