转发报文的方法和装置的制作方法

文档序号:7858099阅读:133来源:国知局
专利名称:转发报文的方法和装置的制作方法
技术领域
本发明涉及通信技术,尤其涉及一种转发报文方法和装置。
背景技术
在用于转发网际协议(Internet Protocol,IP)报文的网络中,为了提高转发速率以及可靠性,可以在不同的网络设备之间设置多条等价链路,从而对流量进行负载分担。典型的负载分担技术包括逐流负载分担和逐包负载分担。 网络设备收到包含多个具有相同特征的报文的数据流后,以相同特征为哈希因子执行哈希运算,并将哈希运算的结果对应的出接口作为转发数据流的出接口。数据流通过同一个出接口转发,导致网络设备的负载不均。

发明内容
本发明提供一种转发报文的方法和装置,能减轻现有技术中存在的负载不均的问题。第一方面,提供了一种转发报文的方法,包括接收第一数据流和第二数据流,所述第一数据流包括多个报文,每个报文的报文头包括第一字段和第二字段,所述第二数据流包括多个报文,每个报文的报文头包括第三字段和第四字段,所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同,所述第二字段在所述第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同,所述第一字段等于所述第三字段,所述第二字段不等于所述第四字段;分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到第一哈希结果以及第二哈希结果,所述第一哈希结果对应所述第二字段,所述第二哈希结果对应所述第四字段;

