CN1581793A - 因特网协议(ip)包进行重组的装置和方法 - Google Patents

因特网协议(ip)包进行重组的装置和方法 Download PDF

Info

Publication number
CN1581793A
CN1581793A CN 03143776 CN03143776A CN1581793A CN 1581793 A CN1581793 A CN 1581793A CN 03143776 CN03143776 CN 03143776 CN 03143776 A CN03143776 A CN 03143776A CN 1581793 A CN1581793 A CN 1581793A
Authority
CN
China
Prior art keywords
memory cell
message
list item
address
list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 03143776
Other languages
English (en)
Other versions
CN100502297C (zh
Inventor
孙文华
李敏秋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB031437761A priority Critical patent/CN100502297C/zh
Publication of CN1581793A publication Critical patent/CN1581793A/zh
Application granted granted Critical
Publication of CN100502297C publication Critical patent/CN100502297C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Abstract

本发明提供了一种对因特网协议(IP)包进行重组的装置,包括:输入接口,用于接收IP报文;存贮单元,用于存储所述接收的IP报文,其中,所述存贮单元包括多个定长存贮单元;重组控制装置,根据预定规则将所述接收的IP报文分段,所述分段的各段报文依次存入所述多个定长存贮单元内;描述报文链接关系的链表装置,用于链接所述各段IP报文,以在最后一段IP报文到达后,再将整个报文重组发给高层。利用本发明,实现了在IP层对分段报文的重组实时处理,减少了大流量时(千兆以上)的IP重组时对处理器的占用。

Description

因特网协议(IP)包进行重组的装置和方法
技术领域
本发明属于网络通信领域,具体涉及TCP/IP(TransmissionControl Protocol/Internet Protocol-传输控制协议/因特网协议)中的IP包进行重组的装置和方法。
背景技术
目前,TCP/IP协议中的包因各个链路层传送的最大报文长度有限制,而应用层所传送的报文却长短不一,对超出链路层报文长度的,必须在IP层进行分段。各段IP报文到达目的IP地址后,需将分段的IP报文再重新组合起来,再发给高层处理。
TCP/IP协议中的IP包进行重组的装置和方法是由软件基于处理器来实现的。而软件任务的执行通常全部串行执行。通常的处理过程为:当IP包的各段到达目的地时,按以下规程对它们进行重组:
1.具有同一个源IP地址、目的地址、协议类型和标识域的分片被放在同一个重组缓冲器中,在该重组缓冲器中,它们被堆在一起,直到属于同一个原始数据包的所有分段都到达。
2.IP报文中的段偏移域和其它更多的段、总长度域一起可以决定重组时各个分段的前后顺序,还可以确定是否所有的分段都已到达。
3.当最后一个分段到达时,原始的数据包就恢复好了。这时就可以释放重组缓冲器,然后就可以对原始的数据包进行进一步的处理(常常是按IP协议域所示交给更高层处理),就好像它从没有被分过段一样。
4.如果在一定的时间内,有一些分段没有到达,重组缓冲器也会被释放,前面到达的所有分段都将被丢弃。
上述过程的实现均是由软件串行完成,因此,占用CPU(中央处理器)时间,而且对于缓存的管理采用变长管理,管理难度大,空间容易形成碎片,效率不高。
如上所述,关于重组的方法,目前大多数采用在处理器运行软件来实现。但随着网络处理的复杂度的提高,主机将大量完成高层协议的处理,如果不把IP重组的任务从主机中剥离出来,则会影响整个网络处理的效率。本发明解决了在大流量时(千兆以上)实现IP包重组的问题。
发明内容
本发明的目的是针对上述现有技术的现状,提供一种能够在FPGA(Field Programmable Gate Array-现场可编程门阵列)中高效实现IP包进行重组的装置和方法。
本发明提供一种对因特网协议(IP)包进行重组的装置,包括:
输入接口,用于接收IP报文;
存贮单元,用于存储所述接收的IP报文,其中,所述存贮单元包括多个定长存贮单元;
重组控制装置,根据预定规则将所述接收的IP报文分段,所述分段的各段报文依次存入所述多个定长存贮单元内;
描述报文链接关系的链表装置,用于链接所述各段IP报文,以在最后一段IP报文到达后,再将整个报文重组发给高层。
其中,所述描述报文链接关系的链表装置包括存贮单元链表和空闲存贮单元链表,以与所述重组控制装置和所述多个定长存贮单元结合实现所述分段的各段报文的存储;所述描述报文链接关系的链表装置还包括流存贮描述表和空闲表项链表,用于通过所述重组控制装置的控制实现所述存储的各段报文的组链;所述存贮单元还包括先入先出缓存区(FIFO),用于发送所述组链的报文。
其中,所述存贮单元链表描述接收的一段IP数据段,分段后的各段存储于哪个定长存贮单元,和各段排列次序;所述空闲存贮单元链表描述了未存储数据的定长存贮单元;所述流存贮描述表描述了同一IP报文流的报文段;所述空闲表项链表链接了所有流存贮描述表中未占用的表项的地址。
其中,所述存贮单元还包括内容可寻址存贮器(CAM),用于存储根据源IP地址排序的一系列表项。所述重组控制装置包括:输入控制子装置,流表控制子装置,存贮控制子装置及发送控制子装置;所述输入控制子装置用于解析IP报文段,将所述解析的IP报文段发给流表控制子装置,向所述存贮控制子装置发出空闲存贮单元的申请,在存贮完成后将包括首、尾定长存贮单元地址及尾存贮单元数据长度的信息反馈给所述流表控制子装置和所述存贮控制子装置;所述流表控制子装置,用于发起对所述CAM的查询、更新、插入和删除,更新所述流存贮描述表,管理空闲表项链表,检查IP报文是否收齐,将收齐的IP报文的表项依次写入所述先入先出缓存区中;所述发送控制子装置读取所述写入先入先出缓存区中的IP报文的表项,将IP报文数据从存贮单元中取出并发给高层;所述存贮控制子装置更新所述存贮单元链表和管理空闲存贮单元链表,返回所述输入控制子装置申请的空闲存贮单元的地址。
这个装置由现场可编程阵列(FPGA)或门阵列实现。
本发明还提供一种对IP包进行重组的方法,包括步骤:
接收要处理的IP数据段;
从空闲存贮单元链表读取空闲存贮单元的地址;根据所述空闲存贮单元的地址,输入控制单元将所述数据分段依次存入定长存贮单元;
读取所述IP数据段中的源IP地址;获取所述IP数据段的首表项地址;
从空闲表项链表中申请空闲表项的地址;
将所述IP数据段的存贮单元链表信息(首尾存贮单元的地址)存入所述申请的空闲表项的相应域中;
判断所述IP数据段报文是否接收完毕,如果接收完毕,上报所述IP数据段报文给高层;
如果未接收完毕,判断接收是否超时,如果没超时,返回所述接收要处理的IP数据段的步骤;如果超时,丢弃所述的IP数据段。
其中,所述获取所述IP数据段的首表项地址的步骤包括:在CAM中查找所述IP数据段的首表项地址;
判断是否已接收所述IP数据段;
如果已接收,取出所述IP数据段的首表项地址;
如果没有,建立新表项。
其中,所述从空闲表项链表中申请空闲表项的地址的步骤,还包括:建立新表项。所述将所述IP数据段的存贮单元链表信息(首尾存贮单元的地址)存入所述申请的空闲表项的相应域中的步骤还包括:根据所述IP数据段的偏移量将所述IP数据段链接在流描述表中合适的位置上,更新响应的IP组描述表中的链接关系。所述上报所述IP数据段报文给高层的步骤包括:根据流描述表中的相应表项的各个域内容写入包所述IP数据段到发送FIFO中,释放表项,删除CAM中的记录;
其中,所述丢弃所述的IP数据段的步骤还包括:释放和删除存储的所述IP数据段的表项和链表。
其中,所述释放和删除表项和链表的步骤包括:释放所述流描述表中的表项,将表项地址链接在空闲表项链表中;释放相应的存贮单元,将存贮单元的地址链接在空闲存贮单元链表中;删除CAM中的表项。
利用本发明,实现了在IP层对分段报文的重组实时处理,减少了大流量时(千兆以上)的IP重组时对处理器的占用。
附图说明
图1示出了本发明的实施例的实现IP包进行重组的装置的原理图;
图2示出了图1中的重组控制装置的原理图;
图3示出了本发明的实施例的数据处理过程的流程图;
图4为本发明实施例中的一组IP报文各个表项间的关系图;
图5描绘采用本发明的装置实现IP重组在数据通信产品的网络接口卡中的TOE(传输/控制协议、因特网协议卸载引擎)的原理图。
具体实施方式
为了便于本领域一般技术人员理解和实现本发明,现结合附图描绘本发明的实施例。
图1示出了本发明的实施例的实现IP包进行重组的装置的原理图。该装置通过输入接口110接收IP报文,重组控制装置115根据预定规则将收到的IP各段报文依次存入存贮单元内。各段IP报文由一个链链接,等最后一段IP报文到达后,再将整个报文重组起来一起发给高层。
本实施例中接收IP报文由重组控制装置115完成;报文存贮由重组控制装置115、定长存贮单元125、存贮单元链表130、空闲存贮单元链表完成;IP分段的组链由重组控制装置115、流存贮描述表140、空闲表项链表120完成;发送报文由重组控制装置115、发送包FIFO145(First Input First Output-先入先出缓存区)完成。通常,一个定长存贮单元125的存储容量是64字节的整数倍,在本发明的实施例中,选为128字节。
其中,定长存贮单元125用来存贮接收到的一段段报文,采用动态定长管理,每一个IP报文段的数据存贮在一个个定长的存贮单元中。一般来说,一个IP报文段会占据1到几个存贮单元,除最后一个存贮单元外,前边几个存贮单元的长度均为定长存贮单元125的长度,而最后一个存贮单元存贮的数据长度则有可能小于定长存贮单元125的长度。所以对于每个存贮单元的存贮数据长度必须标识。而且,对于一段连续的IP数据段,它分别占据了哪几个存贮单元,各个存贮单元的排列次序又如何,这些信息也必须标识。否则,在重组结束时就无法取出正确的IP报文。在实施例中的存贮单元链表130就起了这样的标识作用。存贮单元链表130中的各单元地址和每个存贮单元的地址对应,每个单元中有两个域:本存贮单元长度和后续数据存贮单元地址。其中本存贮单元的长度表明了本单元有效数据的长度;后续数据存贮单元的地址则表明了后续相邻数据(如果有的话)所在的存贮单元的地址。第1个存贮单元的后续数据存贮单元地址域中放入第2个存贮单元的地址,第2个存贮单元的后续数据存贮单元地址域中放入第3个存贮单元的地址,就这样依次写入,最后一块的存贮单元的地址,因后续无数据,则写入空(即统一指定一个无效的地址)。这样,存入的一段IP数据根据这个链表即可成为一个整体。在读出时只要知道该IP报文段存贮的第1个存贮单元的地址,即可正确读出整段报文。
空闲存贮单元链表135则用一个链表的方式将所有未存入数据的存贮单元的地址链接起来,每次欲存贮接收到的IP报文段时,首先要从这个空闲存贮单元链表135中申请空闲的存贮单元地址,然后按照申请到的空闲存贮单元的地址将数据存入相应的存贮单元。同时把存贮单元链表130中对应地址的单元的数据长度域和后续数据存贮单元地址域进行更新。而在存贮单元被释放后,这些存贮单元的地址将又被链入空闲存贮单元链表135中待使用。通过将存贮单元动态使用,可满足大流量时的IP重组对存贮单元的需求。
在本发明的实施例中,IP的重组是由两级Buffer管理实现的。首先各个IP报文段存贮在一个个的定长存贮单元125中,用一个存贮单元链表130来链接,这是一级管理。其次,需重组的各段IP报文,均存贮在存贮单元中,但哪些IP报文段是被链路层分段的同一IP报文流(原本属于同一IP报文由于链路层最大报文的限制而被分成的一组IP报文分段称为一个IP报文流),这又需流存贮描述表140来管理。这个表中的每一项描述了一个IP报文段,它有以下几个域:报文段总长度、间隙、报文段偏移字节、上一段报文表项地址、下一段报文表项地址、本段报文首存贮单元地址、本段报文尾存贮单元地址、报文存贮占用的存贮单元数、IP重组定时、本表项是否有效。报文段总长度域标识了本段IP报文的总字节数,间隙域标识了本段IP报文的前一段报文是否已经收到,如果收到,则无间隙,如果没有收到,则有间隙。报文段偏移字节这是IP报文段的头信息中固有的,每段IP报文段在重组时应插入整个IP报文的哪一个位置就是根据这个域决定的。上段报文标识是指如果本段报文的前一段报文已经收到,则上一段报文所处表项的地址即可填入这个域,则同时也把本表项的地址填入前段报文表项中的下一段报文域。如果还未收到前一段报文,则这个域为空(即统一指定一个无效的地址)。本段报文的首、尾存贮单元的地址、报文存贮占用的存贮单元数则是在IP报文段数据存贮完后即可填入。IP重组定时则由第1段报文到达时启动1个定时器,域内填入定时器的地址,如果在定时到达之内重组完毕,则在释放表项的同时要将定时器释放,如果在定时到达之内未重组完毕,则重组控制装置115在定时扫描每个有效表项的定时器的值时会发现,从而决定丢弃该IP流,把此前收到的IP报文段占用的表项、定时器及存贮单元全部释放,CAM150(content addressable memory-内容可寻址存贮器)中的相应表项要被删除。本段报文是否有效即是本表项是否占用的一个标志,这个主要是在维护空闲表项链表120时用的,如果申请到的空闲表项中该位不为0,即还被占用,则要定义一个规则,或者强制使用该表项,或者重新申请空闲表项。
空闲表项链表120即是把所有流描述表中未占用的表项的地址链在一起,每次来1个IP报文段,则要从空闲表项链表120中申请1个空闲表项。然后根据该IP报文段的存贮信息及从CAM150中查到的信息更新该表项的内容。
在实际中接收到的各段IP报文的链接始终是按照由前到后这个位置排列着的,这其中由Interval(间隙)这个域指明了当前段和前一段之间有无间隙,这样在新的段来到时要插入这个IP报文段时,只需从这个流的第1个段依次往后寻找有间隙的报文段,然后比较IP报文中的域segfrag(段偏移)的大小即可。这大大减少了重组所需的时间。
CAM150中存放是根据源IP地址排序的一系列表项,根据源IP地址的查找,返回的是已收到的IP报文段中的第1段在流存贮描述表140中的表项的地址(如果前边已经收到过该IP报文的分段),或者返回空,这样,根据从空闲表项链表120中申请到的表项地址,会在CAM150中建立相应的表项,以给一下次查询用。如果新接收的IP报文段在已收到的IP报段中处于最前边的位置,则本段报文在流存贮描述表140中的表项地址会更新CAM150中相应的表项,即下次再查CAM150时,返回的表项地址即是本段报文的表项地址。
重组控制装置115会定时查询这个IP流中的各段IP报文是否全部收齐,如果收齐,则根据该表,可将各个报文段按前后次序依次从存贮单元中读出上报给上一层处理。在实际中重组控制装置115会根据重组完毕的该IP报文的所有表项的内容按前次序依次写入发送包FIFO145中,这个发送包FIFO145有以下几个域:首存贮单元地址、存贮单元个数、尾存贮单元字节长度、首IP报文标志、尾IP报文标志。每一个表项写完这5个域后,则将相应的表项释放回空闲表项链表120。
发送时会按照这5个域将存贮单元中的数据依次取出通过高层输出接口155送给高层处理。每发送完一个存贮单元的数据,则将该存贮单元的地址释放回空闲存贮单元链表135。
在本发明的实施例中,对数据的存贮,对CAM150的查询,对流存贮描述表140的查询、更新,对上层缓存的发送数据均是并行。重组控制装置115控制存贮了每一个接收到的IP包,而且在接收到IP报文时同时可根据报文中的源IP地址对CAM150进行查询,同时也完成对空闲表项链表120的申请。在报文存贮的同时也根据CAM150返回的IP流信息和该IP报文的相关信息对空闲表项中的一些域进行更新。等到数据存贮结束时,只需将相应的首尾存贮单元的地址存入该表项对应域中即可。流表控制子装置(图2)定时完成了对IP报文段是否收齐的检查,从而启动了向高层传送数据的过程。因此,利用本发明,IP重组的速率大大提高,而无需受任何处理器速率的约束。
图2示出了图1中的重组控制装置115的原理图。该重组控制装置115包括4个子装置:输入控制子装置210、流表控制子装置220、存贮控制子装置230及发送控制子装置240。
输入控制子装置210主要负责解析IP报文段,将其中有效域如源IP地址、报文段总长度、报文段偏移字节等信息解析出来。发给流表控制子装置220。同时要向存贮控制子装置230发出空闲存贮单元的申请,并在存贮完成后将首、尾存贮单元地址及尾存贮单元数据长度等信息反馈给流表控制子装置220和存贮控制子装置230。
流表控制子装置220主要负责发起对CAM150的查询、更新、插入和删除,负责对流存贮描述表140的更新,负责对空闲表项链表120的管理,负责对IP报文是否收齐的检查,负责将收齐的IP报文的表项依次写入发送包(先入先出缓存区)中。
发送控制子装置240主要负责对发送包FIFO145的读取,根据相应的存贮地址完成将IP报文数据从存贮单元中取出并发给高层。完成对存贮单元的释放。
存贮控制子装置230主要负责对存贮单元链表130的更新和对空闲存贮单元链表135的管理,负责返回对输入控制子装置210申请的空闲存贮单元地址。
在本发明的实施例中,采用 FPGA(Field Programmable GateArray-现场可编程门阵列)设计,全部由硬件实现。
图3示出了本发明的实施例的数据处理过程的流程图;
在步骤310,等待IP分段进入,如果在步骤315判断有IP报文段进入,方法进入步骤320、321和322;如果在步骤315判断没有IP分段进入,返回步骤310。
在步骤320,从空闲存贮单元链表读取空闲存贮单元的地址,然后进入步骤325。
在步骤325,输入控制单元将数据依次存入定长存贮单元中。然后,进入步骤340。
在步骤321,读取该段数据中的源IP地址;然后在步骤326,去CAM中查找该IP报文的首表项地址;
在步骤326,判断是否已经有该IP报文段接收;如果有,在步骤331,取出该IP报文的首表项地址;如果没有,在步骤332,建立表项;然后进入步骤340。
在步骤322,从空闲表项链表中申请空闲表项的地址,完成后进入步骤332和步骤340。
在步骤340,将该段数据的存贮单元链表信息(首尾存贮单元的地址)存入到申请到的空闲表项相应域中,并根据该段数据的偏移量将该组链接在流描述表中合适的位置上,更新响应的IP组描述表中的链接关系。
在步骤345,判断该IP报文是否接收完毕,如果是,则进入步骤350;如果不是,则进入步骤346。
在步骤350,根据流描述表中的相应表项的各个域内容写入包发送FIFO中,释放表项,删除CAM中的记录;然后进入步骤355,该IP报文上报给高层,释放相应存贮单元,将存贮单元地址链接在空闲存贮单元链表中,后返回步骤310。
在步骤346,判断接收是否超时,如果超时,则进入步骤351;如果没超时,则进入步骤310。
在步骤351,释放流描述表中的表项,将表项地址链接在空闲表项链表中;释放相应的存贮单元,将存贮单元的地址链接在空闲存贮单元链表中;删除CAM中的表项。然后进入步骤310。
图4示出了一组IP报文各个表项间的关系图,图中箭头表示了一组IP报文在各个表项中的关系。
FBD(Flow Buffer Descrition)是指流描述表,它的每个表项均描述了一段IP报文的特性。每个表项有一个固定的地址,未被使用的各个表项的地址被放入空闲表项链表中,每次有新的IP包来时从空闲表项中组号中弹出一个使用。在这个描述表中每一个IP报文通常包括以下几项描述:
AllLen-报文段总长度,主要描述此IP报文的总长度;
Interval(1b)-间隙,主要描述此段IP和前段IP有无间隙,如果本段IP报文的前一段报文已经收到,则无间隙,该位置1,如果没有收到,则有间隙,该位置0;
Segfrag-报文段偏移字节,主要描述此段IP的偏移字节数;
LastItem-上一段报文表项地址,主要描述这个IP流的前一段的表项地址;
NextItem-下一段报文表项地址,主要描述这个IP流的下一段的表项地址;
Header-本段报文首存贮单元地址,主要描述本IP段存贮的首单元地址;
Tail-本段报文尾存贮单元地址,主要描述本IP段存贮的尾单元地址;
BlockNum-报文存贮占用的存贮单元数,主要描述本IP段存贮占用的存贮单元个数;
Timer-IP重组定时,主要描述每个IP流重组时启用的定时器地址;
Act(1b)-本表项是否有效,主要描述本表项是否被占用,被占用则置为1,未被占用则置为0。
BB(Block Buffer)-定长存贮单元,用于存贮接收到的IP报文;
BLL(Buffer link list)-存贮单元链表,用于描述各个存贮单元的有效数据长度及前后数据的链接关系。它有两个域:
BL(Blocklen)-存贮单元有效字节长度;
NBBAddr(Next Block Buffer Addresser)-存贮单元相邻的下一存贮单元的地址;
FBL(Free Buffer List)-是空闲存贮单元链表,此链表中存贮的是空闲的存贮单元的地址,每释放一个存贮单元,则将此存贮单元的地址链接在这个链表中;而往存贮单元中存贮数据时需从此链表中申请存贮单元的地址。
CAM(content addressable memory)-内容可寻址存贮器,每个表项中有两个域:
IAddr(Item Addresser)-表项地址,这里放入的是已收到的IP流中目前排在首位的流描述表中的表项的地址;
IPAddr(Internet Protocol Address)-IP地址,这里放入的是已收到的IP报文的源IP地址。
SPF:(Send Packet FIFO)-发送包FIFO,这里放入的是已经重组完毕,准备发往高层的IP数据报文。它包含3个域:
Header-IP报文存贮的首存贮单元地址;
BlockCount-本IP报文占用的存贮单元的个数;
EndBlockLen-尾存贮单元有效字节的长度;
Open-表示重组完成的第1段IP报文;
Close-表示重完成的最后1段IP报文。
在图4中目前收到1个IP流的2个分段,在流描述表中分别占用了表项0和表项1。表项0在前,表项1在后,其中表项0是该IP流的第1分段,固它的间隙域为1,表项1的IP报文紧跟在表项0的IP报文后边,固它的间隙域为1。表项0占用了存贮单元0、2、5,最后1个存贮单元有效数据为476字节;表项1占用了存贮单元1、3、4,最后1个存贮单元的有效数据为100字节。空闲存贮单元链表中的内容为6、7…。该IP流占用的定时器的地址为11111。本IP流已重组完毕。这从两个方面来看:一是表项0和1的间隙域为1,另一个看表项1的偏移字节加本IP段的长度已经达到该IP流的总长度。
图中CAM中有1条纪录,指明了已收到IP流的源IP地址为10.10.10.10,该IP流在流描述表中的首表项地址为0。
流表控制子装置在检到该IP流已经重组完毕后,则会将相应信息写入如图中的包发送FIFO中。
在包发送FIFO中有两项,第1项的Open标志为1,表明它是重组完成后的第1段IP报文,第2项的Close标志为1,表明它是重组完成后的第2段IP报文。
图5描绘采用本发明的装置实现IP重组在数据通信产品的网络接口卡中的TOE(传输/控制协议、因特网协议卸载引擎)的原理图。主机(host)的数据通过host总线进入IP重组装置,IP重组装置根据上面描绘的方法将IP报文段存贮于图中的缓存(buffer)中,通过与缓存交互进行如上描绘的处理。然后,将重组好的数据发给主机(host)处理。
在本发明的实施例的应用中,比现有技术省去了板上嵌的一个处理器,而随着流量的增大,重组的效率不再受处理器速率的制约,存贮单元的动态使用也使得存贮区的大小不再成为重组的瓶颈。
本发明中,由于各处理均是并行处理,大大提高了处理的效率。而且对于缓存的定长动态管理也大节约了存贮空间。对于目前广泛使用的大流量的网络接口卡中这项技术均可得到应用。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。

Claims (13)

1.一种对因特网协议(IP)包进行重组的装置,包括:
输入接口,用于接收IP报文;
存贮单元,用于存储所述接收的IP报文,其中,所述存贮单元包括多个定长存贮单元;
重组控制装置,根据预定规则将所述接收的IP报文分段,所述分段的各段报文依次存入所述多个定长存贮单元内;
描述报文链接关系的链表装置,用于链接所述各段IP报文,以在最后一段IP报文到达后,再将整个报文重组发给高层。
2.如权利要求1所述的装置,其中,所述描述报文链接关系的链表装置包括存贮单元链表和空闲存贮单元链表,以与所述重组控制装置和所述多个定长存贮单元结合实现所述分段的各段报文的存储;所述描述报文链接关系的链表装置还包括流存贮描述表和空闲表项链表,用于通过所述重组控制装置的控制实现所述存储的各段报文的组链;所述存贮单元还包括先入先出缓存区(FIFO),用于发送所述组链的报文。
3.如权利要求2所述的装置,其中,所述存贮单元链表描述接收的一段IP数据段,分段后的各段存储于哪个定长存贮单元,和各段排列次序;所述空闲存贮单元链表描述了未存储数据的定长存贮单元;所述流存贮描述表描述了同一IP报文流的报文段;所述空闲表项链表链接了所有流存贮描述表中未占用的表项的地址。
4.如权利要求2所述的装置,其中,所述存贮单元还包括内容可寻址存贮器(CAM),用于存储根据源IP地址排序的一系列表项。
5.如权利要求4所述的装置,其中,所述重组控制装置包括:输入控制子装置,流表控制子装置,存贮控制子装置及发送控制子装置;
其中,所述输入控制子装置用于解析IP报文段,将所述解析的IP报文段发给流表控制子装置,向所述存贮控制子装置发出空闲存贮单元的申请,在存贮完成后将包括首、尾定长存贮单元地址及尾存贮单元数据长度的信息反馈给所述流表控制子装置和所述存贮控制子装置;
所述流表控制子装置,用于发起对所述CAM的查询、更新、插入和删除,更新所述流存贮描述表,管理空闲表项链表,检查IP报文是否收齐,将收齐的IP报文的表项依次写入所述先入先出缓存区中;
所述发送控制子装置读取所述写入先入先出缓存区中的IP报文的表项,将IP报文数据从存贮单元中取出并发给高层;
所述存贮控制子装置更新所述存贮单元链表和管理空闲存贮单元链表,返回所述输入控制子装置申请的空闲存贮单元的地址。
6.如前述权利要求之一所述的装置为由现场可编程阵列(FPGA)或门阵列实现。
7.一种对IP包进行重组的方法,其特征在于,包括步骤:
接收要处理的IP数据段;
从空闲存贮单元链表读取空闲存贮单元的地址;根据所述空闲存贮单元的地址,输入控制单元将所述数据分段依次存入定长存贮单元;
读取所述IP数据段中的源IP地址;获取所述IP数据段的首表项地址;
从空闲表项链表中申请空闲表项的地址;
将所述IP数据段的存贮单元链表信息(首尾存贮单元的地址)存入所述申请的空闲表项的相应域中;
判断所述IP数据段报文是否接收完毕,
如果接收完毕,上报所述IP数据段报文给高层;
如果未接收完毕,判断接收是否超时,如果没超时,返
回所述接收要处理的IP数据段的步骤;如果超时,丢弃所述的IP数据段。
8.如权利要求7所述的方法,其中,所述获取所述IP数据段的首表项地址的步骤包括:在CAM中查找所述IP数据段的首表项地址;
判断是否已接收所述IP数据段;
如果已接收,取出所述IP数据段的首表项地址;
如果没有,建立新表项。
9.如权利要求7所述的方法,其中,所述从空闲表项链表中申请空闲表项的地址的步骤,还包括:建立新表项。
10.如权利要求8或9所述的方法,其中,所述将所述IP数据段的存贮单元链表信息(首尾存贮单元的地址)存入所述申请的空闲表项的相应域中的步骤还包括:根据所述IP数据段的偏移量将所述IP数据段链接在流描述表中合适的位置上,更新响应的IP组描述表中的链接关系。
11.如权利要求10所述的方法,其中,所述上报所述IP数据段报文给高层的步骤包括:根据流描述表中的相应表项的各个域内容写入包所述IP数据段到发送FIFO中,释放表项,删除CAM中的记录。
12.如权利要求10所述的方法,其中,所述丢弃所述的IP数据段的步骤还包括:释放和删除存储的所述IP数据段的表项和链表。
13.如权利要求12所述的方法,其中,所述释放和删除表项和链表的步骤包括:释放所述流描述表中的表项,将表项地址链接在空闲表项链表中;释放相应的存贮单元,将存贮单元的地址链接在空闲存贮单元链表中;删除CAM中的表项。
CNB031437761A 2003-08-05 2003-08-05 因特网协议(ip)包进行重组的装置和方法 Expired - Fee Related CN100502297C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB031437761A CN100502297C (zh) 2003-08-05 2003-08-05 因特网协议(ip)包进行重组的装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB031437761A CN100502297C (zh) 2003-08-05 2003-08-05 因特网协议(ip)包进行重组的装置和方法

Publications (2)

Publication Number Publication Date
CN1581793A true CN1581793A (zh) 2005-02-16
CN100502297C CN100502297C (zh) 2009-06-17

Family

ID=34579514

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB031437761A Expired - Fee Related CN100502297C (zh) 2003-08-05 2003-08-05 因特网协议(ip)包进行重组的装置和方法

Country Status (1)

Country Link
CN (1) CN100502297C (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008040231A1 (fr) * 2006-09-18 2008-04-10 Huawei Technologies Co., Ltd. Procédé et dispositif destinés au réassemblage de données fragmentées
CN100420238C (zh) * 2006-04-12 2008-09-17 华为技术有限公司 一种ip报文分片重组的方法
WO2010022629A1 (zh) * 2008-08-27 2010-03-04 华为技术有限公司 一种多链路协议分片数据的重组方法、装置及系统
CN102035751A (zh) * 2011-01-20 2011-04-27 大唐移动通信设备有限公司 一种数据的传输方法和设备
CN102164095A (zh) * 2011-05-31 2011-08-24 西安空间无线电技术研究所 一种星上交换模块的数据报分段与重组系统及实现方法
CN101146031B (zh) * 2006-12-05 2012-02-22 中兴通讯股份有限公司 无线通讯系统中前向业务数据的存储方法及其处理方法
CN105357148A (zh) * 2015-10-15 2016-02-24 盛科网络(苏州)有限公司 避免网络交换芯片输出报文乱序的方法及系统
CN106789730A (zh) * 2016-12-29 2017-05-31 杭州迪普科技股份有限公司 分片报文的处理方法及装置
CN111211990A (zh) * 2019-12-31 2020-05-29 北京旋极信息技术股份有限公司 一种数据包处理方法和装置
CN111917780A (zh) * 2020-08-05 2020-11-10 电信科学技术第五研究所有限公司 一种基于fpga的toe数据拼接系统及方法

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100420238C (zh) * 2006-04-12 2008-09-17 华为技术有限公司 一种ip报文分片重组的方法
WO2008040231A1 (fr) * 2006-09-18 2008-04-10 Huawei Technologies Co., Ltd. Procédé et dispositif destinés au réassemblage de données fragmentées
CN101146031B (zh) * 2006-12-05 2012-02-22 中兴通讯股份有限公司 无线通讯系统中前向业务数据的存储方法及其处理方法
WO2010022629A1 (zh) * 2008-08-27 2010-03-04 华为技术有限公司 一种多链路协议分片数据的重组方法、装置及系统
CN101662461B (zh) * 2008-08-27 2012-08-08 华为技术有限公司 一种多链路协议分片数据的重组方法、装置及系统
CN102035751A (zh) * 2011-01-20 2011-04-27 大唐移动通信设备有限公司 一种数据的传输方法和设备
CN102164095A (zh) * 2011-05-31 2011-08-24 西安空间无线电技术研究所 一种星上交换模块的数据报分段与重组系统及实现方法
CN102164095B (zh) * 2011-05-31 2014-07-02 西安空间无线电技术研究所 一种星上交换模块的数据报分段与重组系统及实现方法
CN105357148A (zh) * 2015-10-15 2016-02-24 盛科网络(苏州)有限公司 避免网络交换芯片输出报文乱序的方法及系统
CN106789730A (zh) * 2016-12-29 2017-05-31 杭州迪普科技股份有限公司 分片报文的处理方法及装置
CN111211990A (zh) * 2019-12-31 2020-05-29 北京旋极信息技术股份有限公司 一种数据包处理方法和装置
CN111211990B (zh) * 2019-12-31 2022-09-27 北京旋极信息技术股份有限公司 一种数据包处理方法和装置
CN111917780A (zh) * 2020-08-05 2020-11-10 电信科学技术第五研究所有限公司 一种基于fpga的toe数据拼接系统及方法

Also Published As

Publication number Publication date
CN100502297C (zh) 2009-06-17

Similar Documents

Publication Publication Date Title
CN1219384C (zh) 多播传输的方法及设备
CN1152532C (zh) 有效的输出请求分组交换设备和方法
US6957281B2 (en) Ingress processing optimization via traffic classification and grouping
US7970963B2 (en) Efficient buffer management in a multi-threaded network interface
DE60021358T2 (de) Eine hoch-leistungs-netzschnittstelle
US20050276230A1 (en) Communication statistic information collection apparatus
CN1581793A (zh) 因特网协议(ip)包进行重组的装置和方法
CN1396748A (zh) 分组处理装置
CN1628296A (zh) 有效处理网络数据的系统和方法
CN1263262C (zh) 用于处理带宽分配消息的系统和方法
CN1766860A (zh) 一种中断控制处理装置和方法
EP1463281A3 (en) packet buffer management
CN101039212A (zh) 一种数据快速入库方法
CN114584560B (zh) 一种分片帧重组方法及装置
CN1917478A (zh) 转发报文的处理方法及处理模块
CN1317747A (zh) Atapi指令接收方式
CN1502198A (zh) 通过将限定符插入控制块中链接帧数据
CN1271833C (zh) 无需ip重组分发分组的装置和方法
US20140136683A1 (en) Inter-packet interval prediction operating algorithm
CN106791908A (zh) 一种支持云平台采用双缓冲的实时视频流存储方法
CN1783874A (zh) 网络设备中地址解析协议高速缓存表项的老化方法
CN1968187A (zh) 一种数据速率适配的方法和装置
CN1878132A (zh) 一种实现变长分组包交换的方法及系统
CN1129281C (zh) 利用缓存技术提高ip报文转发速度的方法
CN1852104A (zh) 一种在互联网络中发送并处理广告的方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090617

Termination date: 20170805