一种负载均衡方法、系统及输入设备与流程

文档序号:19382965发布日期:2019-12-11 00:36阅读:255来源:国知局
一种负载均衡方法、系统及输入设备与流程

本发明实施例涉及交换网技术,但不限于一种负载均衡方法、系统及输入设备。



背景技术:

在数据通信领域,随着用户数据爆炸式的增长,对于交换网设备的可靠性和安全性要求越来越高,交换网设备为了达到要求,很多地方都采用了冗余设计,比如交换设备与输入/输出设备之间通信的数据通道一般都是由多条链路组成,如图1,交换网系统包括输入/输出设备以及交换设备,每个输入/输出设备可以都有n条链路与交换设备相连。n条链路的调度依靠负载均衡策略实现,在某一条链路出现故障时,由于有链路的冗余,负载均衡策略会选择其他无故障的链路,以此达到数据的可靠性和安全性的保证。同时负载均衡策略能保证各个链路被公平的调度,保证流量在所有链路上负荷分担,使得链路的利用率达到最大化。

目前负载均衡策略主要包括如下三种方法:第一种方法采用轮询算法,通过轮询输入/输出设备与交换设备的链路号,按照某一个规则,比如按链路号的大小,依次轮流调度各个链路;该方法比较简单,但是由于只考虑了链路使用率上的负载均衡,没有考虑链路出现异常拥塞的场景,一旦某个链路出现了拥塞,会导致业务报文丢失。第二种方法采用哈希(hash)算法,将报文要发送的输出设备id号做一个hash算法,得到一个hash值对应的链路号,如果该链路号对应的链路可用,那么采用该链路,如果该链路不可用,将会在上一次的hash值基础上再次运用hash算法,得到另外一个链路号,直到出现可用的链路号;哈希算法的特点在于通往同一个目的输出设备的报文使用相同的链路号;如此哈希算法能保证输入设备去往同一个输出设备的报文使用相同的链路号,一个链路出现拥塞,只会影响通往某一个输出设备的流量,对通往其他输出设备的流量没有影响,相比第一种方法有改进,但是依然没有彻底解决拥塞导致的报文丢失的问题。第三种是采用流量比例算法,通过监测各个链路的报文缓存深度来决定下一次采用哪个链路传输数据,链路缓存越小的越优先被调度,如果某一链路的缓存深度达到溢出门限,那么该链路将停止发送报文;按链路的缓存大小来决定链路被调度的顺序,可以避免单条链路拥塞导致的丢包,但是这种方法没有考虑业务的走向,一条业务的拥塞达到链路溢出门限就会导致链路不被使用,使得其他经过该链路的业务都受影响。

综上所述,现有的负载均衡策略只能保证链路的公平调度,或者可以避免单条链路拥塞导致的丢包问题,但是无法解决由于流量不对称等原因导致的交换网流量拥塞的问题。



技术实现要素:

有鉴于此,本发明实施例提供了一种负载均衡方法,该方法包括:

输入设备接收交换设备发送的下行链路信息;

根据所述下行链路信息和自身的上行链路信息,控制上行链路的链路集容量小于等于下行链路的链路集容量;

其中,所述下行链路信息包括下行链路数量、下行链路速率和下行链路拥塞等级,所述上行链路信息包括上行链路数量、上行链路速率和上行链路拥塞等级。

本发明实施例还提供了一种输入设备,包括:

接收单元,用于接收交换设备发送的下行链路信息;

控制单元,用于根据所述下行链路信息和自身的上行链路信息,控制上行链路的链路集容量小于等于下行链路的链路集容量;

其中,所述下行链路信息包括下行链路数量、下行链路速率和下行链路拥塞等级,所述上行链路信息包括上行链路数量、上行链路速率和上行链路拥塞等级。

本发明实施例还提供了一种输入设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述任一项所述的负载均衡方法。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有信息处理程序,所述信息处理程序被处理器执行时实现上述任一项所述的负载均衡方法的步骤。

本发明实施例还提供了一种负载均衡方法,该方法包括:

交换设备收集与所述交换设备连接的所有输出设备的下行链路信息并发送给每一个连接的输入设备;

所述输入设备接收所述交换设备发送的所述下行链路信息,并根据所述下行链路信息和自身的上行链路信息,控制上行链路的链路集容量小于等于下行链路的链路集容量;

其中,所述下行链路信息包括下行链路数量、下行链路速率和下行链路拥塞等级,所述上行链路信息包括上行链路数量、上行链路速率和上行链路拥塞等级。

本发明实施例还提供了一种负载均衡系统,该系统包括:输入设备、输出设备和交换设备,所述交换设备,用于收集与所述交换设备连接的所有输出设备的下行链路信息并发送给每一个连接的输入设备;

