一种用于代数交换引擎数据包分组重组的预处理方法

文档序号:9508293阅读:240来源:国知局
一种用于代数交换引擎数据包分组重组的预处理方法
【技术领域】
[0001]本申请涉及通信技术领域,尤其涉及到代数交换和网络编码领域。
【背景技术】
[0002]代数交换是一种多路径自路由交换结构,这种结构将代数分配格理论应用于自路由模型,该结构具有完全分布式自路由、无内部缓存、线速及无抖动等优势。在保证提供服务质量的条件下,代数适合大规模扩展。然而这种交换结构会产生内部争用和外部阻塞,从而导致了一定的丢包率。为了降低丢包率和提高数据在传输中的吞吐率,一种有效的方法是将网络编码和代数交换结构融合,利用网络编码来恢复丢失的数据包,从而有效降低系统的丢包率。然而现有的代数交换结构中的预处理方法不适用于网络编码,因为其无法提供必要的编码和解码信息。

【发明内容】

[0003]为了使网络编码能够在代数交换引擎中应用并提高系统的数据处理效率,本发明提出了针对基于网络编码的代数交换引擎数据包分组重组的预处理方法。
[0004]具体地,本申请提供的用于代数交换引擎数据包分组重组的预处理方法,包括:
[0005]从输入的原始数据包中提取目的地址和输入端口号;
[0006]根据数据包的长度和信元长度,判断所述数据包是否需要切割,若判断结果为需要切割,则计算出将要切割成的信元的数目以及需要填充的字节数;
[0007]将计算结果储存于一特定的信元包头中;
[0008]根据所述判断结果和计算结果将数据包切割成若干信元;
[0009]将所述信元包头附加在每个切割而成的信元上,其中信元包头中包括了控制信息,所述控制信息用于加速后续的数据的处理,并为网络编码在代数交换中的应用提供必要信息。
[0010]本申请的有益效果是:
[0011]本发明是具有网络编码功能的代数交换引擎中的数据预处理方法,该方法对数据包在交换之前进行预处理,在每个数据包之前添加了一个包头,并把数据包切割为长度固定的信元,这样极大地加速了后续的数据处理过程,从而提高了系统的吞吐量和通信效率。
【附图说明】
[0012]图1为一实施例中具有网络编码功能的代数交换引擎的结构示意图;
[0013]图2(a)为一实施中数据包格式和控制总线格式的示意图;
[0014]图2(b)为一实施中附加包头的信息定义的示意图。
【具体实施方式】
[0015]下面通过【具体实施方式】结合附图对本申请作进一步详细说明。
[0016]请参照图1,为本发明中的基于网络编码的代数交换引擎的结构示意图。标准的IP数据包从N个输入端口 1.1.1,1.1.2,…,1.1.N进入,在数据预处理模块1.2中,将添加同步控制信号,并把数据包切割成长度相等的数据片和添加包头控制信息,其中N为正整数。图1中黑色粗箭头1表示封包,即标准的以太网数据包;数据包进入数据预处理模块
1.2之后,灰色粗箭头2表示被切割之后的数据片,即信元;灰色细箭头3表示流控,即数据同步信号。编码模块1.3对信元进行编码,产生的冗余信息随原始数据包一起进入后级模块。N个并行的V0Q模块1.4.1,1.4.2,…,1.4.N将数据按照输出端口分流,同时将数据包按一定的调度算法送入代数交换模块1.5ο在Ν个组装模块1.6.1,1.6.2,…,1.6.Ν中,将归属于同一个数据包的信元按照一定的顺序重新组装,恢复出原始的数据包。只有当组装过程中检测到有一个信元丢失时,才会启动Ν个解码模块1.7.1,1.7.2,…,1.7.Ν,通过解码恢复出丢失的信元。
[0017]本申请中的用于代数交换引擎数据包分组重组的预处理方法,包括:
[0018]从输入的原始数据包中提取目的地址和输入端口号;
[0019]根据数据包的长度和信元长度,判断所述数据包是否需要切割,若判断结果为需要切割,则计算出将要切割成的信元的数目以及需要填充的字节数;
[0020]将计算结果储存于一特定的信元包头中;
[0021]根据所述判断结果和计算结果将数据包切割成若干信元;
[0022]将所述信元包头附加在每个切割而成的信元上,其中信元包头中包括了控制信息,所述控制信息用于加速后续的数据的处理,并为网络编码在代数交换中的应用提供必要信息。
[0023]以下具体说明。
[0024]在数据预处理模块1.2中,为了方便数据识别和处理,数据预处理模块1.2首先对输入的数据添加了位宽为2的同步控制信号。当控制总线信号为2’ bll时,表示当前时钟下与其同步的数据为整个数据包的起始和包头;当控制总线信号为2’ b00时,表示当前同步数据为原始的系统输入数据包中的有效载荷;当控制总线信号为2’ blO时,表示当前数据为整个数据包的结束。假定系统的数据总线的位宽是64位,那么数据包的格式如图2(a)所示。
[0025]添加同步控制信号后,数据包在数据预处理模块1.2的处理分为2个步骤:
[0026]1、根据数据包的长度和信元的长度判断是否需要切割和切割的信元的数量;
[0027]
[0028]2、将分组切割成信元并为每个信元添加包头。
[0029]在第1个步骤中,根据数据包的实际长度和事先定义的信元的长度,首先可以判断该数据包是否需要切割:若数据包的长度小于信元的长度,则不需要切割,而且需要将数据包填充一定数目的无效字节使之长度等于一个信元的长度;若数据包的长度大于信元长度,则计算出需要切割成的信元的数量和最后一个信元需要填充的无效字节的长度。若数据包的长度恰好是信元的长度的整数倍,则切割后无需填充无效字节。最后将这些信息保存在数据包的自定义包头中并把数据传送到执行第2个步骤的模块中。
[0030]在第2个步骤中,数据包将根据第1步中包头的信息对数据包展开切割、填充的操作。若数据包无需切割,则把数据包填充若干无效字节使之达到信元的长度,并且按照图2 (b)的包头格式更新包头信息;若数据包需要切割,则先把数据包的有效载荷按顺序切割成多个信元,然后给每个信元的开头添加图2(b)所示的包头。
[0031]整个数据的处理过程中,各个步骤分工协作,或提取数据包内信息生成自定义包头,或利用前级生成的包头提供的信息完成自身预先定义的功能。自定义的包头发挥了巨大的作用,本发明中自定义包头包含分组有效标记、编码标记、目的端口数等信息,如图2(b)所示,下面详细介绍包头的功能及它们所包含的信息。
[0032]分组有效标记:用于区分有效分组和无效信元,该类包头信息用于在代数交换引擎,若出现争用,则无效信元优先级较低,有效信元丢失的可能性较小。
[0033]保留位:暂时保留,用于系统扩展之后的信息补充。
[0034]封包尾信元标记:标记该信元在原始数据包中是否是最后一个信元。若是,则该信息为1,否则为0。
[0035]网络编码标记:该字段是编码模块使用,标记该信元是否为编码产生的信元,用于在组装和解码模块时,恢复原始数据包。
[0036]分组填补数:一个数据包被切割成长度固定的信元,若该数据包的长度不是信元长度的整数倍,则在最后一个信元中需要填补一定数量的无效的信息,该包头记录需要补充的无效信息的数量,单位是字节。当在组装和解码过程中恢复出原始数据包之后,同时丢弃无效信息。
[0037]分组源端口和目的端口:用于记录信元的源地址和目的端口地址。
[0038]分组总数:用于组装过程中将收到的信元数量与该包头信息比较,判断是否有信兀丢失。
[0039]分组识别号:用于记录信元在原始数据包中的位置,用于组装和解码模块。
[0040]数据包识别号:相同数据包识别号的信元组装在一起,恢复会原始数据包。
[0041]以上内容是结合具体的实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术人员来说,在不脱离本申请发明构思的前提下,还可以做出若干简单推演或替换。
【主权项】
1.一种用于代数交换引擎数据包分组重组的预处理方法,其特征在于,包括: 从输入的原始数据包中提取目的地址和输入端口号; 根据数据包的长度和信元长度,判断所述数据包是否需要切割,若判断结果为需要切害J,则计算出将要切割成的信元的数目以及需要填充的字节数; 将计算结果储存于一特定的信元包头中; 根据所述判断结果和计算结果将数据包切割成若干信元; 将所述信元包头附加在每个切割而成的信元上,其中信元包头中包括了控制信息,所述控制信息用于加速后续的数据的处理,并为网络编码在代数交换中的应用提供必要信息。
【专利摘要】本申请公开了一种用于代数交换引擎数据包分组重组的预处理方法,属于通信技术领域,涉及到代数交换和网络编码领域。本发明是具有网络编码功能的代数交换引擎中的数据预处理方法。该方法对数据包在交换之前进行预处理,在每个数据包之前添加了一个包头,并把数据包切割为长度固定的信元,这样极大地加速了后续的数据处理过程,从而提高了系统的吞吐量和通信效率。
【IPC分类】H04L1/00
【公开号】CN105262562
【申请号】CN201510562749
【发明人】张明龙, 李硕彦, 朱键, 马丽, 吕士杰, 李挥
【申请人】香港中文大学深圳研究院
【公开日】2016年1月20日
【申请日】2015年9月7日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1