转发所述第一数据流和所述第二数据流,所述第一哈希结果和所述第二哈希结果分别对应转发所述第一数据流的出接口以及转发所述第二数据流的出接口。从上述技术方案可以看出,所述第一数据流中包括所述第一字段和第二字段。所述第二数据流中包括所述第三字段和第四字段。所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同。所述第二字段在所述第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同。所述第一字段等于所述第三字段。所述第二字段不等于所述第四字段。现有技术中,分别将所述第一字段和所述第三字段作为哈希因子,根据哈希函数执行哈希运算,得到的两个哈希结果必然相等。相等的两个哈希结果分别对应的出接口是同一个出接口。分别以相等的两个哈希结果所对应的出接口对所述第一数据流和所述第二数据流进行转发,必然导致所述第一数据流和所述第二数据流通过同一个出接口转发,进而导致负载不均。上述技术方案中,分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到的两个哈希结果必然不相等。不相等的两个哈希结果分别对应的出接口是不同的出接口。分别以不同的两个哈希结果所对应的出接口对所述第一数据流和所述第二数据流进行转发,必然导致所述第一数据流和所述第二数据流分别通过不同的出接口转发。相对于现有技术提供的第一数据流和第二数据流通过同一个出接口转发的技术方案,上述技术方案减轻了现有技术存在的负载不均的问题。在所述第一方面提供的所述转发报文的方法的第一种可能的实现方式中,所述接收第一数据流和第二数据流之后以及所述分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算之前,所述方法还包括分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流匹配的第一表项以及与所述第二数据流匹配 的第二表项,所述第一表项的匹配域包括所述第一字段和所述第二字段,所述第二表项的匹配域包括所述第三字段和所述第四字段,所述第一表项对应所述哈希函数,所述第二表项对应所述哈希函数。在所述第一方面提供的所述转发报文的方法的第二种可能的实现方式中,所述接收第一数据流和第二数据流之后以及所述分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算之前,所述方法还包括分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流以及与所述第二数据流匹配的表项,所述表项的匹配域包括所述第一字段,所述表项对应所述哈希函数。根据所述第一方面提供的所述转发报文的方法、所述第一方面提供的所述转发报文的方法的第一种可能的实现方式以及所述第一方面提供的所述转发报文的方法的第二种可能的实现方式,在所述第一方面提供的所述转发报文的方法的第三种可能的实现方式中,所述哈希函数为下述算法中的任意一种哈希因子为源网际协议地址和目的网际协议地址的二元哈希算法,哈希因子为源端口号和目的端口号的二元哈希算法,哈希因子为源媒体访问控制协议地址和目的媒体访问控制协议地址的二元哈希算法,哈希因子为协议号的哈希算法,哈希因子为源网际协议地址、目的网际协议地址、源端口号、目的端口号和协议号的五元哈希算法,哈希因子为多协议标签交换标签的哈希算法以及哈希因子为生存时间的哈希算法。根据所述第一方面提供的所述转发报文的方法、所述第一方面提供的所述转发报文的方法的第一种可能的实现方式、所述第一方面提供的所述转发报文的方法的第二种可能的实现方式以及所述第一方面提供的所述转发报文的方法的第三种可能的实现方式,在所述第一方面提供的所述转发报文的方法的第四种可能的实现方式中,所述第一字段和所述第三字段为外层报文头中的字段,所述第二字段和所述第四字段为内层报文头中的字段。第二方面,提供了一种转发报文的装置,包括接收单元,用于接收第一数据流和第二数据流,所述第一数据流包括多个报文,每个报文的报文头包括第一字段和第二字段,所述第二数据流包括多个报文,每个报文的报文头包括第三字段和第四字段,所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同,所述第二字段在所述第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同,所述第一字段等于所述第三字段,所述第二字段不等于所述第四字段;运算单元,用于分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到第一哈希结果以及第二哈希结果,所述第一哈希结果对应所述第二字段,所述第二哈希结果对应所述第四字段;转发单元,用于转发所述第一数据流和所述第二数据流,所述第一哈希结果和所述第二哈希结果分别对应转发所述第一数据流的出接口以及转发所述第二数据流的出接□。从上述技术方案可以看出,所述第一数据流中包括所述第一字段和第二字段。所述第二数据流中包括所述第三字段和第四字段。所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同。所述第二字段在所述 第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同。所述第一字段等于所述第三字段。所述第二字段不等于所述第四字段。现有技术中,分别将所述第一字段和所述第三字段作为哈希因子,根据哈希函数执行哈希运算,得到的两个哈希结果必然相等。相等的两个哈希结果分别对应的出接口是同一个出接口。分别以相等的两个哈希结果所对应的出接口对所述第一数据流和所述第二数据流进行转发,必然导致所述第一数据流和所述第二数据流通过同一个出接口转发,进而导致负载不均。上述技术方案中,分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到的两个哈希结果必然不相等。不相等的两个哈希结果分别对应的出接口是不同的出接口。分别以不同的两个哈希结果所对应的出接口对所述第一数据流和所述第二数据流进行转发,必然导致所述第一数据流和所述第二数据流分别通过不同的出接口转发。相对于现有技术提供的第一数据流和第二数据流通过同一个出接口转发的技术方案,上述技术方案减轻了现有技术存在的负载不均的问题。在所述第二方面提供的所述转发报文的装置的第一种可能的实现方式中,所述装置还包括查找单元,所述查找单元用于在所述接收单元接收所述第一数据流和所述第二数据流之后以及在所述运算单元根据所述哈希函数执行所述哈希运算之前,分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流匹配的第一表项以及与所述第二数据流匹配的第二表项,所述第一表项的匹配域包括所述第一字段和所述第二字段,所述第二表项的匹配域包括所述第三字段和所述第四字段,所述第一表项对应所述哈希函数,所述第二表项对应所述哈希函数。在所述第二方面提供的所述转发报文的装置的第二种可能的实现方式中,所述装置还包括查找单元,所述查找单元用于在所述接收单元接收所述第一数据流和所述第二数据流之后以及在所述运算单元根据所述哈希函数执行所述哈希运算之前,分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流以及与所述第二数据流匹配的表项,所述表项的匹配域包括所述第一字段,所述表项对应所述哈希函数。根据所述第二方面提供的所述转发报文的装置、所述第二方面提供的所述转发报文的装置的第一种可能的实现方式以及所述第二方面提供的所述转发报文的装置的第二种可能的实现方式,在所述第二方面提供的所述转发报文的装置的第三种可能的实现方式中,所述哈希函数为下述算法中的任意一种哈希因子为源网际协议地址和目的网际协议地址的二元哈希算法,哈希因子为源端口号和目的端口号的二元哈希算法,哈希因子为源媒体访问控制协议地址和目的媒体访问控制协议地址的二元哈希算法,哈希因子为协议号的哈希算法,哈希因子为源网际协议地址、目的网际协议地址、源端口号、目的端口号和协议号的五元哈希算法,哈希因子为多协议标签交换标签的哈希算法以及哈希因子为生存时间的哈希算法。根据所述第二方面提供的所述转发报文的装置、所述第二方面提供的所述转发报文的装置的第一种可能的实现方式、所述第二方面提供的所述转发报文的装置的第二种可能的实现方式以及所述第二方面提供的所述转发报文的装置的第三种可能的实现方式,在所述第二方面提供的所述转发报文的装置的第四种可能的实现方式中,所述第一字段和所述第三字段为外层报文头中的字段,所述第二字段和所述第四字段为内层报文头中的字段。 第三方面,提供了一种转发报文的装置,包括至少一个接收器、第一发送器、第二发送器、至少一个处理器以及与所述至少一个处理器耦合的存储器。所述至少一个接收器用于接收第一数据流和第二数据流,所述第一数据流包括多个报文,每个报文的报文头包括第一字段和第二字段,所述第二数据流包括多个报文,每个报文的报文头包括第三字段和第四字段,所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同,所述第二字段在所述第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同,所述第一字段等于所述第三字段,所述第二字段不等于所述第四字段。所述至少一个处理器用于分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到第一哈希结果以及第二哈希结果,所述第一哈希结果对应所述第二字段,所述第二哈希结果对应所述第四字段。所述第一发送器用于转发所述第一数据流,所述第一哈希结果对应所述第一发送器。所述第二发送器用于转发所述第二数据流,所述第二哈希结果对应所述第二发送器。从上述技术方案可以看出,所述第一数据流中包括所述第一字段和第二字段。所述第二数据流中包括所述第三字段和第四字段。所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同。所述第二字段在所述第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同。所述第一字段等于所述第三字段。所述第二字段不等于所述第四字段。现有技术中,分别将所述第一字段和所述第三字段作为哈希因子,根据哈希函数执行哈希运算,得到的两个哈希结果必然相等。相等的两个哈希结果分别对应的出接口是同一个出接口。分别以相等的两个哈希结果所对应的出接口对所述第一数据流和所述第二数据流进行转发,必然导致所述第一数据流和所述第二数据流通过同一个出接口转发,进而导致负载不均。上述技术方案中,分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到的两个哈希结果必然不相等。不相等的两个哈希结果分别对应的出接口是不同的出接口。分别以不同的两个哈希结果所对应的出接口对所述第一数据流和所述第二数据流进行转发,必然导致所述第一数据流和所述第二数据流分别通过不同的出接口转发。相对于现有技术提供的第一数据流和第二数据流通过同一个出接口转发的技术方案,上述技术方案减轻了现有技术存在的负载不均的问题。在所述第三方面提供的所述转发报文的装置的第一种可能的实现方式中,所述至少一个处理器还用于在所述至少一个接收器接收所述第一数据流和所述第二数据流之后以及在所述至少一个处理器根据所述哈希函数执行所述哈希运算之前,分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流匹配的第一表项以及与所述第二数据流匹配的第二表项,所述第一表项的匹配域包括所述第一字段和所述第二字段,所述第二表项的匹配域包括所述第三字段和所述第四字段,所述第一表项对应所述哈希函数,所述第二表项对应所述哈希函数。

