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

文档序号:9238039阅读:来源:国知局
统中,本实施例的方法是图1a或图1b所示的通信系统中通信设备I所执行的方法,且主要是针对转发数据报文的实际链路数不是2的整数次幂的情况下的方法,流程图如图4a和图4b所示,包括:
[0079]步骤201,确定链路总数N为2的整数次幂,该链路总数N包括转发数据报文的实际链路扩展成的虚拟子链路数,及添加的虚拟链路数P之和。
[0080]可以理解,当一个通信设备(比如上述通信设备I)接收到数据报文后,需要确定该数据报文需要在哪一个链路中转发,然后再进行数据报文的转发。本实施例中,在确定在哪一个链路中转发时,如果通信设备转发报文的实际链路数不是2的整数次幂,则需要先确定在计算由哪一个链路来转发数据报文时所用到的链路总数,具体地,可以先将多个实际链路分别进行扩展,将多个实际链路中每一个实际链路都扩展为多个虚拟子链路,比如每个实际链路都分别扩展为3个虚拟子链路,然后在这些虚拟子链路的基础上再添加P个虚拟链路,使得各个实际链路对应的虚拟子链路数(即扩展成的所有虚拟子链路数)和虚拟链路数之和为2的整数次幂。其中需要说明的是,在对实际链路扩展时,对每一个实际链路都需要扩展,且每个实际链路扩展的虚拟子链路数都需要一样。
[0081]其中,通信设备在确定链路总数之前需要确定每个实际链路需要扩展几个虚拟子链路,并最终添加几个虚拟链路,在一个具体的实施例中,通信设备可以按照如下的方法来实现:
[0082]先确定转发数据报文的每个实际链路需要扩展的虚拟子链路数,比如先确定一个初始值;然后将确定的虚拟子链路数与实际链路数相乘得到一个积数,并确定与积数相加能得到2的整数次幂的相加值;如果该相加值小于预置的值(比如3或2等),则将该相加值作为需要添加的虚拟链路数,且确定链路总数为积数和相加值的和。可以理解,如果该相加值大于预置的值,则返回确定每个实际链路需要扩展的另一虚拟子链路数,并针对另一虚拟子链路数确定对应的相加值,然后再将根据另一虚拟子链路数得到的相加值与预置的值进行比较后,根据比较结果进行相应处理。这样循环操作,直到得到的相加值小于预置的值。为了后续计算方便,通信设备可以为实际链路的虚拟子链路和虚拟链路进行编号,比如从实际链路的虚拟子链路到虚拟链路,以0、1、2、…、N-1的方式来编号;且还可以对实际链路进行编号为O到M-1。
[0083]步骤202,计算数据报文对应的哈希值。
[0084]步骤203,用步骤202中计算的哈希值对上述链路总数N进行取余计算。
[0085]具体地,通信设备可以先提取数据报文的部分字段,比如五元组(即源IP地址、目的IP地址、源端口、目的端口和协议号)等;然后将提取的部分按照一定顺序排列组成一个字节序列;再对该字节序列进行循环冗余校验计算得到上述哈希值。
[0086]通信设备在得到哈希值后,需要用哈希值对上述链路总数N进行取余计算,如果哈希值对链路总数的取余值对应虚拟链路,则如图4a所示执行步骤204,或如图4b所示执行步骤205 ;如果哈希值对链路总数N的取余值对应某一个虚拟子链路,则执行步骤206。其中用哈希值对上述链路总数N进行取余所得到的取余值包括0、1、2、…、N-1,则通信设备结合上述对各个虚拟子链路和虚拟链路的编号,如果取余值与某一个虚拟子链路或虚拟链路的编号相同,则该取余值与该虚拟子链路或虚拟链路对应。
[0087]步骤204,计算数据报文的另一哈希值,并基于另一哈希值返回执行上述步骤203,也就是说在执行上述步骤203时,需要用另一哈希值对链路总数进行取余,这样循环操作直到上述哈希值对链路总数的取余值对应实际链路的某一个虚拟子链路,则在对应的实际链路中转发该数据报文。
[0088]需要说明的是,上述步骤204中计算另一哈希值时的方式与上述步骤202中计算哈希值的方式类似,是都需要根据数据报文中的部分字段所组成的序列得到哈希值,不同的是,在计算两个哈希值时,可以提取数据报文中的不同字段,或是对提取的字段所组成的序列采用不同的哈希计算方法。
[0089]步骤205,用数据报文对应的哈希值对虚拟子链路数即所有实际链路扩展的所有虚拟子链路数进行取余,并在对虚拟子链路数的取余值对应的虚拟子链路所属的实际链路中转发数据报文。这里数据报文对应的哈希值可以与上述步骤203中取余计算的哈希值相同,也可以不同。具体地,在本步骤中通信设备重新提取数据报文的另外的字段进行哈希计算得到不同的另一哈希值,或还是用上述步骤202中计算哈希值时提取到的字段,采用另外的哈希计算方法得到不同的另一哈希值。
[0090]另外需要说明的是,为了防止从上述步骤201到204的较多次的循环,在一个具体的实施例中,可以在按照上述步骤201到204循环的次数超过预置次数后,如果哈希值对链路总数的取余值还对应虚拟链路,则通信设备会继续执行上述步骤205。
[0091]步骤206,在该某一虚拟子链路对应的实际链路中转发数据报文。当上述取余值对应某一虚拟子链路时,在确定该虚拟子链路是属于哪一个实际链路时,可以用上述步骤202中得到的取余值与一个实际链路所包括的虚拟子链路数相除得到的商的整数部分,该整数部分就可以对应某一个实际链路的编号,从而得到了虚拟子链路对应的实际链路。
[0092]需要说明的是,上述图2a和图2b所示的实施例中,需要在原来实际链路的基础上添加虚拟链路,使得实际链路和虚拟链路的链路总数是2的整数次幂,但是如果需要添加的虚拟链路数较多,则计算量会增加。为了尽量减少计算量,可以采用上述图4a或图4b所示的实施例的方法。
[0093]可见,在本实施例中,通信设备会通过数据报文的哈希值对确定的链路总数进行取余,该链路总数为2的整数次幂,可以包括添加的虚拟链路数和转发数据报文的实际链路数扩展的虚拟子链路数之和;如果哈希值对链路总数的取余值对应虚拟链路,则计算数据报文的另一哈希值,并基于另一哈希值返回执行所述取余的步骤;循环操作直到数据报文对应的哈希值对递减后的链路总数的取余值对应实际链路的某一个虚拟子链路,并在实际链路中转发数据报文;或如果希值对链路总数的取余值对应虚拟链路,则用数据报文对应的哈希值直接对实际链路的所有虚拟子链路数进行取余,并在取余值对应的虚拟子链路所属实际链路中转发数据报文。这样可以通过扩展虚拟子链路并添加虚拟链路,及取余的计算,使得最终都能将数据报文分配到某一个实际链路上进行转发,能够尽可能地将数据报文均匀地分配到实际链路上,实现了流量的均匀分配,从而降低对业务的影响。
[0094]参考图5所示,以下以一个具体的实施例来说明上述图4b所示的报文转发方法,本实施例中,通信设备转发数据报文的实际链路(用实线表示)数为9,标号从O到8,可以先将每个实际链路都扩展成7个虚拟子链路,然后只需另外添加I个虚拟链路(图中用虚线表示),使得虚拟子链路数和虚拟链路数之和为64即2的整数次幂;且对这些链路按照O到63编号。
[0095]首先,当通信设备接收到数据报文,则可以提取该数据报文的五元组,对五元组排列成的字节序列进行CRC计算得到一个哈希值1,并用哈希值I对链路总数64进行取余计算,当得到的取余值为O到62,由于O到62分别对应实际链路的某一虚拟子链路的编号,则需要再用取余值与一个实际链路所包括的虚拟子链路数7相除得到的值的整数部分,该整数部分就可以对应某一个实际链路的编号,然后将数据报文在对应的实际链路中转发。
[0096]其次,当得到取余值为63时,63对应添加的虚拟链路的编号,则需要进行再次的取余计算,具体地,可以重新提取该数据报文中的部分字段得到哈希值2,并用哈希值2对虚拟子链路数63进行取余计算,得到的取余值为O到62,肯定对应某一实际链路中某一虚拟子链路的编号,然后得到对应的实际链路并在实际链路中转发数据报文。在其它实施例中,在对递减后的链路总数取余时,可以使用原来的哈希值1,也可以重新得到另一个哈希值2。
[0097]本发明实施例还提供一种报文转发装置,即上述的通信设备1,本实施例的装置可以按照上述图2a或图2b所示的流程图进行报文转发,其结构示意图如图6所示,包括:
[0098]链路确定单元10,用于确定链路总数N为2的整数次幂,所述链路总数包括添加的虚拟链路数和转发数据报文的实际链路数之和;该链路确定单元10可以在实际链路的基础上添加P个虚拟链路,使得虚拟链路数P和实际链路数M之和为2的整数次幂,为了后续计算方便,还可以为实际链路和虚拟链路进行编号,比如从实际链路到虚拟链路,以0、1、
2、…、N-1的方式来编号。
[0099]取余单元11,用于计算所述数据报文对应的哈希值,并用所述哈希值对所述链路确定单元10确定的链路总数进行取余;其中,取余单元11在计算哈希值时,具体可以提取所述数据报文中的部分字段;对所述提取的部分字段所组成的字节序列进行循环冗余校验计算得到所述哈希值。
[0100]通知单元12,用于如果所述取余单元11得到的哈希值对所述链路总数的取余值对应所述虚拟链路,则通知所述取余单元11计算所述数据报文的另一哈希值,并基于所述另一哈希值执行所述取余的步骤,具体地,通知取余单元11用另一哈希值对链路总数进行取余。
[0101]转发单元13,用于当所述取余单元11和通知单元12循环操作直到所述数据报文对应的哈希值对所述递减后的链路总数的取余值对应所述实际链路时,在所述实际链路中转发所述数据报文。该转发单元13,还用于如果所述取余单元11得到的哈希值对所述链路总数的取余值对应所述实际链路,则在所述实际链路中转发所述数据报文。
[0102]或者,其它具体的实施例中,上述通知单元12,用于如果所述取余单元11得到的哈希值对所述链路总数的取余值对应所述虚拟链路,则通知所述取余单元11用所述数据报文对应的哈希值对所述实际链路数进行取余;在这种情况下,转发单元13用于在所述取余单元11对所述实际链路数的取余值对应的实际链路中转发所述数据报文。在这种情况下,对实际链路数取余的哈希值可以与上述对链
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1