一种实现交换机聚合口负载分担的方法和交换机的制作方法

文档序号:7714772阅读:173来源:国知局
专利名称:一种实现交换机聚合口负载分担的方法和交换机的制作方法
技术领域
本发明涉及通信技术领域,特别涉及一种实现交换机聚合口负载分担的方法和交换机。
背景技术
Bonding模式一般采用Balance-XOR聚合模式,其基本原理如下基于指定的传输 HASH策略传输数据包。在二层网络中,报文携带的源MAC地址与目标MAC地址进行异或, 将异或所得值与交换机聚合口数进行模运算在三层网络中,将源IP同目的IP异或的结果与源端口同目的端口异或的结果进行异或,将最终异或所得值与交换机聚合口数进行模运算;若报文为IP分片则只使用源IP同目的IP进行异或。因此,一旦连接建立,通过以上的 HASH策略,则Bonding中转发聚合口确定后,不会再发生变化。在视讯、监控环境中,流量是持续不断的。由于Bonding模式一旦建立连接后,流量只从单一的聚合口转发。当需要转发的各路流量大小不同时,在聚合链路中流量是不均勻分配的,则可能在原本就有大量流量压力的聚合口上叠加大量流量,使得该聚合口的压力进一步加大,因此在转发流量时,没有真正实现各聚合负载分担且严重时会发生丢包。

发明内容
有鉴于此,本发明提供一种实现交换机聚合口负载分担的方法和交换机,在转发流量时,能够实现各聚合口负载分担且不会发生丢包。为解决上述技术问题,本发明的技术方案是这样实现的一种实现交换机聚合口负载分担的方法,该方法包括检测交换机各聚合口的转发缓存水位,将转发缓存水位小于预设值的聚合口的状态标识为空闲状态,将缓存水位大于预设值的聚合口的状态标识为繁忙状态,并分别为当前每个状态为空闲状态的聚合口分配唯一的映射值;其中,繁忙状态的聚合口不分配映射值;交换机收到新流量转发请求时,根据当前状态为空闲状态的聚合口的个数,并采用哈希算法计算出哈希值,将计算出的哈希值与为聚合口分配的映射值进行匹配,将匹配到的映射值对应的聚合口作为目的聚合口,并将接收到的新流量从所述目的聚合口转发出去。一种实现交换机聚合口负载分担的交换机,该交换机包括检测单元、标识分配单元,接收单元和选取转发单元;所述检测单元,与所述标识分配单元相连,用于检测自身所在的交换机的各聚合口的转发缓存水位;所述标识分配单元,与所述选取转发单元相连,用于将所述检测单元检测到转发缓存水位小于预设值的聚合口的状态标识为空闲状态,将缓存水位大于预设值的聚合口的状态标识为繁忙状态,并分别为当前每个状态为空闲状态的聚合口分配唯一的映射值;其中,繁忙状态的聚合口不分配映射值;所述接收单元,与所述选取转发单元相连,用于接收新流量的转发请求;所述选取转发单元,用于在所述接收单元接收到新流量的转发请求时,根据当前状态为空闲状态的聚合口的个数,并采用哈希算法计算出哈希值,将计算出的哈希值与为当前聚合口分配的映射值进行匹配,将匹配到的映射值对应的聚合口作为目的聚合口,并将接收到的新流量从所述目的聚合口转发出去。综上所述,本发明通过检测各聚合口的转发缓存水位,将转发缓存水位未达预设值的聚合口进行标识,当交换机收到新流量的转发请求时,从已标识的转发缓存水位未达预设值的聚合口中通过哈希算法匹配一个聚合口对接收到的新流量进行转发。通过上述方法,本发明在转发流量时,能够实现各聚合口负载分担且不会发生丢包。