所述输入设备,用于接收所述交换设备发送的所述下行链路信息,并根据所述下行链路信息和自身的上行链路信息,控制上行链路的链路集容量小于等于下行链路的链路集容量;

其中,所述下行链路信息包括下行链路数量、下行链路速率和下行链路拥塞等级,所述上行链路信息包括上行链路数量、上行链路速率和上行链路拥塞等级。

与相关技术相比,本发明实施例提供的技术方案通过控制上行链路的链路集容量小于等于下行链路的链路集容量,能够避免由于上行和下行方向链路不对称而导致的交换网拥塞,从而可以保证交换网的稳定性和安全性。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为现有交换网系统连接关系示意图;

图2为本发明实施例一提供的负载均衡方法的流程示意图;

图3为本发明实施例二提供的负载均衡方法的流程示意图;

图4为本发明实施例三提供的交换网系统示意图;

图5为本发明实施例三提供的负载均衡方法的流程示意图;

图6为本发明实施例四提供的交换网系统示意图;

图7为本发明实施例四提供的负载均衡方法的流程示意图;

图8为本发明实施例五提供的输入设备的结构示意图;

图9为本发明实施例提供的负载均衡系统的结构示意图;

图10为链路拥塞控制信令的示意图;

图11为本发明实施例三中链路拥塞控制信令的示意图;

图12为本发明实施例六提供的交换网系统的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

为了描述方便,本申请将输入设备与交换设备之间的链路叫上行链路,输出设备与交换设备之间的链路叫下行链路。实际场景中可能出现有多个输入设备的流量去往一个输出设备的情形,例如图6所示,上行链路数量与下行链路的比例关系为n:1,n越大,出现链路不对称的情况越严重,越容易出现报文在下行链路上拥塞的情况。现有的负载均衡策略都无法解决由于上下行链路不对称而导致的交换网用拥塞的问题。

为此,本申请实施例提出了一种负载均衡方法,该方法包括输入设备接收交换设备发送的下行链路信息;根据所述下行链路信息和自身的上行链路信息,控制上行链路的链路集容量小于等于下行链路的链路集容量;其中,所述下行链路信息包括下行链路数量、下行链路速率和下行链路拥塞等级,所述上行链路信息包括上行链路数量、上行链路速率和上行链路拥塞等级。如此,能够根据上行/下行链路情况,通过控制上行链路的链路集容量小于等于下行链路的链路集容量来控制输入与输出的流量比例,不仅可以负载均衡各个链路,而且可以避免上下行链路流量不对称导致交换网拥塞的问题,以提高交换网的稳定性,进而提高系统性能。

实施例一

图2为本发明实施例一提供的负载均衡方法的流程示意图。如图2所示,该方法包括:

步骤201,输入设备接收交换设备发送的下行链路信息;

步骤202,根据所述下行链路信息和自身的上行链路信息,控制上行链路的链路集容量小于等于下行链路的链路集容量;

其中,所述下行链路信息包括下行链路数量、下行链路速率和下行链路拥塞等级,所述上行链路信息包括上行链路数量、上行链路速率和上行链路拥塞等级。

其中,所述根据所述下行链路信息和自身的上行链路信息,控制上行链路的链路集容量小于等于下行链路的链路集容量,包括:

根据所述下行链路信息计算所述下行链路的链路集容量,所述下行链路的链路集容量单条下行链路容量qi=下行链路速率/下行链路拥塞等级,其中n为下行链路数量,i是每一条下行链路对应的链路编号,1≤i≤n,i和n都是正整数;

根据自身的上行链路信息计算所述上行链路的链路集容量,所述上行链路的链路集容量单条上行链路容量qz=上行链路速率/上行链路拥塞等级,其中m为上行链路数量,z是每一条上行链路对应的链路编号,x是输入设备编号,1≤z≤m,z和m都是正整数;

当所述上行链路的链路集容量大于所述下行链路的链路集容量时,减少上行链路的链路数量和/或降低上行链路的链路速率来控制上行链路的链路集容量小于等于下行链路的链路集容量。

其中,在所述减少上行链路的链路数量和/或降低上行链路的链路速率来控制上行链路的链路集容量小于等于下行链路的链路集容量之后,该方法还包括:

当所述下行链路的链路集容量与所述上行链路的链路集容量的差值大于等于第一容量阈值且持续时间大于等于第一时间阈值时,在保证上行链路的链路集容量小于等于下行链路的链路集容量的前提下增加上行链路的链路数量和/或提高上行链路的链路速率。

其中,该方法还包括:

所述输入设备保存链路负载均衡表,所述链路负载均衡表中存储了上行链路的链路号与输出设备id号之间的对应关系。

