一种实现网关动态负载分担和备份的方法
技术领域
本发明涉及数据通信领域,更确切地说是涉及局域网的网关实现动态负载分担和备份的方法。
背景技术
局域网通常需要通过多个网关对广域网进行访问,局域网中的主机通过网关与广域网的连接如图1所示,所有的主机101、102通过其所在的局域网103分别与所有的网关104、105连接,所有的网关104、105与广域网106、107连接,从而实现主机与广域网的连接。为保证访问的可靠性,需要这些网关具有相互备份的功能;为充分利用网关处理性能和局域网出口带宽资源,又需要这些网关能具有负载分担的功能。
虚拟路由器冗余协议(Virtual Router Redundancy Protoco1,VRRP)针对该需要提出了备份的方案,该方案使主机通过主用网关发送数据报文,如果主用网关失效,则备用网关接替主用网关发送数据。该备份方案首先在局域网中为所有网关设置一个虚拟的IP地址和介质访问控制(MAC)地址,局域网中所有主机的网关地址都指向该虚拟IP地址,主机向该虚拟IP地址发送地址解析协议(Address Resolution Protocol,ARP)请求时,主用网关以虚拟MAC地址作为其MAC地址来应答主机的ARP请求,主机收到主用网关的应答信息后,以该虚拟MAC地址作为目的地址向网关发送数据,主用网关接收并转发该数据,主用网关还需要向主机发送数据,如果主用网关中没有该主机的MAC地址,则主用网关通过自身的IP和MAC地址向该主机发送ARP请求以获得该主机的MAC地址。主用网关需要定时向备用网关发送VRRP协议报文,备用网关通过该报文监控主用网关的状态,如果备用网关连续没有收到设定个数的VRRP协议报文,则备用网关代替主用网关进行服务,实现路由器的备份功能。
在上述备份方案的基础上,还可以进一步实现负载分担,使备份网关在主用网关正常工作时也承担一部分流量,以充分利用资源。VRRP协议通过建立两个VRRP备份组来实现负载分担,该负载分担方案将所有的网关设置为两个VRRP备份组。在如图1所示的连接中,VRRP备份组1的主用网关为网关104,备用网关为网关105,VRRP备份组2的主用网关为网关105,备用网关为网关104。每个VRRP备份组对应设置一个虚拟IP地址和虚拟MAC地址,每个VRRP备份组中的所有网关对于主机而言,相当于一个IP地址和MAC地址为该虚拟IP地址和虚拟MAC地址的网关。将局域网102中一部分主机101的网关地址设定为指向VRRP备份组1的虚拟IP地址,则该部分主机101通过该组中的主用网关,即网关104与广域网106或107连接,另一部分主机102的网关地址设定为VRRP备份组2的虚拟IP地址,则该部分主机102通过该组的主用网关,即网关105与广域网106或107连接,从而完成了网关104与网关105的负载分担。在这个负载分担方案中,实现网关备份与上述备份的方法相同,每个VRRP备份组中的主用网关需要定时向备用网关发送VRRP协议报文,备用网关通过该报文监控主用网关的状态,如果备用网关连续没有收到设定个数的VRRP协议报文,则备用网关代替主用网关进行服务,因此,如果一个网关出现故障,另一个网关则成为两个VRRP备份组的主用网关,所有主机都通过该网关与广域网连接,从而实现网关的备份功能。
上述负载分担方案虽然能够同时实现网关的负载分担和备份,但是这种方案要求同一局域网中主机的网关地址指向不同VRRP备份组对应的虚拟IP地址,即主机需要通过不同的网关与广域网连接,这要求用户对不同的主机作不同的设置,必然增大用户的工作。并且,在所有的主机指定网关后,就把流量分担的模型固定了,因此该方案不能实现动态的负载分担,如果需要调整各个网关分担流量的比例关系,则需要更改主机的网关地址,而更改主机网关地址的工作十分繁琐,会给用户带来很大的麻烦。
发明内容
有鉴于此,本发明的主要目的在于提供一种实现网关动态负载分担和备份的方法,使局域网中的所有主机在通过多个网关负载分担来访问广域网的同时,不需要设定不同的网关地址,并保证了网关的备份功能。
为达到以上目的,本发明的技术方案是这样实现的:一种实现网关动态负载分担和备份的方法,局域网通过多个网关访问广域网,该方法至少包括以下步骤:
a.将所有负载分担的网关设置为一个VRRP备份组,设置该备份组的虚拟IP地址和虚拟MAC地址,将局域网中所有主机的网关地址设置为该虚拟IP地址,设置每个网关的优先级和负载分担的权值,并在每个网关中设置定时器;
b.为确定主网关MASTER和从网关SLAVER,每个网关以MASTER的身份向其他网关发送携带本网关优先级的广播ADVERTISE报文,所有网关通过比较本网关的优先级与ADVERTISE报文中携带的优先级确定本网关是MASTER或SLAVER,确定后的MASTER向SLAVER发送ADVERTISE报文,所有的SLAVER收到MASTER的ADVERTISE报文后反馈携带本网关负载分担权值的应答RESPONSE报文;
c.MASTER根据局域网中的主机报文信息和所有网关的权值分配由每个网关转发的报文,建立包含网关标识及该网关所需处理报文的相关信息的转发列表,在MASTER中保存转发列表,并将转发列表设置在ADVERTISE报文中,每个SLAVER通过ADVERTISE报文获取本网关的转发列表,并向MASTER返回RESPONSE报文;
d.MASTER判断在定时器设定时间内是否收到所有SLAVER的RESPONSE报文,如果收到了,则判断该SLAVER的权值是否改变,如果没有改变,则确认该SLAVER正确接收转发列表,每个网关根据转发列表中的报文相关信息确定并处理报文,并进入步骤e,如果权值改变,或没有收到RESPONSE报文,则返回步骤c;
e.SLAVER判断在定时器设定时间内是否收到MASTER的ADVERTISE报文,如果定时器超时后也没有收到,则返回步骤b,否则,根据转发列表转发主机报文,并返回步骤e。
该方法可以进一步包括,将每个网关设置为:如果本网关无法将主机与广域网连接,则该网关停止向其他网关发送报文。
所述步骤a中,所述网关的权值根据网关到广域网出接口的链路带宽确定。
所述步骤c中,所述主机报文信息是报文所属主机的地址信息,每个网关发送的主机报文根据局域网中主机的数目和每个网关的权值确定,每台主机通过确定的网关连接到局域网,所述转发列表中包含网关的标识和主机的地址信息。
所述主机的地址信息是主机的IP地址或MAC地址信息。
所述步骤c中,所述主机报文信息是报文的长度信息、服务类型TOS域、源端口域、目的端口域、源IP地址、目的IP地址或访问控制列表ACL规则。
所述步骤c中,所述MASTER将转发列表保存在ADVERTISE报文中,是将所有SLAVER的转发列表保存在一个ADVERTISE报文中,每个SLAVER根据转发列表中的网关标识从该报文中获取本网关的转发列表。
所述步骤c中,所述MASTER将转发列表保存在ADVERTISE报文中,是将所有SLAVER的转发列表依次保存在MASTER的每个ADVERTISE报文中,每个SLAVER根据转发列表中的网关标识判断是否从该ADVERTISE报文中获取转发列表。
所述步骤e进一步包括,MASTER判断是否收到所有SLAVER的RESPONSE报文,如果没有收到,则返回步骤c,否则,根据转发列表转发主机报文。
该方法可以进一步包括:MASTER在所述转发列表中针对每个报文信息设置一个定时器,如果在定时器设定时间内有报文需要转发,则定时器清零,否则删除该报文信息,并由MASTER重新建立转发列表。
该方法可以进一步包括,启动MASTER中的定时器,定时器超时则MASTER删除所有的主机报文信息,并重新建立转发列表。
该方法可以进一步包括,MASTER获取到新加入局域网的主机报文信息后,重新建立每个网关的转发列表,并通过ADVERTISE报文将转发列表发送给每个SLAVER。
该方法可以进一步包括,MASTER获取到新加入局域网的主机报文信息后,将新加入的主机报文信息根据每个网关的权值划分到每个网关中,并通过ADVERTISE报文将该主机报文信息发送到对应SLAVER原有的转发列表中。
该方法还可以进一步包括,在各网关进行负载分担的过程中,MASTER收到RESPONSE报文时,首先判断该报文对应的SLAVER是否是转发列表对应的网关,如果不是,则MASTER重新建立每个网关的转发列表;否则,判断该RESPONSE报文中携带的权值是否有变化,如果有,则MASTER重新建立每个网关的转发列表,否则,每个网关继续负载分担。
本发明具有以下效果:
1、通过将所有负载分担的网关设置为一个VRRP备份组,针对该备份组设置虚拟IP地址和虚拟MAC地址,使所有主机的网关地址都只指向该虚拟IP地址,解决了现有技术中需要设置不同的虚拟IP地址的问题;
2、通过确定VRRP备份组中的MASTER和SLAVER,MASTER根据局域网中的SLAVER和主机报文信息建立各个网关的转发列表,使各个网关通过该转发列表转发主机报文,如果SLAVER和主机报文信息有变化,则由MASTER重新建立转发列表,实现了各个网关之间的动态负载分担;
3、通过SLAVER对MASTER的监控,如果当前MASTER退出负载分担,能够重新确定MASTER,保证了网关之间的备份;
4、通过设置各个网关为退出负载分担时停止向其他网关发送报文的模式,扩大了各个网关实现备份切换的功能;
5、还可以根据各个网关到广域网的出接口带宽确定各个网关的权值,使各网关在负载分担时能够更合理地利用局域网的出口带宽。
附图说明
图1为局域网中的主机通过网关与广域网连接的示意图;
图2为本发明实施例中各网关实现动态负载分担的流程图。
具体实施方式
下面结合附图及具体实施例对本发明方法作进一步详细的说明。
本发明的核心思想是:将所有参与负载分担的网关组成一个VRRP备份组,设置针对该备份组的虚拟IP地址和虚拟MAC地址,所有主机的网关地址对应该虚拟IP地址,并从该组的网关中确定作为主网关的MASTER和从网关的SLAVER,MASTER根据各个网关的权值和局域网中主机报文信息建立并维护各个网关处理主机报文的转发列表,各个网关根据转发列表发送主机报文,实现负载分担,SLAVER监控MASTER的情况,一旦MASTER退出负载分担,则所有的SLAVER重新确定MASTER,从而实现备份的功能。
以图1所示的连接为例,本实施例局域网中的主机通过网关104和105与广域网连接,实现网关104和网关105动态负载分担的流程参见图2,对应以下步骤:
步骤201、根据需要设置网关104和网关105的优先级和进行负载分担的权值,并在网关中设置定时器,将这两个网关设置为一个VRRP备份组,并为该备份组设置一个虚拟IP地址和虚拟MAC地址,将局域网中所有主机的网关地址设置为虚拟IP地址。
各个网关的权值根据需要确定,如果根据网关到广域网出接口的带宽确定网关的权值,则各个网关的权值可以反映当前广域网出接口的链路带宽,因此根据各个网关权值的大小进行负载分担可以更合理地利用局域网的出口带宽,并且在改变出口带宽时可以不考虑负载分担是如何配置的。本实施例设置网关104的优先级高于网关105的优先级,设置网关104的权值为3,网关105的权值为2,所设置的VRRP备份组的虚拟IP地址即为本局域网网段内一个普通的IP地址,虚拟MAC地址是特殊的MAC地址,由电气和电子工程师协会(IEEE)统一划分。
步骤202、各个网关之间通过发送广播(ADVERTISE)报文来确定网关中的MASTER和SLAVER。
每个网关最初都认为自己是MASTER,在接入局域网时都向其余网关广播ADVERTISE报文,该报文中携带本网关的优先级,每个网关收到该ADVERTISE报文时都将报文中携带的优先级与本网关的优先级比较,如果前者的优先级高,则该网关将自己设置为SLAVER,并返回携带本网关权值的应答(RESPONSE)报文,否则,认为自己就是MASTER,定期向各个SLAVER发送ADVERTISE报文。
步骤203、MASTER根据局域网中的主机报文信息和所有网关的权值建立其分配给各个网关的转发列表。
MASTER需要设置分配给各个网关的转发列表,转发列表中需要设置对应网关的标识和该网关所需负责处理的报文信息,MASTER在将该转发列表发送给各个SLAVER时,也将该转发列表保存在MASTER中。为防止因某些报文对应的主机较长时间不发送报文而导致各个网关负载分担不均衡,可以在转发列表中的每个报文信息对应设置一个定时器,并设定一个时间范围,如果在设定的时间范围内有匹配的报文需要发送,则重置定时器,如果定时器超时且没有匹配的报文需要转发,则删除该主机报文信息,并由MASTER重新设置转发列表,还可以在MASTER上设置一个定时器,并设定一个时间范围,定时器超时后则MASTER删除所有的主机报文信息,并重新设置转发列表。
MASTER向各网关分配报文的方法有多种,可以是以主机地址作为转发列表中各个报文的索引,将同一主机中的所有报文通过某一个网关与广域网连接;由于不同网关的广域网类型和带宽可能不同,为充分利用网关,也可以根据报文的长度建立转发列表,设置报文长度为转发列表中报文的索引,使长度相近的报文通过同一网关与局域网连接;为更精确地分配各个网关所处理的业务流,还可以根据报文的服务类型(TOS)域、源或目的端口域、源或目的IP地址,或访问控制列表(ACL)规则来建立转发列表,并将此报文信息作为转发列表中各个报文的索引信息。
本实施例采用的方法是根据网关的权值分配局域网中的主机,以主机为单位向各个网关分配报文,由于局域网中所有主机发送的ARP请求都由MASTER应答,因此作为MASTER的网关104知道所有主机的MAC地址和IP地址,如果网关104得知局域网中有100台主机,并从网关105返回的RESPONSE报文中得知网关105的权值是2,而网关104的权值是3,则可以随机分配60台主机给网关104,并将这些主机的MAC地址或IP地址信息设置在分配给网关104的转发列表中,其余的40台分配给网关105,将其余主机的MAC地址或IP地址信息设置在分配给网关105的转发列表中,在转发列表中设置主机的MAC地址或IP地址信息是为了能够以该信息为索引,使各个网关能够根据该信息得知哪些主机需要通过本网关连接局域网。
在本实施例的这种方法中,如果局域网中有新的主机需要通过网关与广域网连接,则需要MASTER重新建立转发列表,但是由于一般来说增加主机不会引起所有SLAVER的转发列表的改变,因此可以设置MASTER每次通过ADVERTISE报文只携带所增加的主机信息以及所要负责发送该主机报文的网关的信息,而不是针对该网关的整个转发列表,这样不仅能够减少ADVERTISE报文对网络带宽的占用,而且能够减少该网关处理ADVERTISE报文的开销。
步骤204、MASTER将各个SLAVER的转发列表设置在ADVERTISE报文中,通过广播ADVERTISE报文将转发列表发送给各个SLAVER,并在MASTER中保存所有的转发列表,SLAVER收到转发列表后返回RESPONSE报文。
由于本实施例只有网关105是SLAVER,因此只需将分配给网关105的转发列表设置在ADVERTISE报文中,即可实现将该转发列表发送给网关105,网关105收到转发列表后,向MASTER发送携带本网关权值的RESPONSE报文。如果局域网中有多个SLAVER,则在ADVERTISE报文中设置转发列表的方法有两种:一种可以将针对每个SLAVER的转发列表依次设置在MASTER发送的多个ADVERTISE报文中,通过MASTER多次发送ADVERTISE报文将转发列表发送出去,与该转发列表对应的SLAVER根据转发列表中的SLAVER信息判断该转发列表是否是发送给自己的,如果是,则从该报文中获取转发列表,并向MASTER发送携带本网关权值的RESPONSE报文,否则抛弃该转发列表;另一种可以将所有SLAVER的转发列表都设置在一个ADVERTISE报文中,各个SLAVER根据转发列表中的SLAVER信息判断哪个转发列表是发送给自己的,接收自己的转发列表,抛弃其余的转发列表,并向MASTER发送携带本网关权值的RESPONSE报文。
步骤205~207、MASTER判断在定时器设定时间内是否收到所有SLAVER的RESPONSE报文,如果收到了,则判断该SLAVER的权值是否改变,如果没有改变,则确认该SLAVER正确接收转发列表,各个网关根据转发列表中的报文相关信息确定并发送需要本网关发送的报文;如果权值改变,或没有收到RESPONSE报文,则返回步骤203。
至此,MASTER分配转发列表的工作完成,各个网关将负载分担所有的报文。主机如果要和广域网通信,则首先通过VRRP备份组的虚拟IP地址发起地址解析协议(ARP)请求,VRRP备份组中的MASTER用虚拟MAC地址应答此ARP请求,此后主机将该虚拟MAC地址作为目的MAC地址,以自己的MAC地址作为源MAC地址与网关通信,这样所有的网关都会收到主机向VRRP备份组发送的报文,但是由于各个网关的转发列表不同,因此只有转发列表中存储了该主机信息的网关才会发送该报文,其余网关将抛弃该报文。
本发明将各个网关设置为:如果网关退出负载分担,即网关无法将主机与广域网连接,则该网关停止向其他网关发送报文。网关退出负载分担可能是由于该网关出现故障或关机,也可能是由于该网关与广域网的接口或路由的状态出现变化,导致该网关无法将主机与广域网连接。在确定了MASTER和SLAVER后,MASTER会定期向各个SLAVER发送ADVERTISE报文,SLAVER在收到ADVERTISE报文后返回RESPONSE报文,在各个网关中设置定时器,如果MASTER在定时器超时后也没有收到某个SLAVER返回的RESPONSE报文,则认为该SLAVER已经退出负载分担,MASTER需要根据现有的SLAVER重新建立各个网关的转发列表;如果SLAVER在定时器超时后也没有收到MASTER的ADVERTISE报文,则认为该MASTER已经退出负载分担,各个SLAVER重新确定本VRRP备份组中的MASTER,由该新的MASTER重新建立并发送所有网关的转发列表,由此实现了MASTER和SLAVER之间的切换,达到了备份的功能。这里MASTER和SLAVER所等待时间的长短可以根据需要设定。
如果该VRRP备份组中有新的网关加入,则该新网关认为自己是MASTER,向其余各个网关发送ADVERTISE报文,该新网关也会收到现有MASTER的ADVERTISE报文,如果是现有MASTER的优先级高,则该新网关将自己设置为SLAVER,并向现有MASTER发送RESPONSE报文;如果新网关的优先级高,则新网关认为自己是MASTER,该VRRP备份组中所有的网关都将自己设置为SLAVER,并向新的MASTER发送RESPONSE报文,这个新的MASTER再根据所有网关的信息建立转发列表,并向各个SLAVER发送,各个SLAVER收到新的转发列表后更新自己的转发列表。
MASTER在收到RESPONSE报文时,首先判断该报文来自哪个SLAVER,如果是VRRP备份组中新的SLAVER,则MASTER需要根据VRRP备份组中所有网关的权值重新建立各个转发列表,并将转发列表发送给各个SLAVER,各个SLAVER收到新的转发列表后更新原有的转发列表,为保证主机的所有报文能够正常发送,需要先向新加入的SLAVER发送转发列表,该SLAVER返回RESPONSE报文后,MASTER就可以确定该SLAVER正确接收了转发列表,与该SLAVER中的转发列表对应的主机报文可以由该SLAVER与广域网通信;如果是原有的SLAVER,则判断该SLAVER的权值是否发生了变化,如果没有变化,则不作处理,如果该权值发生了变化,则MASTER需要根据该权值重新建立VRRP备份组中各个网关的转发列表。
本发明方法在实现多网关动态负载分担和备份功能的同时,保证这些功能的实现对局域网内的主机是透明的,局域网中的主机不需要做任何特殊配置即可以通过多个网关实现负载分担和备份,在实现负载分担和备份时充分利用了广域网链路的带宽和各个网关的处理能力。