在所述第三方面提供的所述转发报文的装置的第二种可能的实现方式中,所述至少一个处理器还用于在所述至少一个接收器接收所述第一数据流和所述第二数据流之后以及在所述至少一个处理器根据所述哈希函数执行所述哈希运算之前,分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流以及与所述第二数据流匹配的表项,所述表项的匹配域包括所述第一字段,所述表项对应所述哈希函数。根据所述第三方面提供的所述转发报文的装置、所述第三方面提供的所述转发报文的装置的第一种可能的实现方式以及所述第三方面提供的所述转发报文的装置的第二种可能的实现方式,在所述第三方面提供的所述转发报文的装置的第三种可能的实现方式中,所述哈希函数为下述算法中的任意一种哈希因子为源网际协议地址和目的网际协议地址的二元哈希算法,哈希因子为源端口号和目的端口号的二元哈希算法,哈希因子为源媒体访问控制协议地址和目的媒体访问控制协议地址的二元哈希算法,哈希因子为协议号的哈希算法,哈希因子为源网际协议地址、目的网际协议地址、源端口号、目的端口号和协议号的五元哈希算法,哈希因子为多协议标签交换标签的哈希算法以及哈希因子为生存时间的哈希算法。根据所述第三方面提供的所述转发报文的装置、所述第三方面提供的所述转发报文的装置的第一种可能的实现方式、所述第三方面提供的所述转发报文的装置的第二种可能的实现方式以及所述第三方面提供的所述转发报文的装置的第三种可能的实现方式,在所述第三方面提供的所述转发报文的装置的第四种可能的实现方式中,所述第一字段和所述第三字段为外层网际协议头中的字段,所述第二字段和所述第四字段为内层网际协议头中的字段。