其中,所述输入设备根据所述链路负载均衡表确定待发送报文对应的上行链路的链路号,并在所述待发送报文头部添加所述对应的上行链路的链路号对应的输出设备id号后通过所述对应的上行链路发送所述待发送报文给所述交换设备。

其中,该方法还包括:

在发送报文之后,所述输入设备根据下行拥塞等级判断下行链路发生拥塞时,逐步减少上行链路的链路数量和/或降低上行链路的链路速率,控制下行链路拥塞等级小于等于1。

本实施例一提供的技术方案,通过控制上行链路的链路集容量小于等于下行链路的链路集容量,能够避免由于上行和下行方向链路不对称而导致的交换网拥塞,从而可以保证交换网的稳定性和安全性。

实施例二

图3为本发明实施例二提供的负载均衡方法的流程示意图。如图3所示,该方法包括:

步骤301,交换设备收集与所述交换设备连接的所有输出设备的下行链路信息并发送给每一个连接的输入设备;

步骤302,所述输入设备接收所述交换设备发送的所述下行链路信息,并根据所述下行链路信息和自身的上行链路信息,控制上行链路的链路集容量小于等于下行链路的链路集容量;

其中,所述下行链路信息包括下行链路数量、下行链路速率和下行链路拥塞等级,所述上行链路信息包括上行链路数量、上行链路速率和上行链路拥塞等级。

其中,该方法还包括:

所述输入设备根据自身保存的链路负载均衡表确定待发送报文对应的上行链路的链路号,并在所述待发送报文头部添加所述对应的上行链路的链路号对应的输出设备id号后通过所述对应的上行链路发送所述报文给所述交换设备;

所述交换设备收到所述报文后,解析报文头部,找到输出设备id,然后基于负载均衡策略将所述报文通过下行链路上发送给所述输出设备;

所述输出设备接收到所述报文后,去掉报文头部的输出设备id,还原为原始报文。

本实施例二提供的技术方案,通过控制上行链路的链路集容量小于等于下行链路的链路集容量,能够避免由于上行和下行方向链路不对称而导致的交换网拥塞,从而可以保证交换网的稳定性和安全性。

实施例三

本实施例三应用于只有一个输入设备和一个输出设备的场景。图4为本发明实施例三提供的交换网系统示意图,如图4所示,该交换网系统包括一个输入设备#1和一个输出设备#1,通过n个交换设备进行数据传输。其中,输出设备#1与交换设备(也可以称之为交换机或交换芯片)#1之间的链路2#、3#由于物理的原因,无法建链。如此,当每一条链路可以传输的数据流量差距不大的情况下,与交换设备1#连接的上行链路的总上行流量将会是下行链路的总下行流量的三倍,下行链路很容易发生拥塞。

针对这种物理上不对称的场景,输入设备#1可以在发送报文前就保证物理上达到1:1对称,杜绝物理上不对称导致拥塞的情况。图5为本发明实施例三提供的负载均衡方法的流程示意图,如图5所示,该方法包括:

步骤501,在发送报文之前,交换设备#1收集与其链接的输出设备#1的链路集信息即下行链路信息,并发送给与其连接的输入设备#1;

其中,交换设备可以在输入设备发送报文之前收集下行链路信息。例如在输入设备#1还未发送报文到输出设备#1之前,交换设备#1周期收集与之相连的输出设备#1的链路集信息即下行链路信息,所述链路集信息包括可用的下行链路数量,每一条下行链路的链路速率r和链路拥塞等级l等。其中,链路速率r可以是提前设定好的,目前的上下行链路速率r可以提前同一配置为6.25gb/s、12.5gb/s、28gb/s、或者56gb/s。链路拥塞等级l是实时变化的,本申请中,下行链路拥塞等级=下行链路总流量/下行链路的链路集容量,上行链路拥塞等级=上行链路总流量/上行链路的链路集容量。例如在本实施例中,下行链路数量为1,该下行链路对应的链路速率r为28gb/s,由于输入设备还没有发送报文,下行链路还没有发生拥塞,此时链路拥塞等级l标记为1。

其中,交换设备#1可以将收集的下行链路信息以链路拥塞控制信令的形式周期发送到输入设备#1,该链路拥塞控制信令的格式可以如图10所示,其中,head表示报文头部标识,dst_id表示输出设备id号,link_id表示下行链路的链路号,link_info表示下行链路信息,该下行链路信息包括serdes_id即下行链路对应接口id、链路速率r、链路拥塞等级l等等,填充信息为保持报文对齐的字段。在该中,该链路拥塞控制信令如图11所示,输出设备id号为输出设备#1,下行链路的链路号为link_1即只有一个下行链路可用(只有链路1#可用,链路2#、3#由于物理的原因,无法建链),下行链路信息包括:下行链路接口id为serdes_#1,链路速率为r(此处该r可以为28gb/s),链路拥塞等级(也可以称之为拥塞度)l为1;交换设备#1可以每隔5s收集一次下行链路信息,并以链路拥塞控制信令的形式发送到输入设备#1。