图1为本发明实现聚合口负载分担流程图;图2为四网口组网示意图;图3为本发明实现聚合口负载分担的交换机结构示意图。
具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。参见图1,图1为本发明实现聚合口负载分担流程图。具体步骤为步骤101,交换机检测各聚合口的转发缓存水位,将转发缓存水位小于预设值的聚合口的状态标识为空闲状态,将缓存水位大于预设值的聚合口的状态标识为繁忙状态,并分别为当前每个状态为空闲状态的聚合口分配唯一的映射值,其中,繁忙状态的聚合口不分配映射值。步骤102,交换机收到新流量转发请求时,根据当前状态为空闲状态的聚合口的个数,并采用哈希算法计算出哈希值,将计算出的哈希值与为聚合口分配的映射值进行匹配, 将匹配到的映射值对应的聚合口作为目的聚合口,并将接收到的新流量从目的聚合口转发出去。这里对各聚合口的检测,可以是实时检测,也可以根据实际需要自行设置检测周期进行周期检测。如果当前状态为繁忙状态的聚合口已分配过映射值,将已分配的映射值删除。交换机在检测各聚合口的转发缓存水位时,将转发缓存水位大于预设告警值的聚合口的状态标识为负载分担繁忙状态,如果当前状态为负载分担繁忙状态的聚合口已分配过映射值,将已分配的映射值删除,根据当前状态为空闲状态的聚合口的个数,并采用哈希算法计算出哈希值,将计算出的哈希值与为当前聚合口分配的映射值进行匹配,将匹配到的映射值对应的聚合口作为第一负载分担聚合口,将第一负载分担聚合口的状态标识为负载分担空闲状态,将已为第一负载分担聚合口分配的映射值删除,将当前状态为负载分担繁忙状态的聚合口正在转发的全部流量切换到第一负载分担聚合口转发出去;并分别为当前每个状态为空闲状态的聚合口分配唯一的映射值。
这里在检测到聚合口的状态变化,或从空闲聚合口中选择出聚合口都要重新进行标识就重新标识,并将已分配的映射值删除。并且重新给当前状态为空闲状态的聚合口分配映射值,其它状态的聚合口不分配映射值。交换机在检测各聚合口的转发缓存水位时,若检测到第一负载分担聚合口的转发缓存水位大于预设告警值时,将第一负载分担聚合口的状态标识为负载分担繁忙状态;且检测到当前状态为负载分担繁忙状态的聚合口的转发缓存水位未达到预设值,将状态为负载分担繁忙状态的聚合口的状态标识为负载分担空闲状态,将当前第一负载分担聚合口正在转发的流量切换回与第一负载分担聚合口负载分担同一流量转发的当前状态为负载分担空闲状态的聚合口转发出去。这里描述的是该流量由这两个聚合口转发已经足够,检测这两个参与负载分担的聚合口转发缓存水位,总是将流量从状态为负载分担繁忙的聚合口切换到状态为负载分担空闲的聚合口进行轮流转发。交换机在检测各聚合口的转发缓存水位时,若检测到第一负载分担聚合口的转发缓存水位大于预设告警值时,将第一负载分担聚合口的状态标识为负载分担繁忙状态;且检测到当前状态为负载分担繁忙状态的聚合口的转发缓存水位大于预设值时,根据当前状态为空闲状态的聚合口的个数,并采用哈希算法计算出哈希值,将计算出的哈希值与为当前聚合口分配的映射值进行匹配,并将匹配到的映射值对应的聚合口作为第二负载分担聚合口,将确定的第二负载分担聚合口的状态标识为负载分担空闲状态,将已为当前确定的目的聚合口分配的映射值删除,将第一负载分担交换机正在转发的全部流量切换到确定第二负载分担聚合口 ;并分别为当前每个状态为空闲状态的聚合口分配唯一的映射值。这里描述的是该流量由两个聚合口转发,还是会溢出,这样就需要再选择一个空闲的聚合口继续分担该流量的转发,以此类推,直到可以将该流量完全转发出去,不会发生丢包。交换机在检测自身各聚合口的转发缓存水位时,如果在预设时间检测到状态为负载分担空闲状态的聚合口的转发缓存水位都未达到预设值时,将状态为负载分担空闲状态的聚合口的状态标识为空闲状态,并分别为当前每个空闲状态的聚合口重新分配唯一的映射值。也就是说参与某一流量负载分担的聚合口在预设时间没有流量切换到该聚合口进行转发,或则未再收到该流量,则把这样的聚合口退出负载分担,并将状态直接标识为空闲状态,分配映射值,以备参与新流量的转发。下面参见附图,并举具体实施例,来详细描述本发明实现交换机聚合口负载分担过程。通过检测各聚合口转发缓存水位,判断各聚合口是否还有能力对新流量进行转发。本实施例中分别以01、00、11和10标识聚合口的繁忙、空闲、负载分担繁忙和负载分担空闲四个状态。如果转发缓存水位大于预设值则表明该聚合口转发能力达到上限,将该聚合口的状态标识为繁忙状态,用01表示,不为该聚合口分配映射值,这里所分配的映射值是哈希运算出的哈希值能够匹配到的值。其中,预设值可以根据经验进行设置,比如80%。如果转发缓存水位未达到预设值,表明聚合口还有转发能力,将聚合口的状态标识为空闲状态,用00表示,并分配映射值。
当一个聚合口的带宽无法满足流量的转发需要时,会选择多个聚合口轮流进行转发,对该流量进行负载分担。参与负载分担的聚合口检测转发缓存水位大于预设值时,则表明暂时无法转发更多流量,将该聚合口的状态标识为负载分担繁忙状态,用11表示,且不为该聚合口分配映射值。当一个聚合口的带宽无法满足流量的转发需要时,会选择多个聚合口轮流进行转发,对该转发流量进行负载分担。参与携带相同源MAC和目的MAC的流量的负载分担的聚合口转发缓存水位未达到预设值时,表明该聚合口还有转发能力,将该聚合口的状态标识为负载分担空闲状态,用10表示,且不为该聚合口分配映射值,但负载分担的转发流量可从此聚合口转发。参见图2,图2为四网口组网示意图。图2中,交换机202和存储设备201通过4 口 bonding聚合连接,四个聚合口分别为聚合口 Eth 1/0/9,Eth 1/0/13,Eth 1/0/18,Eth 1/0/27,EC203和EC204通过交换机202向存储设备201发送流量,EC203和EC204分别通过聚合口 Kh 1/0/13和肚1! 1/0/27来转发流量,由于EC203发来的流量较大,检测该聚合口的转发缓存水位大于预设值,但是该聚合口还是可以转发EC203发来的流量,不会发生丢包。将该聚合口的状态标识为繁忙状态。EC204发来的流量较小,检测聚合口 Kh 1/0/27 的转发缓存水位小于预设值,因此将该聚合口的状态标识为空闲状态,并分配映射值。而其他两个聚合口未有流量转发,将其他两个聚合口的状态均标识为空闲状态,并分配映射值。 各聚合口具体状态情况参见表1,表1为交换机聚合口转发状态表。表1用来保存各聚合口的状态以及分配的映射值。
权利要求
1.一种实现交换机聚合口负载分担的方法,其特征在于,所述方法包括交换机检测各聚合口的转发缓存水位,将转发缓存水位小于预设值的聚合口的状态标识为空闲状态,将缓存水位大于预设值的聚合口的状态标识为繁忙状态,并分别为当前每个状态为空闲状态的聚合口分配唯一的映射值,其中,繁忙状态的聚合口不分配映射值;交换机收到新流量转发请求时,根据当前状态为空闲状态的聚合口的个数,并采用哈希算法计算出哈希值,将计算出的哈希值与为聚合口分配的映射值进行匹配,将匹配到的映射值对应的聚合口作为目的聚合口,并将接收到的新流量从所述目的聚合口转发出去。
2.根据权利要求1所述的方法,其特征在于,所述检测交换机各聚合口的转发缓存水位之后,所述方法进一步包括若交换机检测到聚合口的转发缓存水位大于告警值时,将该聚合口的状态标识为负载分担繁忙状态,如果当前状态为负载分担繁忙状态的聚合口已分配过映射值,将所述已分配的映射值删除,根据当前状态为空闲状态的聚合口的个数,并采用哈希算法计算出哈希值,将计算出的哈希值与为当前聚合口分配的映射值进行匹配,将匹配到的映射值对应的聚合口作为第一负载分担聚合口,将所述第一负载分担聚合口的状态标识为负载分担空闲状态,将已为所述第一负载分担聚合口分配的映射值删除,将当前所述状态为负载分担繁忙状态的聚合口正在转发的全部流量切换到所述第一负载分担聚合口转发出去;并分别为当前每个状态为空闲状态的聚合口分配唯一的映射值。
3.根据权利要求2所述的方法,其特征在于,所述检测交换机各聚合口的转发缓存水位之后,所述方法进一步包括若交换机检测到所述第一负载分担聚合口的转发缓存水位大于预设告警值时,将所述第一负载分担聚合口的状态标识为负载分担繁忙状态;且检测到当前状态为负载分担繁忙状态的聚合口的转发缓存水位未达到预设值,将所述状态为负载分担繁忙状态的聚合口的状态标识为负载分担空闲状态,将当前所述第一负载分担聚合口正在转发的全部流量,切换回与所述第一负载分担聚合口负载分担同一流量转发的当前状态为负载分担空闲状态的聚合口转发出去;若检测到所述第一负载分担聚合口的转发缓存水位大于预设告警值时,将所述第一负载分担聚合口的状态标识为负载分担繁忙状态;且检测到当前状态为负载分担繁忙状态的聚合口的转发缓存水位大于预设值时,根据当前状态为空闲状态的聚合口的个数,并采用哈希算法计算出哈希值,将计算出的哈希值与为当前聚合口分配的映射值进行匹配,并将匹配到的映射值对应的聚合口作为第二负载分担聚合口,将所述确定的第二负载分担聚合口的状态标识为负载分担空闲状态,将已为当前确定的目的聚合口分配的映射值删除,将所述第一负载分担交换机正在转发的全部流量切换到所述确定所述第二负载分担聚合口; 并分别为当前每个状态为空闲状态的聚合口分配唯一的映射值。
4.根据权利要求2或3所述的方法,其特征在于,所述检测交换机各聚合口的转发缓存水位之后,该方法进一步包括如果在预设时间交换机检测到状态为负载分担空闲状态的聚合口的转发缓存水位都未达到预设值时,将所述状态为负载分担空闲状态的聚合口的状态标识为空闲状态,并分别为当前每个空闲状态的聚合口分配唯一的映射值。
5.一种实现交换机聚合口负载分担的交换机,其特征在于,所述交换机包括检测单元、标识分配单元,接收单元和选取转发单元;所述检测单元,与所述标识分配单元相连,用于检测自身所在的交换机的各聚合口的转发缓存水位;所述标识分配单元,与所述选取转发单元相连,用于将所述检测单元检测到转发缓存水位小于预设值的聚合口的状态标识为空闲状态,将缓存水位大于预设值的聚合口的状态标识为繁忙状态,并分别为当前每个状态为空闲状态的聚合口分配唯一的映射值;其中,繁忙状态的聚合口不分配映射值;所述接收单元,与所述选取转发单元相连,用于接收新流量的转发请求; 所述选取转发单元,用于在所述接收单元接收到新流量的转发请求时,根据当前状态为空闲状态的聚合口的个数,并采用哈希算法计算出哈希值,将计算出的哈希值与为当前聚合口分配的映射值进行匹配,将匹配到的映射值对应的聚合口作为目的聚合口,并将接收到的新流量从所述目的聚合口转发出去。
6.根据权利要求5所述的交换机,其特征在于,所述选取转发单元,进一步用于在若所述检测单元检测到聚合口的转发缓存水位大于预设告警值时,根据当前状态为空闲状态的聚合口的个数,并采用哈希算法计算出哈希值, 将计算出的哈希值与为当前聚合口分配的映射值进行匹配,将匹配到的映射值对应的聚合口作为第一负载分担聚合口,将所述状态为负载分担繁忙状态的聚合口的正在转发的全部流量切换到所述第一负载分担聚合口转发出去;所述标识分配单元,进一步用于将所述检测单元检测到转发缓存水位大于预设告警值的聚合口的状态标识为负载分担繁忙状态,如果当前状态为负载分担繁忙状态的聚合口已分配过映射值,将所述已分配的映射值删除;将所述选取转发单元确定的第一负载分担聚合口的状态标识为负载分担空闲状态,将已为所述第一负载分担聚合口分配的映射值删除;并分别为当前每个状态为空闲状态的聚合口分配唯一的映射值。
7.根据权利要求6所述的交换机,其特征在于,所述标识分配单元,进一步用于若所述检测单元检测到所述第一负载分担聚合口的转发缓存水位大于预设告警值时,将所述第一负载分担聚合口的状态标识为负载分担繁忙状态;当所述检测单元检测到当前状态为负载分担繁忙状态的聚合口的转发缓存水位未达到预设值时,将所述状态为负载分担繁忙状态的聚合口的状态标识为负载分担空闲状态;所述选取转发单元,进一步用于将所述第一负载分担聚合口正在转发的全部流量切换回与所述第一负载分担聚合口负载分担同一流量转发的当前状态为负载分担空闲状态的聚合口转发出去; 或,所述选取转发单元,进一步用于若所述检测单元检测到所述第一负载分担聚合口的转发缓存水位大于等预设告警值,且当前状态为负载分担繁忙状态的聚合口的转发缓存水位大于预设值时,根据当前状态为空闲状态的聚合口的个数,并采用哈希算法计算出哈希值, 将计算出的哈希值与为当前聚合口分配的映射值进行匹配,并将匹配到的映射值对应的聚合口作为第二负载分担聚合口,将所述第一负载分担聚合口正在转发的全部流量切换到所述第二聚合口转发出去;所述标识分配单元,进一步用于当所述检测单元检测到所述第一负载分担聚合口的转发缓存水位大于预设告警值时,将所述第一负载分担聚合口的状态标识为负载分担繁忙状态;将所述第二负载分担聚合口的状态标识为负载分担空闲状态,将已为所述第二负载分担聚合口分配的映射值删除,并分别为当前每个状态为空闲状态的聚合口分配唯一的映射值。
8.根据权利要求6或7所述的交换机,其特征在于,所述标识分配单元,进一步用于在所述检测单元在预设时间检测所述当前状态为负载分担空闲状态的聚合口的转发缓存水位都未达到预设值时,将所述当前状态为负载分担空闲状态的聚合口的状态标识为空闲状态,并分别为当前每个空闲状态的聚合口分配唯一的映射值。
全文摘要
本发明公开了一种实现交换机聚合口负载分担的方法,该方法包括检测交换机各聚合口的转发缓存水位,将转发缓存水位小于预设值的聚合口的状态标识为空闲状态,将缓存水位大于预设值的聚合口的状态标识为繁忙状态,并分别为当前每个状态为空闲状态的聚合口分配唯一的映射值;交换机收到新流量转发请求时,通过哈希运算从空闲状态的聚合口中选择一个聚合口作为目的聚合口,并将接收到的新流量从该目的聚合口转发出去。基于同样的发明构思,本发明还提出一种实现交换机聚合口负载分担的交换机,在转发流量时,能够实现各聚合口负载分担且不会发生丢包。
文档编号H04L12/56GK102316021SQ20111018583
公开日2012年1月11日 申请日期2011年7月4日 优先权日2011年7月4日
发明者周迪, 孙策 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1