图I为本发明实施例提供的一种转发报文的方法的流程图;图2为本发明实施例提供的一种转发报文的装置的结构示意图;图3为本发明实施例提供的一种转发报文的装置的结构示意图;图4为本发明实施例提供的一种转发报文的装置的结构示意图;图5为本发明实施例提供的一种路由器的结构示意图6为本发明实施例提供的一种接口板的结构示意图。
具体实施例方式图I为本发明实施例提供的一种转发报文的方法的流程图。参见图1,所述方法包括102、接收第一数据流和第二数据流。所述第一数据流包括多个报文,每个报文的报文头包括第一字段和第二字段,所述第二数据流包括多个报文,每个报文的报文头包括第三字段和第四字段,所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同,所述第二字段在所述第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同,所述第一字段等于所述第三字段,所述第二字段不等于所述 第四字段。102的执行主体为网络设备。所述网络设备可以是路由器、交换机、防火墙或者负载均衡器。具体地,102的执行主体为所述网络设备的接收器。所述接收器可以是一个接收器,也可以是多个接收器。举例来说,所述第一数据流包括的多个报文可以是IP报文,也可以是以太报文。所述第二数据流包括的多个报文可以是IP报文,也可以是以太报文。所述第一数据流中的每个报文包括报文头以及净荷。报文头可以是一个,也可以是多个。举例来说,IP报文包括IP头。用户数据报协议(User Datagram Protocol, UDP)报文包括IP头以及UDP头。承载在网际协议第四版(Internet Protocol version 4, IPv4)网络的通用路由封装协议(Generic Routing Encapsulation, GRE)报文包括IPv4头以及GRE头。承载在IPv4网络的二层隧道协议(Layer 2Tunneling Protocol, L2TP)报文包括IPv4 头、UDP 头、L2TP 头、点对点协议(Point-to-Point Protocol, PPP)头以及 IP 头。所述第二数据流中的每个报文包括报文头以及净荷。报文头可以是一个,也可以是多个。关于所述第二数据流中的每个报文的报文头,请参见上文对所述第一数据流中的每个报文的报文头的描述。此处不再赘述。104、分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算。分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到第一哈希结果以及第二哈希结果,所述第一哈希结果对应所述第二字段,所述第二哈希结果对应所述第四字段。104的执行主体为所述网络设备。具体地,104的执行主体可以为所述网络设备的网络处理器(network processor, NP)。104可以在102执行完毕后开始执行,也可以在102执行过程中开始执行。举例来说,可以在接收所述第一数据流中的第一个报文后开始执行104。本发明不限定执行哈希运算的顺序。举例来说,可以先将所述第二字段作为哈希因子,根据哈希函数执行哈希运算,再将所述第四字段作为哈希因子,根据哈希函数执行哈希运算。也可以先将所述第四字段作为哈希因子,根据哈希函数执行哈希运算,再将所述第二字段作为哈希因子,根据哈希函数执行哈希运算。
本领域的技术人员可以理解,所述第一哈希结果对应的哈希因子也可以包括所述第一数据流中的报文头中所述第二字段之外的字段。所述第二哈希结果对应的哈希因子也可以包括所述第二数据流中的报文头中所述第四字段之外的字段。106、转发所述第一数据流和所述第二数据流。所述第一哈希结果和所述第二哈希结果分别对应转发所述第一数据流的出接口以及转发所述第二数据流的出接口。106的执行主体为所述网络设备。具体地,106的执行主体可以为所述网络设备的发送器。106的执行主体对应两个发送器。本发明不限定所述第一数据流以及所述第二数据流的转发顺序。举例来说,可以先转发所述第一数据流,再转发所述第二数据流。也可以先转发所述第二数据流,再转发所述第一数据流。也可以交替转发所述第一数据流中的报文与所述第二数据流中的报文。 从上述技术方案可以看出,所述第一数据流中包括所述第一字段和第二字段。所述第二数据流中包括所述第三字段和第四字段。所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同。所述第二字段在所述第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同。所述第一字段等于所述第三字段。所述第二字段不等于所述第四字段。现有技术中,分别将所述第一字段和所述第三字段作为哈希因子,根据哈希函数执行哈希运算,得到的两个哈希结果必然相等。相等的两个哈希结果分别对应的出接口是同一个出接口。分别以相等的两个哈希结果所对应的出接口对所述第一数据流和所述第二数据流进行转发,必然导致所述第一数据流和所述第二数据流通过同一个出接口转发,进而导致负载不均。本实施例提供的技术方案中,分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到的两个哈希结果必然不相等。不相等的两个哈希结果分别对应的出接口是不同的出接口。分别以不同的两个哈希结果所对应的出接口对所述第一数据流和所述第二数据流进行转发,必然导致所述第一数据流和所述第二数据流分别通过不同的出接口转发。相对于现有技术提供的第一数据流和第二数据流通过同一个出接口转发的技术方案,上述技术方案减轻了现有技术存在的负载不均的问题。可选的,图I所示的方法中,所述接收第一数据流和第二数据流之后以及所述分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算之前,所述方法还可以包括分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流匹配的第一表项以及与所述第二数据流匹配的第二表项,所述第一表项的匹配域包括所述第一字段和所述第二字段,所述第二表项的匹配域包括所述第三字段和所述第四字段,所述第一表项对应所述哈希函数,所述第二表项对应所述哈希函数。举例来说,上述查找操作的执行主体可以是所述网络设备。具体地,上述查找操作的执行主体可以是所述网络设备的NP。举例来说,所述转发表可以是访问控制列表(Access Control List, ACL)。可选的,图I所示的方法中,所述接收第一数据流和第二数据流之后以及所述分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算之前,所述方法还包括分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流以及与所述第二数据流匹配的表项,所述表项的匹配域包括所述第一字段,所述表项对应所述哈希函数。举例来说,上述查找操作的执行主体可以是所述网络设备。具体地,上述查找操作的执行主体可以是所述网络设备的NP。举例来说,所述转发表可以是ACL。可选的,图I所示的方法中,所述哈希函数为下述算法中的任意一种哈希因子为源网际协议地址和目的网际协议地址的二元哈希算法,哈希因子 为源端口号和目的端口号的二元哈希算法,哈希因子为源媒体访问控制(Media AccessControl, MAC)协议地址和目的媒体访问控制协议地址的二元哈希算法,哈希因子为协议号的哈希算法,哈希因子为源网际协议地址、目的网际协议地址、源端口号、目的端口号和协议号的五元哈希算法,哈希因子为多协议标签交换(Multiprotocol Label Switching,MPLS)标签的哈希算法以及哈希因子为生存时间(time to live, TTL)的哈希算法。可选的,图I所示的方法中,所述第一字段和所述第三字段为外层报文头中的字段,所述第二字段和所述第四字段为内层报文头中的字段。举例来说,所述第一字段和所述第三字段为外层网际协议头中的字段。所述第二字段和所述第四字段为内层网际协议头中的字段。例如,所述第一字段和所述第三字段可以分别是源IP地址和目的IP地址,或者,所述第一字段和所述第三字段可以分别是源端口号和目的端口号。所述第二字段和所述第四字段可以分别是源IP地址和目的IP地址,或者,所述第二字段和所述第四字段可以分别是源端口号和目的端口号。图2为本发明实施例提供的一种转发报文的装置的结构示意图。所述装置为网络设备。所述网络设备可以是路由器、交换机、防火墙或者负载均衡器。所述装置可以通过图I所示的方法实现。参见图2,所述装置包括接收单元202,用于接收第一数据流和第二数据流,所述第一数据流包括多个报文,每个报文的报文头包括第一字段和第二字段,所述第二数据流包括多个报文,每个报文的报文头包括第三字段和第四字段,所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同,所述第二字段在所述第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同,所述第一字段等于所述第三字段,所述第二字段不等于所述第四字段。举例来说,接收单元202可以是所述网络设备的接收器。所述接收器可以是一个接收器,也可以是多个接收器。举例来说,所述第一数据流包括的多个报文可以是IP报文,也可以是以太报文。所述第二数据流包括的多个报文可以是IP报文,也可以是以太报文。所述第一数据流中的每个报文包括报文头以及净荷。报文头可以是一个,也可以是多个。举例来说,IP报文包括IP头。m)P报文包括IP头以及UDP头。承载在IPv4网络的GRE报文包括IPv4头以及GRE头。承载在IPv4网络的L2TP报文包括IPv4头、UDP头、L2TP头、PPP头以及IP头。所述第二数据流中的每个报文包括报文头以及净荷。报文头可以是一个,也可以是多个。关于所述第二数据流中的每个报文的报文头,请参见上文对所述第一数据流中的每个报文的报文头的描述。此处不再赘述。运算单元204,用于分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到第一哈希结果以及第二哈希结果,所述第一哈希结果对应所述第二字段,所述第二哈希结果对应所述第四字段。举例来说,运算单元204可以是所述网络设备的NP。运算单元204执行的操作可以在接收单元202执行完毕接收单元202对应的操作后开始执行,也可以在接收单元202执行接收单元202对应的操作的过程中开始执行。举例来说,运算单元204可以在接收单元202接收所述第一数据流中的第一个报文后开始执行运算单元204对应的操作。

