具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是根据本发明的一个实施例的多链路协议分片数据的重组系统的结构组成示意图;如图1所示,本实施例的重组系统包括存储装置1和重组装置2,其中:
所述存储装置1,用于存储接收的分片数据、多个分片描述信息数据块及有序数据块,其中所述一个分片描述信息数据块用于依据接收的同一链路的分片的序号,顺序存储所述同一链路的分片的分片描述信息,所述有序数据块将分片描述信息依据分片的序号进行顺序存储;具体实现中,一个MP组内绑定的不同PPP链路上收到的分片的序号大小与接收时间相对应,即一条链路时间上先收到的分片的序号比后收到的分片的序号小。这是由于发送端的发送机制是先分片,为每一个分片分配一个序号,然后先发送序列号小的分片到一条链路上,发送到接收之间从逻辑上来看是一条固定的链路,而不同于以太网会经过不同路由到达对端的机制。因此从时间上来看,在一条链路前一个分片发送完成后,后一个分片才能在此链路上发送,因此后一个分片的序列号是大于前一个分片序列号的。这样本发明实施例中当从同一条链路上接收到分片数据后,通过本发明实施例的存储装置生成分片描述信息,并依据接收的同一链路的分片的序号,顺序存储所述同一链路各分片的分片描述信息。本发明实施例的存储装置可包括两块,第一块位于芯片的外部,比如为芯片外的同步静态随机访问存储器(SSRAM,Synchronous Static Random Access Memory),用于存储接收的分片数据;第二块位于芯片的内部,比如可为芯片内部的静态随机访问存储器(SRAM,Static Random Access Memory),用于存储所述分片数据的分片描述信息和有序数据块,其中所述存储的分片描述信息至少包括该分片的MP头信息和所述分片描述信息对应的分片数据的存储地址信息,所述MP头信息中包括分片的序号,所述分片描述信息还可进一步包括分片的接收时间。
所述重组装置2,用于从所述存储装置1所存储的各分片描述信息数据块的数据块首中,提取出序号最小的分片的分片描述信息;并将所述提取出的序号最小的分片的分片描述信息加入到有序数据块的尾部,并根据所述有序数据块中的分片描述信息,确定已接收完一个报文的所有分片时,重组所述报文。
本发明实施例采用多个分片描述信息数据块分别根据接收的同一链路的分片的序号,顺序存储所述同一链路的分片的分片描述信息,在重组过程中,由于每个分片描述信息数据块的数据块首的分片描述信息对应于从某条链路的接收的分片中序号最小的分片,因此本发明实施例可以通过比较各分片描述信息数据块的数据块首的信息,来找出一个最小序号的分片,而避免了现有技术需要对所有分片进行排序的复杂工作,因此,本发明实施例与现有技术需要遍历整个分片的存储范围对分片进行排序相比,可以简化对多链路协议数据进行重组的复杂度。
具体实现中,本实施例的存储装置可内置于所述重整装置中,作为所述重组装置的结构模块。
下面对系统中存储装置和重组装置的结构分别进行说明。
图2是根据本发明的一个实施例的多链路协议分片数据的存储装置的结构组成示意图;如图2所示,本实施例的存储装置包括分片数据存储单元10、分片描述信息存储单元11以及指示单元12,其中:
所述分片数据存储单元10用于接收并存储分片数据;
所述分片描述信息存储单元11,用于存储多个分片描述信息数据块及有序数据块,其中所述一个分片描述信息数据块用于依据接收的同一链路的分片的序号,顺序存储所述同一链路的分片的分片描述信息,所述有序数据块将分片描述信息依据分片的序号进行顺序存储。所述分片描述信息至少包括该分片的MP头信息和所述分片描述信息对应的分片数据的存储地址信息,所述MP头信息中包括分片的序号,所述分片描述信息还可进一步包括分片的接收时间。
所述指示单元12,用于针对每个分片描述信息数据块,设置第一指示信息用于指示所述分片描述信息数据块的数据块首,设置第二指示信息用于指示所述分片描述信息数据块的数据块尾。当所述分片描述信息数据块为动态链表时,该指示单元12可为另一个SRAM,该SRAM为每一个分片描述信息链表设置头指针(Head)、用于指示所述分片描述信息数据块的数据块首,设置尾指针(Tail),用于指示所述分片描述信息数据块的尾部。
较佳的,本实施例的存储装置还包括一计数单元(图中未示出),用于对每个分片描述信息数据块包含的分片描述信息的个数进行计数(用Cnt表示),当某个分片描述信息数据块中新增一个分片描述信息,则对应于该分片描述信息数据块的计数模块的计数会增加1,当某个分片描述信息数据块中减少一个分片描述信息时,对应于该分片描述信息数据块的计数模块的计数会减1。
如图3所示为一个包括三条链路的动态链表及其指示单元的示意图,其中,每个链路接收的分片按照接收先后存储在一个动态链表中,每个动态链表的中分片的序号(PD_i)由小到大排序,比如从第一链路接收的分片在链表中的排序为PD_1、PD_4,……PD_i;从第二链路接收的分片在链表中的排序为PD 2、PD_5,……PD_j,且对应于每个动态链表均有一个指示单元,所述指示单元包括指向所述链表的链表头以指示所述链表的链表首的头指针(Head),指向所述链表的链表尾以指示所述链表的尾部的尾指针(Tail)以及对所述链表包含的分片描述信息的计数参数Cnt。从图2中可以看出,每个链表的链表首的分片描述信息必然是从某链路接收的最小序号分片的分片描述信息。
图4是根据本发明的一个实施例的多链路协议分片数据的重组装置的结构组成示意图;如图4所示,本实施例的重组装置包括提取单元33、更新单元34、添加单元35以及重组处理单元36,其中:
所述提取单元33,用于从存储的各分片描述信息数据块的数据块首中,提取出序号最小的分片的分片描述信息;
本实施例的重组装置还可包括第一判断单元,用于判断是否至少有一个分片描述信息数据块的数据块首发生更新,如果判断为是,则通知所述提取单元33从各分片描述信息数据块的数据块首中,提取出序号最小的分片的分片描述信息。如前所述,所述分片描述信息数据块可为动态链表。
所述更新单元34,用于当所述提取单元33提取出序号最小的分片的分片描述信息后,将所述序号最小的分片的分片描述信息所在的数据块的数据块首更新为所述序号最小分片的分片描述信息指向的下一分片描述信息;当分片描述信息数据块为动态链表时,所述更新单元34,可通过修改Head指针,使Head指针指向所述被提取出的序号最小的分片描述信息所指向的下一分片描述信息,这样更新后Head指针指向的分片描述信息成为分片描述信息链表的链表首。具体实现中,所述存储装置可包括第一计数单元,对每个分片描述信息数据块包含的分片描述信息的个数进行计数(用Cnt表示),当所述更新单元34更新完分片描述信息数据块的数据块首后,所述第一计数单元的计数自动减1。
所述添加单元35,用于将所述提取单元33提取出的序号最小的分片的分片描述信息加入已排序分片的分片描述信息所在的有序数据块的尾部;当分片描述信息数据块和有序数据块均为动态链表时,所述添加单元35可将指示所述有序数据块尾部的Tail指针和所述有序数据块尾部分片描述信息的指针指向所述提取出的序号最小的分片的分片描述信息,这样所述提取出的序号最小的分片的分片描述信息即加入到所述有序数据块的尾部。相应的,所述重组装置可包括第二计数单元,用于对所述有序数据块中的分片描述信息的个数进行计数。当所述添加单元35将所述提取出的序号最小的分片的分片描述信息加入到所述有序数据块的尾部后,所述第二计数单元的计数加1。
所述重组处理单元36,用于根据所述有序数据块中的分片描述信息,确定已接收完一个报文的所有分片,重组所述报文。具体实现中,接收的分片描述信息中的MP头可包括B标识和E标识,当MP头中的B标识有效时,表示接收的是一个报文的第一个分片,当MP头中的E标识有效时,表示接收的是一个报文的最后一个分片,因此,具体实现中,所述重组处理单元36可通过判断接收是否接收到一个B标识有效的分片后,又接收到同一个报文的一个E标识有效的分片,如果是,则判定已经接收完一个报文的所有分片,此时重组处理单元36根据所述报文的各分片描述信息对应的分片的地址信息找到各分片,重组所述报文。否则,通知所述提取单元33继续从各分片描述信息数据块的数据块首中,提取出序号最小的分片的分片描述信息。
具体实现中,本实施例的重组装置还可包括第七处理单元,用于当所述重组处理单元重组所述报文后,释放所述报文各分片占用的存储资源。
较佳的,图4中的提取单元33可包括图5所示的结构组成,参考图5,提取单元33进一步可包括确定单元330、第二判断单元331、第一处理单元332以及第二处理单元333,其中:
所述确定单元330,用于从各分片描述信息数据块的数据块首中,确定序号最小的分片;如前所述,每个分片描述信息数据块的数据块首是从某链路接收的最小序号分片的分片描述信息,且各分片描述信息中包含对应分片的序号,因此,确定单元330可通过比较各分片描述信息数据块的数据块首的方式,确定序号最小的分片。
所述第二判断单元331,用于判断所述确定单元330确定的序号最小的分片是否为目标分片,所述目标分片的序号为所述有序数据块的尾部的分片描述信息对应的分片的序号增1;
所述第一处理单元332,用于当所述第二判断单元331的判断结果为是时,从各分片描述信息数据块的数据块首中提取出所述序号最小的分片的分片描述信息;
所述第二处理单元333,用于当所述第二判断单元的判断结果为否时,丢弃所述确定的序号最小的分片,并释放所述分片占用的存储资源。本实施例的第二处理单元333在丢弃某个分片时,及时释放所述分片占用的内部存储装置的存储空间,与现有技术采用固定线性链表存储分片信息相比,,降低了资源消耗,从而降低了芯片成本。
较佳的,本实施例的重组装置还可包括第三判断单元,用于当所述第二判断单元331的判断结果为否时,判断该分片的序号与所述有序数据块尾部的分片描述信息对应的分片的序号的差值是否大于预设的门限值,如果判断为是,通知所述第二处理单元333丢弃所述确定的序号最小的分片,并释放所述分片占用的存储资源。
较佳的,本实施例的重组装置还可包括第四判断单元,用于当所述第二判断单元331的判断结果为否时,判断所述确定单元330确定的序号最小的分片是否超时,如果判断为是,通知所述第二处理单元333丢弃所述确定的序号最小的分片,并释放所述分片占用的存储资源。
较佳的,本实施例的重组装置还可包括第五判断单元,用于当所述第二判断单元331的判断结果为否时,判断是否到达所述分片的更新时间点,如果判断为是,通知所述第四判断单元,判断该分片是否超时。
图6是根据图4中重组处理单元36的一个实施例的结构组成示意图;参考图6,所述重组处理单元36至少可包括第六判断单元360、第三处理单元361、第四处理单元362,其中:
所述第六判断单元360,用于根据所述有序数据块中的分片描述信息,判断是否已接收完一个报文的所有分片;
所述第三处理单元361,用于当所述第六判断单元360的判断结果为是时,重组所述报文;
所述第四处理单元362,用于当所述第六判断单元360的判断结果为否时,所述提取单元33从各分片描述信息数据块的数据块首中,提取出序号最小的分片的分片描述信息。
较佳的,所述第四处理单元还包括:
第七判断单元,用于当所述第六判断单元360的判断结果为否时,判断报文分片是否出错;
第五处理单元,用于当所述第七判断单元的判断结果为是时,丢弃出错分片并释放所述分片占用的存储资源;
第七判断单元可判断接收的序号是连续的分片中是否包括有两个标识为第一分片的分片,而未包括标识为最后分片的分片,如果判断为是,将前一个第一分片的序号到后一个第一分片的序号之间的所有分片丢弃,并释放所述分片占用的存储资源;
或,判断接收的序号是连续的分片中是否包括有两个标识为最后分片的分片,而未包括标识为第一分片的分片,如果判断为是,将前一个最后序号到后一个最后序号之间的所有分片,连同所述后一个最后分片一起丢弃,并释放所述分片占用的存储资源。
如前所述,当接收到一个B标识有效的分片后,又接收到一个E标识有效的分片,则判定已经接收完一个报文的所有分片;相反的,在接收的多个序号连续的情况下,当接收到一个B标识有效的分片后,未接收到一个E标识有效的分片时,又接收到另一个B标识有效的分片,则可判定报文出错;或者在接收的多个序号连续的情况下,当接收到一个E标识有效的分片后,在未接收到一个B标识有效的分片时,又接收到另一个E标识有效的分片,则可判定报文出错。
第六处理单元,用于当所述第七判断单元的判断结果为否时,通知所述提取单元从各分片描述信息数据块的数据块首中,提取出序号最小的分片的分片描述信息。本实施例采用多个分片描述信息数据块分别根据接收的同一链路的分片的序号,顺序存储所述同一链路的分片的分片描述信息,在重组过程中,由于每个分片描述信息数据块的数据块首的分片描述信息对应于从某条链路的接收的分片中序号最小的分片,因此本发明实施例可以通过比较各分片描述信息数据块的数据块首的信息,来找出一个最小序号的分片,而避免了现有技术需要对所有分片进行排序的复杂工作,因此,本发明实施例与现有技术需要遍历整个分片的存储范围对分片进行排序相比,可以简化对多链路协议数据进行重组的复杂度。
另外,本实施例方案在丢弃某个分片时,及时释放所述分片占用的内部存储装置的存储空间,与现有技术采用固定线性链表存储分片信息相比,降低了资源消耗,从而降低了芯片成本。
本实施例中,重组装置和存储装置分别为独立的设备,在具体实现中,所述存储装置和所述重组装置可设置在一个设备中,或者所述存储装置可作为所述重组装置的内部模块。
相应的,图7是根据本发明的一个实施例的多链路协议分片数据的重组方法的流程示意图;如图7所示,本实施例的方法至少包括:
步骤S200、从各分片描述信息数据块的数据块首中,提取出序号最小的分片的分片描述信息;具体实现中,在步骤S200之前还可包括判断是否至少有一个分片描述信息数据块的数据块首发生更新,如果判断为是,则执行步骤S200。如前所述,所述分片描述信息数据块可为动态链表。
步骤S210,将所述序号最小的分片的分片描述信息所在的分片描述信息数据块的数据块首更新为所述序号最小分片的分片描述信息指向的下一分片描述信息;当分片描述信息数据块为动态链表时,可通过修改Head指针,使Head指针指向所述被提取出的序号最小的分片描述信息所指向的下一分片描述信息,这样更新后Head指针指向的分片描述信息成为分片描述信息链表的链表首。具体实现中,步骤S210在更新数据块首后还可包括,对每个分片描述信息数据块包含的分片描述信息的个数进行计数(用Cnt表示)的步骤,具体的,当更新完分片描述信息数据块的数据块首后,将对应的分片描述信息数据块的分片描述信息的计数自动减1。
步骤S220,将所述提取出的序号最小的分片的分片描述信息加入有序数据块的尾部,所述有序数据块将分片描述信息按序号顺序存储;当分片描述信息数据块和有序数据块均为动态链表时,可将指示所述有序数据块尾部的Tail指针和所述有序数据块尾部分片描述信息的指针指向所述提取出的序号最小的分片的分片描述信息,这样所述提取出的序号最小的分片的分片描述信息即加入到所述有序数据块的尾部。相应的,步骤S220在将分片描述信息加入有序数据块尾部之后还可包括,对所述有序数据块中的分片描述信息的个数进行计数。具体的,当将所述提取出的序号最小的分片的分片描述信息加入到所述有序数据块的尾部后,将所述有序数据块中的分片描述信息的个数计数加1。
步骤S230,根据所述有序数据块中的分片描述信息,判断是否已接收完一个报文的所有分片,如果判断为是,执行步骤S240;否则,返回执行步骤S200。具体实现中,接收的分片描述信息中的MP头可包括B标识和E标识,当MP头中的B标识有效时,表示接收的是一个报文的第一个分片,当MP头中的E标识有效时,表示接收的是一个报文的最后一个分片,在步骤S230,可通过判断接收是否接收到一个B标识有效的分片后,又接收到同一个报文的一个E标识有效的分片,如果是,则判定已经接收完一个报文的所有分片。
步骤S240,重组所述报文。
具体实现中,所述步骤S240在重组所述报文之后还可包括:释放所述报文各分片占用的存储资源。
进一步,图8是根据图7中的步骤S200的一个实施例流程细化示意图;如图8所示,步骤S200进一步可包括:
步骤S211,从各分片描述信息数据块的数据块首中,确定序号最小的分片;如前所述,每个分片描述信息数据块的数据块首是从某链路接收的最小序号分片的分片描述信息,且各分片描述信息中包含对应分片的序号,因此,可通过比较各分片描述信息数据块的数据块首的方式,确定序号最小的分片。
步骤S212,判断所述确定的序号最小的分片是否为目标分片,所述目标分片的序号为所述有序数据块的尾部的分片描述信息对应的分片的序号增1;如果判断为是,执行步骤S213;如果判断为否,执行步骤S214。
步骤S213,从各分片描述信息数据块的数据块首中提取出所述序号最小的分片的分片描述信息;
步骤S214,丢弃所述确定的序号最小的分片,并释放所述分片占用的存储资源。
较佳的,步骤S214可进一步包括:
判断该分片的序号与所述有序数据块尾部的分片描述信息对应的分片的序号的差值是否大于预设的门限值,如果判断为是,丢弃所述确定的序号最小的分片,并释放所述分片占用的存储资源。
或,判断所述确定的序号最小的分片是否超时,如果判断为是,丢弃所述确定的序号最小的分片,并释放所述分片占用的存储资源。且在判断超时之前还需确定是否到达所述序号最小的分片的更新时间点,如果是,对所述序号最小的分片是否超时进行判断。
图9是根据图7中的步骤S230的一个实施例流程细化示意图;如图9所示,步骤S230可进一步包括:
步骤S231、根据所述有序数据块中的分片描述信息,判断是否已接收完一个报文的所有分片,如果判断为是,转到图7中步骤S240;如果判断为否,执行步骤S232;
步骤S232,判断报文分片是否出错,如果判断为是,执行步骤S233;如果判断为否,转到图7中步骤S200。具体实现中,在步骤S232可判断是否将同一报文的第一个分片接收两次,而未接收到所述报文的最后一个分片,如果判断为是,判定报文出错;或,在步骤S232可判断是否将同一报文的最后一个分片接收两次,而未接收到所述报文的第一个分片,如果判断为是,判定报文出错。
步骤S233,丢弃所述出错的分片,并释放所述分片占用的存储资源。
图10是根据本发明的一个实施例的多链路协议分片数据的重组方法的一个详细流程示意图。
步骤S300,判断是否至少有一个分片描述信息数据块的数据块首发生更新,如果判断为是,执行步骤S301;如果判断为否,步骤S300继续进行判断;
步骤S301,从各分片描述信息数据块的数据块首中,确定序号最小的分片;
步骤S302,判断所述确定的序号最小的分片是否为目标分片,所述目标分片的序号为所述有序数据块的尾部的分片描述信息对应的分片的序号增1;如果判断为是,执行步骤S303;如果判断为否,执行步骤S308;
步骤S303,从各分片描述信息数据块的数据块首中提取出所述序号最小的分片的分片描述信息;
步骤S304,将所述提取出的序号最小的分片的分片描述信息加入有序数据块的尾部;
步骤S305,判断是否已接收完一个报文的所有分片,如果判断为是,执行步骤S306;如果判断为否,执行步骤S312;
步骤S306,重组所述报文;
步骤S307,释放所述报文各分片占用的存储资源,后停止,或返回步骤S300;
步骤S308,判断所述分片的序号与所述有序数据块尾部的分片描述信息对应的分片的序号的差值是否大于预设的门限值,如果判断为是,执行步骤S310;如果判断为否,执行步骤S309;
步骤S309,判断所述确定的序号最小的分片是否超时,如果判断为是,执行步骤S310;如果判断为否,执行步骤S300;
步骤S310,丢弃所述确定的序号最小的分片,并释放所述分片占用的存储资源,返回步骤S300;
步骤S312,判断报文分片是否出错,如果判断为是,执行步骤S313;如果判断为否,执行步骤S300。
步骤S313,丢弃所述出错报文,并释放所述报文所占存储资源。
本实施例采用多个分片描述信息数据块分别根据接收的同一链路的分片的序号,顺序存储所述同一链路的分片的分片描述信息,在重组过程中,由于每个分片描述信息数据块的数据块首的分片描述信息对应于从某条链路的接收的分片中序号最小的分片,因此本发明实施例可以通过比较各分片描述信息数据块的数据块首的信息,来找出一个最小序号的分片,而避免了现有技术需要对所有分片进行排序的复杂工作,因此,本发明实施例与现有技术需要遍历整个分片的存储范围对分片进行排序相比,可以简化对多链路协议数据进行重组的复杂度。
另外,本实施例方案在丢弃某个分片时,及时释放所述分片占用的内部存储装置的存储空间,与现有技术采用固定线性链表存储分片信息相比,降低了资源消耗,从而降低了芯片成本。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。