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

文档序号:9238039阅读:205来源:国知局
一种报文转发方法、系统及装置的制造方法
【技术领域】
[0001]本发明涉及通信技术领域,特别涉及报文转发方法、系统及装置。
【背景技术】
[0002]随着云时代的到来,需要传输和处理的数据量越来越大,网络设备和用户设备对于带宽的需要也越来越大,如何提高网络带宽来满足用户设备的需求,成为一个迫切需要解决的问题。目前提高网络带宽主要有两种方式,一种是提高单一物理链路的处理能力,例如使用更高处理性能的芯片和更高传输性能的光纤;另一种是通过多个低速物理设备及低速链路进行负载分担,提高总的处理和传输能力。与第一种方式相比,第二种方式在可靠性和扩展性方面都具有明显的优势,因此在现在的网络中第二种方式的技术广泛存在,可以称为“负载分担(Load Sharing, LS)” 或“负载均衡(Load Balancer, LB)”。
[0003]现有技术中一种负载分担的方法主要是通过对数据报文的部分信息进行一定运算比如将对所述部分信息的哈希计算结果对实际物理链路取余后,确定需要在哪个链路上传输该数据报文,但是在这种方法中如果实际的物理链路数如果不是2的整数次幂,则取余运算会导致“负载分担”的偏差较大,从而不能实现流量的均匀分配。如果流量分配不均(例如某一条链路达到满负荷),则继续增大流量就可能在该条链路上出现丢包,从而对业务造成影响。

【发明内容】