本发明不限定执行哈希运算的顺序。举例来说,可以先将所述第二字段作为哈希因子,根据哈希函数执行哈希运算,再将所述第四字段作为哈希因子,根据哈希函数执行哈希运算。也可以先将所述第四字段作为哈希因子,根据哈希函数执行哈希运算,再将所述第二字段作为哈希因子,根据哈希函数执行哈希运算。本领域的技术人员可以理解,所述第一哈希结果对应的哈希因子也可以包括所述第一数据流中的报文头中所述第二字段之外的字段。所述第二哈希结果对应的哈希因子也可以包括所述第二数据流中的报文头中所述第四字段之外的字段。转发单元206,用于转发所述第一数据流和所述第二数据流,所述第一哈希结果和所述第二哈希结果分别对应转发所述第一数据流的出接口以及转发所述第二数据流的出接口。举例来说,转发单元206可以为所述网络设备的发送器。转发单元206对应两个发送器。本发明不限定所述第一数据流以及所述第二数据流的转发顺序。举例来说,可以先转发所述第一数据流,再转发所述第二数据流。也可以先转发所述第二数据流,再转发所述第一数据流。也可以交替转发所述第一数据流中的报文与所述第二数据流中的报文。从上述技术方案可以看出,所述第一数据流中包括所述第一字段和第二字段。所述第二数据流中包括所述第三字段和第四字段。所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同。所述第二字段在所述第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同。所述第一字段等于所述第三字段。所述第二字段不等于所述第四字段。现有技术中,分别将所述第一字段和所述第三字段作为哈希因子,根据哈希函数执行哈希运算,得到的两个哈希结果必然相等。相等的两个哈希结果分别对应的出接口是同一个出接口。分别以相等的两个哈希结果所对应的出接口对所述第一数据流和所述第二数据流进行转发,必然导致所述第一数据流和所述第二数据流通过同一个出接口转发,进而导致负载不均。本实施例提供的技术方案中,分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到的两个哈希结果必然不相等。不相等的两个哈希结果分别对应的出接口是不同的出接口。分别以不同的两个哈希结果所对应的出接口对所述第一数据流和所述第二数据流进行转发,必然导致所述第一数据流和所述第二数据流分别通过不同的出接口转发。相对于现有技术提供的第一数据流和第二数据流通过同一个出接口转发的技术方案,上述技术方案减轻了现有技术存在的负载不均的问题。可选的,图2所示的装置中,所述装置还包括查找单元208a,所述查找单元208a用于在所述接收单元202接收所述第一数据流和所述第二数据流之后以及在所述运算单元204根据所述哈希函数执行所述哈希运算之前,分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流匹配的第一表项以及与所述第二数据流匹配的第二表项,所述第一表项的匹配域包括所述第一字段和所述第二字段,所述第二表项的匹配域包括所述第三字段和所述第四字段,所述第一表项对应所述哈希函数,所述第二表项对应所述哈希函数。图3为本实施例提供的一种转发报文的装置的结构示意图。关于查找单元208a,可以参见图3。举例来说,所述查找单元208a可以是所述网络设备的NP。如果所述查找单元208a和所述运算单元204都是所述网络设备的NP,所述查找单元208a和所述运算单元204分别对应所述网络设备的NP的不同的功能模块。