步骤502,输入设备#1接收交换设备#1发送的下行链路信息;

其中,输入设备#1可以通过接收交换设备#1发送的链路拥塞控制信令,并从中获得下行链路信息。

步骤503,输入设备#1根据所述下行链路信息计算所述下行链路的链路集容量;

其中,所述下行链路的链路集容量是指所有下行链路的容量之和。单条下行链路容量qi=链路速率r/链路拥塞等级l,所述下行链路的链路集容量其中n为下行链路数量,1≤i≤n,i和n都是正整数,i是每一条下行链路对应的链路编号。在本实施例三,交换设备#1与输出设备#1之间只有一条下行链路链路1#可用,链路拥塞等级l=1,则所述下行链路的链路集容量v0=r。

步骤504,输入设备#1根据自身的上行链路信息计算所述上行链路的链路集容量;

其中,所述上行链路的链路集容量是指所有上行链路的容量之和。单条上行链路容量qz=链路速率r/链路拥塞等级l,z是每一条上行链路对应的链路编号,所述上行链路的链路集容量其中m为下行链路数量,1≤z≤m,z和m都是正整数。在本实施例三,输入设备#1与交换设备#1之间有三条上行链路即上行链路1#、2#、3#,上行链路的链路速率r也为28gb/s,由于还没有发送报文,拥塞等级l标记为1,则所述上行链路的链路集容量v1=3r。

此时,由于所述上行链路的链路集容量v1>所述下行链路的链路集容量v0,需要控制上行链路的链路集容量小于等于下行链路的链路集容量。

步骤505,输入设备1#控制所述上行链路的链路集容量小于等于所述下行链路的链路集容量;

其中,可以通过如下三种方式来控制上行链路的链路集容量小于等于下行链路的链路集容量:

方式一:减少上行链路的链路数量;在本实施例三,要使得v1<=v0,需要让输入设备#1与交换设备#1之间的上行链路也只包含一条,可以将上行链路2#、3#断开链接,使其处于禁用状态,如此上行链路和下行链路都只有一条链路可以使用,v1=v0,从而避免了由于v0>v1而发生下行链路拥塞。被关闭的两条上行链路的流量将会被负载均衡到与其他交换设备连接的上行链路上,例如输入设备#1与交换设备n#连接的n#...n-2#条上行链路上。

方式二:降低上行链路的链路速率;在本实施例三,要使得v1<=v0,可以先将上行链路的链路速率从28gb/s先降低到12.5gb/s,在发送报文之后,输入设备可以根据最近一次收到的下行链路信息重新计算并判断得出v1<=v0,则此时无需再降低上行链路的链路速率就可以保证v1<=v0。

方式三:降低上行链路的链路速率和减少上行链路的链路数量;在本实施例三,要使得v1<=v0,可以先将上行链路的链路速率从28gb/s先降低到12.5gb/s,并将上行链路3#断开链接。在发送报文之后,如果输入设备根据最近一次收到的下行链路信息重新计算并判断得出v1仍然>vo,则此时需要再次降低上行链路的链路速率,将上行链路的链路速率从12.5gb/s降低到6.25gb/s,再次至少经过5s后(如上所述交换设备#1可以每隔5s收集一次下行链路信息,并以链路拥塞控制信令的形式发送到输入设备#1),输入设备根据最近一次收到的下行链路信息重新计算并判断得出v1<=v0,则此时无需再降低上行链路的链路速率就可以保证vi<=vo。如果输入设备根据最近一次收到的下行链路信息重新计算并判断得出v1仍然>vo,则此时上行链路的链路速率已经降到最低,可以再将上行链路2#断开链接,使其处于禁用状态,直到v1<=v0。当然也可以先减少上行链路的链路数量,再降低上行链路的链路速率。例如可以先将上行链路3#断开链接,使其处于禁用状态,如果v1仍然>vo,则可以再将上行链路2#断开链接,使其处于禁用状态,如果v1仍然>vo,则可以先将上行链路的链路速率从28gb/s先降低到12.5gb/s,如果v1仍然>vo,再将上行链路的链路速率从12.5gb/s降低到6.25gb/s,直到v1<=v0。

步骤506,所述输入设备#1保存链路负载均衡表;

