欢迎您访问广东某某机械环保科有限公司网站,公司主营某某机械、某某设备、某某模具等产品!
全国咨询热线: 400-123-4567

新闻资讯

哈希游戏| 哈希游戏平台| 哈希游戏APP

HAXIYOUXI-HAXIYOUXIPINGTAI-HAXIYOUXIAPP

报文转发方法和装置的制作方法哈希游戏- 哈希游戏平台- 官方网站

作者:小编2025-02-08 14:49:42

  哈希游戏- 哈希游戏平台- 哈希游戏官方网站

报文转发方法和装置的制作方法哈希游戏- 哈希游戏平台- 哈希游戏官方网站

  在数据通信技术中,为扩充链路带宽,提出了链路捆绑。其中,对于三层技术,链路捆绑的主要形态是等价路由。对于二层技术,链路捆绑的主要形态是端口聚合。在很多应用场景比如互联网数据中心(IDC)中,通过将二层和三层链路捆绑一起使用,达到最大化扩充带宽的作用。下面通过图1描述二层和三层链路捆绑一起使用时报文的转发流程。如图1所示,该流程可包括以下步骤步骤101,接收报文,采用固定的哈希(HASH)算法对所述报文中的源IP地址和目的IP地址进行哈希运算,得到哈希值。步骤102,将哈希值和到达目的IP地址的等价路由的路由成员数目进行模运算, 得到路由成员编号,将路由成员编号对应的等价路由确定为用于转发所述报文的路由。步骤103,将上述哈希值与作为所选路由的出口的聚合端口的端口成员数目进行模运算,得到端口成员编号,通过端口成员编号对应的端口转发所述报文。至此,完成图1所示的流程。但上述现有转发方式存在技术问题在于,通过等价路由中同一条成员路由转发的报文,会通过该成员路由对应的聚合端口的同一个端口转发,而该成员路由对应的聚合端口的其他的成员端口则处于闲置浪费状态,这显然会导致成员端口负载不均,不能被充分利用的问题。

  本发明提供了报文转发方法和装置,以实现由等价路由的同一成员路由转发的不同报文,分担在该成员路由对应的聚合端口的不同端口上进行转发。本发明提供的技术方案包括一种报文转发方法,包括根据报文中的用于识别所述报文所属流的参数进行哈希运算,得到初始哈希值;将所述初始哈希值进行两种不同的哈希运算,得到两个不同的哈希值;根据其中一个哈希值在到达所述报文的目的IP地址的等价路由中选择一个等价路由,根据另一个哈希值在被选的等价路由对应的聚合端口中选择一个端口 ;通过所选的所述端口转发所述报文。一种报文转发装置,包括初始哈希值运算单元,用于根据报文中的用于识别所述报文所属流的参数进行哈希运算,得到初始哈希值;哈希值计算单元,用于将所述初始哈希值进行两种不同的哈希运算,得到两个不同的哈希值;报文处理单元,用于根据其中一个哈希值在到达所述报文的目的IP地址的等价路由中选择一个等价路由,根据另一个哈希值在被选的等价路由对应的聚合端口中选择一个端口,通过所选的所述端口转发所述报文。由以上技术方案可以看出,本发明基于同一初始哈希值分别计算出两个不同的哈希值,分别用于在到达报文的目的IP地址的等价路由中选择一个等价路由以及在作为所选等价路由的出口的聚合端口中选择一个端口,这样,即使路由成员数目和聚合端口中端口成员数目相等,由于选择路由和端口时依赖的哈希值不同,也不会出现经由同一条等价路由转发的不同报文集中在该等价路由对应的聚合端口的同一个端口上转发出去的问题, 实现了同一路由的报文分担在不同端口上转发,保证了端口被充分利用。进一步地,本发明得到的两个不同的哈希值都是基于对用于识别报文所属的流的参数进行哈希运算得到的初始哈希值,这能够保证同一流的报文都经由相同的路由和端口转发,维持了链路捆绑技术中逐流的粘性特征。

  具体实施例方式为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。图2为本发明实施例提供的流程图。该流程应用于二层链路捆绑和三层链路捆绑一起使用的场景。如图2所示,该流程可包括以下步骤步骤201,根据报文中的用于识别所述报文所属流的参数进行哈希运算,得到初始哈希值。这里,步骤201中用于进行哈希运算的参数为已定义的用于识别报文所属流的所有参数,并非为已定义的用于识别报文所属流的参数中的部分参数。在报文传输应用中,通常会利用报文的五元组(源IP地址、目的IP地址、源端口号、目的端口号和协议号)中至少两个参数来定义报文所属的流,比如,若采用源IP地址和目的IP地址来定义报文所属的流,如此,本步骤201中的参数即为报文中源IP地址字段携带的源IP地址和目的IP地址字段携带的目的IP地址。本步骤201得到初始哈希值,目的是为了根据这个初始哈希值分别计算等价路由的成员路由编号以及聚合端口的成员端口编号,至于如何得到该初始哈希值,实现方式很多,在此不一一穷举。步骤202,将所述初始哈希值进行两种不同的哈希运算,得到两个不同的哈希值。本步骤202利用所述初始哈希值得到两个不同的哈希值,即第一哈希值和第二哈希值。图3中通过步骤305至步骤306示出了得到第一哈希值和第二哈希值的一种实现方式,本发明实施例并不具体限定。步骤203,根据其中一个哈希值在到达所述报文的目的IP地址的等价路由中选择一个等价路由,根据另一个哈希值在被选的等价路由对应的聚合端口中选择一个端口。步骤204,通过所选的所述端口转发所述报文。至此,完成图2所示的流程。通图2所示的流程可以看出,基于同一初始哈希值分别计算出两个不同的哈希值,分别用于在到达报文的目的IP地址的等价路由中选择一个等价路由以及在作为所选等价路由的出口的聚合端口中选择一个端口,这样,即使路由成员数目和聚合端口中端口成员数目相等,由于选择路由和端口时依赖的哈希值不同,也不会出现经由同一条等价路由转发的不同报文集中在该等价路由对应的聚合端口的同一个端口上转发出去的问题,实现了同一路由的报文分担在不同端口上转发,保证了端口被充分利用。进一步地,本发明中的两个不同的哈希值都基于对用于识别报文所属的流的参数进行哈希运算得到的初始哈希值,这能够保证同一流的报文都经由相同的路由和端口转发,维持了链路捆绑技术中逐流的粘性特征。为使本发明实施例提供的方法更加清楚,下面以步骤201中用于识别报文所属流的参数为源IP地址和目的IP地址为例对图2所示的流程进行详细描述,其他情况比如上述参数为源端口号和源IP地址、目的端口号和源IP地址等实现原理类似。参见图3,图3为本发明实施例提供的详细流程图。图3所示的流程应用于IP三层转发的场景,如图3所示,该流程可包括步骤301,接收报文。步骤302,将报文中源IP地址字段携带的源IP地址和目的IP地址字段携带的目的IP地址合并成一个序列。通常,源IP地址和目的IP地址的位数(bit)相等,均为32位,如此,本步骤302 中序列的大小为64位。比如,源IP地址字段携带的参数为源IP地址1.2. 3.4(用二进制表示即为 00000001,00000010,00000011,00000100),目的IP地址字段携带的参数为目的IP地址 5. 6. 7. 8(用二进制表示即为 00000101,00000110,00000111,00001000),如此,执行到本步骤302时,合并成的序列1可为源IP地址+目的IP地址,即为1. 2. 3. 4. 5. 6.7.8(用二进制表示,即为 00000001,00000010,00000011,00000100,00000101,00000110,00000111, 00001000)。步骤303,将序列划分为多个位数相同的序列块,每个序列块的大小为N位。本步骤303中之所以将序列划分为序列块,主要是由于步骤302中源IP地址和目的IP地址组成的序列具有64位,进行哈希运算所需的运算量较大,通过划分成多个序列块以相应减小运算量。基于此,本步骤303中序列块的大小N可按保证步骤304中的哈希运算简单的原则设置,其具体可为8的整数倍。以N为16,序列为步骤302中大小为 64位的1. 2. 3. 4. 5. 6. 7. 8为例,可将该序列划分成4个大小均为16位的序列块序列块 1(00000001,00000010)、序列块 2 (00000011,00000100)、序列块 3(00000101,00000110)和序列块 4 (00000111,00001000)。需要说明的是,本实施例中用于举例说明的用于识别所述报文所属流的参数即源IP地址和目的IP地址的位数相同。若用于识别所述报文所属流的参数的位数不同,可以按照位数最大的参数将其他位数少的参数补齐。例如,若用于识别所述报文所属流的参数为源端口号和源IP地址,通常,源端口号的位数为16位,源IP地址的位数为32位,则先将源端口号由16位补齐成32位,再与源IP地址的32位合并成序列以及划分该序列得到序列块,其中补齐方式可以是用数值0或1将位数进行补齐,本实施例不限定。或者,在用于识别所述报文所属流的参数的位数不同时,先将参数合并成一个序列,之后以位数少的参数为单位,将该序列划分成多个位数相同的序列块。例如,若用于识别所述报文所属流的参数为源端口号和源IP地址,则将源端口号与源IP地址合并成一个序列,以源端口号的16位数作为单位,将合并后的序列化为3个序列块。由此可见,步骤303的实现方式有多种变化,在此不再一一穷举。步骤304,将该得到的所有序列块进行哈希运算,得到初始哈希值。本步骤304具体为从所有序列块中抽出两个序列块进行哈希运算,得到结果1, 将该结果1作为当前结果,判断当前是否还存在未进行哈希运算的序列块,如果是,将当前结果与未进行哈希运算的一个序列块进行哈希运算得到结果2,将该结果2作为当前结果, 返回上述判断操作;否则,将该当前结果作为初始哈希值。本步骤304中的哈希运算具体实现时可有多种实现形式,比如为相加取反运算、 相减取反运算等,本发明实施例并不具体限定。以哈希运算为相加取反运算,得到的所有序列块为步骤303中的4个序列块为例,则本步骤304具体可为从该4个序列块中抽取出两个比如序列块1与序列块2进行加法运算,得到结果1,将结果1与未进行哈希运算的序列块比如序列块3进行加法运算,得到结果2,将结果2与未进行哈希运算的序列块比如序列块4相加得到结果3,由于当前不再存在未进行哈希运算的序列块,因此,可将结果3取反得到作为初始哈希值的数值OxEFEB。由于上述4个序列块均为16位,因此,本步骤304中的初始哈希值即数值OxEFEB也应为16位。通过步骤302至步骤304即可得到初始哈希值。需要说明的是,图3所示的流程并不对如何得到初始哈希值进行限定,步骤302至步骤304只是以利用源IP地址和目的IP 地址为例计算初始哈希值的一种实现方法。仍以源IP地址和目的IP地址为例,本发明实施例还可采用其他方法得到初始哈希值,比如将源IP地址和目的IP地址合并成序列1, 将序列1变换得到另一不同的序列记为序列2,将该序列1和序列2进行哈希运算得到初始哈希值。步骤305,将初始哈希值的高M位和低M位进行异或运算,获取一个大小为M位的

  第一哈希值。M的取值可为初始哈希值总位数的一半,或者小于初始哈希值总位数的一半,本发明实施例不限定。以初始哈希值为步骤304中大小为16位的初始哈希值0xEFEB,M为该初始哈希值总位数的一般即8为例,则执行到本步骤305时,即将初始哈希值OxEFEB的高8位与低8 位进行异或,得到一个大小为8位的第一哈希值即0x04。需要说明的是,本步骤305中的异或运算还可替换为与运算、或运算等,本发明实施例并不具体限定。步骤306,对第一哈希值进行均勻运算,得到一个大小为所述M位的第二哈希值。

  这里的均勻运算要求所述第二哈希值与所述第一哈希值具有相同的取值范围,具体可为第一哈希值的高P位与低P位的对调,其中,P小于或等于M的一半。以第一哈希值为步骤305中得到的大小为8位的0x04,P为4为例,则执行到本步骤306时,将0x04的高4位与低4位对调,即得到一个大小为8位的第二哈希值即0x40。可以看出,第一哈希值 0x04与第二哈希值0x40取值不同,但取值范围一样,都在0至255之间。从步骤306可以看出,第二哈希值是在对第一哈希值进行简单变换的基础上得到的。作为本发明实施例的一种扩展,该第二哈希值的确定还可独立于第一哈希值,比如,将初始哈希值的高M位和低M位进行与步骤305中异或运算不同的其他运算,得到第二哈希值。通过步骤305至步骤306,本发明实施例实现了利用初始哈希值,对该初始哈希值进行两种不同的运算,生成两个不同的哈希值。步骤307,将第一哈希值和第二哈希值中的一个哈希值与到达所述目的IP地址的等价路由的路由成员数目进行模运算,得到路由成员编号;从到达所述目的IP地址的等价路由中选择所述路由成员编号对应的一个等价路由。以利用第一哈希值与到达所述目的IP地址的等价路由的路由成员数目进行模运算为例,若第一哈希值为上述得到的0x04,到达所述目的IP地址的等价路由的路由成员数目为3,则执行到本步骤307时,将第一哈希值0x04和到达所述目的IP地址的等价路由的路由成员数目3进行模运算,得到的运算结果为1,如此,本步骤307可从到达所述目的IP 地址的等价路由中选择编号为1的等价路由。步骤308,将另一个哈希值与所述被选的等价路由对应的聚合端口的端口成员数目进行模运算,得到端口成员编号,从所述被选的等价路由对应的聚合端口中选择所述端口成员编号对应的端口,通过所选的所述端口转发所述报文。以第二哈希值与所述被选的等价路由对应的聚合端口的端口成员数目进行模运算为例,若第二哈希值为上述得到的0x40,所述被选的等价路由对应的聚合端口的端口成员数目为4,则执行到本步骤308时,将第二哈希值0x40和被选的等价路由对应的聚合端口的端口成员数目4进行模运算,得到的运算结果为0,如此,本步骤308可从被选的等价路由对应的聚合端口中选择编号为0的成员端口。至此,完成图3所示的流程。为使图3所示的流程更加清楚,下面举一个具体实施例进行描述假如接收到以下4个不同报文报文1至报文4,基于步骤302至步骤306的描述,得到该4个报文的第一哈希值依次为0x10,0x20,0x30,0x40,第二哈希值依次为0x01, 0x02,0x03,0x04,假如本实施例利用第一哈希值选择路由,利用第二哈希值选择端口,则, 若该4个报文对应相同的等价路由,并且,该等价路由中路由成员数目为4,根据上面步骤 307的描述可以得到该4个不同报文选择了同一个等价路由,即为编号为0的成员路由 (记为路由0)。至于端口的选择,若被选择的等价路由对应的聚合端口的端口成员数目与上面的路由成员数目相等,均为4,则该4个报文对端口的选择具体为针对报文1,由于该报文1对应的第二哈希值为0x01,则将该第二哈希值0x01与被选择的等价路由对应的聚合端口中成员端口数目4进行模运算,得到的运算结果为1,如此,从所述被选的等价路由对应的聚合端口中选择编号为1的成员端口,通过该编号为1的成员端口发送报文1,而针对报文2至4,按照类似报文1的处理方法,可得到从所述被选的等价路由对应的聚合端口中选择编号为1的成员端口转发报文2、从所述被选的等价路由对应的聚合端口中选择编号为3的成员端口转发报文3,以及从所述被选的等价路由对应的聚合端口中选择编号为0 的成员端口转发报文4。可以看出,经由同一条路由即路由0的该4个不同报文恰好被分担在聚合端口的4个成员端口上,这实现了端口均衡负载,提高端口的充分利用率。至此,完成本发明实施例提供的方法的描述。下面对本发明实施例提供的装置进行详述参见图4,图4为本发明实施例提供的装置结构图。如图4所示,该装置可包括初始哈希值运算单元,用于根据报文中的用于识别所述报文所属流的参数进行哈希运算,得到初始哈希值;其中,该用于进行哈希运算的参数为已定义的用于识别报文所属流的所有参数,并非为已定义的用于识别报文所属流的参数中的部分参数。哈希值计算单元,用于将所述初始哈希值进行两种不同的哈希运算,得到两个不同的哈希值。报文处理单元,用于根据其中一个哈希值在到达所述报文的目的IP地址的等价路由中选择一个等价路由,根据另一个哈希值在被选的等价路由对应的聚合端口中选择一个端口,通过所选的所述端口转发所述报文。其中,如图4所示,所述报文处理单元实现时可包括路由选择子单元,用于将所述其中一个哈希值与到达所述目的IP地址的等价路由的路由成员数目进行模运算,得到路由成员编号,从到达所述目的IP地址的等价路由中选择所述路由成员编号对应的等价路由;端口选择子单元,用于将所述另一个哈希值与所述被选的等价路由对应的聚合端口的端口成员数目进行模运算,得到端口成员编号,从所述被选的等价路由对应的聚合端口中选择所述端口成员编号对应的端口 ;报文发送子单元,用于通过所述端口选择子单元所选的所述端口转发所述报文。至此,完成图4所示的装置。由以上技术方案可以看出,本发明基于同一初始哈希值分别计算出两个不同的哈希值,分别用于在从到达报文中目的IP地址的等价路由中选择一个等价路由以及在作为所选等价路由的出口的聚合端口中选择一个端口,这样,即使路由成员数目和聚合端口中端口成员数目相等,由于选择路由和端口时依赖的哈希值不同,也不会出现经由同一条等价路由转发的不同报文集中在该等价路由对应的聚合端口的同一个端口上转发出去的问题,实现了同一路由的报文分担在不同端口上转发,保证了端口被充分利用。进一步地,本发明中的两个不同的哈希值都基于对用于识别报文所属的流的参数进行哈希运算得到的初始哈希值,这能够保证同一流的报文都经由相同的路由和端口转发,维持了链路捆绑技术中逐流的粘性特征。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

  5.一种报文转发装置,其特征在于,该装置包括初始哈希值运算单元,用于根据报文中的用于识别所述报文所属流的参数进行哈希运算,得到初始哈希值;哈希值计算单元,用于将所述初始哈希值进行两种不同的哈希运算,得到两个不同的哈希值;报文处理单元,用于根据其中一个哈希值在到达所述报文的目的IP地址的等价路由中选择一个等价路由,根据另一个哈希值在被选的等价路由对应的聚合端口中选择一个端口,通过所选的所述端口转发所述报文。

  本发明提供了报文转发方法和装置。其中,该方法包括根据报文中的用于识别所述报文所属流的参数进行哈希运算,得到初始哈希值;将所述初始哈希值进行两种不同的哈希运算,得到两个不同的哈希值;根据其中一个哈希值在到达所述报文的目的IP地址的等价路由中选择一个等价路由,根据另一个哈希值在被选的等价路由对应的聚合端口中选择一个端口;通过所选的所述端口转发所述报文。采用本发明,能够实现由等价路由的同一成员路由转发的不同报文,分担在该成员路由对应的聚合端口的不同端口上进行转发。