背景技术
通常,同一网段内的所有主机上都存在一个相同的默认网关。主机发往其它网段的报文将通过默认网关进行转发,从而实现主机与外部网络的通信。当默认网关发生故障时,网段内所有主机将无法与外部网络通信,这就需要增加网关来提高链路可靠性,然而增加网关设备又带来了在多个出口之间进行选路的问题。
虚拟路由器冗余协议(Virtual Router Redundancy Protocol,VRRP)可以解决在多个出口之间进行选路的问题,通过将承担网关功能的一组路由器加入到备份组中,形成一台虚拟路由器,备份组内的路由器根据优先级选举出Master路由器,由VRRP的选举机制决定哪台路由器承担转发任务,局域网内的主机只需将虚拟路由器配置为默认网关。
参见图1,图1是现有技术VRRP组网示意图,路由器A、路由器B和路由器C组成一个虚拟路由器,具有一个虚拟IP地址。局域网内的主机将虚拟路由器设置为缺省网关。路由器A、路由器B、路由器C中优先级最高的路由器A作为Master路由器,承担网关的功能,其余两台路由器作为Backup路由器。如果路由器A发生故障,则备份组内处于Backup状态的路由器B和路由器C将根据优先级选出一个新的Master路由器,新选出的Master路由器继续向网络内的主机提供路由服务。
通过将承载网关功能的一组路由器加入到VRRP备份组的方式可以解决在多个出口进行选路的问题,但是由于只有Master路由器承担网关功能,无法实现业务流量在多个网关之间进行负载分担。目前有两种方式解决业务流量在网关之间的负载分担,一种是VRRP负载分担方式,另一种是VRRP负载均衡方式,下面分别进行说明:
在VRRP负载分担方式中,将承载网关功能的一组路由器加入到多个备份组,每个备份组都包括一台Master路由器和若干台Backup路由器,各备份组的Master路由器各不相同。
参见图2,图2是现有技术VRRP负载分担模式示意图,如图2所示,路由器A、路由器B和路由器C均加入到备份组1、备份组2和备份组3,其中,备份组1对应于虚拟路由器1,路由器A作为Master路由器,路由器B和路由器C作为Backup路由器;备份组2对应于虚拟路由器2,路由器B作为Master路由器,路由器A和路由器C作为Backup路由器;备份组3对应于虚拟路由器3,路由器C作为Master路由器,路由器A和路由器B作为Backup路由器。只需将局域网内的主机的缺省网关分别设置为虚拟路由器1、虚拟路由器2和虚拟路由器3,并在配置优先级时,确保三个备份组中各路由器的VRRP优先级形成交叉对应,就可以实现业务流量在路由器A、路由器B和路由器C之间进行负载分担。
在VRRP标准协议模式中,只有Master路由器可以转发报文,Backup路由器处于监听状态,无法转发报文。虽然创建多个备份组可以实现多台路由器之间的负载分担,但是局域网内的主机需要设置不同的网关,增加了配置的复杂性。
在VRRP负载均衡模式下,只需创建一个备份组,通过在该备份组中增加了负载均衡功能,实现备份组中多台路由器之间的负载分担。
VRRP负载均衡的实现原理为:将一个虚拟IP地址与多个虚拟MAC地址对应,VRRP备份组中的每台路由器都对应一个虚拟MAC地址;使用不同的虚拟MAC地址应答主机的地址解析协议ARP(IPv4网络中)/邻居请求消息NS(IPv6网络中),从而使得不同主机的流量发送到不同的路由器,备份组中的每台路由器都能转发流量。
VRRP负载均衡模式可以避免标准协议模式下VRRP备份组中Backup路由器始终处于空闲状态、网络资源利用率不高的问题,然而,VRRP负载均衡模式需要在原有备份组功能的基础上,增加了新的工作机制,例如虚拟MAC地址的分配、虚拟转发器的创建和维护等,实现原理非常复杂。
发明内容
有鉴于此,本发明的目的在于提供一种负载均衡方法,该方法实现简单,不需要复杂的配置。
为实现上述目的,本发明提供的技术方案为:
一种负载均衡方法,应用于连接局域网中的主机和两个以上网关设备的中间交换机,该方法包括:
将本机上连接各网关设备的端口配置为网关口,将各网关口加入到局域网配置的所有VLAN并为每个VLAN配置VLAN虚接口信息,通过各VLAN虚接口学习各网关设备的MAC地址;所述VLAN虚接口信息包括虚拟IP地址;
定期向局域网中的主机广播发送源IP地址和源MAC地址分别为各VLAN虚拟口的虚拟IP地址和虚拟MAC地址的免费ARP报文和/或NA报文;
接收到局域网内的主机发送的目的MAC为任一VLAN虚接口的虚拟MAC地址的报文时,选择一个网关设备,将报文的目的MAC地址替换为该选择的网关设备的MAC地址,并将报文从连接该选择的网关设备的网关口发送出去。
一种负载均衡装置,应用于连接局域网中的主机和两个以上网关设备的中间交换机,该装置包括:配置单元、学习单元、接收单元、处理单元、发送单元;
所述配置单元,用于将本机上连接各网关设备的端口配置为网关口,将各网关口加入到局域网配置的所有VLAN并为每个VLAN配置VLAN虚接口信息;所述VLAN虚接口信息包括虚拟IP地址;
所述学习单元,用于通过各VLAN虚接口学习各网关设备的MAC地址;
所述接收单元,用于接收局域网内的主机发送的目的MAC为任一VLAN虚接口的虚拟MAC地址的报文;
所述处理单元,用于接收单元接收到局域网内的主机发送的目的MAC为任一VLAN虚接口的虚拟MAC地址的报文时,选择一个网关设备,将报文的目的MAC地址替换为该选择的网关设备的MAC地址;
所述发送单元,用于定期向局域网中的主机广播发送源IP地址和源MAC地址分别为各VLAN虚拟口的虚拟IP地址和虚拟MAC地址的免费ARP报文和/或NA报文;用于处理单元选择一个网关设备并将报文的目的MAC地址替换为该选择的网关设备的MAC地址后,将报文从连接该选择的网关设备的网关口发送出去。
综上所述,本发明通过在中间交换机上配置VLAN虚拟口,利用免费ARP报文或NA报文将VLAN虚拟口的虚拟IP地址和虚拟MAC地址作为网关设备的IP地址和MAC地址通告给局域网内的主机,使局域网内的主机向外网发送报文时,将报文的目的MAC地址设置为VLAN虚拟口的MAC地址,从而中间交换机在接收该报文后可以按照负载均衡需求选择目的网关设备,通过目的网关设备转发报文到外网,实现负载均衡的目的,实现方法较为简单,而且不需要复杂的配置。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本发明实施中,不再利用VRRP协议实现网关设备间的负载均衡,而是通过连接局域网内的主机和网关设备的中间交换机实现网关设备间的负载均衡。
参见图3,图3是本发明实施例负载均衡方法的流程示意图,主要包括以下步骤:
步骤301、将中间交换机上连接各网关设备的端口配置为网关口,将各网关口加入到局域网配置的所有VLAN,为每个VLAN配置VLAN虚接口信息,通过各VLAN虚接口学习各网关设备的MAC地址;所述VLAN虚接口信息包括虚拟IP地址。
为了允许局域网内的所有流量通过,需要将各网关口加入到局域网配置的所有VLAN中;另外,还需要在中间交换机上配置基于各VLAN的虚拟口,也即VLAN虚拟口,并为该VLAN虚拟口配置虚拟IP地址。
在为各VLAN虚拟口配置虚拟IP地址信息后,就可以通过该VLAN虚拟口学习到各网关设备的MAC地址,具体方法为:在该VLAN虚拟口接收各网关设备发送的免费ARP报文和/或邻居公告(NA,Neighbor Advertisement)报文,学习免费ARP报文和/或NA报文中携带的该网关设备的MAC地址。
上述免费ARP报文适用于IPv4组网,NA报文适用于IPv6组网,正常情况下,各网关设备会根据实际组网情况定期发送免费ARP报文和/或NA报文,这样,中间交换机接收到相应报文后,就可以学习得到网关设备的MAC地址。
步骤302、定期向局域网中的主机广播发送源IP地址和源MAC地址分别为各VLAN虚拟口的虚拟IP地址和虚拟MAC地址的免费ARP报文和/或NA报文。
这里,各VLAN虚拟口的虚拟MAC地址可以预先配置,也可以由中间交换机自动生成。
本发明实施例中,在为每个VLAN配置VLAN虚拟口信息之后,中间交换机需要定期发送源IP地址和源MAC地址分别为各VLAN虚拟口的虚拟IP地址和虚拟MAC地址的免费ARP报文和/或NA报文,从而使局域网内的主机学习到该VLAN虚拟口的虚拟IP地址和虚拟MAC地址,并将学习到的虚拟IP地址和虚拟MAC地址作为网关设备的IP地址和MAC地址,进而根据该虚拟IP地址和虚拟MAC地址向外网发送报文。
在实际应用中,局域网中的各主机都会通过一个二层接口连接到中间交换机,局域网中主机可以通过对应的二层接口发送针对网关设备的ARP请求报文,该ARP请求报文会经由中间交换机到达网关设备。
而在本发明实施例中,中间交换机接收到局域网内的主机发送的ARP请求报文时,不会再将报文转发到相应的网关设备,而是根据ARP请求报文所属VLAN确定对应的VLAN虚接口,返回源IP地址、源MAC地址分别为该VLAN虚接口的虚拟IP地址和虚拟MAC地址的ARP响应报文。
步骤303、接收到局域网内的主机发送的目的MAC为任一VLAN虚接口的虚拟MAC地址的报文时,选择一个网关设备,将报文的目的MAC地址替换为该选择的网关设备的MAC地址,并将报文从连接该选择的网关设备的网关口发送出去。
由于中间交换机定期发送源IP地址和源MAC地址分别为各VLAN虚拟口的虚拟IP地址和虚拟MAC地址的免费ARP报文和/或NA报文,因此,局域网内的主机向外网发送报文时,报文的目的MAC地址应是中间交换机上相应某个的VLAN虚拟口的虚拟MAC地址,中间交换机接收到该报文后,可以按照负载均衡需求从多个网关设备中选择网关设备,将报文转发到该选择的网关设备,并通过该网关设备转发到外网。由于报文的目的MAC地址是中间交换机上某一VLAN虚拟口的虚拟MAC地址,在将报文转发到选择的网关设备之前,需要先将报文的目的MAC地址替换为该选择的网关设备的MAC地址,然后再执行报文转发。
在实际应用中,由于软件处理速度比硬件处理速度慢,为了提高执行效率,可以在通过各VLAN虚接口学习各网关设备的MAC地址之后,进一步将学习到的各网关设备的MAC地址下发到硬件转发芯片中,由转发芯片从下发的各网关设备的MAC地址选择出一网关设备MAC地址,并将来自局域网内的主机的报文的目的MAC地址替换为选择的网关设备的MAC地址后进行转发。
图3所示本发明实施例中,中间交换机接收到局域网内的主机发送的目的MAC为任一VLAN虚接口的虚拟MAC地址的报文后,选择一个网关设备的方法有多种,例如随机选择,在本实施例中采用hash算法,具体为:利用报文的源MAC和报文携带的VLAN标签进行hash运算,根据hash运算结果确定对应的网关设备,使同一用户的流量均转发到同一网关设备。
实际上,当中间交换机上的各网关口连接的网关设备接口故障时,该网关设备无法再继续为局域网内的主机提供报文转发服务,中间交换机不应该再选择该网关设备进行报文转发,避免流量中断。
为此,中间交换机可以对各网关口连接的网关设备接口进行故障检测,当检测到任一网关口连接的网关设备接口故障时,删除学习到的该网关设备的MAC地址,从而避免再选择该网关设备进行报文转发。具体的故障检测方法可以采用现有技术,例如BFD检测。
以上对本发明实施例负载均衡方法进行了详细说明,本发明还提供了一种负载均衡装置,下面结合图4进行详细说明。
参见图4,图4是本发明实施利负载均衡装置的结构示意图,该装置应用于连接局域网中的主机和两个以上网关设备的中间交换机,主要包括:配置单元401、学习单元402、接收单元403、处理单元404、发送单元405;其中,
配置单元401,用于将本机上连接各网关设备的端口配置为网关口,将各网关口加入到局域网配置的所有VLAN并为每个VLAN配置VLAN虚接口信息;所述VLAN虚接口信息包括虚拟IP地址;
学习单元402,用于通过各VLAN虚接口学习各网关设备的MAC地址;
接收单元403,用于接收局域网内的主机发送的目的MAC为任一VLAN虚接口的虚拟MAC地址的报文;
处理单元404,用于接收单元403接收到局域网内的主机发送的目的MAC为任一VLAN虚接口的虚拟MAC地址的报文时,选择一个网关设备,将报文的目的MAC地址替换为该选择的网关设备的MAC地址;
发送单元405,用于定期向局域网中的主机广播发送源IP地址和源MAC地址分别为各VLAN虚拟口的虚拟IP地址和虚拟MAC地址的免费ARP报文和/或NA报文;用于处理单元404选择一个网关设备并将报文的目的MAC地址替换为该选择的网关设备的MAC地址后,将报文从连接该选择的网关设备的网关口发送出去。
上述装置中,
所述接收单元403,进一步用于接收局域网内的主机发送的ARP请求报文;
用于发送单元405,进一步用于接收单元403接收到局域网内的主机发送的ARP请求报文时,根据ARP请求报文所属VLAN确定对应的VLAN虚接口,返回源IP地址、源MAC地址分别为该VLAN虚接口的虚拟IP地址和虚拟MAC地址的ARP响应报文;
所述学习单元402在通过各VLAN虚接口学习各网关设备的MAC地址时,用于:在该VLAN虚拟口接收该网关设备发送的免费ARP报文和/或邻居公告NA报文,学习免费ARP报文和/或NA报文中携带的该网关设备的MAC地址。
上述装置中,
所述学习单元402通过各VLAN虚接口学习各网关设备的MAC地址之后,进一步用于:将学习到的各网关设备的MAC地址下发到芯片中;
所述处理单元404,用于指令所述芯片根据下发的各网关设备的MAC地址将来自局域网内的主机的报文的目的MAC地址替换为选择的网关设备的MAC地址。
上述装置中,
所述处理单元404在接收单元403接收到局域网内的主机发送的目的MAC为任一VLAN虚接口的虚拟MAC地址的报文后,选择一个网关设备时,用于:利用报文的源MAC和报文携带的VLAN标签进行hash运算,根据hash运算结果确定对应的网关设备。
上述装置还包括检测单元406;
所述检测单元406,用于对各网关口连接的网关设备接口进行故障检测;
所述学习单元402,用于检测单元检测到任一网关口连接的网关设备接口故障时,删除学习到的该网关设备的MAC地址。
综上所述,本发明具体实施例中,由于不再使用VRRP协议实现网关设备间的负载均衡,而是利用中间交换机实现网关设备间的负载均衡,减少了网关设备对VRRP协议状态维护的开销,提高了网关设备对转发流量的处理性能。另外,中间交换机通过VLAN虚拟口自动学习各网关设备的MAC地址,并在接收到局域网内的主机发送的报文时,按照负载均衡原则选择网关设备进行报文转发,可以实现网关设备间的负载均衡。此外,中间交换机还对各网关口连接的网关设备接口进行故障检测,在网关设备接口故障时,只需删除相应网关设备的MAC地址就可以避免流量再转发到该网关设备,不需要改变配置,而且,只要中间交换机本身不发生故障,局域网内主机学习到的ARP表项就始终有效。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。