流量均衡方法及装置与流程

文档序号:22396995发布日期:2020-09-29 18:06阅读:263来源:国知局
流量均衡方法及装置与流程
本申请实施例涉及通信
技术领域
,尤其涉及一种流量均衡方法及装置。
背景技术
:以太网链路聚合(ethernettrunk,eth-trunk)机制用于将以太网设备的多个物理端口捆绑为一个逻辑端口来使用,该逻辑端口也称之为eth-trunk端口。绑定在一起的物理端口称为该逻辑端口的成员端口。以太网设备可以使用eth-trunk机制来提高网络带宽,实现负载分担与业务保护等需要。由于eth-trunk端口是一个逻辑端口,并不能承载真正的报文转发工作,因此,在转发报文时,发往该逻辑端口的流量被按照负载分担算法转发到该逻辑端口的某个物理端口上。基于eth-trunk机制,衍生出应用于eth-trunk级联系统的eth-trunk级联机制。该eth-trunk级联系统包括多级以太网设备,多个以太网设备相互级联,流量在第一级以太网设备上经过一次哈希(hash)计算,被均匀分担到该第一以太网设备的eth-trunk端口的各成员端口上,使得流量到达第二级的以太网设备。之后,第二级以太网设备上经过一次哈希计算,使得流量被分担到第三级以太网设备上,以此类推。以太网设备在执行hash计算的过程中,根据报文的几个特定特征进行哈希计算,从而确定出流量应该从该逻辑端口的哪个物理端口发出,其中,特定的特征也称之为哈希因子。由于各级以太网设备使用的hash算法相同,各级的以太网设备的计算结果比较相近,即各级以太网设备根据哈希因子确定出的物理端口是固定的,导致到达每一级以太网设备的流量,只能从该以太网设备的逻辑端口的几个特定的物理端口发出,造成某些物理端口的流量很大,而其他物理端口的流量很小。为避免eth-trunk端口的各成员端口的流量分担不均匀,传统的处理方式是手动修改参与哈希计算的哈希因子,根据新的哈希因子调整发往各物理端口的流量。然而,即使使用新的哈希因子,计算出的物理端口也是固定的,同样无法避免eth-trunk端口的各成员端口的流量分担不均匀的现象。同时,修改哈希因子的过程中,需要经过多次尝试修改后才可能得出合适的哈希因子,该调整过程容易导致业务异常。技术实现要素:本申请实施例提供一种流量均衡方法及装置,通过自动调整eth-trunk端口的各成员端口的流量大小,达到使eth-trunk端口的各成员端口均匀分担流量的目的。第一方面,本申请实施例提供的一种流量均衡方法,该方法可以应用于以太网设备、也可以应用于以太网设备中的芯片,下面以应用于以太网设备为例对该方法进行描述,该方法包括:以太网设备向控制器发送查询报文,该查询报文携带以太网设备的逻辑端口的多个物理端口中每个物理端口的负载信息;以太网设备接收控制器发送的应答报文,应答报文携带每个物理端口的权重因子,每个物理端口的权重因子与物理端口可分担逻辑端口的流量的大小正相关;在通过逻辑端口发送报文时,以太网设备根据每个物理端口的权重因子,调整发往每个物理端口的流量。采用该种方法,无需用户手动调整参与哈希计算的哈希因子,而是由以太网设备自动对各物理端口的流量进行调整,对当前传输的业务数据没有影响,不会引发业务异常。一种可行的设计中,以太网设备向控制器发送查询报文,包括:以太网设备判断多个物理端口中,是否存在至少一个物理端口的流量超出预设阈值;若存在至少一个物理端口的流量超出预设阈值,则以太网设备向控制器发送查询报文。采用该种方法,以太网设备主动向控制器上报逻辑端口的各物理端口的负载信息,使得控制器根据负载信息确定权重因子,实现不修改哈希因子的前提下调整各物理端口的流量的目的。一种可行的设计中,以太网设备向控制器发送查询报文,包括:以太网设备多次向该控制器发送查询报文。采用这种方法,以太网设备定期或不定期向控制器上报逻辑端口的各物理端口的负载信息,使得控制器根据负载信息确定权重因子,实现不修改哈希因子的前提下调整各物理端口的流量的目的。一种可行的设计中,以太网设备上除了配置预设的哈希因子外,还配置最小权重因子,在需要通过逻辑端口2发送报文时,以太网设备根据预设的哈希因子,确定一个物理端口,然后,以太网设备确定该物理端口的权重因子是否大于最小权重因子,若该物理端口的权重因子大于最小权重因子,则通过该物理端口转发报文;若该物理端口的权重因子小于或等于最小权重因子,则通过其他物理端口转发报文。采用该种方法,在通过逻辑端口发送报文时,以太网设备根据预设的哈希因子确定用于转发该报文的物理端口,然后根据权重因子确定该报文是否可以通过根据哈希因子确定出的物理端口转发,无需修改哈希因子即可实现对发往各物理端口的流量进行调整,调整过程简单,不会对业务产生影响一种可行的设计中,以太网设备上除了配置预设的哈希因子外,还配置权重因子差值阈值,在需要通过逻辑端口2发送报文时,以太网设备根据预设的哈希因子,确定一个物理端口,然后,以太网设备确定该物理端口的权重因子与最大权重因子的差值是否大于或等于权重因子差值阈值,若差值大于或等于权重因子差值阈值,则通过其他物理端口发送报文;若差值小于权重因子差值阈值,则通过哈希算法计算出的物理端口发送报文。采用该种方法,在通过逻辑端口发送报文时,以太网设备根据预设的哈希因子确定用于转发该报文的物理端口,然后根据权重因子确定该报文是否可以通过根据哈希因子确定出的物理端口转发,无需修改哈希因子即可实现对发往各物理端口的流量进行调整,调整过程简单,不会对业务产生影响一种可行的设计中,一个物理端口的负载信息用于指示该物理端口已消耗带宽占该物理端口总带宽的百分比,以太网设备根据每个物理端口的权重因子,调整发往每个物理端口的流量,包括:以太网设备判断逻辑端口的每个物理端口的负载信息指示的百分比是否发生变化;若每个物理端口的负载信息指示的百分比的变化量未超出预设阈值,则以太网设备根据每个物理端口的权重因子,调整发往每个物理端口的流量。采用该种方法,以太网设备根据权重因子调整发往各物理端口的流量之前,判断各物理端口中每个物理端口的负载信息指示的百分比的变化量是否超出预设阈值,只有在所有物理端口负载信息指示的百分比的变化量未超出预设阈值的情况下,才根据权重因子调整发往各物理端口的流量,避免物理端口已消耗带宽占该物理端口总带宽的百分比发生较大变化时,权重因子不适用的现象。一种可行的设计中,上述的方法还包括:若多个物理端口中一个或多个物理端口的负载信息指示的百分比的变化量超出预设阈值,则以太网设备重新采集每个物理端口的负载信息;以太网设备向控制器发送携带重新采集到的负载信息的查询报文。采用该种方法,若各物理端口中全部或部分物理端口的负载信息指示的百分比的变化量是否超出预设阈值,则以太网设备重新采集各物理端口的负载信息并发送给控制器以重新确定权重因子,避免物理端口已消耗带宽占该物理端口总带宽的百分比发生较大变化时,权重因子不适用的现象。一种可行的设计中,以太网设备根据每个物理端口的权重因子,调整发往每个物理端口的流量,包括:以太网设备根据预设的哈希因子和每个物理端口的权重因子,调整发往每个物理端口的流量。采用该种方法,在通过逻辑端口发送报文时,以太网设备根据预设的哈希因子确定用于转发该报文的物理端口,然后根据权重因子确定该报文是否可以通过根据哈希因子确定出的物理端口转发,无需修改哈希因子即可实现对发往各物理端口的流量进行调整,调整过程简单,不会对业务产生影响。第二方面,本发明实施例提供一种流量均衡方法,包括:控制器接收以太网设备发送的查询报文,该查询报文携带以太网设备的逻辑端口的多个物理端口中每个物理端口的负载信息;控制器根据每个物理端口的负载信息,确定每个物理端口的权重因子,每个物理端口的权重因子与物理端口可分担逻辑端口的流量的大小正相关;控制器向以太网设备发送应答报文,应答报文携带每个物理端口的权重因子。采用该种方法,无需用户手动调整参与哈希计算的哈希因子,而是由以太网设备自动对各物理端口的流量进行调整,对当前传输的业务数据没有影响,不会引发业务异常。一种可行的设计中,每个物理端口的负载信息用于指示物理端口已消耗带宽占物理端口总带宽的百分比,控制器根据每个物理端口的负载信息,确定每个物理端口的权重因子,包括:控制器根据每个物理端口的百分比,确定该多个物理端口的百分比的最小公倍数;控制器根据该最小公倍数,确定每个物理端口的权重因子,一个物理端口的权重因子=公倍数/所述物理端口的百分比。采用该种方法,控制器可以确定出权重因子。第三方面,本申请实施例提供一种流量均衡装置,该装置可以是以太网设备,也可以是以太网设备内的芯片。该装置可以包括处理单元、发送单元和接收单元。当该装置是以太网设备时,该处理单元可以是处理器,发送单元可以是发送器,接收单元可以是接收器;该以太网设备还可以包括存储单元,该存储单元可以是存储器;该存储单元用于存储指令,该处理单元执行该存储单元所存储的指令,以使该以太网设备实现上述第一方面或第一方面的各种可能的实现方式中的功能。当该装置是以太网设备内的芯片时,该处理单元可以是处理器,该收发单元可以是输入/输出接口、管脚或电路等;该处理单元执行存储单元所存储的指令,以使该以太网设备实现上述第一方面或第一方面的各种可能的实现方式中的功能,该存储单元可以是该芯片内的存储单元(例如,寄存器、缓存等),也可以是该以太网设备内的位于该芯片外部的存储单元(例如,只读存储器、随机存取存储器等)。第四方面,本申请实施例提供一种流量均衡装置,该装置可以是控制器,也可以是控制器内的芯片。该装置可以包括处理单元、发送单元和接收单元。当该装置是控制器时,该处理单元可以是处理器,发送单元可以是发送器,接收单元可以是接收器;该控制器还可以包括存储单元,该存储单元可以是存储器;该存储单元用于存储指令,该处理单元执行该存储单元所存储的指令,以使该控制器实现上述第二方面或第二方面的各种可能的实现方式中的功能。当该装置是控制器内的芯片时,该处理单元可以是处理器,该收发单元可以是输入/输出接口、管脚或电路等;该处理单元执行存储单元所存储的指令,以使该控制器实现上述第二方面或第二方面的各种可能的实现方式中的功能,该存储单元可以是该芯片内的存储单元(例如,寄存器、缓存等),也可以是该控制器内的位于该芯片外部的存储单元(例如,只读存储器、随机存取存储器等)。第五方面,本申请实施例提供一种包含指令的计算机程序产品,当其在处理器上运行时,使得处理器执行上述第一方面或第一方面的各种可能的实现方式中的方法。第六方面,本申请实施例提供一种包含指令的计算机程序产品,当其在处理器上运行时,使得处理器机执行上述第二方面或第二方面的各种可能的实现方式中的方法。第七方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在处理器上运行时,使得处理器执行上述第一方面或第一方面的各种可能的实现方式中的方法。第八方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在处理器上运行时,使得处理器执行上述第二方面或第二方面的各种可能的实现方式中的方法。第九方面,本申请实施例提供一种流量均衡系统,该系统包括第一流量均衡装置和第二流量均衡装置,该第一流量均衡装置为如上第三方面的流量均衡装置,该第二流量均衡装置为如上第四方面的流量均衡装置。本申请实施例提供的流量均衡方法及装置,以太网设备向控制器发送携带该以太网设备的逻辑端口的各物理端口的负载信息的查询报文,控制器接收该查询报文,并根据各物理端口的负载信息,确定逻辑端口的每个物理端口的权重因子,每个物理端口的权重因子与该物理端口可分担逻辑端口的流量的大小正相关,之后,控制器向以太网设备发送携带各物理端口的权重因子的应答报文,使得以太网设备根据各物理端口的权重因子,调整发往各物理端口的流量。该过程中,无需用户手动调整参与哈希计算的哈希因子,而是由以太网设备自动对各物理端口的流量进行调整,对当前传输的业务数据没有影响,不会引发业务异常。附图说明图1是eth-trunk级联转发示意图;图2为本申请实施例提供的一种流量均衡方法所适用的运行环境示意图;图3是本申请实施例提供的一种流量均衡方法的流程图;图4是本申请实施例提供的一种流量均衡方法中udp报文的结构示意图;图5是本申请实施例提供的一种控制器的结构示意图;图6为本申请实施例提供的一种流量均衡装置的结构示意图;图7为本申请实施例提供的另一种流量均衡装置的结构示意图;图8为本申请实施例提供的又一种流量均衡装置的结构示意图。具体实施方式基于eth-trunk机制,衍生出应用于eth-trunk级联系统的eth-trunk级联机制。示例性的,可参见图1,图1是eth-trunk级联转发示意图。请参照图1,该eth-trunk级联场景中,以太网设备具体为交换机(switch),交换机1~交换机5为同类型设备,交换机1为第一级交换机,交换机2与交换机3为第二级交换机,且交换机2与交换机3组成堆叠,交换机4和交换机5为第三级交换机,交换机1、交换机2、交换机3上分别预先存储哈希算法和该哈希算法采用的哈希因子。交换机1通过逻辑端口1连接交换机2和交换机3组成的堆叠设备,交换机2通过逻辑端口2连接交换机4,交换机3通过逻辑端口连接交换机5。逻辑端口1包括4个物理端口,分别为物理端口1、2、3、4;逻辑端口2和逻辑端口3各自包含3个物理端口。当需要通过逻辑端口1转发流量时,交换机1根据哈希因子和哈希算法,对流量进行哈希计算,将流量分配到逻辑端口1的物理端口1(记为子流量1)、物理端口2(记为子流量2)、物理端口3(记为子流量3)或物理端口4(记为子流量4)。之后,子流量1和子流量2到达交换机2,子流量3和子流量4到达交换机3。交换机2根据哈希因子和哈希算法,对子流量1和子流量2进行哈希计算,将子流量1和子流量2分配到逻辑端口2的各物理端口上;同理,交换机3根据哈希因子和哈希算法,对子流量3和子流量4进行哈希计算,将子流量3和子流量4分配到逻辑端口3的某个物理端口上。其中,哈希因子指参与哈希运算的参数,具体可以是接收的报文的一个或多个特征(统称为报文特征)。例如,哈希因子可以是源介质访问控制(mediaaccesscontrol,mac)地址,目的mac地址、源因特网协议(internetprotocol,ip)地址、目的ip地址、源端口号、目的端口号等。流量是由报文组成的,根据哈希因子和哈希算法,对流量进行哈希计算时,交换机从接收到的报文中提取出该哈希因子对应的值(即报文特征),根据哈希算法对该报文特征进行哈希计算,确定出该报文应该从逻辑端口的哪个物理端口发出。在一个场景中,交换机1基于哈希算法,将到达逻辑端口1的报文分配到物理端口1、物理端口2、物理端口3或物理端口4,各物理端口已消耗带宽与该物理端口的总带宽的比值均为60%。其中,对于一个物理端口,该物理端口的已消耗带宽与该物理端口的总带宽的比值也称之为流量带宽。由于交换机2、交换机3与交换机1使用的哈希算法相同,所以交换机2、交换机3与交换机1的哈希计算结果比较相近,导致逻辑端口2和逻辑端口3出现流量分配不均匀的现象。例如,逻辑端口2的物理端口1、物理端口2、物理端口3各自的流量带宽依次为20%、40%、95%。如果到达交换机2的流量比较大,则逻辑端口2的物理端口3容易出现超带宽丢包现象。为避免出现流量分配不均匀的现象,可以手动修改参与哈希计算的哈希因子或修改哈希算法。例如,修改用于哈希运算的报文特征;再如,对哈希计算结果进行偏移等。然而,即使使用新的哈希因子,计算出的物理端口也是固定的,同样无法避免多级eth-trunk端口的场景下,除第一级eth-trunk端口外的其他eth-trunk端口的各成员端口的流量分担不均匀的现象。同时,修改哈希因子的过程中,需要经过多次尝试修改后才可能得出合适的哈希因子,该调整过程容易导致业务异常。有鉴于此,本申请实施例提供一种流量均衡方法及装置,通过自动调整eth-trunk端口的各成员端口的流量大小,达到为eth-trunk端口的各成员端口均匀分担流量的目的。在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。图2为本申请实施例提供的一种流量均衡方法所适用的运行环境示意图。请参照图2,该运行环境包括控制器和多个交换机(图中仅示出了交换机1,交换机2和交换机3),控制器和每个交换机之间建立网络连接。其中,控制器也可以理解为采集器(collector)、服务器等;交换机可以是二层交换机或三层交换机,其支持eth-trunk机制。基于eth-trunk机制,交换机的多个物理端口被绑定为一个逻辑端口,交换机可以使用eth-trunk机制来提高网络带宽,实现负载分担与业务保护。图2中,每个交换机仅示出了一个逻辑端口,每个逻辑端口的物理端口数量为3个或4个。然而,实际应用中,一个以太网设备的逻辑端口数量非常庞大,例如为1000个或者更多,每个逻辑端口的物理端口的数量也非常庞大。举例来说,一个以太网设备上可以插入16个板卡,每个板卡可以支持至少48个物理端口,因此,一个以太设备上至少存在48×16=768个物理端口,若2个以太网设备形成堆叠,则堆叠上至少存在1500个物理端口,根据该1500个物理端口可以得到1000个逻辑端口。倘若通过以太网设备自身对各逻辑端口的流量进行均衡,则以太网设备处理数据量庞大,严重浪费以太网设备的计算资源和内存。因此,本申请实施例中,通过部署控制器,由控制器承担权重因子等处理,从而对整网中以太网设备的各逻辑端口的流量进行均衡。下面,基于图2所示架构,对本申请实施例所述的流量均衡方法进行详细说明。示例性的,可参见图3,图3是本申请实施例提供的一种流量均衡方法的流程图,该方法包括步骤101-104。在步骤101中,以太网设备向控制器发送查询报文,所述查询报文携带所述以太网设备的逻辑端口的多个物理端口中每个物理端口的负载信息。相应的,控制器接收该查询报文。示例性的,以太网设备上预先部署代理(agent)模块,用于采集以太网设备的逻辑端口的每个物理端口的负载信息并向控制器上报,控制器接收该查询报文。采集负载信息的过程中,agent模块对逻辑端口的每个物理端口进行流量统计,确定出逻辑端口的每个物理端口已消耗的带宽占该物理端口总带宽的百分比。例如,继续参照图2,逻辑端口2具有3个物理端口,该3个物理端口的最大带宽分别为200兆(m)、100m和50m。经agent模块统计发现:物理端口1当前已消耗带宽为40m,已消耗带宽占物理端口1的总带宽的20%;物理端口2当前已消耗带宽为40m,已消耗带宽占物理端口2的总带宽的40%;物理端口3当前已消耗带宽为47.5m,已消耗带宽占物理端口3的总带宽的95%。在步骤102中,所述控制器根据所述每个物理端口的负载信息,确定所述每个物理端口的权重因子,每个物理端口的权重因子与该物理端口可分担所述逻辑端口的流量的大小正相关。示例性的,对于一个逻辑端口,控制器根据该逻辑端口的每个物理端口的负载信息,确定每个物理端口的权重因子,每个物理端口的权重因子与该物理端口可分担所述逻辑端口的流量的大小正相关。也就是说,对于一个逻辑端口,该逻辑端口的各物理端口中,权重因子越大的物理端口,能够分担的流量越大,或者说,权重因子越大的物理端口,当前已消耗带宽占该物理端口的总带宽的比例越小。继续沿用上述步骤101中的例子,假设负载信息为每个物理端口的已消耗的带宽与总带宽的百分比,则控制器根据该3个百分比,确定出物理端口1、物理端口2和物理端口3的权重因子分别为3.8、1.9、0.8,也就是说,物理端口1能够分担的流量最大,物理端口2能够分担的流量次之,物理端口3能够分担的流量最小。在步骤103中,所述控制器向所述以太网设备发送应答报文,所述应答报文携带所述每个物理端口的权重因子。相应的,以太网设备接收该携带每个物理端口的权重因子的应答报文。在步骤104中,在通过所述逻辑端口发送报文时,所述以太网设备根据所述每个物理端口的权重因子,调整发往所述每个物理端口的流量。示例性的,数据到达逻辑端口后,以太网设备根据该逻辑端口的每个物理端口的权重因子,调整发往各物理端口的流量。继续沿用上述步骤101和102中的例子,假设一条新的数据流的大小为6m,该数据流到达交换机2后,经过哈希算法确定出该新的数据流经由物理端口3转发,然而,以太网设备确定出物理端口3的权重因子为0.8,该权重因子比较小,倘若使用物理端口3发送该数据流,则会导致物理端口3出现超带宽丢包现象。因此,以太网设备选择权重因子最大的物理端口,即物理端口1转发该新的数据流。本发明实施例提供的流量均衡方法中,以太网设备向控制器发送携带该以太网设备的逻辑端口的各物理端口的负载信息的查询报文,控制器接收该查询报文,并根据各物理端口的负载信息,确定逻辑端口的每个物理端口的权重因子,每个物理端口的权重因子与该物理端口可分担所述逻辑端口的流量的大小正相关,之后,控制器向以太网设备发送携带各物理端口的权重因子的应答报文,使得以太网设备根据各物理端口的权重因子,调整发往各物理端口的流量。该过程中,无需用户手动调整参与哈希计算的哈希因子,而是由以太网设备自动对各物理端口的流量进行调整,对当前传输的业务数据没有影响,不会引发业务异常。下面,以逻辑端口为逻辑端口2,该逻辑端口2包含物理端口1、物理端口2和物理端口3为例,对上述实施例中,在通过该逻辑端口发送报文时,以太网设备如何调整发往每个物理端口的流量进行详细说明。示例性,每个以太网设备上预先设置哈希因子,哈希因子可以为报文的源mac地址、目的mac地址、源ip地址、目的ip地址、源端口号、目的端口号等信息中的一个或多个。以哈希因子为源mac地址、哈希算法为将源mac地址的后三位的二进制值映射到不同的物理端口。例如,000、001、010映射为物理端口1,011、100映射为物理端口2,101、111映射为物理端口3。在通过所述逻辑端口发送报文时,所述以太网设备根据预设的哈希因子和所述每个物理端口的权重因子,调整发送所述每个物理端口的流量。一种可行的设计中,以太网设备上除了配置预设的哈希因子外,还配置最小权重因子,在需要通过逻辑端口2发送报文时,以太网设备根据预设的哈希因子,确定一个物理端口,然后,以太网设备确定该物理端口的权重因子是否大于最小权重因子,若该物理端口的权重因子大于最小权重因子,则通过该物理端口转发报文;若该物理端口的权重因子小于或等于最小权重因子,则通过其他物理端口转发报文。举例来说,物理端口1、物理端口2和物理端口3的权重因子分别为3.8、1.9、0.8,最小权重因子为1,若以太网设备根据哈希算法确定出的物理端口为物理端口3,则由于物理端口3的权重因子小于最小权重因子,则以太网设备从物理端口1和物理端口2中选择一个物理端口发送该报文。例如,从物理端口1和物理端口2中随机选择一个物理端口发送报文;再如,从物理端口1和物理端口2中选择一个权重因子最大的物理端口,即物理端口1发送报文。另一种可行的设计中,以太网设备上除了配置预设的哈希因子外,还配置权重因子差值阈值,在需要通过逻辑端口2发送报文时,以太网设备根据预设的哈希因子,确定一个物理端口,然后,以太网设备确定该物理端口的权重因子与最大权重因子的差值是否大于或等于权重因子差值阈值,若差值大于或等于权重因子差值阈值,则通过其他物理端口发送报文;若差值小于权重因子差值阈值,则通过哈希算法计算出的物理端口发送报文。举例来说,物理端口1、物理端口2和物理端口3的权重因子分别为3.8、1.9、0.8,权重因子差值阈值为2,若以太网设备根据哈希算法确定出的物理端口为物理端口3,则由于物理端口3的权重因子与最大权重因子,即物理端口1的权重因子的差值等于3,该差值大于权重因子差值阈值2,则以太网设备从物理端口1和物理端口2中选择一个物理端口发送该报文。例如,从物理端口1和物理端口2中随机选择一个物理端口发送报文;再如,从物理端口1和物理端口2中选择一个权重因子最大的物理端口,即物理端口1发送报文。本实施例中,在通过所述逻辑端口发送报文时,以太网设备根据预设的哈希因子确定用于转发该报文的物理端口,然后根据权重因子确定该报文是否可以通过根据哈希因子确定出的物理端口转发,无需修改哈希因子即可实现对发往各物理端口的流量进行调整,调整过程简单,不会对业务产生影响。上述实施例中,对于某种确定的业务,该些业务的报文的源mac地址、目的mac地址等是固定的,因此,可以结合哈希因子和权重因子调整发往各物理端口的流量。然而,业务是不固定的,若业务发生变化,例如,以太网设备向控制器发送查询报文之前,有100个用户正在发起业务,而以太网设备接收到控制器发送的应答报文之后,有1000个用户正在发起业务,此时,逻辑端口的各物理端口的流量发生变化,显然,应答报文携带的权重因子无法满足流量均衡的需要。为避免出现该种现象,可选地,本申请实施例中,所述在通过所述逻辑端口发送报文时,所述以太网设备根据所述每个物理端口的权重因子,调整发往所述每个物理端口的流量,包括:在通过所述逻辑端口发送报文时,所述以太网设备判断所述逻辑端口的所述每个物理端口的流量是否发生变化;若所述每个物理端口的流量未发生变化,则所述以太网设备根据所述每个物理端口的权重因子,调整发往所述每个物理端口的流量。示例性的,假设以太网设备具有逻辑端口2,逻辑端口2包含物理端口1、物理端口2和物理端口3,以太网设备向控制器发送报文之前,有100个用户正在发起业务,物理端口1当前已消耗带宽为40m,已消耗带宽占物理端口1的总带宽的20%;物理端口2当前已消耗带宽为40m,已消耗带宽占物理端口2的总带宽的40%;物理端口3当前已消耗带宽为47.5m,已消耗带宽占物理端口3的总带宽的95%。控制器基于该查询报文,确定出物理端口1、物理端口2和物理端口3的权重因子分别为3.8、1.9和0.8,并将权重因子和以太网设备的逻辑端口标识等封装成应答报文发送给以太网设备。以太网设备接收到该应答报文后,确定出物理端口1、物理端口2和物理端口3的权重因子分别为3.8、1.9和0.8,同时,确定出各物理端口的负载信息指示的百分比的变化量未超出预设阈值,即每个物理端口已消耗带宽占该物理端口总带宽的百分比的变化量未超出预设阈值,例如,以太网关设备接收到应答报文后,物理端口1、物理端口2和物理端口3各自已消耗的带宽占总带宽的百分比依旧为20%、40%和95%,或者,虽然各物理端口已消耗的带宽与总带宽的百分比发生变化,但变化不大,例如,从原先的20%、40%和95%变化为25%、40%和95%,则以太网设备根据所述每个物理端口的权重因子,调整发往所述每个物理端口的流量。本实施例中,每个物理端口的负载信息用于指示所述物理端口已消耗带宽占该物理端口总带宽的百分比,以太网设备根据权重因子调整发往各物理端口的流量之前,判断各物理端口中每个物理端口的负载信息指示的百分比的变化量是否超出预设阈值,只有在所有物理端口负载信息指示的百分比的变化量未超出预设阈值的情况下,才根据权重因子调整发往各物理端口的流量,避免物理端口已消耗带宽占该物理端口总带宽的百分比发生较大变化时,权重因子不适用的现象。另外,以太网设备也可以仅对部分物理端口的负载信息指示的百分比的变化量进行判断。例如,以太网设备发送的查询报文中,物理端口1、物理端口2和物理端口3的已消耗带宽占总带宽的比例依次为20%、40%和95%;以太网设备接收到应答报文后,发现物理端口1的权重因子较大,而物理端口3的权重因子最小,应该将物理端口3的流量增大。此时,以太网设备主要检测物理端口1已消耗带宽占物理端口1的总带宽的百分比是否发生较大变化,若百分比由20%变为30%,变化量为10%,小于预设阈值30%,则以太网设备根据应答报文携带的权重因子调整发往每个物理端口的流量。可选地,上述实施例中,若一个或多个物理端口的负载信息指示的百分比的变化量超出预设阈值,则所述以太网设备判断所述每个物理端口的权重因子是否适用于流量发生变化的各所述物理端口;若所述每个物理端口的权重因子适用于流量发生变化的各所述物理端口,则所述以太网设备根据所述每个物理端口的权重因子,调整发往所述每个物理端口的流量。示例性的,若任意一个或多个物理端口已消耗的带宽与总带宽的百分比发生巨大变化,例如,从原先的20%、40%和95%变化为80%、40%和95%,则以太网设备重新采集各物理端口的负载信息,并向控制器发送,使得控制器重新计算权重因子。下面,对本申请实施例中的查询报文和应答报文进行详细描述。本申请实施例中,查询报文和应答报文可以为用户数据报协议(userdatagramprotocol,udp)报文。示例性的,可参见图4,图4是本申请实施例提供的一种流量均衡方法中udp报文的结构示意图。请参照图4,udp报文包含外部以太头(outerethernetheader)、外部ip头(outeripheader)、外部udp头(outerudpheader)和载荷(payload)。其中,外部以太头包含目的mac地址(macda)、源mac地址(macsa)、标签、以太网类型(ethernettype)等;外部ip头包含协议(protocol)、源ip地址(ipsa)、目的ip地址(ipda);外部udp头包含源端口(sourceport)号、目的端口(destport)号、udp长度(udplength)和udp校验和(udpchecksum)。本申请实施例中,作为查询报文的udp报文具有固定的udp端口号,即外部udp头中的源端口(sourceport)号是固定的,例如为6000。如此一来,控制器接收到udp报文并解析该报文后,若该udp报文的udp端口号为6000,则确定该udp报文为查询报文,需要根据该udp报文携带的负载信息计算权重因子,若该udp报文的udp端口号不是6000,则无需计算权重因子。同理,以太网设备接收到udp报文并解析该报文后,若该udp报文的udp端口号为6000,则确定该udp报文为应答报文,需要根据该udp报文携带的权重因子调整发往各物理端口的流量,若该udp报文的udp端口号不是6000,则无需对各物理端口的流量进行调整。本申请实施例中,当udp报文为查询报文时,该udp报文的payload部分用于存放以太网设备的设备信息、逻辑端口的各物理端口的负载信息等;当udp报文为应答报文时,该udp报文的payload部分用于存放以太网设备的设备信息、逻辑端口的各物理端口的权重因子等。下面,对udp报文的payload部分进行详细说明。示例性的,可参见表1。表1为本申请实施例中udp报文的payload部分的详细内容表。表1消息主要字段查询报文应答报文ipip1ip1逻辑端口标识1010物理端口数量33物理端口120%3.8物理端口240%1.9物理端口395%0.8对表1的详细说明如下:(a)、ip字段。本申请实施例中,ip字段表示以太网设备的ip地址,即以太网设备所在的网络位置,用于以太网设备与控制器之间互通消息,当以太网设备上部署agent模块时,该ip地址也可以称之为agent的ip地址。假设ip地址为10.1.1.1,控制器的ip地址为20.1.1.1,则以太网设备向控制器发送查询报文时,该查询报文的外部ip头中的目的ip(ipda)为控制器的ip地址20.1.1.1;外部ip头中的源ip地址(ipsa)为以太网设备的ip地址10.1.1.1;该查询报文的payload部分的ip字段,即上述表1中的ip1为以太网设备的ip地址10.1.1.1。控制器收到该查询报文后,解析该查询报文中的payload部分,将以太网设备的相关信息保存在本地数据库中,在计算的时候提取该信息作为输入。(b)逻辑端口标识字段,即eth-trunkid字段。本申请实施例中,eth-trunkid字段包括逻辑端口的编号、逻辑端口的索引号(ifindex)数据等。以太网设备发送给控制器的查询报文的payload数据中,eth-trunkid字段可以唯一标识以太网设备上的一个逻辑端口。控制器计算好权重因子后,向以太网设备发送应答报文时携带该eth-trunkid,从而使得以太网设备根据eth-trunkid确定出对应的逻辑端口。(c)物理端口数量字段,即member_num字段。本申请实施例中,member_num字段表示逻辑端口包含的物理端口的数量。控制器接收到查询报文后,根据该member_num字段,确定物理端口的数量,然后根据该数量遍历所有的物理端口,根据各物理端口的负载信息计算每个物理端口的权重因子。(d)物理端口字段,即member_n,n为物理端口的编号。本申请实施例中,若udp报文为查询报文,则该字段的值表示该物理端口的负载信息,该负载信息是控制器计算权重因子的重要数据;若udp报文为响应报文,则该字段的值表示该物理端口的权重因子,用于指示以太网设备根据各物理端口的权重因子对各物理端口的流量进行调整。下面,对控制器接收到查询报文后,如何根据查询报文中各物理端口的负载信息确定各物理端口的权重因子进行详细说明。一种可行的设计中,一个物理端口的负载信息用于指示所述物理端口已消耗带宽占所述物理端口总带宽的百分比,所述控制器根据所述每个物理端口的负载信息,确定所述每个物理端口的权重因子,包括:所述控制器根据所述每个物理端口的百分比,确定所述多个物理端口的百分比的最小公倍数;根据所述最小公倍数,确定所述每个物理端口的权重因子,一个每个物理端口的权重因子=最小公倍数/所述物理端口的百分比。示例性的,将权重记为weight,百分比记为oututi,最小公倍数记为x,逻辑端口包含物理端口1~物理端口n,则:(weight_1×oututi_1):(weight_2×oututi_2):(weight_3×oututi_3):(weight_4×oututi_4):……:(weight_n×oututi_n)=1:1:1:1:……。因此,可以通过计算oututi_1、oututi_2、oututi_3……oututi_n的最小公倍数x,即可确定出weight_1、weight_2、weight_3……weight_n,weight_n=x/oututi_n。例如,上述表1中,逻辑端口标识为2,物理端口数量字段为3,物理端口字段分别为20%、40%、95%,则说明:逻辑端口2包含物理端口1、物理端口2和物理端口3,该三个物理端口当前已消耗带宽占各自总带宽的20%、40%、95%。控制器根据20%、40%、95%发现,最小公倍数x=0.76,则物理端口1、物理端口2和物理端口3的权重因子依次为3.8、1.9和0.8。控制器计算好权重因子后,向以太网设备发送应答报文,基于上述表1,该应答报文中的物理端口字段的值为权重因子。下面,对本申请实施例中,以太网设备上报各物理端口的负载信息的时机进行详细描述。该时机也可以理解为控制器确定逻辑端口的各物理端口的权重因子的时机。一种可行的实现方式中,所述以太网设备向所述控制器发送查询报文,包括:所述以太网设备判断所述多个物理端口中,是否存在至少一个物理端口的流量超出预设阈值;若存在至少一个物理端口的流量超出预设阈值,则所述以太网设备向所述控制器发送所述查询报文。示例性的,以太网设备上部署代理(agent)模块,若某个逻辑端口的负载超过限制时,则以太网设备提醒用户可能出现流量分配不均匀的现象。代理模块感知到这个事件后,主动采集该逻辑端口的每个物理端口的负载信息,并上报给控制器。例如,以太网设备上预先存储一个带宽预警值,例如为90%。此时,若某个物理端口当前已消耗带宽占该物理端口总带宽的百分比超过90%,则向用户发出警告。代理模块感知该事件,采集逻辑端口的各物理端口的负载信息,并向控制上报。再如,以太网设备上预先存储一个带宽预警值差值,比如10%,代理模块采集各个逻辑端口的负载信息,若该些物理端口中,存在两个物理端口,该两个物理带宽已消耗带宽的百分比的差值大于10%,则代理模块向控制器发送各物理端口的负载信息,举例来说,代理模块发现:一个逻辑端口的物理端口1、物理端口2和物理端口3各自已消耗的带宽占总带宽的百分比为20%、40%和60%,物理端口1与物理端口2已消耗带宽的百分比的差值大于10%,物理端口2和物理端口3已消耗带宽的百分比的差值大于10%,物理端口1和物理端口3已消耗带宽的百分比的差值大于10%,则代理模块向控制器发送该逻辑端口的每个物理端口的负载信息。本实施例中,以太网设备主动向控制器上报逻辑端口的各物理端口的负载信息,使得控制器根据负载信息确定权重因子,实现不修改哈希因子的前提下调整各物理端口的流量的目的。另一种可行的设计中,以太网设备向所述控制器发送查询报文,包括:所述以太网设备多次向所述控制器发送查询报文。示例性的,以太网设备可以定期或不定期的采集逻辑端口的各物理端口的负载信息,并批量上报给向控制器。本示例中,以太网设备定期或不定期向控制器上报逻辑端口的各物理端口的负载信息,使得控制器根据负载信息确定权重因子,实现不修改哈希因子的前提下调整各物理端口的流量的目的。下面,对本申请实施例中的控制器进行详细说明。示例性的,请参见图5,图5是本申请实施例提供的一种控制器的结构示意图。请参照图5,控制器与网卡连接,控制器包括报文处理芯片、外部存储器、内部存储器、输入设备、输出设备、运算器、控制芯片以及输出设备等。以太网设备发送的查询报文经由网卡到达报文处理芯片。报文处理芯片对查询报文进行解析,解析出以太网设备的ip地址、以太网设备的逻辑端口的各物理端口的负载信息等,报文处理芯片将解析出的信息上报给内部存储器。控制芯片周期性的触发运算器调用内部存储器中的信息,并对调用的信息进行计算,得出各物理端口的权重因子,将各物理端口的权重因子存储在内部存储器中。报文处理芯片调用内部存储器中的权重因子,将权重因子封装在应答报文中,通过网卡将该应答报文发送给以太网设备,由以太网设备根据各物理端口的权重因子,调整发往各物理端口的流量。图6为本申请实施例提供的一种流量均衡装置的结构示意图。本实施例所涉及的流量均衡装置可以为以太网设备,也可以为应用于以太网设备的芯片。该流量均衡装置可以用于执行上述实施例中以太网设备的功能。如图6所示,该流量均衡装置100可以包括:发送单元11,用于向控制器发送查询报文,所述查询报文携带所述以太网设备的逻辑端口的多个物理端口中每个物理端口的负载信息;接收单元12,用于接收所述控制器发送的应答报文,所述应答报文携带所述每个物理端口的权重因子,每个物理端口的权重因子与所述物理端口可分担所述逻辑端口的流量的大小正相关;处理单元13,用于在所述发送单元11通过所述逻辑端口发送报文时,根据所述每个物理端口的权重因子,调整发往所述每个物理端口的流量。一种可行的设计中,所述处理单元13,还用于判断所述多个物理端口中,是否存在至少一个物理端口的流量超出预设阈值;所述发送单元11,用于若所述处理单元13判断出存在至少一个物理端口的流量超出预设阈值,则向所述控制器发送所述查询报文。一种可行的设计中,每个物理端口的负载信息用于指示所述物理端口已消耗带宽占所述物理端口总带宽的百分比,所述处理单元13,用于判断所述逻辑端口的所述每个物理端口的负载信息指示的百分比是否发生变化,若所述每个物理端口的负载信息指示的百分比的变化量未超出预设阈值,则根据所述每个物理端口的权重因子,调整发往所述每个物理端口的流量。一种可行的设计中,所述处理单元13,还用于若所述每个物理端口的负载信息指示的百分比的变化量超出预设阈值,则所述以太网设备重新采集所述每个物理端口的负载信息;所述发送单元11,还用于向所述控制器发送携带重新采集到的负载信息的查询报文。一种可行的设计中,所述处理单元13,用于根据预设的哈希因子和所述每个物理端口的权重因子,调整发往所述每个物理端口的流量。本申请实施例提供的流量均衡装置,可以执行上述实施例中以太网设备的动作,其实现原理和技术效果类似,在此不再赘述。图7为本申请实施例提供的另一种流量均衡装置的结构示意图。本实施例所涉及的流量均衡装置可以为控制器,也可以为应用于控制器的芯片。该流量均衡装置可以用于执行上述实施例中控制器的功能。如图7所示,该流量均衡装置200可以包括:接收单元21,用于接收以太网设备发送的查询报文,所述查询报文携带所述以太网设备的逻辑端口的多个物理端口中每个物理端口的负载信息;处理单元22,用于根据所述每个物理端口的负载信息,确定所述每个物理端口的权重因子,每个物理端口的权重因子与所述物理端口可分担所述逻辑端口的流量的大小正相关;发送单元23,用于向所述以太网设备发送应答报文,所述应答报文携带所述每个物理端口的权重因子。一种可行的设计中,每个物理端口的负载信息用于指示所述物理端口已消耗带宽占所述物理端口总带宽的百分比,所述处理单元22,用于根据所述每个物理端口的百分比,确定所述多个物理端口的百分比的最小公倍数;根据所述最小公倍数,确定所述每个物理端口的权重因子,一个物理端口的权重因子=所述最小公倍数/所述物理端口的百分比。本申请实施例提供的流量均衡装置,可以执行上述实施例中控制器的动作,其实现原理和技术效果类似,在此不再赘述。需要说明的是,应理解以上接收单元实际实现时可以为接收器、发送单元实际实现时可以为发送器。而处理单元可以以软件通过处理元件调用的形式实现;也可以以硬件的形式实现。例如,处理单元可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上处理单元的功能。此外这些单元全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。例如,以上这些单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个专用集成电路(application-specificintegratedcircuit,asic),或,一个或多个微处理器(digitalsignalprocessor,dsp),或,一个或者多个现场可编程门阵列(field-programmablegatearray,fpga)等。再如,当以上某个单元通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessingunit,cpu)或其它可以调用程序代码的处理器。再如,这些单元可以集成在一起,以片上系统(system-on-a-chip,soc)的形式实现。另外,本申请实施例还提供一种流量均衡系统,该系统包括一个或多个如上图6所示的流量均衡装置(可以称为第一流量均衡装置)以及如上图7所述的流量均衡装置(可以称为第二流量均衡装置)。由于图6所示装置设置在以太网设备上,图7所示装置设置在控制器上,在一个实施方式中,该流量均衡系统可以包括多个以太网设备以及一个控制器。图8为本申请实施例提供的又一种流量均衡装置的结构示意图。如图8所示,该流量均衡装置300可以包括:处理器31(例如cpu)、存储器32、接收器33、发送器34;接收器33和发送器34均耦合至处理器31,处理器31控制接收器33的接收动作、处理器31控制发送器34的发送动作;存储器32可能包含高速随机存取存储器(randomaccessmemory,ram),也可能还包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器,存储器32中可以存储各种指令,以用于完成各种处理功能以及实现本申请的方法步骤。可选的,本申请涉及的流量均衡装置还可以包括:通信总线35。接收器33和发送器34可以集成在流量均衡装置的收发信机中,也可以为流量均衡装置上独立的收发天线。通信总线35用于实现元件之间的通信连接。在本申请一个实施例中,上述存储器32用于存储计算机可执行程序代码,程序代码包括指令;当处理器31执行指令时,使流量均衡装置的处理器31执行上述方法实施例中以太网设备的处理动作,使接收器33执行上述实施例中以太网设备的接收动作,使发送器34执行上述方法实施例中以太网设备的发送动作,其实现原理和技术效果类似,在此不再赘述。在本申请另一个实施例中,上述存储器32用于存储计算机可执行程序代码,程序代码包括指令;当处理器31执行指令时,使流量均衡装置的处理器31执行上述方法实施例中控制器的处理动作,使接收器33执行上述实施例中控制器的接收动作,使发送器34执行上述方法实施例中控制器的发送动作,其实现原理和技术效果类似,在此不再赘述。本申请实施例还提供一种存储介质,所述存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上所述的流量均衡方法。本发明实施例还提供一种计算机程序产品,当所述计算机程序产品在以太网设备上运行时,使得以太网设备执行如上述的流量均衡方法。本发明实施例还提供一种计算机程序产品,当所述计算机程序产品在控制器上运行时,使得控制器执行如上述的流量均衡方法。上述各实施例可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘ssd)等。本文中的术语“多个”是指两个或两个以上。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。此外,本文中描述方式“……中的至少一个”表示所列出的各项之一或其任意组合,例如,“a、b和c中的至少一个”,可以表示:单独存在a,单独存在b,单独存在c,同时存在a和b,同时存在b和c,同时存在a和c,同时存在a、b和c这六种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。可以理解的是,在本申请的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1