举例来说,所述转发表可以是ACL。可选的,图2所示的装置中,所述装置还包括查找单元208b,所述查找单元208b用于在所述接收单元202接收所述第一数据流和所述第二数据流之后以及在所述运算单元204根据所述哈希函数执行所述哈希运算之前,分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流以及与所述第二数据流匹配的表项,所述表项的匹配域包括所述第一字段,所述表项对应所述哈希函数。图4为本实施例提供的一种转发报文的装置的结构示意图。关于查找单元208b,可以参见图4。举例来说,所述查找单元208b可以是所述网络设备的NP。如果所述查找单元208b和所述运算单元204都是所述网络设备的NP,所述查找单元208b和所述运算单元204分别对应所述网络设备的NP的不同的功能模块。举例来说,所述转发表可以是ACL。可选的,图2所示的装置中,所述哈希函数为下述算法中的任意一种哈希因子为源网际协议地址和目的网际协议地址的二元哈希算法,哈希因子为源端口号和目的端口号的二元哈希算法,哈希因子为源媒体访问控制协议地址和目的媒体访问控制协议地址的二元哈希算法,哈希因子为协议号的哈希算法,哈希因子为源网际协议地址、目的网际协议地址、源端口号、目的端口号和协议号的五元哈希算法,哈希因子为多协议标签交换标签的哈希算法以及哈希因子为生存时间的哈希算法。可选的,图2所示的装置中,所述第一字段和所述第三字段为外层报文头中的字段,所述第二字段和所述第四字段为内层报文头中的字段。举例来说,所述第一字段和所述第三字段为外层网际协议头中的字段。所述第二字段和所述第四字段为内层网际协议头中的字段。例如,所述第一字段和所述第三字段可以分别是源IP地址和目的IP地址,或者,所述第一字段和所述第三字段可以分别是源端口号和目的端口号。所述第二字段和所述第四字段可以分别是源IP地址和目的IP地址,或者,所述第二字段和所述第四字段可以分别是源端口号和目的端口号。本发明实施例提供了一种转发报文的装置。所述装置可以通过图I所示的方法实现。所述装置能够执行图I所示的方法中部分或者全部操作。所述装置包括至少一个接收器、第一发送器、第二发送器、至少一个处理器以及与所述至少一个处理器耦合的存储器。所述至少一个接收器用于接收第一数据流和第二数据流,所述第一数据流包括多个报文,每个报文的报文头包括第一字段和第二字段,所述第二数据流包括多个报文,每个报文的报文头包括第三字段和第四字段,所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同,所述第二字段在所述第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同,所述第一字段等于所述第三字段,所述第二字段不等于所述第四字段。所述至少一个处理器用于分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到第一哈希结果以及第二哈希结果,所述第一哈希结果对应所述第二字段,所述第二哈希结果对应所述第四字段。所述第一发送器用于转发所述第一数据流,所述第一哈希结果对应所述第一发送器。