[0004]本发明实施例提供报文转发方法、系统及装置,用以实现流量的均匀分配,降低对业务的影响。
[0005]本发明实施例第一方面提供一种报文转发方法,包括:
[0006]确定链路总数为2的整数次幂,所述链路总数包括添加的虚拟链路数和转发数据报文的实际链路数之和;
[0007]计算所述数据报文对应的哈希值,并用所述哈希值对所述链路总数进行取余;
[0008]如果所述哈希值对所述链路总数的取余值对应所述虚拟链路,则计算所述数据报文对应的另一哈希值,并基于所述另一哈希值返回执行所述取余的步骤,循环操作直到所述数据报文对应的哈希值对所述链路总数的取余值对应所述实际链路,并在所述实际链路中转发所述数据报文;或,如果所述哈希值对所述链路总数的取余值对应所述虚拟链路,则用所述数据报文对应的哈希值对所述实际链路数进行取余,并在对所述实际链路数的取余值对应的实际链路中转发所述数据报文;
[0009]如果所述哈希值对所述链路总数的取余值对应所述实际链路,则在所述实际链路中转发所述数据报文。
[0010]本发明实施例第一方面的第一种可能实现方式中,所述计算所述数据报文对应的哈希值,具体包括:
[0011]提取所述数据报文中的部分字段;
[0012]对所述提取的部分字段所组成的字节序列进行循环冗余校验计算得到所述哈希值。
[0013]本发明实施例第二方面提供一种报文转发装置,包括:
[0014]链路确定单元,用于确定链路总数为2的整数次幂,所述链路总数包括添加的虚拟链路数和转发数据报文的实际链路数之和;
[0015]取余单元,用于计算所述数据报文对应的哈希值,并用所述哈希值对所述链路确定单元确定的链路总数进行取余;
[0016]通知单元,用于如果所述取余单元得到的哈希值对所述链路总数的取余值对应所述虚拟链路,则通知所述取余单元计算所述数据报文的另一哈希值,并基于所述另一哈希值执行所述取余的步骤;转发单元,用于当所述取余单元和通知单元循环操作直到所述数据报文对应的哈希值对所述链路总数的取余值对应所述实际链路时,在所述实际链路中转发所述数据报文;或,
[0017]所述通知单元,用于如果所述取余单元得到的哈希值对所述链路总数的取余值对应所述虚拟链路,则通知所述取余单元用所述数据报文对应的哈希值对所述实际链路数进行取余;所述转发单元,用于在所述取余单元对所述实际链路数的取余值对应的实际链路中转发所述数据报文;
[0018]所述转发单元,还用于如果所述取余单元得到的哈希值对所述链路总数的取余值对应所述实际链路,则在所述实际链路中转发所述数据报文。
[0019]本发明实施例第二方面的第一种可能实现方式中:
[0020]所述取余单元,具体用于提取所述数据报文中的部分字段;对所述提取的部分字段所组成的字节序列进行循环冗余校验计算得到所述哈希值。
[0021]本发明实施例第三方面提供一种报文转发方法,包括:
[0022]确定链路总数为2的整数次幂,所述链路总数中包括转发数据报文的实际链路扩展成的虚拟子链路数,及添加的虚拟链路数之和;
[0023]计算所述数据报文对应的哈希值,并用所述哈希值对所述链路总数进行取余;
[0024]如果所述哈希值对所述链路总数的取余值对应所述虚拟链路,则计算所述数据报文的另一哈希值,并基于所述另一哈希值返回执行所述取余的步骤,循环操作直到所述数据报文对应的哈希值对所述链路总数的取余值对应所述实际链路的某一虚拟子链路,并在所述实际链路中转发所述数据报文;或,
[0025]如果所述哈希值对所述链路总数的取余值对应所述虚拟链路,则用所述数据报文对应的哈希值对所述虚拟子链路数进行取余,并在对所述虚拟子链路数的取余值对应的虚拟子链路所属的实际链路中转发所述数据报文。
[0026]本发明实施例第三方面的第一种可能实现方式中,所述方法还包括:
[0027]如果所述哈希值对所述链路总数的取余值对应某一虚拟子链路,则在所述某一虚拟子链路对应的实际链路中转发所述数据报文。
[0028]结合本发明实施例第三方面,或第三方面的第一种可能实现方式,在本发明实施例第三方面的第二种可能实现方式中,所述确定链路总数为2的整数次幂之前,还包括:
[0029]确定转发数据报文的每个实际链路需要扩展的虚拟子链路数;
[0030]将所述确定的虚拟子链路数与所述实际链路数相乘得到积数,并确定与所述积数相加得到2的整数次幂的相加值;
[0031]如果所述相加值小于预置的值,则将所述相加值作为需要添加的虚拟链路数,如果所述相加值大于预置的值,则返回确定所述每个实际链路需要扩展的另一虚拟子链路数,并针对所述另一虚拟子链路数确定对应的所述相加值;
[0032]所述确定链路总数为2的整数次幂,具体包括:确定所述链路总数为所述积数和相加值的和。
[0033]结合本发明实施例第三方面,或第三方面的第一种可能实现方式,在本发明实施例第三方面的第三种可能实现方式中,所述计算所述数据报文对应的哈希值,具体包括:
[0034]提取所述数据报文中的部分字段;
[0035]对所述提取的部分字段所组成的字节序列进行循环冗余校验计算得到所述哈希值。
[0036]本发明实施例第四方面提供一种报文转发装置,包括:
[0037]链路确定单元,用于确定链路总数为2的整数次幂,所述链路总数中包括转发数据报文的实际链路扩展成的虚拟子链路数,及添加的虚拟链路数之和;
[0038]取余单元,用于计算所述数据报文对应的哈希值,并用所述哈希值对所述链路确定单元确定的链路总数进行取余;
[0039]通知单元,用于如果所述取余单元得到的哈希值对所述链路总数的取余值对应所述虚拟链路,则通知所述取余单元计算所述数据报文的另一哈希值,并基于所述另一哈希值执行所述取余的步骤;转发单元,用于当所述取余单元和通知单元循环操作直到所述数据报文对应的哈希值对所述链路总数的取余值对应所述实际链路的某一虚拟子链路时,在所述实际链路中转发所述数据报文;或,
[0040]所述通知单元,用于如果所述取余单元得到的哈希值对所述链路总数的取余值对应所述虚拟链路,则通知所述取余单元用所述数据报文对应的哈希值对所述虚拟子链路数进行取余;所述转发单元,用于在所述取余单元对所述虚拟子链路数的取余值对应的虚拟子链路所属的实际链路中转发所述数据报文。
[0041]本发明实施例第四方面的第一种可能实现方式中:
[0042]所述转发单元,还用于如果所述取余单元得到的哈希值对所述链路总数的取余值对应某一虚拟子链路,则在所述某一虚拟子链路对应的实际链路中转发所述数据报文。
[0043]结合本发明实施例第四方面,或第四方面的第一种可能实现方式,在本发明实施例第四方面的第二种可能实现方式中,所述链路确定单元,还用于确定转发数据报文的每个实际链路需要扩展的虚拟子链路数;将所述确定的虚拟子链路数与所述实际链路数相乘得到积数,并确定与所述积数相加得到2的整数次幂的相加值;如果所述相加值小于预置的值,则将所述相加值作为需要添加的虚拟链路数,确定所述链路总数为所述积数和相加值的和;如果所述相加值大于预置的值,则返回确定所述每个实际链路需要扩展的另一虚拟子链路数,并针对所述另一虚拟子链路数确定对应的所述相加值。
[0044]结合本发明实施例第四方面,或第四方面的第一种可能实现方式,在本发明实施例第四方面的第三种可能实现方式中:
[0045]所述取余单元,具体用于提取所述数据报文中的部分字段;对所述提取的部分字段所组成的字节序列进行循环冗余校验计算得到所述哈希值。
[0046]本发明实施例第五方面提供一种报文转发系统,包括第一通信设备和第二通信设备,在所述第一通信设备与第二通信设备之间具有多条实际链路;
[0047]所述第一通信设备是如本发明实施例第二方面或第二方面的第一种可能实现方式,或如本发明实施例第四方面,或第四方面的第一种到第三种可能实现方式中任一种可能实现方式所述的报文转发装置。
[0048]本发明实施例第六方面提供一种报文转发系统,包括第一通信设备和多个第二通信设备,在所述第一通信设备与所述多个第二通信设备分别具有一条实际链路;
[0049]所述第一通信设备是如本发明实施例第二方面或第二方面的第一种可能实现方式,或如本发明实施例第四方面,或第四方面的第一种到第
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1