物理端口的均衡负载分担方法、装置和链路聚合系统
技术领域
本发明涉及通信技术领域,更具体的说,是涉及一种物理端口的均衡负载分担方法、装置和链路聚合系统。
背景技术
链路聚合是指将一组物理端口捆绑在一起作为一个逻辑接口来增加带宽的方法,又称为多端口负载均衡组。在两台设备之间建立链路聚合组时,按照现有的选路方式,设备间的多个物理端口可加入同一个链路聚合组内。假设交换机A的一个链路聚合组内最多可以支持8个物理端口同时转发,当交换机A和交换机B中之间的三个物理端口(编号为1、2、3)加入链路聚合组时,其链路聚合组的转发表端口分布如下,由上述链路聚合组的转发表端口分布(表1)可以看出,端口分布不均,1号和2号端口所占比例多。
表1:
有上述可知,由于端口分布不均,其仅在链路聚合组中的转发表支持的预设物理端口转发个数和加入的个数是整除关系时,各物理端口流量的负载才是均衡;当加入的物理端口个数是奇数时,在设备中进行数据转发的过程中,根据报文五元组(指源地址目的地址协议端口号)通过哈希计算,确定链路聚合组中转发表端口的位置进行数据转发,因转发表中端口分布不均,各物理端口流量的负载分担也会不均,从而导致数据转发不均,不能充分利用物理端口的带宽的问题。
发明内容
有鉴于此,本发明实施例提供了一种物理端口的均衡负载分担方法、装置和链路聚合系统,以克服由于现有技术中物理端口负载分担不均导致的数据转发不均,不能充分利用物理端口的带宽的问题。
为实现上述目的,本发明提供如下技术方案:
本发明实施例的第一方面提供了一种物理端口的均衡负载分担方法,包括:
从最高位至最低位逐次将加入链路聚合组内的物理端口对应的端口号添加至所述链路聚合组中的转发表;
在所述加入个数与所述转发表支持的预设物理端口转发个数N为非整除关系的情况下,当一端物理端口请求进行数据转发时,依据所述预设物理端口转发个数N从所述转发表的最低位向高位起选择n位进行第一次哈希计算获取扩展哈希值key1;
其中,n为所述预设物理端口转发个数N与加入链路聚合组内的物理端口对应的端口号的个数进行整除后获得的余数,N和n为正整数;
依据所述扩展哈希值key1和请求进行数据转发的物理端口上报的报文五元组进行第二次哈希计算,获取哈希值key2;
根据所述哈希值key2确定所述转发表中用于转发数据的物理端口的位置。
本发明实施例的第一方面的第一种实现方式中,根据所述哈希值key2确定所述转发表中用于转发数据的物理端口的位置,包括:
由key2确定所述转发表中的用于转发数据的物理端口的端口号;
依据物理端口与端口号的对应关系,确定转发数据的物理端口的位置;
选择确定位置的物理端口用于转发数据。
本发明实施例的第一方面的第二种实现方式中,从最高位至最低位逐次将加入链路聚合组内的物理端口对应的端口号添加至所述链路聚合组中的转发表之前,还包括:
获取加入所述链路聚合组内中的各个所述物理端口的端口速度;
判断各个所述端口速度是否相同,若是,则执行从最高位至最低位逐次将加入链路聚合组内的物理端口对应的端口号添加至所述链路聚合组中的转发表这一步骤;
若否,则获取最小的端口速度为基准速度,计算各个所述端口速度占所述基准速度的比例,获取按照基准速度每个所述物理端口可划分的虚拟端口的个数;
按照所述虚拟端口所属的物理端口的端口号为所述虚拟端口命名。
本发明实施例的第一方面的第三实现方式中,从最高位至最低位逐次将加入链路聚合组内的物理端口对应的端口号添加至所述链路聚合组中的转发表,包括:
按照从小到大的端口号顺序,从所述链路聚合组中的转发表的最高位开始逐次添加,当相同的端口号存在多个时,待所有所述相同的端口号添加结束后,选取下一端口号开始添加;
当所有端口号添加完毕后,所述转发表中仍存在空闲端口位置时,重新从最小的端口号开始加入所述转发表,直至所述空闲端口位置填满。
本发明实施例的第一方面的第四实现方式中,当一端物理端口请求进行数据转发时,依据所述预设物理端口转发个数N从所述转发表的最低位向高位起选择n位进行第一次哈希计算获取扩展哈希值key1,包括:
依据所述预设物理端口转发个数N与添加至所述转发表中的端口号的个数进行整除,获得余数n作为选择第一物理端口范围中包含物理端口的个数;
从所述转发表的最低位向最高位起选择所述n位作为第一次哈希计算的第一物理端口范围;
在所述第一物理端口范围内,依据请求进行数据转发的物理端口上报的报文特征五元组源IP,目的IP,源MAC,目的MAC和所述请求进行数据转发的物理端口的数值进行异或计算获取扩展哈希值key1。
本发明实施例的第二方面提供了一种物理端口的均衡负载分担装置,包括:
添加单元,用于从最高位至最低位逐次将加入链路聚合组内的物理端口对应的端口号添加至所述链路聚合组中的转发表;
第一次哈希计算单元,用于在所述加入个数与所述转发表支持的预设物理端口转发个数N为非整除关系的情况下,当一端物理端口请求进行数据转发时,依据所述预设物理端口转发个数N从所述转发表的最低位向高位起选择n位进行第一次哈希计算获取扩展哈希值key1,n为所述转发个数N与加入链路聚合组的物理端口的端口号的个数进行整除后获得的余数,N和n为正整数;
第二次哈希计算单元,用于依据所述扩展哈希值key1和请求进行数据转发的物理端口上报的报文五元组进行第二次哈希计算,获取哈希值key2;
转发单元,用于根据所述哈希值key2确定所述转发表中用于转发数据的物理端口的位置。
本发明实施例的第二方面的第一实现方式中,位置确定单元包括:
端口号确定模块,用于由key2确定所述转发表中的用于转发数据的物理端口的端口号;
位置确定模块,用于依据物理端口与端口号的对应关系,确定转发数据的物理端口的位置;
转发模块,用于选择确定位置的物理端口用于转发数据。
本发明实施例的第二方面的第二实现方式中,还包括:
获取单元,用于获取加入所述链路聚合组内中的各个所述物理端口的端口速度;
判断单元,用于判断各个所述端口速度是否相同,若是,则返回执行所述添加单元,若否,则执行划分单元;
所述划分单元,用于获取最小的端口速度为基准速度,计算各个所述端口速度占所述基准速度的比例,获取按照基准速度每个所述物理端口可划分的虚拟端口的个数;
命名单元,用于按照所述虚拟端口所属的物理端口的端口号为所述虚拟端口命名,在命名之后执行所述添加单元。
本发明实施例的第二方面的第三实现方式中,所述添加单元包括:
顺序添加模块,用于按照从小到大的端口号顺序,从所述链路聚合组中的转发表的最高位开始逐次添加,其中,当相同的端口号存在多个时,待所有所述相同的端口号加入结束后,选取下一端口号开始添加;
循环添加模块,用于当所有端口号添加完毕后,所述转发表中仍存在空闲端口位置时,重新从最小的端口号开始加入所述转发表,直至所述空闲端口位置填满。
本发明实施例的第三方面提供了一种链路聚合系统,其特征在于,包括:
至少两个电子设备,连接于两个所述电子设备之间的链路聚合组,所述链路聚合组内包括上述本发明实施例的第二方面提供的物理端口的均衡负载分担装置。
本发明实施例的第三方面的第一实现方式中,所述电子设备包括:交换机。
经由上述的技术方案可知,与现有技术相比,本发明实施例公开了一种物理端口的均衡负载分担方法、装置和链路聚合系统。本发明实施例通过第一次哈希计算在链路聚合组中的转发表中影响负载分担的物理端口的位置,确定位于其他位置上的物理端口之间的负载分担相同,然后再通过第二次哈希计算确定用于转发数据的物理端口的具体位置和范围,保证在进行数据转发的过程中,在转发表中确定的物理端口的范围内选择物理端口用于转发数据,从而确保在数据转发过程中加入链路聚合组中的各个物理端口流量的负载分担均衡,实现数据转发均衡,充分利用物理端口的带宽的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种物理端口的均衡负载分担方法的流程图;
图2为本发明实施例公开的另一种物理端口的均衡负载分担方法的流程图;
图3为本发明实施例公开的一种物理端口的均衡负载分担装置的结构示意图;
图4为本发明实施例公开的另一种物理端口的均衡负载分担装置的结构示意图;
图5为本发明实施例公开的一种存储设备的结构示意图;
图6为本发明实施例公开的一种链路聚合组系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由背景技术可知,在现有技术中由于端口分布不均,在链路聚合组中的转发表支持的预设物理端口转发个数和加入的个数为非整除关系时,在进行数据转发的过程中,有些物理端口可能会用到两次或者多次,从而使得在数据转发的过程中各物理端口流量的负载分担不均,进而导致数据转发不均,出现不能充分利用物理端口的带宽的问题。
因此,本发明实施例通过对加入链路聚合组内的物理端口先按照端口号进行顺序的添加到链路聚合组中的转发表,然后利用第一次哈希计算确定在链路聚合组中的转发表中影响负责分担的物理端口的位置,将该物理端口排除在用于转发数据的物理端口的范围内,即确定剩余的其他位置上的物理端口之间的负载分担相同,然后再通过第二次哈希计算确定用于转发数据的物理端口的具体位置和范围。保证在后续进行数据转发的过程中,在负载分担平均的物理端口的范围内选择相应的物理端口用于转发数据,从而确保在数据转发的过程中加入链路聚合组中的各个物理端口流量的负载分担均衡,实现数据转发均衡,充分利用物理端口的带宽的目的。具体过程通过本发明以下实施例进行详细的说明。
实施例一
如图1所示,为本发明实施例一公开的一种物理端口的均衡负载分担方法的流程图,主要包括:
步骤S101,从最高位至最低位逐次将加入链路聚合组内的物理端口对应的端口号添加至所述链路聚合组中的转发表;
在步骤S101中,在使用链路聚合组时,会将物理端口加入链路聚合组中,在将物理端口加入链路聚合组的过程中,为保证后续进行数据转发时的选路,在链路聚合组中的转发表中添加与物理端口对应的端口号。例如,共有3路物理端口添加至链路聚合组中,其端口号分别为端口1、端口2和端口3。则按照从最高位至最低位逐次将端口1、端口2和端口3添加至该转发表中。实际上该转发表也体现了加入链路聚合组中的物理端口与端口号的对应关系,通过选定的端口号可以找到对应的物理端口;
需要说明的是,当该链路聚合组能够支持的转发数据的预设物理端口的个数比加入的物理端口数多时,则循环将加入链路聚合组中的物理端口的端口号添加至该链路聚合组中的转发表中。
步骤S102,在所述加入个数与所述转发表支持的预设物理端口转发个数N为非整除关系的情况下,当一端物理端口请求进行数据转发时,依据所述预设物理端口转发个数N从所述转发表的最低位向高位起选择n位进行第一次哈希计算获取扩展哈希值key1;
在步骤S102中,n为所述转发个数N与加入链路聚合组内的物理端口对应的端口号的个数进行整除后获得的余数,N-n作为转发个数,N和n为正整数。
若在执行步骤S101的过程中加入链路聚合组中的物理端口的加入个数与转发表支持的预设物理端口的转发个数N不同,且为非整除关系的情况下,此时当一端物理端口请求进行数据转发时,则执行步骤S102以便于找到转发数据过程中影响负载均衡的物理端口。该原理为:影响负载均衡的物理端口的个数为转发表中预设物理端口转发个数与加入链路聚合组内的物理端口对应的端口号的个数进行整除后的余数,以便于在选择用于转发数据的物理端口时各个物理端口具有相同的机会,使其各自之间承载负载负担的机会也相同。这里的个数是指各个编号的个数之和,而非添加到转发表中的端口号的总和。
因此基于上述关系,n为影响负载均衡的物理端口的个数;n的取值为转发个数N与加入链路聚合组内的物理端口对应的端口号的个数进行整除后获得的余数。
通过上述计算出n的个数,按照优先级,从所述转发表的最低位向高位起开始选择n位,并选择该n位物理端口作为第一次哈希计算的物理端口的范围,计算获取扩展哈希值key1,同时,将N-n作为可以用作转发数据的物理端口的转发个数。需要说明的说,扩展哈希值key1越大,进行数据转发时物理端口的负载分担越均衡,数据转发越均匀。
简单来说,若链路聚合组中支持的预设物理端口转发个数N的取值为8,此时,加入链路聚合组的物理端口共3个,所对应的端口号为端口1,端口2和端口3。此时,加入链路聚合组的物理端口的个数与预设物理端口的转发个数为非整除关系,加入该端口号后的转发表从最高位至最低位的排列顺序为“1、2、3、1、2、3、1、2”,利用预设物理端口转发个数N与加入链路聚合组的物理端口对应的端口号“1、2、3”的个数进行整除之后,计算后获得余数为2,那么n的取值则为2,因此在执行步骤S102的过程中,从转发表中的最低位向高位起选择2位,即“1、2”进行第一次哈希计算获取扩展哈希值key1。剩余的“1、2、3、1、2、3”6位(N-n=6)则作为后续转发数据过程中选择物理端口的范围。
步骤S103,依据所述扩展哈希值key1和请求进行数据转发的物理端口上报的报文五元组进行第二次哈希计算,获取哈希值key2;
在步骤S103中,依据执行步骤S102获取到的扩展哈希值key1,以及预设物理端口转发个数N与加入链路聚合组内的物理端口对应的端口号的个数进行整除后得到的余数n,以及请求进行数据转发的物理端口上报的报文五元组进行第二次哈希计算,获取哈希值key2。
该key2=(key1)mod(N-n);其中,mod函数用于进行取模(取余)运算,(N-n)为进行第二次哈希计算的数值范围,在本发明实施例中则指可以进行第二次哈希计算的转发表上的物理端口的位置范围。
步骤S104,根据所述哈希值key2确定所述转发表中用于转发数据的物理端口的位置。
在步骤S104中,通过步骤S103获得的哈希值key2能够确定所述转发表中用于转发数据的物理端口的端口号,然后再依据物理端口与端口号之间的对应关系,确定转发数据的物理端口具体是哪一个,即确定转发数据的物理端口的位置,然后选择确定位置的物理端口与请求进行数据转发的物理端口之间的链路用于转发数据。
本发明实施例通过上述过程,在所述加入个数与所述转发表支持的预设物理端口转发个数N为非整除关系的情况下,当一端物理端口请求进行数据转发时,首先利用第一次哈希计算找到转发表中影响负载分担的物理端口的位置或位置范围,将位于该位置或该位置范围内的物理端口排除在用于转发数据的物理端口之外,从而确定剩余的其他位置上的物理端口之间的负载分担相同,然后再通过第二次哈希计算确定用于转发数据的物理端口的具体位置和范围。保证在后续进行数据转发的过程中,在负载分担平均的物理端口的范围内选择相应的物理端口用于转发数据,从而确保在数据转发的过程中加入链路聚合组中的各个物理端口流量的负载分担均衡,实现数据转发均衡,充分利用物理端口的带宽的目的。
实施例二
基于上述本发明实施例一公开的物理端口的均衡负载分担方法,本发明实施例二进一步公开了一种物理端口的均衡负责分担方法,本发明实施例二所公开的方法的流程如图2所示,主要包括如下步骤:
步骤S201,获取加入所述链路聚合组中的各个所述物理端口的端口速度;
执行步骤S201对加入链路聚合组中的各个所述物理端口的端口速度进行获取,确定各个端口速度的端口速度。该端口速度代表物理端口的能力,是物理端口支持最大的速度,与物理端口的最大带宽等同。
由于,在现有技术中通常加入同一个链路聚合组内的物理端口的端口速度都是相同的,但是仍然存在人为的,强制将具有不同端口速度的物理端口加入到同一个链路聚合组内。若存在不同端口速度的物理端口加入同一个链路聚合组内,在选择物理端口进行数据转发的过程中,除了由于加入链路聚合组中的物理端口的个数与链路聚合组中转发表支持的预设物理端口转发个数非整除关系的情况下,会导致物理端口流量负载分担不均,若流量分担之后选中低速的物理端口,可能会超过所选择的物理端口自身的带宽,从而导致丢包,影响网络中的数据转发。
因此,在本发明实施例二中对物理端口的端口速度进行获取和确定,从而在进行转发数据的均衡负载分担的过程中,能够使各个物理端口做到更加全面的负载分担,确保即便是人为的,强制的将具有不同端口速度的物理端口加入到同一个链路聚合组内时,通过本发明实施例二公开的方法能够确保各个物理端口之间的负载负担处于均衡的状态。
步骤S202,判断各个所述端口速度是否相同,若是,则执行步骤S205,若否,则在执行步骤S203之后执行步骤S205;
步骤S203,获取最小的端口速度为基准速度,计算各个所述端口速度占所述基准速度的比例,获取按照基准速度每个所述物理端口可划分的虚拟端口的个数;
步骤S204,按照所述虚拟端口所属的物理端口的端口号为所述虚拟端口命名;
在步骤S202中,判断执行步骤S201中获取到的物理端口的端口速度是否相同的,若是,则执行步骤S205,也就是说物理端口的端口速度是一致的,只要考虑加入链路聚合组中的物理端口的个数与链路聚合组中转发表支持的预设物理端口转发个数非整除关系的情况下的负载分担即可。
若否,则执行步骤S203和步骤S204。在执行步骤S202获知加入同一链路聚合组中的物理端口的端口存在不相同的情况,此时执行步骤S203,获取最小的端口速度为基准速度,然后利用该基准速度进行计算其他端口速度占基准速度的比例,并按照基准速度划分速度物理端口,获取划分后的物理端口的虚拟端口的个数。其中,划分后的该物理端口中的每个虚拟端口的端口速度都是该基准速度。
在确定各个物理端口的虚拟端口的个数后,执行步骤S204,对各个虚拟端口进行命名,给每个虚拟端口赋予的端口号为该虚拟端口所属的物理端口的端口号。也就是说,经过上述按照基准速度划分物理端口后,可将端口速度与基准速度不同的物理端口划分为多个端口速度为基准速度的虚拟端口。需要说明的是,该划分并非对该物理端口的硬件物理划分。
例如,共需要加入3个物理端口,其端口速度分别为4G,1G和2G所对应的端口号为端口1,端口2和端口3。按照上述步骤S202至步骤S204的执行过程,基准速度为1G,4G的物理端口将被划分为4个虚拟端口,这4个虚拟端口对应的端口号为1;2G的物理端口将被划分为2个虚拟端口,这2个虚拟端口对应的端口号为3。
步骤S205,从最高位至最低位逐次将加入链路聚合组内的物理端口对应的端口号添加至所述链路聚合组中的转发表;
在步骤S205,按照上述步骤S202的判断,基于上述举例,若加入同一链路聚合组的3个物理端口的速度相同,则按照从高位至最低位的方式将3个物理端口的端口号添加至所述链路聚合组中的转发表。若该转发表所支持的预设物理端口转发个数为8个。则转发表从最高位至最低位的排列顺序为“1、2、3、1、2、3、1、2”。
若加入同一链路聚合组的3个物理端口的端口速度不同,基于上述举例,在将3个物理端口按照基准速度划分虚拟端口,并按照所属的物理端口进行命名后,再执行步骤S205,按照从高位至最低位的方式将3个物理端口的端口号添加至所述链路聚合组中的转发表,则转发表从最高位至最低位的排列顺序为“1、1、1、1、2、3、3、1”。
步骤S206,在所述加入个数与所述转发表支持的预设物理端口转发个数N为非整除关系的情况下,当一端物理端口请求进行数据转发时,依据所述预设物理端口转发个数N从所述转发表的最低位向高位起选择n位进行第一次哈希计算获取扩展哈希值key1;
该步骤S206同上述本发明实施例一中公开的步骤S102的执行原理以及过程一致,若在执行步骤S201的过程中加入链路聚合组中的物理端口的加入个数与转发表支持的预设物理端口的转发个数N不同,且为非整除关系的情况下。
此时,当一端物理端口请求进行数据转发时,在执行步骤S202判断加入的物理端口的端口速度的情况下,若相同,则直接执行步骤S205;若不同,则再进行上述步骤S203和步骤S204之后再执行步骤S205。将上述加入链路聚合组中的物理端口的端口号添加至链路聚合组的转发表中。
执行步骤206找到数据转发过程中影响负载均衡的物理端口。该原理为除影响负载均衡的物理端口之外,剩余的物理端口的个数为2的整数倍。因此基于上述关系,n为影响负载均衡的物理端口的个数;n的取值为转发个数N与加入链路聚合组内的物理端口对应的端口号的个数进行整除后获得的余数。
当加入的物理端口的端口速度一致时,其具体执行过程可通过本发明实施例一中步骤S102下的举例进行说明,这里着重对端口速度不一致的情况进行举例说明。
基于上述步骤S205内的举例,在执行步骤S206时,转发表从最高位至最低位中端口号的排列顺序为“1、1、1、1、2、3、3、1”。利用预设物理端口转发个数N与加入链路聚合组的物理端口对应的端口号“1、2、3”的个数(1、2、3的个数为7个)进行整除之后,计算后获得余数为1,那么n的取值则为1,因此在执行步骤S206的过程中,从转发表中的最低位向高位起选择1位,即“1”进行第一次哈希计算获取扩展哈希值key1。剩余的“1、1、1、1、2、3,3”的7位则作为后续转发数据过程中选择物理端口的范围。
步骤S207,依据所述扩展哈希值key1和请求进行数据转发的物理端口上报的报文五元组进行第二次哈希计算,获取哈希值key2;
步骤S208,根据所述哈希值key2确定所述转发表中用于转发数据的物理端口的位置。
上述步骤S207与本发明实施例一中公开的步骤S103的原理以及执行过程相同,具体可参见本发明实施例一中的相关记载。步骤S208与本发明实施例一中公开的步骤S104的原理以及执行过程相同,具体可参见本发明实施例一中的相关记载。
在本发明实施例二中通过对加入链路聚合组中的物理端口的端口速度的获取,在物理端口的端口速度不同的情况下,按照选定的作为基准速度的最小速度对具有不同端口速度的物理端口进行划分,使划分的所属物理端口的虚拟端口的端口速度与基准速度一致,并按照所述物理端口的端口号对虚拟端口进行命名,然后依照端口号添加至转发表中。在进行数据转发的过程中,同样采用两次哈希计算,通过第一次哈希计算将影响负载分担的物理端口排除在用于转发数据的物理端口之外,再通过第二次哈希计算确定用于转发数据的物理端口的具体位置和范围,保证在后续进行数据转发的过程中,加入到链路聚合组内的物理端口之间的流量负载分担均衡,能够实现数据转发均衡,充分利用物理端口的带宽的目的。
实施例三
基于上述本发明实施例一和本发明实施例二公开的一种物理端口的均衡负载分担方法,如图1示出的步骤S101和图2示出的步骤S205从最高位至最低位逐次将加入链路聚合组内的物理端口对应的端口号添加至所述链路聚合组中的转发表中的过程为:
首先,按照从小到大的端口号顺序,从所述链路聚合组中的转发表的最高位开始逐次添加。
例如,若链路聚合组中支持的预设物理端口转发个数为8,此时,加入链路聚合组的物理端口共3个,所对应的端口号为端口1,端口2和端口3。在添加的过程中,先添加端口1,再添加端口2,最后再添加3。
基于本发明实施例二中提到的若物理端口按照基准速度划分为多个虚拟端口,其命名仍以所属物理端口进行命名,如本发明实施例二给出的示例,4G的物理端口被划分为4个虚拟端口,则在添加的过程中共有4个端口1需要添加,2G的物理端口被划分为2个虚拟端口,则在添加的过程中共有2个端口3需要添加。
因此,在添加的过程中,当相同的端口号存在多个时,待所有所述相同的端口号添加结束后,选取下一端口号开始添加。基于上述示例进行说明,在将端口号添加到转发表中时,逐次将4个端口号1从最高位开始添加完毕后,再添加端口2,在端口2添加完毕后,再添加端口3,依次类推。
当所有端口号添加完毕后,所述转发表中仍存在空闲端口位置时,重新从最小的端口号开始加入所述转发表,直至所述空闲端口位置填满。
对于上述举例链路聚合组中支持的预设物理端口转发个数为8,此时转发表中共有8个端口位置需要添加,在加入链路聚合组的物理端口共3个的情况下,若其添加的物理端口的端口速度是一致的,则在向转发表添加完1、2、3之后,转发表中还有(8-3=5)5个空闲端口位置,此时,重新从最小的端口号1开始新一轮的添加,直至转发表中不存在空闲端口位置。若其添加的物理端口的端口速度不一致,则在添加完所有的端口号之后,转发表中仍存在空闲端口位置,则重新从最小的端口号1开始新一轮的添加,直至转发表中不存在空闲端口位置。
基于上述本发明实施例一和本发明实施例二公开的一种物理端口的均衡负载分担方法,如图1示出的步骤S102和图2示出的步骤S206在所述加入个数与所述转发表支持的预设物理端口转发个数N为非整除关系的情况下,当一端物理端口请求进行数据转发时,依据所述预设物理端口转发个数N从所述转发表的最低位向高位起选择n位进行第一次哈希计算获取扩展哈希值key1的具体过程如下:
首先,依据所述预设物理端口转发个数N与添加至所述转发表中的端口号的个数进行整除,获得余数n作为选择第一物理端口范围中包含物理端口的个数;
如本发明实施例一和本发明实施例二中公开记载的内容,影响负载均衡的物理端口的个数为转发表中预设物理端口转发个数与加入链路聚合组内的物理端口对应的端口号的个数进行整除后的余数。
其次,从所述转发表的最低位向最高位起选择所述n位作为第一次哈希计算的第一物理端口范围;
通过获取到的余数n从所述转发表的最低位向最高位起选择n位作为第一次哈希计算的第一物理端口范围,这里的第一物理端口范围中的第一是用于与后续出现的物理端口范围进行区别。该第一物理端口范围是用于进行第一次哈希计算的范围。
最后,在所述第一物理端口范围内,依据请求进行数据转发的物理端口上报的报文特征五元组源IP(Internet Protocol,网络之间互连的协议),目的IP,源MAC(Media Access Control,介质访问控制),目的MAC和所述请求进行数据转发的物理端口的数值进行异或计算获取扩展哈希值key1。
在经过上述过程执行第一次哈希计算后获取到的扩展哈希值key1,若计算出的扩展哈希值key1占用一个字节其范围是0~255,如果是占用两个字节其范围则是0~65535。需要说明的是,扩展哈希值key1越大数据的分布越均匀。通常情况下,一般情况是两个字节的范围。
本发明实施例三通过对怎样添加端口号至转发表,以及对第一次哈希计算的详细说明,结合本发明实施例一和本发明实施例二,针对同速或不同速的加入同一链路聚合组内的物理端口,按照端口号将其对应添加至链路聚合组内的转发表,然后通过第一次哈希计算在链路聚合组中的转发表中影响负载分担的物理端口的位置,确定位于其他位置上的物理端口之间的负载分担相同,然后再通过第二次哈希计算确定用于转发数据的物理端口的具体位置和范围,保证在进行数据转发的过程中,在转发表中确定的物理端口的范围内选择用于转发数据的物理端口,从而确保在数据转发过程中加入链路聚合组中的各个物理端口流量的负载分担均衡,实现数据转发均衡,充分利用物理端口的带宽的目的。
实施例四
基于上述本发明实施例一至本发明实施例三公开的一种物理端口均衡负载分担方法,本发明实施例还对应公开了一种物理端口均衡负载分担装置,如图3所示,其结构示意图,主要包括:添加单元101,第一次哈希计算单元102,第二次哈希计算单元103和转发单元104。
添加单元101,用于从最高位至最低位逐次将加入链路聚合组内的物理端口对应的端口号添加至所述链路聚合组中的转发表;
第一次哈希计算单元102,用于在所述加入个数与所述转发表支持的预设物理端口转发个数N为非整除关系的情况下,当一端物理端口请求进行数据转发时,依据所述预设物理端口转发个数N从所述转发表的最低位向高位起选择n位进行第一次哈希计算获取扩展哈希值key1;
其中,n为所述转发个数N与加入链路聚合组的物理端口的端口号的个数进行整除后获得的余数,N和n为正整数;
第二次哈希计算单元103,用于依据所述扩展哈希值key1和请求进行数据转发的物理端口上报的报文五元组进行第二次哈希计算,获取哈希值key2;
转发单元104,用于根据所述哈希值key2确定所述转发表中用于转发数据的物理端口的位置。
其中,所述添加单元101中包括:
顺序添加模块,用于按照从小到大的端口号顺序,从所述链路聚合组中的转发表的最高位开始逐次添加,其中,当相同的端口号存在多个时,待所有所述相同的端口号加入结束后,选取下一端口号开始添加;
循环添加模块,用于当所有端口号添加完毕后,所述转发表中仍存在空闲端口位置时,重新从最小的端口号开始加入所述转发表,直至所述空闲端口位置填满。
转发单元104中包括:端口号确定模块,位置确定模块和转发模块。
端口号确定模块,用于由key2确定所述转发表中的用于转发数据的物理端口的端口号;
位置确定模块,用于依据物理端口与端口号的对应关系,确定转发数据的物理端口的位置;
转发模块,用于选择确定位置的物理端口用于转发数据。
基于本发明实施例二,本发明实施例四在附图3中示出的物理端口均衡负载分担装置基础上还增加了获取单元105,判断单元106,划分单元107和命名单元108,如图4所示:
获取单元105,用于获取加入所述链路聚合组内中的各个所述物理端口的端口速度;
判断单元106,用于判断各个所述端口速度是否相同,若是,则返回执行所述添加单元101,若否,则执行划分单元107;
划分单元107,用于获取最小的端口速度为基准速度,计算各个所述端口速度占所述基准速度的比例,获取按照基准速度每个所述物理端口可划分的虚拟端口的个数;
命名单元108,用于按照所述虚拟端口所属的物理端口的端口号为所述虚拟端口命名,在命名之后执行所述添加单元101。
上述各个单元和模块的具体执行过程与本发明实施例一至本发明实施例三中公开的内容一致,具体执行上述单元和模块的过程以及原理可对照本发明实施例一至本发明实施例三中相应的说明。其示例同样适用于该装置中,这里不再进行赘述。
基于上述本发明实施例四公开的物理端口的均衡负载分担装置,在实际应用中可以集成到包括存储介质的存储设备中。通过以上描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。因此本申请还提供了一种存储设备S,其结构如图5所示,该存储设备S主要包括存储器11和通过总线12与存储器11连接的处理器13。
该存储器11存储对加入链路聚合组内的物理端口进行处理以及在数据转发过程中对物理端口按照均衡负载分担的要求进行物理端口选择的程序。
该处理器13运行上述程序。上述程序可以包括程序代码,所述程序代码包括计算机操作指令。
处理器13可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器11可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
该对加入链路聚合组内的物理端口进行处理以及在数据转发过程中对物理端口按照均衡负载分担的要求进行选择的程序具体可以包括:
从最高位至最低位逐次将加入链路聚合组内的物理端口对应的端口号添加至所述链路聚合组中的转发表;在所述加入个数与所述转发表支持的预设物理端口转发个数N为非整除关系的情况下,当一端物理端口请求进行数据转发时,依据所述预设物理端口转发个数N从所述转发表的最低位向高位起选择n位进行第一次哈希计算获取扩展哈希值key1,其中,n为所述预设物理端口转发个数N与加入链路聚合组内的物理端口对应的端口号的个数进行整除后获得的余数,N和n为正整数;依据所述扩展哈希值key1和请求进行数据转发的物理端口上报的报文五元组进行第二次哈希计算,获取哈希值key2;根据所述哈希值key2确定所述转发表中用于转发数据的物理端口的位置。
通过上述本发明实施例公开的物理端口的均衡负载分担装置,以及存储设备针对同速或不同速的加入链路聚合组中的物理端口进行相应的处理,其实按照上述本发明实施例中记载的方式添加至链路聚合组的转发表中,然后通过第一次哈希计算在链路聚合组中的转发表中影响负载分担的物理端口的位置,确定位于其他位置上的物理端口之间的负载分担相同,然后再通过第二次哈希计算确定用于转发数据的物理端口的具体位置和范围,保证在进行数据转发的过程中,在转发表中确定的物理端口的范围内选择用于转发数据的物理端口,从而确保在数据转发过程中加入链路聚合组中的各个物理端口流量的负载分担均衡,实现数据转发均衡,充分利用物理端口的带宽的目的。
实施例五
基于上述本发明实施例公开的物理端口的均衡负载分担方法和装置,本发明实施例还对应公开了一种链路聚合系统,如图6所示,主要包括:至少两个电子设备1,以及连接于两个电子设备1之间的链路聚合组2。该链路聚合组2内包括上述本发明实施例公开的物理端口的均衡负载分担装置。
在实际应用中,该电子设备1一般为交换机。假设图6中的电子设备分别为交换机A和交换机B,交换机A和B分别连接计算机PC。该交换机A和B之间的一个链路聚合组2内最多支持16个物理端口同时进行数据转发,当前的交换机A和B中有3个活动的物理端口可以添加至该链路聚合组内。这3个物理端口分别是端口1号,速度10G;端口2号,速度1G;端口3号,速度1G。
基于上述本发明实施例公开的物理端口的均衡负载分担方法和装置中的记载,具体为:
首先,将3个物理端口添加至链路聚合组的转发表中。
由于3个物理端口的速度不同,则添加的原则是:按照最小速度作为基准速度,计算其他物理端口的端口速度占该基准速度的比例,并按照该比例决定其他物理端口加入链路聚合组的转发表的比例位置。基于上述举例,其链路聚合组的转发表中各个对应物理端口的端口号的分布如表2所示:
表2:
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
3 |
1 |
1 |
1 |
1 |
其次,进行第一次哈希计算获取扩展哈希值key。
由上述添加端口号的过程可知,转发表中支持数据转发的预设物理端口的个数为16,加入的端口号的个数为12,进行整除后获得的余数为4。也就是说从低位开始的4位为影响数据转发过程中负载均衡的物理端口,将其排除在选择数据转发的物理端口的范围之外。在所选择的从低位开始的4位物理端口(如表3)内进行第一次哈希计算,获取扩展哈希值key1。
表3:
最后,进行第二次哈希计算,确定转发表中进行数据转发的物理端口。
方法如下:
key2=(key1)mod(N-n);其中,mod函数用于进行取模(取余)运算,(N-n)为进行第二次哈希计算的数值范围(如表4),在本发明实施例中则指可以进行第二次哈希计算的转发表上的物理端口的位置范围。
表4:
根据上述计算获取到的哈希值key2确定所述转发表中用于转发数据的物理端口的端口号,然后再依据物理端口与端口号之间的对应关系,在表4中确定转发数据的物理端口具体是哪一个,即确定转发数据的物理端口的位置,然后选择确定位置的物理端口与请求进行数据转发的物理端口之间的链路进行数据转发。
综上所述:
本发明实施例公开的物理端口的负载分担方法、装置和链路聚合系统,针对同速或不同速的加入同一个链路聚合组内的物理端口,若是不同速时,将其转换成同一速度的个数添加至转发表中,不用多扩展转发表资源,避免资源消耗过大。然后在进行数据转发的过程中,同样采用两次哈希计算,通过第一次哈希计算将影响负载分担的物理端口排除在用于转发数据的物理端口之外,再通过第二次哈希计算确定用于转发数据的物理端口的具体位置和范围,保证在后续进行数据转发的过程中,让加入到链路聚合组内的每个物理端口都可以根据自身速度负载分担,从而实现数据转发均衡,充分利用物理端口的带宽的目的。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。