所述第二发送器用于转发所述第二数据流,所述第二哈希结果对应所述第二发送器。从上述技术方案可以看出,所述第一数据流中包括所述第一字段和第二字段。所述第二数据流中包括所述第三字段和第四字段。所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同。所述第二字段在所述第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同。所述第一字段等于所述第三字段。所述第二字段不等于所述第四字段。现有技术中,分别将所述第一字段和所述第三字段作为哈希因子,根据哈希函数执行哈希运算,得到的两个哈希结果必然相等。相等的两个哈希结果分别对应的出接口是同一个出接口。分别以相等的两个哈希结果所对应的出接口对所述第一数据流和所述第二数据流进行转发,必然导致所述第一数据流和所述第二数据流通过同一个出接口转发,进而导致负载不均。上述技术方案中,分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到的两个哈希结果必然不相等。不相等的两个哈希结果分别对应的出接口是不同的出接口。分别以不同的两个哈希结果所对应的出接口对所述第一数据流和所述第二数据流进行转发,必然导致所述第一数据流和所述第二数据流分别通过不同的出接口转发。相对于现有技术提供的第一数据流和第二数据流通过同一个出接口转发的技术方案,上述技术方案减轻了现有技术存在的负载不均的问题。可选的,所述装置中,所述至少一个处理器还用于在所述至少一个接收器接收所述第一数据流和所述第二数据流之后以及在所述至少一个处理器根据所述哈希函数执行所述哈希运算之前,分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流匹配的第一表项以及与所述第二数据流匹配的第二表项,所述第一表项的匹配域包括所述第一字段和所述第二字段,所述第二表项的匹配域包括所述第三字段和所述第四字段,所述第一表项对应所述哈希函数,所述第二表项对应所述哈希函数。可选的,所述装置中,所述至少一个处理器还用于在所述至少一个接收器接收所述第一数据流和所述第二数据流之后以及在所述至少一个处理器根据所述哈希函数执行所述哈希运算之前,分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流以及与所述第二数据流匹配的表项,所述表项的匹配域包括所述第一字段,所述表项对应所述哈希函数。可选的,所述装置中,所述哈希函数为下述算法中的任意一种哈希因子为源网际协议地址和目的网际协议地址的二元哈希算法,哈希因子为源端口号和目的端口号的二元哈希算法,哈希因子为源媒体访问控制协议地址和目的媒体访问控制协议地址的二元哈希算法,哈希因子为协议号的哈希算法,哈希因子为源网际协议地址、目的网际协议地址、源端口号、目的端口号和协议号的五元哈希算法,哈希因子为多协议标签交换标签的哈希算法以及哈希因子为生存时间的哈希算法。可选的,所述装置中,所述第一字段和所述第三字段为外层网际协议头中的字段,所述第二字段和所述第四字段为内层网际协议头中的字段。