其中,为记录输入设备与输出设备之间用于传输数据的链路,输入设备可以维护一张链路负载均衡表,依据不同的输出设备的不同的下行链路情况,生成一张输入设备与各个输出设备之间的链路使用情况的链路负载均衡表,来记录当报文发送到不同输出设备时,哪些链路可以被使用。链路负载均衡表的格式如表1所示,其中存储了上行链路的链路号与输出设备id号之间的对应关系,该表的纵轴为输出设备id号,对应为链路拥塞控制信令的dst_id字段;横轴为上行链路号,即输入设备与交换芯片相连的链路编号,当所述链路号对应的上行链路处于使用状态则给所述对应关系赋值为1即被选中的链路对应的字段值为1,当所述链路号对应的上行链路处于禁用状态则给所述对应关系赋值为0,即未被选中的链路对应的字段值为0。本实施例三,链路负载均衡表如表2所示,上行链路2#、3#赋值为0表示处于禁用状态,上行链路1#赋值为1表示处于使用状态。

表1:

表2:

步骤507,所述输入设备#1根据所述链路负载均衡表确定待发送报文对应的上行链路的链路号,并在所述待发送报文头部添加所述对应的上行链路的链路号对应的输出设备id号后通过所述对应的上行链路发送所述待发送报文给所述交换设备。

本实施例三,输入设备#1将数据报文进行重新封装,在报文头部加上输出设备#1的设备号,基于负载均衡策略选择上行链路发送报文到交换设备。例如可以按照链路负载均衡表2对除了2#和3#号以外的0到n号链路进行轮询调度,选择上行链路发送报文到交换设备。

步骤508,所述交换设备收到所述报文后,解析报文头部,找到输出设备id为输出设备#1,然后负载均衡策略将报文在下行链路上轮询发送给输出设备#1;

步骤509,输出设备收到所述报文后去掉报文头部输出设备id,还原成原始报文。

上述负载均衡策略可以为上述背景技术中提到的轮询算法、哈希算法、流量比例算法等现有技术,

本提供的技术方案,输入设备#1和输出设备#1与交换设备#1之间都只有一条链路,消除了不对称的情况,避免了交换网链路拥塞。

另外,在本实施例三中,当输出设备#1与交换设备(也可以称之为交换机或交换芯片)#1之间的链路2#、3#故障恢复,成功建链之后,此时有可能所述下行链路的链路集容量v0=3*r,而所述上行链路的链路集容量v1经过负载均衡调整后维持在r,如此下行链路资源无法得到充分利用,浪费了下行资源。对此,本实施例三提供的负载均衡方法,在控制所述上行链路的链路集容量小于等于所述下行链路的链路集容量之后,还可以包括:

步骤510,当所述下行链路的链路集容量与所述上行链路的链路集容量的差值大于等于第一容量阈值且持续时间大于等于第一时间阈值时,在保证上行链路的链路集容量小于等于下行链路的链路集容量的前提下增加上行链路的链路数量和/或提高上行链路的链路速率。

其中,本实施例中可以设定第一容量阈值为单条上行链路容量即r,v0-v1=3*r-r=2r,即所述下行链路的链路集容量与所述上行链路的链路集容量的差值大于第一容量阈值。

如果前面步骤505中采用了减少上行链路的数量来控制上行链路的链路集容量小于等于下行链路的链路集容量,为了下行资源的充分利用,此时可以增加一条上行链路,例如可以将原来断开的上行链路2#恢复链接,之后如果v1变成2*r,v0-v1=2*r-r=r,还可以继续将原来断开的上行链路3#恢复链接,此时v0-v1=0,既避免了交换网链路拥塞,有可以充分利用下行资源,避免浪费。如果前面步骤505中采用了降低上行链路的链路速率来控制上行链路的链路集容量小于等于下行链路的链路集容量,为了下行资源的充分利用,此时可以通过提高上行链路的链路速率,例如可以将上行链路速率从6.25gb/s提升至12.5gb/s,如果所述下行链路的链路集容量与所述上行链路的链路集容量的差值仍然大于等于第一容量阈值,可以再次将上行链路速率从12.5gb/s提升至28gb/s,以此类推直至所述下行链路的链路集容量与所述上行链路的链路集容量的差值小于第一容量阈值。如果前面步骤505中即采用了减少上行链路的数量又采用了降低上行链路的链路速率来控制上行链路的链路集容量小于等于下行链路的链路集容量,为了下行资源的充分利用,可以先逐步增加上行链路的数量再逐步提高上行链路的链路速率,也可以先逐步提高上行链路的链路速率再逐步增加上行链路的数量,直到所述下行链路的链路集容量与所述上行链路的链路集容量的差值小于第一容量阈值。

在此基础上,也可以设定第一时间阈值,比如10s,当所述下行链路的链路集容量与所述上行链路的链路集容量的差值大于等于第一容量阈值持续时间大于等于10s时,再增加上行链路数量,可以保证系统的稳定性。

实施例四

