基于网络处理器实现IP报文分片重组的方法 【技术领域】
本发明涉及一种IP(Internet Protocol,即网际协议)分片报文重组的方法,尤其涉及采用网络处理器实现IP分片报文重组的方法。
背景技术
网络与通信是当今最热和发展最快的领域之一,为了应付日益繁忙的信息流,网络的速度由几年前的155Mb/s,发展到现在的10Gb/s,在未来的2~3年内将会提高到40Gb/s。由于有了光纤,传输媒介的速度已不成问题,唯一的瓶颈则出现在通用处理器的处理速度上。当网络速度比较慢时,通用的处理器完全赶得上数据流,并不需要专门的网络处理器。后来,通用处理器不够快了,设计者就转向专用集成电路(Application Specific Integrated Circuit,简称ASIC)。ASIC在完成规定的处理工作方面是非常卓越的,但它有两个缺点:一是开发地周期太长,如路由器或交换机要增加新的功能,就需要等待较长的时间;二是ASIC不是可编程的,要修改就必须经历一个设计和制造的周期,适应不了当今越来越短的开发周期。
选择专用的网络处理器替代通用处理器是一个比较好的解决办法。网路处理器是专为优化包处理而设计的。它采用多中央处理器(Central ProcessionUnit,简称CPU)机制,如图1所示,包括一个用于控制面处理的主中央处理器(Host CPU)和若干个用于数据面处理的精简指令结构(Reduction InstructionSet Computer Architecture,简称RISC结构)的CPU,即RISC CPU。我们通过编程在RISC CPU上实现各种网络协议的处理,使若干个RISC CPU可对数据面报文进行实时并行处理,从而能够将数据面的报文以其到达的速度(线速)送到下一节点。但由于RISC CPU是用专用的汇编指令开发,且指令功能简单,难于实现复杂的运算操作,故目前网络处理器主要用于IP路由设备中,而对网络协议只处理到IP层,而将其用于边缘网络设备进行高层协议处理较为困难。
实现IP分片重组功能是对IP上层协议进行处理的基础。目前在通用处理器上是通过遍历链表的方式定位同一组分片以实现重组功能的,并定时器来管理用于存储分片报文的内存单元的使用,当定时器到期后即将未重组完的IP报文丢弃以释放其占用的内存单元。在实现重组的过程中,每一个分片报文首先要从MAC(Media Access Control,即媒体访问控制)芯片的缓存中拷贝的内存中的一个临时存储区,然后再拷贝到用于重组报文的缓冲存储单元(buffer)中进行重组,即通用处理器在实现IP分片重组时不是原位重组,必须拷贝两次才能完成。
在网络处理器上实现IP分片报文重组最简单的方法就是在Host CPU上采用上述通用处理器的处理方式实现,但这种方式没有实际发挥网络处理器的任何优势,因为网络处理器的Host CPU主频比通用处理器要低很多,且其硬件结构的限制使得Host CPU通常不能直接对数据面报文操作,因此只有在RISCCPU上实现IP分片报文的重组功能才能发挥网络处理器的优势。但由于RISCCPU采用汇编指令开发,不适于采用遍历链表的方式实现IP分片的重组,也很难通过复杂的算法来维护一个定时器队列,因此实现IP分片报文的重组比较困难。
【发明内容】
本发明的目的是提供一种基于网络处理器实现IP报文分片重组的方法,以克服当前的网络处理器不适用于边缘网络设备进行高层应用协议处理的技术问题。
实现本发明所要解决的技术问题而采取的技术方案概括如下,
提供一种基于网络处理器实现IP报文分片重组的方法,包括以下步骤:
(1)创建哈希索引表;
(2)分配两片用于存储分片IP报文的缓冲存储区;
(3)从接收到的一个新的IP分片报文的IP首部中提取源IP地址、目
的IP地址、标识、片偏移和长度信息;
(4)利用所述源IP地址、目的IP地址、标识作为输入进行哈希运算,
根据运算结果申请一个哈希单元;
(5)从所述的其中一片缓冲存储区中申请一个缓冲存储单元,并判断该
片缓冲存储区是否被申请完毕,若申请完毕,则申请使用所述的另
一片缓冲存储区;
(6)将IP首部保存到所述的缓冲存储单元中;
(7)根据所述接收到的IP分片报文的片偏移信息将该IP分片报文保存
到所述缓冲存储单元的相应位置,并将该缓冲存储单元的首地址保
存到所述哈希单元中;
(8)判断所接收到的IP分片报文是否为最后一片,若是,则计算所有需
要重组的IP分片报文对应的IP报文总长度,并将IP报文总长度信
息存储到哈希单元中;
(9)计算当前已经收到的IP分片报文的总长度,将所述总长度信息更新
到哈希单元中;
(10)将所述计算当前已经收到的IP分片报文的总长度与所述IP报文总
长度比较,若不相等,继续接收后续分片,若相等,则本组IP分片
报文全部收到,重组完毕,执行步骤(13);
(11)接收后续的IP分片报文,利用其IP首部中的源IP地址、目的IP
地址和标识进行哈希运算,定位到相应的哈希单元中;
(12)从哈希单元中取出缓冲存储单元首地址,根据该IP分片报文的片
偏移信息将该分片报文的数据净负荷拷贝到所述缓冲存储单元的
相应位置,执行步骤(8);
(13)释放该IP报文所使用的哈希Hash索引单元,释放其占用的两片
缓冲存储单元。
采用本发明的技术方案,与现有的技术相比,不仅提高了IP分片报文重组的速度和效率,而且还具有分片定位准确的优点。同时通过两片缓冲存储区机制,使在网络处理器上实现IP分片重组成为可能,并使重组过程更为简单有效。通过该方法可以在网络处理器上进行IP上层协议处理,从而使网络处理器能够替代通用处理器应用于边缘网络设备中,发挥其重要作用。
【附图说明】
图1示出了网络处理器功能结构原理图;
图2示出了IP报文首部格式;
图3示出了本发明IP报文分片过程示意图;
图4示出了本发明在缓冲存储单元中实现IP分片报文重组过程示意图。
【具体实施方式】
下面将结合附图,举例说明本发明的具体实施的方式。
图2给出了IP报文首部格式,其中标识、标志和片偏移三个字段用来控制IP数据报文的分片和重组。分片后的IP分片报文的分片首部具有相同的标识字段,且通过标志比特位表征该报文是一个分片,而分片的顺序则由片偏移来决定。IP报文的分片过程如图3所示。
在网络处理器上采用本发明方法实现IP分片报文重组开始时,首先进行分片重组的初始化准备工作,主要完成两个任务:
1)创建一张哈希(Hash)索引表;
2)创建两个管理缓冲(buffer)存储区的索引队列,负责缓冲存储单元的
申请和释放。
哈希索引表是一张信息索引表,每个哈希单元对应一组待重组的分片报文,该单元中保存着与重组相关的关键信息,在本发明方法中哈希单元中保存了如下信息:
●IP分片报文的源IP地址;
●IP分片报文的目的IP地址;
●IP分片报文的16位标识;
●当前已经收到的IP分片报文的总长度;
●所有本组分片报文重组后对应的IP报文的总长度;
●缓冲存储单元首地址。
其中当前已经收到的分片报文的总长度和所有本组分片报文重组后对应的IP报文的总长度的初始值均为0。
当哈希单元中保存的当前已经收到的分片报文的总长度信息为零时表示该单元未被占用,同时说明收到的IP分片报文为一组新的分片报文;而当该信息不为零时则说明该分片可能是一个后续分片。
当收到一个IP分片报文时,首先从该分片的IP首部中取出源IP地址、目的IP地址、标识、片偏移及长度信息,其中源IP地址、目的IP地址和标识能唯一标识一组IP分片报文。利用源、目的IP地址和标识作为输入参数进行哈希运算,并根据哈希运算结果定位到一个哈希单元。通过判断当前已经收到的IP分片报文的总长度是否为零来确定是否为一个新的哈希单元,根据判断的结果不同具体分为以下三种情况:
第一种情况是当前已经收到的IP报文的总长度为零,即收到一个新的IP分片报文,处理步骤如下:
a)将该报文的源IP地址、目的IP地址、标识和长度信息保存到哈希单
元中;
b)通过索引队列为其申请一个缓冲存储单元,将IP首部保存到缓冲存储
单元中,并将数据净负荷根据片偏移信息保存到存储区的相应位置。
保存拷贝过程是由RISC CPU直接控制的,根据片偏移信息决定数据
净荷在缓冲存储单元中的位置。当一片缓冲存储区中的存储单元被申
请完后,立即通过另一索引队列从另一片缓冲存储区申请缓冲存储单
元;
c)更新哈希单元中当前已经收到的分片报文总长度信息;
d)通过该分片报文的IP首部的标志位判断该分片是否为最后一个分片,
若是,则根据片偏移计算重组后整个IP报文的总长度,并将该长度信
息保存到哈希单元的所有本组分片报文重组后对应的IP报文的总长
度的位置。
第二种情况是当前已经收到的报文的总长度不为零,则比较该IP分片报文IP首部中的源、目的IP地址和标识与哈希单元中保存的源、目的IP地址和标识是否全部相等,若全部相等,则该分片报文为本组后续的IP分片报文,处理步骤如下:
a)计算该IP分片报文数据净负荷的长度,累加到哈希单元中的当前已经
收到分片报文总长度的信息位;
b)从哈希单元中取出缓冲存储单元首地址,并根据该片报文的片偏移将
数据净负荷保存到存储单元的相应位置,保存拷贝过程是由RISC CPU
直接控制的,根据片偏移信息决定数据净荷在缓冲存储单元中的位置,
拷贝的同时完成分片的重组;
c)通过该分片报文的IP首部的标志位判断该分片报文是否为最后一个
分片,若是,则根据片偏移计算重组后整个IP报文的总长度,并将该
长度信息保存到哈希单元的所有本组分片报文重组后对应的IP报文
的总长度的位置;
d)判断哈希单元中的当前收到分片报文总长度与重组后报文总长度是否
相等,如果相等,则表示本组所有的IP分片报文全部收齐,重组完成,
将当前已经收到分片报文总长度信息和所有本组分片报文重组后对应
的IP报文的总长度信息清零以释放哈希单元。
第三种情况是当前已经收到的报文的总长度不为零,比较该分片报文IP首部中的源、目的IP地址和标识与哈希单元中存储的源、目的IP地址和标识,如不全相等或全不相等,则表明产生哈希冲突,并确定该分片报文为一个新的分片报文,处理步骤如下:
a)将哈希单元中的当前已经收到分片报文总长度信息和所有本组分
片报文重组后对应的IP报文的总长度信息清零;
b)将其作为一个新的分片报文,按上述第一种情况处理。
从以上的描述可以看出每个IP分片报文在整个重组过程只拷贝了一次,即从MAC外设拷贝到缓冲存储单元中。在拷贝过程中根据报文的片偏移信息将数据净荷存放到缓冲存储单元的相应位置,从而在实现原位重组。图4给出了本发明在缓冲存储单元中实现原位重组的应用过程示意图。我们以以太网传输为例,如图中所示:标准MAC头长度为14字节,IP头典型长度为20字节,因为IP分片报文的净荷长度是以8字节为单位的,故为描述方便,图4中举例给出的缓冲存储器(buffer)亦为8字节。
综上所述,本发明提供的一种基于网络处理器实现IP报文分片重组的方法,包括以下步骤:
(1)创建哈希索引表;
(2)分配两片用于存储分片IP报文的缓冲存储区;
(3)从接收到的一个新的IP分片报文的IP首部中提取源IP地址、
目的IP地址、标识、片偏移和长度信息;
(4)利用所述源IP地址、目的IP地址、标识作为输入进行哈希运
算,根据运算结果申请一个哈希单元;
(5)从所述的其中一片缓冲存储区中申请一个缓冲存储单元,并判
断该片缓冲存储区是否被申请完毕,若申请完毕,则申请使用
所述的另一片缓冲存储区;
(6)将IP首部保存到所述的缓冲存储单元中;
(7)根据所述接收到的IP分片报文的片偏移信息将该IP分片报文
保存到所述缓冲存储单元的相应位置,并将该缓冲存储单元的
首地址保存到所述哈希单元中;
(8)判断所接收到的IP分片报文是否为最后一片,若是,则计算
所有需要重组的IP分片报文对应的IP报文总长度,并将IP报
文总长度信息存储到哈希单元中;
(9)计算当前已经收到的IP分片报文的总长度,将所述总长度信
息更新到哈希单元中;
(10)将所述计算当前已经收到的IP分片报文的总长度与所述IP
报文总长度比较,若不相等,继续接收后续分片,若相等,则
本组IP分片报文全部收到,重组完毕,执行步骤(13);
(11)接收后续的IP分片报文,利用其IP首部中的源IP地址、目
的IP地址和标识进行哈希运算,定位到相应的哈希单元中;
(12)从哈希单元中取出缓冲存储单元首地址,根据该IP分片报文
的片偏移信息将该分片报文的数据净负荷拷贝到所述缓冲存储
单元的相应位置,执行步骤(8);
(13)释放该IP报文所使用的哈希索引单元,释放其占用的两片缓
冲存储单元。
同时可以看出,本发明所提供方法有以下三大特征:
首先,采用哈希运算来定位一组IP分片报文,与遍历链表的相比,采用哈希运算具有分片定位速度快且定位准确的优点;
其次,在重组过程无需定时器,而是采用双片缓冲存储区机制,当一片缓冲存储区被用尽后立刻使用另一片缓冲存储区存放待重组的分片。采用双片缓冲管理方式,保证了由于所有分片未全部收到而挂死的缓冲存储单元最终能够被释放。
最后,可实现原位重组。网络处理器中的RISC CPU可直接操作和控制内存与MAC外设间的数据传输,从而在将数据报文从MAC外设的缓冲区拷贝到内存的过程中即可完成重组功能,无需二次拷贝。
综上所述,本发明所提出的基于网络处理器实现IP分片报文重组的方法与通用处理器所采用的IP分片报文重组方法相比,具有无需定时器,原位即可实现重组的优点,它通过哈希运算来定位一组IP分片,不仅提高了重组的速度,而且使重组过程变得更加简单有效,从而使网络处理器能适用于边缘网络设备,进而替代通用处理器来进行IP上层应用协议处理。例如在本发明的可实施的一个典型应用场合;WCDMA(Wideband Code Division MultipleAccess,即宽带码分多址系统)系统的分组域为实现高速、宽带的多媒体数据业务,通用处理器已不满足要求,必须采用网络处理器实现。其两大功能实体GGSN(Gateway GPRS Support Node,即网关GPRS支持点,其中GPRS即General Packet Radio Service——无线分组业务)和SGSN(Serving GPRSSupport Node,即服务GPRS支持点)作为边缘网络设备要对承载在GTP(GPRSTunnel Protocol,即GPRS通道协议)协议之上的用户面数据报文都进行处理,而GTP协议又是承载在IP协议之上的,故要处理GTP封装的分组数据业务,可采用本发明提供的基于网络处理器实现IP分片报文的重组的方法。
尽管参照实施例对所公开的涉及基于网络处理器实现IP报文分片重组的方法进行了特别描述,本领域技术人员将能理解,在不偏离本发明的范围和精神的情况下,可以对它进行形式和细节的种种显而易见的修改。因此,以上描述的实施例是说明性的而不是限制性的,在不脱离本发明的精神和范围的情况下,所有的变化和修改都在本发明的范围之内。