一种报文转发方法、系统及装置的制造方法_4

文档序号:9238039阅读:来源:国知局
路总数的哈希值相同,或不同。
[0103]在另一个具体的实施例中,为了防止从上述通知单元12和转发单元13按照上述步骤101到104进行较多次的循环,当通知单元12和转发单元13在按照上述步骤101到104循环的次数超过预置次数后,如果哈希值对链路总数的取余值还对应虚拟链路,则通知单元12和转发单元13会继续执行上述步骤105。
[0104]本实施例中,通信设备可以通过添加虚拟链路及取余的计算,使得最终都能将数据报文分配到某一个实际链路上进行转发,能够尽可能地将数据报文均匀地分配到实际链路上,实现了流量的均匀分配,从而降低对业务的影响。
[0105]本发明实施例还提供一种通信设备,本实施例的装置可以按照上述图2所示的流程图进行报文转发,其结构示意图如图7所示,包括:分别连接在总线上的处理器21、发射机22和接收机23,且该通信设备还可以包括存储器,其中:
[0106]存储器中用来储存从发射机22接收的数据,且还可以储存处理器21处理数据的必要文件等信息;发射机22和接收机23是通信设备与其它设备通信的端口。
[0107]处理器21,用于当接收机23接收到数据报文后,确定链路总数N为2的整数次幂,所述链路总数包括添加的虚拟链路数和转发数据报文的实际链路数之和;计算所述数据报文对应的哈希值,并用所述哈希值对所述链路总数进行取余;如果所述哈希值对所述链路总数的取余值对应所述虚拟链路,则计算数据报文的另一哈希值,并基于所述另一哈希值执行所述取余的步骤,具体地,用另一哈希值对链路总数进行取余;这样循环操作直到所述数据报文对应的哈希值对所述递减后的链路总数的取余值对应所述实际链路时,通知发射机22在所述实际链路中转发所述数据报文。或,如果所述哈希值对所述链路总数的取余值对应所述虚拟链路,则处理器21,用于用数据报文对应的哈希值对实际链路数进行取余,通知所述发射机22在对实际链路数的取余值对应的实际链路中转发数据报文,在这种情况下,对实际链路数取余的哈希值可以与上述对链路总数的哈希值相同,或不同。
[0108]处理器21,还用于如果所述哈希值对所述链路总数的取余值对应所述实际链路,则通知所述发射机22在所述实际链路中转发所述数据报文。这样可以通过添加虚拟链路及取余的计算,使得最终都能将数据报文分配到某一个实际链路上进行转发,能够尽可能地将数据报文均匀地分配到实际链路上,实现了流量的均匀分配,从而降低对业务的影响。
[0109]其中,该处理器21可以在实际链路的基础上添加P个虚拟链路,使得虚拟链路数P和实际链路数M之和为2的整数次幂,为了后续计算方便,还可以为实际链路和虚拟链路进行编号,比如从实际链路到虚拟链路,以0、1、2、…、N-1的方式来编号。且处理器21在计算哈希值时,具体可以提取所述数据报文中的部分字段;对所述提取的部分字段所组成的字节序列进行循环冗余校验计算得到所述哈希值。
[0110]本发明实施例还提供另一种报文转发装置,即上述的通信设备1,本实施例中的装置可以按照上述图4所示的流程图进行报文转发,其结构示意图与上述图6类似,包括:
[0111]链路确定单元,用于确定链路总数N为2的整数次幂,所述链路总数中包括转发数据报文的实际链路扩展成的虚拟子链路数,及添加的虚拟链路数之和。
[0112]该链路确定单元,还可以在确定链路总数之前,确定转发数据报文的每个实际链路需要扩展的虚拟子链路数;将所述确定的虚拟子链路数与所述实际链路数相乘得到积数,并确定与所述积数相加得到2的整数次幂的相加值;如果所述相加值小于预置的值,则将所述相加值作为需要添加的虚拟链路数,确定所述链路总数为所述积数和相加值的和;如果所述相加值大于预置的值,则返回确定所述每个实际链路需要扩展的另一虚拟子链路数,并针对所述另一虚拟子链路数确定对应的所述相加值。
[0113]该链路确定单元具体可以先将转发数据报文的多个实际链路中每一个实际链路都进行扩展,扩展为多个虚拟子链路,比如每个实际链路都分别扩展为3个虚拟子链路,然后在这些虚拟子链路的基础上再添加P个虚拟链路,使得各个实际链路对应的虚拟子链路数(即所有虚拟子链路数)和虚拟链路数之和为2的整数次幂。为了后续计算方便,链路确定单元还可以为实际链路的虚拟子链路和虚拟链路进行编号,比如从实际链路的虚拟子链路到虚拟链路,以0、1、2、...、Ν-1的方式来编号;且还可以对实际链路进行编号为O到Μ-1。
[0114]取余单元,用于计算所述数据报文对应的哈希值,并用所述哈希值对所述链路确定单元确定的链路总数进行取余;具体地,取余单元用于提取所述数据报文中的部分字段;对所述提取的部分字段所组成的字节序列进行循环冗余校验计算得到所述哈希值。
[0115]通知单元,用于如果所述取余单元得到的哈希值对所述链路总数的取余值对应所述虚拟链路,则通知所述取余单元计算所述数据报文的另一哈希值,并基于所述另一哈希值执行所述取余的步骤,即需要取余单元用另一哈希值对递减后的链路总数进行取余。
[0116]转发单元,用于当所述取余单元和通知单元循环操作直到所述数据报文对应的哈希值对所述递减后的链路总数的取余值对应所述实际链路的某一虚拟子链路时,在所述实际链路中转发所述数据报文。
[0117]所述转发单元,还用于如果所述取余单元得到的哈希值对所述链路总数的取余值对应某一虚拟子链路,则在所述某一虚拟子链路对应的实际链路中转发所述数据报文。
[0118]或,在一个具体的实施例中,通知单元用于如果所述取余单元得到的哈希值对所述链路总数的取余值对应所述虚拟链路,则通知所述取余单元用所述数据报文对应的哈希值对所述虚拟子链路数进行取余;在这种情况下,转发单元,用于在所述取余单元对所述虚拟子链路数的取余值对应的虚拟子链路所属的实际链路中转发所述数据报文。在这种情况下,对虚拟子链路数取余的哈希值可以与上述对链路总数的哈希值相同,或不同。
[0119]在另一具体的实施例中,在另一个具体的实施例中,为了防止从上述通知单元和转发单元按照上述步骤201到204进行较多次的循环,当通知单元和转发单元在按照上述步骤201到204循环的次数超过预置次数后,如果哈希值对链路总数的取余值还对应虚拟链路,则通知单元和转发单元会继续执行上述步骤205。
[0120]其中,当取余值对应某一虚拟子链路时,转发单元在确定该虚拟子链路是属于哪一个实际链路时,可以用上述取余单元得到的取余值与一个实际链路所包括的虚拟子链路数相除得到的商的整数部分,该整数部分就可以对应某一个实际链路的编号,从而得到了虚拟子链路对应的实际链路。
[0121]本实施例中,通信设备可以通过扩展实际链路并添加虚拟链路,及取余的计算,使得最终都能将数据报文分配到某一个实际链路上进行转发,能够尽可能地将数据报文均匀地分配到实际链路上,实现了流量的均匀分配,从而降低对业务的影响。且采用这种方法可以使得添加的虚拟链路数较少。
[0122]本发明实施例还提供一种通信设备,本实施例的装置可以按照上述图4所示的流程图进行报文转发,其结构示意图与上述图7类似,包括:分别连接在总线上的处理器、发射机和接收机,且该通信设备还可以包括存储器,其中:
[0123]存储器中用来储存从发射机接收的数据,且还可以储存处理器处理数据的必要文件等信息;发射机和接收机是通信设备与其它设备通信的端口。
[0124]处理器,用于当发射机接收到数据报文后,确定链路总数N为2的整数次幂,所述链路总数中包括转发数据报文的实际链路扩展成的虚拟子链路数,及添加的虚拟链路数之和;计算所述数据报文对应的哈希值,并用所述哈希值对所述链路总数进行取余;如果所述哈希值对所述链路总数的取余值对应所述虚拟链路,则计算数据报文的另一哈希值,并基于另一哈希值执行所述取余的步骤,即需要用另一哈希值对链路总数进行取余;这样循环操作直到所述数据报文对应的哈希值对所述递减后的链路总数的取余值对应所述实际链路的某一虚拟子链路时,通知发射机在所述实际链路中转发所述数据报文。或,在另一个具体的实施例中,处理器,用于如果哈希值对所述链路总数的取余值对应所述虚拟链路,则用所述数据报文对应的哈希值对所述虚拟子链路数进行取余;并通知发射机在对所述虚拟子链路数的取余值对应的虚拟子链路所属的实际链路中转发所述数据报文。在这种情况下,对虚拟子链路数取余的哈希值可以与上述对链路总数的哈希值相同,或不同。
[0125]处理器,还用于如果所述哈希值对所述链路总数的取余值对应某一虚拟子链路,则直接通知上述发射机在所述某一虚拟子链路对应的实际链路中转发所述数据报文。这样可以通过扩展实际链路和添加虚拟链路,及取余的计算,使得最终都能将数据报文分配到某一个实际链路上进行转发,能够尽可能地将数据报文均匀地分配到实际链路上,实现了流量的均匀分配,从而降低对业务的影响。且采用这种方法可以使得添加的虚拟链路数较少。
[0126]其中,处理器在确定链路总数之前,可以先确定转发数据报文的每个实际链路需要扩展的虚拟子链路数;将所述确定的虚拟子链路数与所述实际链路数相乘得到积数,并确定与所述积数相加得到2的整数次幂的相加值;如果所述相加值小于预置的值,则将所述相加值作为需要添加的虚拟链路数,确定所述链路总数为所述积数和相加值的和;如果所述相加值大于预置的值,则返回确定所述每个实际链路需要扩展的另一虚拟子链路数,并针对所述另一虚拟子链路数确定对应的所述相加值。
[0127]在确定链路总数时,处理器可以先将转发数据报文的多个实际链路中每一个实际链路都进行扩展,扩展为多个虚拟子链路,比如每个实际链路都分别扩展为3个虚拟子链路,然后在这些虚拟子链路的基础上再添加P个虚拟链路,使得各个实际链路对应的虚拟子链路数(即所有虚拟子链路数)和虚拟链路数之和为2的整数次幂。为了后续计算方便,链路确定单元还可以为实际链路的虚拟子链路和虚拟链路进行编号,比如从实际链路的虚拟子链路到虚拟链路,以0、1、2、…、N-1的方式来编号;且还可以对实际链
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1