本实施例四应用于多个输入设备和一个输出设备且在发送报文之后下行链路发生拥塞的场景。图6为本发明实施例四提供的交换网系统示意图,如图6所示,该交换网系统包括n个输入设备和一个输出设备#1,通过1个交换设备#1进行数据传输。以下以n为2为例,上行链路共计3*2条上行链路,下行有1个输出设备,共计3条下行链路与交换设备#1相连,上下行链路数量可能出现2:1的情况,当流量比较大时,下行链路导致拥塞。为此本实施例四提供了一种负载均衡方法,图7为本发明实施例四提供的负载均衡方法的流程示意图,如图7所示,该方法包括:

步骤701,交换芯片#1收集与之相连的输出设备#1的链路集信息即下行链路信息,并发送给与其链接的输入设备;

其中,交换设备可以在下行链路已经拥塞之后收集下行链路信息。本实施例四中,可以在下行链路已经拥塞之后,交换芯片#1收集与之相连的输出设备#1的链路集信息即下行链路信息,可以将该信息以链路拥塞控制信令的方式发送到输入设备#1,其中链路拥塞控制信令的格式参见中所述,在此不再赘述。为了描述方便,假设本场景的上下行链路实际速率是固定值r,r可以提前同一配置为6.25gb/s、12.5gb/s、28gb/s、或者56gb/s;假定此时下行链路的拥塞等级是2,实际场景中链路速率和拥塞等级并不是固定的,是动态变化的。

步骤702,输入设备#1和输入设备#2接收交换设备#1发送的下行链路信息;

其中,输入设备#1和输入设备#2可以通过接收交换设备#1发送的链路拥塞控制信令,并从中获得下行链路信息。

步骤703,输入设备#1和输入设备#2根据所述下行链路信息中的下行拥塞等级大于1判断出下行链路发生拥塞;

例如,本实施例四中,拥塞等级为2,此时,输入设备#1与交换芯片#1相连的上行链路集容量v1=3*r,输入设备#2与交换芯片#1相连的上行链路集容量v2=3*r,输出设备#1与交换芯片#1相连的链路集容量vo=3*r/2,要使得v1+v2<=vo,才能保证下行链路不拥塞。

步骤704,输入设备#1和输入设备#2逐步减少上行链路的链路数量和/或降低上行链路的链路速率,控制下行链路拥塞等级小于等于1;

其中,可以通过如下三种方式实现下行链路拥塞等级小于等于1:

方式一:减少上行链路的链路数量;由于输入设备#1与输入设备#2之间无法感知对方的存在,另外下行链路的拥塞度l是随着上行流量的降低而变小的,因此各个输入设备可以先关闭自身的一条链路,等待一定时间之后,查看输出设备的链路拥塞度是否有降低到容许范围,如果没有,可以再次关闭一条链路,直到下行链路拥塞等级为1。例如:第一步:输入设备#1先关闭1条链路#3,此时v1=2*r,v2=3*r,v1+v2=5r,随着上行链路数的减少,下行链路拥塞度变为1.6,vo=3*r/1.6接着第二步:输入设备#2再关闭一条链路#3,此时v1=2*r,v2=2*r,v1+v2=4r,随着上行链路数的减少,下行链路拥塞度变为1.2,vo=3*r/1.2,再接着第三步:输入设备#1再关闭一条链路#2,此时v1=r,v2=2r,v1+v2=3r,随着上行链路数的减少,下行链路拥塞度变为1,vo=3*r,v1+v2=vo此时下行链路流量对称,不再拥塞。