下文对本实施例提供的转发报文的装置进行举例说明。图5为一种路由器的结构示意图。所述路由器可以通过图I所示的方法实现。所述路由器能够执行图I所示的方法中部分或者全部操作。参见图5,所述路由器包括主控板(main processing unit, MPU)502、背板504以及接口板(line processing unit,LPU)506。主控板502通过背板504与接口板506连接。图6为接口板506的结构示意图。参见图6,接口板506包括中央处理器(central processing unit, CPU) 601、只读存储器602、随机访问存储器603、网络处理器604、接收器I、接收器2、接收器3、接收器4、发送器I、发送器2、发送器3以及发送器4。其中,CPU601、只读存储器602、随机访问存储器603以及网络处理器604通过总线连接。网络处理器604通过数据通道与接收器I、接收器2、接收器3、接收器4、发送器I、发送器2、发送器3以及发送器4连接。参见图6,接收器I用于接收第一数据流和第二数据流,所述第一数据流包括多个报文,每个报文的报文头包括第一字段和第二字段,所述第二数据流包括多个报文,每个报文的报文头包括第三字段和第四字段,所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同,所述第二字段在所述第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同,所述第一字段等于所述第三字段,所述第二字段不等于所述第四字段。网络处理器604用于分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到第一哈希结果以及第二哈希结果,所述第一哈希结果对应所述第二字段,所述第二哈希结果对应所述第四字段。发送器I用于转发所述第一数据流,所述第一哈希结果对应发送器I。发送器2用于转发所述第二数据流,所述第二哈希结果对应发送器2。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以 存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(英文缩写为R0M,英文全称为Read-Only Memory)、随机存取存储器(英文缩写为RAM,英文全称为Random AccessMemory )、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
权利要求
1.一种转发报文的方法,其特征在于,包括 接收第一数据流和第二数据流,所述第一数据流包括多个报文,每个报文的报文头包括第一字段和第二字段,所述第二数据流包括多个报文,每个报文的报文头包括第三字段和第四字段,所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同,所述第二字段在所述第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同,所述第一字段等于所述第三字段,所述第二字段不等于所述第四字段; 分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到第一哈希结果以及第二哈希结果,所述第一哈希结果对应所述第二字段,所述第二哈希结果对应所述第四字段; 转发所述第一数据流和所述第二数据流,所述第一哈希结果和所述第二哈希结果分别对应转发所述第一数据流的出接口以及转发所述第二数据流的出接口。
2.根据权利要求I所述的方法,其特征在于,所述接收第一数据流和第二数据流之后以及所述分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算之前,所述方法还包括 分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流匹配的第一表项以及与所述第二数据流匹配的第二表项,所述第一表项的匹配域包括所述第一字段和所述第二字段,所述第二表项的匹配域包括所述第三字段和所述第四字段,所述第一表项对应所述哈希函数,所述第二表项对应所述哈希函数。
3.根据权利要求I所述的方法,其特征在于,所述接收第一数据流和第二数据流之后以及所述分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算之前,所述方法还包括 分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流以及与所述第二数据流匹配的表项,所述表项的匹配域包括所述第一字段,所述表项对应所述哈希函数。
4.根据权利要求I至3中任一所述的方法,其特征在于,所述哈希函数为下述算法中的任意一种 哈希因子为源网际协议地址和目的网际协议地址的二元哈希算法,哈希因子为源端口号和目的端口号的二元哈希算法,哈希因子为源媒体访问控制协议地址和目的媒体访问控制协议地址的二元哈希算法,哈希因子为协议号的哈希算法,哈希因子为源网际协议地址、目的网际协议地址、源端口号、目的端口号和协议号的五元哈希算法,哈希因子为多协议标签交换标签的哈希算法以及哈希因子为生存时间的哈希算法。
5.根据权利要求I至4中任一所述的方法,其特征在于,所述第一字段和所述第三字段为外层网际协议头中的字段,所述第二字段和所述第四字段为内层网际协议头中的字段。
6.一种转发报文的装置,其特征在于,包括 接收单元,用于接收第一数据流和第二数据流,所述第一数据流包括多个报文,每个报文的报文头包括第一字段和第二字段,所述第二数据流包括多个报文,每个报文的报文头包括第三字段和第四字段,所述第一字段在所述第一数据流的报文头中的位置与所述第三字段在所述第二数据流的报文头中的位置相同,所述第二字段在所述第一数据流的报文头中的位置与所述第四字段在所述第二数据流的报文头中的位置相同,所述第一字段等于所述第三字段,所述第二字段不等于所述第四字段; 运算单元,用于分别将所述第二字段和所述第四字段作为哈希因子,根据哈希函数执行哈希运算,得到第一哈希结果以及第二哈希结果,所述第一哈希结果对应所述第二字段,所述第二哈希结果对应所述第四字段; 转发单元,用于转发所述第一数据流和所述第二数据流,所述第一哈希结果和所述第二哈希结果分别对应转发所述第一数据流的出接口以及转发所述第二数据流的出接口。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括查找单元,所述查找单元用于在所述接收单元接收所述第一数据流和所述第二数据流之后以及在所述运算单元根据所述哈希函数执行所述哈希运算之前,分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流匹配的第一表项以及与所述第二数据流匹配的第二表项,所述第一表项的匹配域包括所述第一字段和所述第二字段,所述第二表项的匹配域包括所述第三字段和所述第四字段,所述第一表项对应所述哈希函数,所述第二表项对应所述哈希函数。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括查找单元,所述查找单元用于在所述接收单元接收所述第一数据流和所述第二数据流之后以及在所述运算单元根据所述哈希函数执行所述哈希运算之前,分别根据所述第一数据流中每个报文的报文头以及所述第二数据流中每个报文的报文头在转发表中查找与所述第一数据流以及与所述第二数据流匹配的表项,所述表项的匹配域包括所述第一字段,所述表项对应所述哈希函数。
9.根据权利要求6至8中任一所述的装置,其特征在于,所述哈希函数为下述算法中的任意一种 哈希因子为源网际协议地址和目的网际协议地址的二元哈希算法,哈希因子为源端口号和目的端口号的二元哈希算法,哈希因子为源媒体访问控制协议地址和目的媒体访问控制协议地址的二元哈希算法,哈希因子为协议号的哈希算法,哈希因子为源网际协议地址、目的网际协议地址、源端口号、目的端口号和协议号的五元哈希算法,哈希因子为多协议标签交换标签的哈希算法以及哈希因子为生存时间的哈希算法。
10.根据权利要求6至9中任一所述的装置,其特征在于,所述第一字段和所述第三字段为外层网际协议头中的字段,所述第二字段和所述第四字段为内层网际协议头中的字段。
全文摘要
本发明实施例提供了一种转发报文的方法和装置,该方法包括接收第一数据流和第二数据流,第一数据流包括多个报文,每个报文的报文头包括第一字段和第二字段,第二数据流包括多个报文,每个报文的报文头包括第三字段和第四字段,第一字段等于第三字段,第二字段不等于第四字段;分别将第二字段和第四字段作为哈希因子,根据哈希函数执行哈希运算,得到第一哈希结果以及第二哈希结果,第一哈希结果对应第二字段,第二哈希结果对应第四字段;转发第一数据流和第二数据流,第一哈希结果和第二哈希结果分别对应转发第一数据流的出接口以及转发第二数据流的出接口。此外,还提供了相应的装置。通过上述技术方案,可以减轻现有技术存在的负载不均的问题。
文档编号H04L12/56GK102821049SQ201210290519
公开日2012年12月12日 申请日期2012年8月15日 优先权日2012年8月15日
发明者王浩宇 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1