方式二:降低上行链路的链路速率;在本实施例四中,要使得下行链路拥塞等级小于等于1,需要v1+v2<=vo,可以先将上行链路的链路速率从28gb/s先降低到12.5gb/s,至少经过5s后(如上所述交换设备#1可以每隔5s收集一次下行链路信息,并以链路拥塞控制信令的形式发送到输入设备#1),输入设备根据最近一次收到的下行链路信息得知下行链路拥塞等级小于等于1,则此时无需再降低上行链路的链路速率就可以保证v1+v2<=vo。

方式三:降低上行链路的链路速率和减少上行链路的链路数量;在方式二的基础上,如果输入设备根据最近一次收到的下行链路信息得知下行链路拥塞等级仍然大于1,则此时需要再次降低上行链路的链路速率,将上行链路的链路速率从12.5gb/s降低到6.25gb/s,再次至少经过5s后(如上所述交换设备#1可以每隔5s收集一次下行链路信息,并以链路拥塞控制信令的形式发送到输入设备#1),输入设备得知下行链路拥塞等级小于等于1,则此时无需再降低上行链路的链路速率就可以保证v1+v2<=vo。如果输入设备根据最近一次收到的下行链路信息得知下行链路拥塞等级仍然大于1,则此时上行链路的链路速率已经降到最低,可以通过上述方式一,可以先将输入设备#1先关闭1条链路#3,如果下行链路拥塞等级仍然大于1,则可以输入设备#2再关闭一条链路#3,以此类推直到下行链路拥塞等级小于等于1。当然也可以先减少上行链路的链路数量,再降低上行链路的链路速率。例如可以先将输入设备#1先关闭1条链路#3,如果下行链路拥塞等级仍然大于10,则可以输入设备#2再关闭一条链路#3,如果下行链路拥塞等级仍然大于1,则可以先将上行链路的链路速率从28gb/s先降低到12.5gb/s,如果下行链路拥塞等级仍然大于1,再将上行链路的链路速率从12.5gb/s降低到6.25gb/s,直到下行链路拥塞等级小于等于1。

步骤706,所述输入设备1#和所述输入设备2#各自保存对应的链路负载均衡表;

其中链路负载均衡表的形式参见表1,在次不再赘述。本实施例四中,当采取上述方式一控制下行链路拥塞等级小于等于1时,所述输入设备1#保存的链路负载均衡表如表3所示,所述输入设备2#保存的链路负载均衡表如表4所示。

表3:

表4:

步骤707,所述输入设备1#和所述输入设备2#根据各自保存的链路负载均衡表确定待发送报文对应的上行链路的链路号,并在所述待发送报文头部添加所述对应的上行链路的链路号对应的输出设备id号后通过所述对应的上行链路发送所述待发送报文给所述交换设备;

其中,例如,输入设备#1按照链路负载均衡表3轮询调度除了2#、3#号链路以外的0-n号链路,输入设备#2按照链路负载均衡掩码表4轮询调度除了3#号链路以外的0-n号链路,各个输入设备在报文头部加上输出设备#1的设备号,将报文发送给交换设备#1。

步骤708,交换芯片收到输入设备#1的报文之后,解析报文头部,找到输出设备id为输出设备#1,然后负载均衡策略将报文在下行链路上轮询发送给输出设备#1;同样的,交换芯片收到输入设备#2的报文之后,解析报文头部,找到输出设备id为输出设备#1,然后负载均衡策略将报文在下行链路上轮询发送给输出设备#1;

步骤709,输出设备#1接收到报文后,去掉报文头部输出设备id,还原成输入设备之前的报文即原始报文。

上述负载均衡策略可以为上述背景技术中提到的轮询算法、哈希算法、流量比例算法等现有技术,

本实施例四提供的技术方案,多个输入设备和一个输出设备与一个交换设备之间通过控制控制上行链路的链路集容量小于等于下行链路的链路集容量,消除了链路不对称或流量不对称的情况,避免了交换网链路拥塞。

实施例五

本发明实施例五还提供了一种输入设备,图8为本发明实施例五提供的输入设备的结构示意图。如图8所示,该输入设备包括:

接收单元,用于接收交换设备发送的下行链路信息;

控制单元,用于根据所述下行链路信息和自身的上行链路信息,控制上行链路的链路集容量小于等于下行链路的链路集容量;

其中,所述下行链路信息包括下行链路数量、下行链路速率和下行链路拥塞等级,所述上行链路信息包括上行链路数量、上行链路速率和上行链路拥塞等级。

其中,所述控制单元,具体用于所述根据所述下行链路信息和自身的上行链路信息,控制上行链路的链路集容量小于等于下行链路的链路集容量,包括:

根据所述下行链路信息计算所述下行链路的链路集容量,所述下行链路的链路集容量单条下行链路容量qi=下行链路速率/下行链路拥塞等级,其中n为下行链路数量,i是每一条下行链路对应的链路编号,1≤i≤n,i和n都是正整数;

根据自身的上行链路信息计算所述上行链路的链路集容量,所述上行链路的链路集容量单条上行链路容量qz=上行链路速率/上行链路拥塞等级,其中m为上行链路数量,z是每一条上行链路对应的链路编号,x是输入设备编号,1≤z≤m,z和m都是正整数;

当所述上行链路的链路集容量大于所述下行链路的链路集容量时,减少上行链路的链路数量和/或降低上行链路的链路速率来控制上行链路的链路集容量小于等于下行链路的链路集容量。

其中,所述控制单元,还用于在所述减少上行链路的链路数量和/或降低上行链路的链路速率来控制上行链路的链路集容量小于等于下行链路的链路集容量之后,当所述下行链路的链路集容量与所述上行链路的链路集容量的差值大于等于第一容量阈值且持续时间大于等于第一时间阈值时,在保证上行链路的链路集容量小于等于下行链路的链路集容量的前提下增加上行链路的链路数量和/或提高上行链路的链路速率。

其中,该输入设备还包括:

存储单元,用于保存链路负载均衡表,所述链路负载均衡表中存储了上行链路的链路号与输出设备id号之间的对应关系。

其中,该输入设备还包括:

发送单元,用于根据所述链路负载均衡表确定待发送报文对应的上行链路的链路号,并在所述待发送报文头部添加所述对应的上行链路的链路号对应的输出设备id号后通过所述对应的上行链路发送所述待发送报文给所述交换设备。

其中,所述控制单元,还用于在发送报文之后,所述输入设备根据下行拥塞等级判断下行链路发生拥塞时,逐步减少上行链路的链路数量和/或降低上行链路的链路速率,控制下行链路拥塞等级小于等于1。

本发明实施例还提供了一种输入设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述输入设备执行的任一项负载均衡方法。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有信息处理程序,所述信息处理程序被处理器执行时实现上述任一项负载均衡方法的步骤。

本发明实施例还提供了一种负载均衡系统,图9为本发明实施例提供的负载均衡系统的结构示意图。如图9所示,该负载均衡系统包括:输入设备、输出设备和交换设备;

所述交换设备,用于收集与所述交换设备连接的所有输出设备的下行链路信息并发送给每一个连接的输入设备;

所述输入设备,用于接收所述交换设备发送的所述下行链路信息,并根据所述下行链路信息和自身的上行链路信息,控制上行链路的链路集容量小于等于下行链路的链路集容量;

其中,所述下行链路信息包括下行链路数量、下行链路速率和下行链路拥塞等级,所述上行链路信息包括上行链路数量、上行链路速率和上行链路拥塞等级。

其中,所述输入设备,还用于根据自身保存的链路负载均衡表确定待发送报文对应的上行链路的链路号,并在所述待发送报文头部添加所述对应的上行链路的链路号对应的输出设备id号后通过所述对应的上行链路发送所述报文给所述交换设备;

所述交换设备,还用于收到所述报文后,解析报文头部,找到输出设备id,然后基于负载均衡策略将所述报文通过下行链路上发送给输出设备;

所述输出设备,用于接收到所述报文后,去掉报文头部的输出设备id,还原为原始报文。

实施例六

图12为本发明实施例六提供的交换网系统的结构示意图,如图12所示,该交换网系统包括:输入设备、交换设备和输出设备。

其中,输入设备为报文发送设备,能够将报文封装成交换设备能识别的报文,发送给交换设备;交换设备完成报文的转发;输出设备为报文接收设备,能够将交换设备发送过来的报文还原成输入设备发送之前的报文。

其中,所述输入设备包括:链路管理单元、链路负载均衡表处理单元、链路负载均衡单元和报文封装单元等等;

其中,链路管理单元,用于接收交换设备发送的下行链路信息,并根据所述下行链路信息和自身的上行链路信息,控制上行链路的链路集容量小于等于下行链路的链路集容量;其中,所述下行链路信息包括下行链路数量、下行链路速率和下行链路拥塞等级,所述上行链路信息包括上行链路数量、上行链路速率和上行链路拥塞等级;

例如,该链路管理单元可以具体用于解析交换设备发送过来链路拥塞控制信令,对比自身与输出设备的链路集信息即对比上行链路的链路集容量与下行链路的链路集容量,决策需要关闭哪些上行链路以及哪些上行链路会用来传输数据,和/或决策如何调整上行链路速率。

链路负载均衡表处理单元,用于生成和保存链路负载均衡表,所述链路负载均衡表中存储了上行链路的链路号与输出设备id号之间的对应关系;

例如,该链路负载均衡表处理单元可以根据链路管理单元的信息生成链路负载均衡掩码表。

链路负载均衡单元,用于基于负载均衡策略根据链路负载均衡表调度各个链路,例如轮询调度上行链路;

报文封装单元,用于在待发送报文头部添加输出设备id号后通过调度的上行链路发送所述待发送报文给交换设备。例如,在报文头部封装输出设备id,添加报文对齐信息等。

其中,交换设备包括:链路信息收集模块、报文解析模块、调度模块、链路负载均衡模块;

链路信息收集模块,用于收集与所述交换设备连接的所有输出设备的下行链路信息,并发送给输入设备。例如,收集与各个输出设备相连的链路集信息即下行链路信息,以链路拥塞控制信令的格式发送给输入设备;

报文解析模块,用于收到输入设备发送的报文后,解析报文头部,找到输出设备id;

调度模块,用于依据输出设备id,按报文优先级调度给负载均衡模块;

链路负载均衡模块,用于按照下行链路集,轮询调度各个下行链路,将收到的报文转发给输出设备。

其中,输出设备包括:报文接收处理单元,用于接收交换设备传输过来的报文,去掉报文头部输出设备id,还原成输入设备发送前的原始报文。

本实施例六提供的交换网系统,通过控制上行链路数量和/或链路速率以控制输入流量的大小,可以解决流量在输入方向(上行)和输出方向(下行)不对称导致的交换网拥塞的问题,保证了交换网的稳定性和安全性

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1