专利名称:在虚拟网关中分发和平衡流量流的制作方法
技术领域:
本发明一般地涉及如下网络系统,该网络系统利用在冗余性群组中一起工作的冗余或备用设备和负载分发布置来提供虚拟路由器服务。更具体而言,本发明涉及用于利用充当虚拟路由器的多个网关设备来控制穿过网关的流量流的分发的方法和装置。
背景技术:
多个局域网(LAN)一般通过一个或多个路由器而彼此连接,以使一个LAN上的主机(PC或其他任意的LAN实体)可以与不同LAN(即,远程或外部的网络)上的其他主机通信。通常,主机仅能够与其本地LAN网段上的实体直接通信。当它需要向其未识别为本地地址的地址发送数据分组时,它通过路由器(或其他第3层或网关设备)通信,该路由器确定如何在该主机和远程网络上的目的地地址之间引导分组。不幸的是,路由器可能由于各种原因而在“触发事件”(例如电源故障、重新启动、已安排的维护等等)后变得无法工作。这种可能的路由器失效导致了冗余系统的开发和使用,所述冗余系统具有多于一个网关设备,以在主网关设备失效时提供备份。在这样的冗余性系统中,当一个网络设备失效时,通过不工作的网关设备通信的主机仍旧可以通过向连接到该主机的LAN的另一网关设备发送分组并通过该网关设备发送分组来保持连接到其他的LAN。
逻辑上,这样的系统可能类似于图1A。在图1A中,本地网络130在主机122、124、126的传出分组想去往外部网络150(例如因特网)时,使用单个网关路由器110来转发这些分组。但是,如图1B所示,冗余性群组系统的实际物理配置使用若干路由器112、114、116、118来实现充当用于主机122、124、126的单个虚拟网关110的冗余性群组。
已设计了各种协议以允许主机从网络中的路由器群组中选择一个路由器。其中两个协议,即路由信息协议(或RIP)和ICMP路由器发现协议(IRDP),是包含主机的动态参与的协议示例。但是,由于RIP和IRDP两者都要求主机被动态包含在路由器选择中,因此会降低性能,并且可能需要对主机进行特殊的修改和管理。
在广泛使用并且稍微简单的方法中,主机仅仅识别单个“默认”路由器。使用IP协议的主机(例如工作站、用户和/或数据中心服务器)利用这种默认网关退出本地网络并访问远程网络。因此,每个主机必须预先知道网关的IP地址,网关的IP地址通常是路由器或第3层交换机的IP地址。主机或者被静态地配置以默认网关的IP地址,或者在启动时通过配置协议(例如Cisco的DHCP)被分配地址。在任意一种情况下,主机都使用相同的默认网关IP地址以用于想退出本地网络的所有网络流量。
为了向默认网关转发流量,主机必须执行IP-ARP解析以获知默认网关的数据链路媒体访问控制(MAC)地址。主机向网关的IP地址发送ARP询问,以请求获得网关的MAC地址。默认网关将通过将网关的MAC地址告知主机来响应主机的ARP请求。主机需要默认网关的MAC地址来经由数据链路层传输向网关转发网络流量。当只使用单个网关设备时,该设备返回其自身的“预烧”MAC地址(BIA MAC地址),作为用于主机的传出分组的地址。
在此方法中,主机被配置为当主机需要向其自身的LAN外部的地址发送数据分组时,它向默认路由器发送分组。它不必跟踪可用路由器或判断切换到不同的路由器。这在主机部分需要的努力很少,但是具有严重的危险。如果默认路由器失效,主机则无法将分组发送到其LAN的外部。即使存在能够进行接管的冗余路由器,也会发生这种危险,因为主机并不知晓这种备份。不幸的是,这种系统已被用在关键业务应用中。
这些早期系统的缺陷导致了冗余网关系统的开发和实现,这种冗余网关系统是针对网关设置中的失效转移(failover)而提供的。一种这样的系统是加州San Jose的Cisco系统公司的热备用路由器协议(HSRP)。关于更早期系统和HSRP类型系统的更详细论述可以在1995年12月5日授权给Cisco系统公司的题为“STANDBY ROUTER PROTOCOL”的美国专利No.5,473,599(这里称为“599专利”)中找到,这里通过参考将该专利的全部内容结合于此以用于所有目的。而且,在T.Li、B.Cole、P.Morton和D.Li的题为“Cisco Hot Standby Router Protocol(HSRP)”的RFC 2281中详细描述了HSRP,这里通过参考将该RFC的全部内容结合于此以用于所有目的。
HSRP被广泛用于备份网段的主路由器。在HSRP中,“备用”路由器被指定为“活动”路由器的备份。备用路由器被链接到由活动路由器提供服务的网段。活动路由器和备用路由器共享单个“虚拟IP地址”,并且可能共享单个“虚拟媒体访问控制(MAC)地址”,该“虚拟MAC地址”实际上一次只被一个路由器所使用。来自相关本地网络的所有互联网通信都采用该虚拟IP地址(也被称为“vIP地址”)和虚拟MAC地址(这里也被称为“vMAC地址”)。在任何给定时刻,活动路由器是正在使用虚拟地址的唯一路由器。然而,如果活动路由器出于任何原因应该中止操作,则备用路由器立即接管失效的路由器的负载(通过采用虚拟地址),从而使主机无需监控网络中的路由器,就能够一直将数据分组引导至操作中的路由器。
一般而言,HSRP系统的一个缺陷在于在任何给定时刻,仅有冗余性群组中的一个网关设备被使用。为了更好地利用这种冗余性系统中的系统资源,Cisco开发出网关负载平衡协议(GLBP),该协议是2001年6月18日递交的题为“GATEWAY LOAD BALANCING PROTOCOL”的共同拥有且同时待审的美国专利申请No.09/883,674的主题,这里通过参考将该申请的全部内容结合于此以用于所有目的。
这里应该注意,术语“网关负载平衡协议”稍微有些用词不当(或至少不太精确)。虽然冗余性群组中的成员共享流量流,但穿过网关的每秒的流量负载在本质上并不存在“平衡”。真实情况是,冗余性群组中的成员共享流量负载意味着对所有流量的责任并没有由单个网关设备承担。但是,术语“负载共享”和“负载分发”更准确地描述了这些较早期系统的实际实现方式。因此,这里的术语“负载共享”和“负载分发”等指的是以下能力将传出流量分配给多个网关设备,以使单个网关设备不用对来自LAN上的所有主机的所有外出分组负责。(为了参考先前递交的专利申请和这里依据的其他公布,这里仍旧将使用缩写GLBP来指代早期的由Cisco系统公司开发的基本底层负载共享协议。)与HSRP类似,对于去往LAN外部的通信,GLBP使用被多个冗余性群组网关设备(例如路由器)共享的单个vIP地址,这些网关设备也维护着实际的IP地址(也被称为“aIP地址”)。每个网关设备还具有其自身的BIA(实际的)MAC地址(这里也被称为“aMAC地址”)和单个虚拟MAC地址。vMAC地址的使用使得无需对系统重新编程就可实现路由器的可交换性。
每个GLBP系统在冗余性群组中具有一个“主”网关设备(这里也被称为“活动虚拟网关”或AVG设备),该网关设备控制地址分配(ARP响应)和失效转移特征。AVG指导发出ARP请求的主机将传出通信定向到分配给冗余性群组网关设备之一的虚拟MAC地址(根据标准GLBP命名法和操作,未充当主设备的网关设备可以被称为“备用”和/或“从”网关设备)。正在转发分组的任何网关设备在这里被称为“活动虚拟转发器”或AVF设备。因此,每个冗余性群组具有一个AVG设备和一个或多个AVF设备。
更具体而言,当主机希望向本地网络外部发送分组时,主机向冗余性群组的虚拟IP地址发送ARP消息。AVG选择用于处理主机的传出分组的AVF并向主机发送回复消息,该回复消息包含由AVG选择的AVF的vMAC。主机利用该vMAC地址填充其ARP缓存。此后,主机将外出分组定向到其ARP缓存中的vMAC地址,从而将这些分组发送到分配的AVF/路由器。
在早期系统中,通过随机分配、轮询分配或通过使用另一预定的算法或方法给主机分配vMAC地址。在群组中已分配的AVF失效的情况下,将由失效的AVF处理的传出通信不得不被发送到别处。在最初分配的AVF失效之后,失效的AVF的vMAC地址被重新分配给另一路由器,例如充当AVF的另一路由器。此后,来自主机(以及向重新分配的vMAC地址发送分组的任意其他主机)的传出分组被改为路由到新分配的vMAC地址的新所有者。在AVG本身失效的情况下,采取附加步骤来指定或选出新的AVG,并确保负载分发功能的连续性。但是,如果一个或多个网关设备承担流量负载中过多部分,则无法平衡这种负载共享能力,来控制流过网关设备的流量在网关处的(平均或其他方式的)分发。
鉴于此,则希望为来自本地网络外部的通信提供网关负载平衡服务,而且同时确保本地网络仍旧可获得冗余的负载共享网关服务。
发明内容
本发明提供了用于利用充当虚拟路由器的多个网关设备来控制穿过网关的流量流的方法、装置、产品、技术和系统。在冗余性群组中的网关设备通过向网关设备分发转发地址(例如虚拟MAC地址)来共享对来自主机的传出分组的责任,其中主机是响应于ARP请求而被引导至所述网关设备的。
本发明的一个方面在于控制负载共享冗余性群组中的流量流的方法,其中负载共享冗余性群组包括第一网关设备和第二网关设备,其中网关设备被配置用于转发从主机发送的分组。一组转发地址被分配给第一网关设备,而第二组转发地址被分配给第二网关设备。冗余性群组向主机分发转发地址,主机进而使用已分发的转发地址向冗余性群组发送分组。针对已分配的转发地址中的每个转发地址的流量流被测量,并在某些情况下,所测得的流量流可以与目标流量流相比较,目标流量流可以是冗余性群组成员之间的期望流量平衡。所测得的流量流和目标流量流之间的比较可能不一定与某些目标流量流相结合。
然后调整流量流以靠近目标流量流。流量流的调整可通过以下方式来实现或者通过改变现有的所测得的流量流(例如通过将一个网关设备上具有某一所测得的流量的转发地址重新分配给另一网关设备),或者通过改变未来的转发地址分发,以使附加的流量被发送到具有较低所测得流量的转发地址。网关设备可以是将虚拟MAC地址用作转发地址的路由器。冗余性群组还可被配置用于在网关设备之一中止操作的情况下提供失效转移服务。具有机器可读介质以及包含在机器可读介质中的程序指令的计算机程序产品可以指定这些用于控制负载共享冗余性群组中的流量流的方法中的一种或多种。类似地,用于执行这些控制负载共享冗余性群组中的流量流的方法的装置也被公开。
本发明的另一方面涉及被配置用于控制负载共享冗余性群组中的流量流的主网关设备,所述负载共享冗余性群组具有被配置用于转发从主机发送的分组的主网关设备和次网关设备。主网关设备具有一个或多个处理器以及与处理器中的至少一个通信的存储器。处理器中的至少一个和存储器被配置用于将第一组转发地址分配给主网关设备,并将第二多个转发地址分配给次网关设备。主网关设备向主机分发转发地址,主机使用已分发的转发地址向虚拟网关发送传出分组。针对每个网关设备中的每个已分配的转发地址的流量流被测量,并且在某些情况下,所测得的流量流可与目标流量流相比较。然后调整流量流。
流量流的调整可由主网关设备通过以下方式来完成或者通过改变现有的所测得的流量流(例如通过将一个网关设备上具有某一所测得的流量的转发地址重新分配给另一网关设备),或者通过改变未来的转发地址分发,以使附加的流量被发送到具有较低所测得流量的转发地址。主和次网关设备可以是将虚拟MAC地址用作转发地址的路由器。冗余性群组还可以被配置用于在网关设备之一中止操作的情况下提供失效转移服务。
在本发明以下的说明书和相关附图中将详细描述本发明的这些和其他特征和优点。
通过结合附图参考以下描述,可以最好地理解本发明,在附图中图1A是用于LAN中的主机的网关服务的逻辑结构的示意图。
图1B是图1A所示的网关服务的物理结构的示意图,其中多个网关设备被用在冗余性群组中以提供恢复能力(resiliency)。
图2是利用本发明的虚拟网关的示意图,在该虚拟网关中,若干网关设备既可用于引导去往本地网络外部的流量,又可用于控制去往冗余性群组成员的流量流。
图3是示出通过将一个转发地址从一个网关设备重新分配到另一网关设备来调整虚拟网关中的流量流的示意图。
图4是示出通过将两个转发地址从一个网关设备重新分配到另一网关设备来调整虚拟网关中的流量流的示意图。
图5是示出通过向主机分发低流量流转发地址来调整虚拟网关中的流量流的示意图。
图6是可在其中实现本发明的实施例的网关设备(例如路由器)的图形表示。
具体实施例方式
1.定义现在将详细参考本发明的优选实施例。在附图中示出了优选实施例的示例,其中利用了由Cisco系统公司开发、销售和/或使用的产品、协议、方法、系统和其他技术。虽然将结合优选实施例描述本发明,但是将会理解,本发明不希望被局限在一个优选实施例,或局限在其单独结合Cisco的产品和系统的实现方式。相反,以下描述希望覆盖包括在由所附权利要求书限定的本发明的精神和范围内的替换、修改和等同物。在以下描述中,为了提供对本发明的全面理解,将提出多个特定细节。本发明无需这些特定细节中的某些或全部也可以被实现。在其他实例中,没有详细描述公知的过程操作,以免不必要地模糊本发明。
以下术语用于本说明书。它们的定义用于帮助理解所述优选实施例,而非不必要地限制本发明的范围。
“主机”是位于LAN上的PC或其他任意的网络实体,它通过路由器或网桥来周期性地与该主机所在LAN外部的网络实体通信。在本公开中可等同地使用术语“用户”。
“路由器”是一种工作在网络层上的硬件,它用于在网络中的各个LAN或WAN之间引导分组。网络层一般允许网络中的成对实体通过找到穿过一系列相连节点的路径来彼此通信。在本公开中可以使用的其他术语包括“第3层交换机”、“第3层设备”和“网关设备”,这些术语不一定与路由器相同,但可以以与路由器相同的方式工作在与路由器相同的位置上。这些术语中的任意和全部希望被尽可能宽地理解,除非被更窄地具体限定。
“IP(因特网协议)地址”是工作在IP协议族中的设备的网络层地址。IP地址通常是32位字段,其中的至少一部分包含与其特定网段相对应的信息。因此,路由器的IP地址可根据其在网络中的位置而改变。被称为“唯一的”IP地址可以是全球唯一的,也可以是针对其希望的用途(例如在如下的受限网络环境中在该网络环境中,全球唯一的IP地址是不必要的,但是在本地网络上使用的本地IP地址不足够唯一)是足够唯一的。
“MAC地址”是数据链路层设备地址,如负责处理特定类型的LAN的特有问题的IEEE 802委员会所定义的。可用MAC地址的LAN的类型包括令牌环、FDDI和以太网。MAC地址一般希望被应用到特定的物理设备,无论它在何处被插入网络。因此,MAC地址一般是被硬编码到设备中,例如被硬编码到路由器的ROM上。这应该与上述网络层地址的情况相区分,网络层地址会根据设备被插入到网络中的位置而改变。而且,真实MAC地址(例如“预烧地址”或BIA MAC地址)可以与“虚拟地址”(如下所述)相区分,“虚拟地址”可以包括虚拟MAC地址。
“虚拟地址”通常(但不一定)是与一个虚拟实体相对应的一组真实网络实体所共享或能够共享(例如经由通过重新分配的地址的可便携性)的地址。例如,在本发明的上下文中,来自两个或更多个真实路由器中的一个真实路由器通过采用虚拟地址(例如虚拟IP地址)来仿真虚拟路由器,并且另一实体(通常是主机)被配置为向这样的虚拟地址发送数据分组,而不管当前是哪个真实路由器在仿真虚拟路由器。在优选实施例中,虚拟地址可以包含MAC和IP地址。通常,群组中的各个成员都具有采用虚拟地址来仿真虚拟实体的能力。
“分组”是包括了源和目的地节点地址的数据和控制信息的集合,分组被格式化以从一个节点向另一节点传输。在本发明的上下文中,需要注意,一个LAN上的主机通过连接多个LAN的路由器或网桥向另一LAN上的主机发送分组。
2.概述本发明的实施例使用多个网关设备,这些网关设备中的每一个已被分配了一组转发地址,其中每个转发地址包括一个或多个转发地址(例如vMAC或其他MAC地址)以控制由主机通过多个网关设备发送的分组所构成的流量流的分发,其中多个网关设备充当用于与本地子网外部通信的一个或多个虚拟网关。本发明的一个实施例使用vMAC地址从一个网关设备到另一网关设备的重新分配来将分配给该vMAC地址的流量从前者网关设备转移到后者网关设备。本发明的另一实施例使用地址解析协议(ARP)过程期间vMAC地址的分配来将更多流量分配到需要更高流量流的一个或多个vMAC地址。在结合附图阅读了本公开之后,本领域技术人员将明确本发明的其他实施例和变化。
更具体而言,本发明可被用于控制流量负载在多个网关设备之间的分发(例如负载平衡),其中多个网关设备是作为共享一个虚拟IP地址的冗余性群组中的成员。以vMAC地址为目的地的流量流数据被收集器(例如Cisco的Netflow,其被修改为维持针对每个虚拟MAC地址而非群组vIP地址接收到的数据分组和字节的数量)所测量,该收集器收集由冗余性群组的vIP地址接收到的分组的流量流数据。该数据可以由冗余性群组中的网关设备共享,并可以基于可用流量数据执行调整,以实现可包括所需负载共享和/或分发特性(例如维持基本平均的流量负载的平衡)的目标流量流。本领域技术人员将意识到,可以使用各种数据收集和数据共享技术,并且用于实现本发明的不同的负载共享和平衡标准因此被包括在本发明的范围内。
在本发明的一个实施例中,所测得的流量流数据包括基于每个目的地(即诸如vMAC或其他MAC地址之类的转发地址)的流量比率。每个网关设备可定期轮询它自己的如图2所示的流量数据收集器250(或其他任意合适的流量数据收集器,例如用于冗余性群组所有成员的单个流量数据收集器)以测量针对分配给该网关设备的每个转发地址的流量流比率。所测得的流量流数据可被附加到GLBP Hello消息,或以任意其他合适的方式被发送到其他网关设备或控制网关设备(例如AVG)。因此,在任何给定时刻,至少一个冗余性群组路由器(或其他网关设备)知道所测得的流量流(即,正在向冗余性群组中的每个转发地址发送多少流量)。
在如图2所示的本发明的实施例中,冗余性群组是利用路由器212、216作为网关设备的GLBP群组(但是,将本发明的应用扩展到包含多于两个网关设备的冗余性群组对本领域技术人员来说是显而易见的)。在GLBP群组中的每个路由器212、216是AVF,并最初被分配了一组vMAC地址。这些vMAC地址被主机用作转发地址,这些转发地址已在ARP回复中分发给主机。在现有系统中,每个AVF/网关设备仅被分配单个vMAC地址。在这样的现有系统中,AVF的vMAC地址只有在使AVF停止转发发送到其的分组的触发事件之后才会被重新分配(即,被转移到不同的网关设备)。
在如图2所示的本发明的实施例中,通过回复来自主机的ARP请求,AVG 212利用由冗余性群组210实现的虚拟网关控制向主机分发vMAC地址。利用本领域技术人员公知的服务和/或协议,冗余性群组中的成员可被告知GLBP群组中的哪个路由器是该群组的AVG。当新的网关设备进入服务时,它可以注册到AVG以接收一组初始的vMAC地址。如本领域技术人员将意识到的,可使用其他方法来执行初始vMAC地址的分配。
如图2所示,虚拟网关210由两个实际网关设备(路由器)212和216构成。每个网关设备具有aIP地址、aMAC地址和一组两个或更多个虚拟MAC地址(也被称为vMAC地址),这些虚拟MAC地址被用作转发地址并在最初分配给网关设备。在冗余性群组210中的网关设备共享vIP地址10.0.0.100。如图所示,网关设备212使用aIP地址10.0.0.254、aMAC地址0000.0C12.3456和5个不同的vMAC地址(其范围从0007.B400.0101到0007.B400.0105);网关设备216使用aIP地址10.0.0.252、aMAC地址0000.0CDE.F123和5个不同的vMAC地址(其范围从0007.B400.0106到0007.B400.0110)。
由虚拟路由器210提供服务的本地子网230包括主机222、224和226,其中每个主机具有IP地址和MAC地址。例如,主机224具有IP地址10.0.0.2和MAC地址AAAA.AAAA.AA02。与某些现有的GLBP系统相同,主机可能已被预先编程以虚拟路由器的网关地址(在此情况下是10.0.0.100)。与标准Cisco GLBP系统类似的装置和ARP解析协议可结合本发明被使用。
例如,当主机224向网关IP地址(例如10.0.0.100)发送ARP请求(如箭头步骤241所指示)时,只有AVG 212做出响应,从而在步骤242处,将当前分配给网关设备216的转发地址之一(例如vMAC地址0007.B400.0108)分发给发出请求的主机224。在步骤243处,主机224缓存该vMAC地址作为与默认网关IP地址相对应的MAC地址,然后在步骤244处,将想去往LAN外部网络的分组发送到经缓存的vMAC地址,该MAC地址当前是分配给网关设备216的。
如图2所示,利用类似的ARP技术,主机222已经缓存了vMAC地址0007.B400.0104(当前分配给网关设备212的vMAC地址),而主机226已经缓存了vMAC地址0007.B400.0102(当前分配给网关设备212的vMAC地址)。本领域技术人员将意识到,在这种配置中可以包括附加的主机、网关设备和/或vMAC地址。增大网关中每个网关设备的vMAC地址的数量提高了对给定网关的负载控制的粒度,从而提供了对网关的流量负载分发的控制的“更细微调整”。
AVG可以以各种方式回复ARP请求,从而向主机分发vMAC地址。例如,当最初回复来自主机的ARP时,AVG可以首先使用轮询算法、随机分发算法或其他技术或算法来尽可能平均地向主机分发vMAC地址。如下面更详细论述的,向vMAC地址分配流量的方式可以随时间改变或可以保持不变。如果vMAC地址以相对平均的初始分发在ARP回复中被分发给主机,并且每个主机正在向它已分配的vMAC地址发送相同的流量负载,那么在图2的示例中示出的vMAC地址和网关设备的流量负载将相同,如表1所示。
表1
但是,流量负载可以随时间改变。例如,某些主机可能更多地使用网关,某些主机可能中止向它缓存的vMAC地址发送分组,等等。作为结果,在图2中的网关设备之一(或更精确的说,分配给网关设备的vMAC地址中的一个或多个)可能最终转发的流量比另一网关设备更多,表2中示出了这种情况的一个示例。
表2
本发明的一个实施例将所测得的流量流与目标流量流相比较,然后通过将一个或多个转发地址从流量流的量较高的网关设备重新分配到流量流的量较低的网关设备来调整流量流,从而靠近或实现构成网关的网关设备的目标流量流。所测得的流量流和目标流量流之间的比较可以在AVG中执行、在AVF中执行或在冗余性群组外部的比较器中执行。如果转发地址的重新分配被用于调整冗余性群组的流量流,则可以在网关设备的流量流数据收集器250(它例如可以是具有存储器和处理器的CPU 662,如图6所示)中执行所测得的流量流和目标流量流之间的比较。同样,本领域技术人员将意识到,如果流量流的调整被执行,那么在本发明的任意实施例中,该调整可以由AVG、AVF或冗余性群组内部或外部的任意合适的设备中执行。如果流量在虚拟网关中的所有网关设备间的平均分发是目标流量流,则在表2中呈现的所测得的流量流可以以若干方式来改变。
根据本发明的一个实施例,如图3所示,流量信息或数据(例如在GLBP接口上收集到的流量统计信息,该流量统计信息记录了流量在每个目的地MAC地址上的比率,从而使被发送到每个vMAC地址的流量的量可以被比较)是通过hello消息310在网关设备212、216间交换的。基于由网关设备(例如每个网关设备212、216中的数据收集器250)收集并在网关设备间交换的数据,可以通过如下方式调整所测得的流量流在步骤320处,将地址0007.B400.0101从网关设备212的转发地址组重新分配到网关设备216的转发地址组,从而得到如表3和图3所示的vMAC地址分配和流量负载分发。这种流量到较低量网关设备的重新分配对图3中的主机222、224、226是透明的,并且不会影响由主机222、224、226生成的流量,并且vMAC地址的重新分配也不会影响在每个主机中缓存的vMAC地址。此外,AVG无需改变其分配算法或方法,因为如果需要,流量流将通过重新分配被调整以补偿未来的不平衡。
表3 本发明的另一个使用vMAC地址转移来调整流量流的实施例对于未来平衡允许更大的灵活性。如图4所示,当在410处交换流量数据之后,在420处,有多于一个vMAC地址可以被重新分配,例如vMAC地址0007.B400.0102和vMAC地址0007.B400.0105,从而将负载的20%转移到网关设备216,但是为了晚些时候对负载进行“更细微调整”,应该在需要时使部分负载移回网关设备212。所产生的vMAC地址分配和所测得的流量流如图4和表4所示。在此情况下,流量向较低量网关设备的转移意味着在步骤430处由主机226发送的分组现在将由网关设备216转发,而不是由网关设备212转发,网关设备212先前负责转发来自主机226的分组。
表4 在本发明的另一实施例中,系统可以通过改变向主机分发转发地址的方式,而不是通过向不同的网关设备重新分配一个或多个转发地址来调整流量流。例如,在以上表1和2所示的示例中,使用中的vMAC地址因此保持分配给它们最初被分配到的那些网关设备中的转发地址组。但是,ARP回复算法生成包含网关设备中的一个或多个转发地址的回复以调整流量流。换句话说,无论最初使用什么算法或方法向主机分配vMAC地址,ARP回复都可被用于通过改变来自一个或多个主机的未来分组的目的地来调整所测得的流量流。
根据最初向主机分发转发地址而得到的通常相同的流量流可以改变,如结合上述表1和2所论述的那样。例如利用表2所示的统计性数据和图5所示的方法,可以调整流量流以校正所测得的流量流和目标流量流(这里是流量在网关设备212、216间的平均分发)之间的差异。该方法在510处以现有的所测得流量流开始。当主机在520处发出ARP请求时,在530处首先找到最低流量流网关设备。然后在该网关设备上找到最低流量流转发地址。在540处,AVG通过以该“最低百分比”转发地址作为主机应该向其发送传出分组的转发地址作出回复,来响应于主机的ARP询问。
在表2所示的情况下,以具有最低流量流的网关设备中具有最低流量流的vMAC地址来响应ARP请求,在此情况下,AVG 212将以AVF 216中的vMAC地址0007.B400.0108进行回复。AVG 212可以继续使用该转发地址分发算法或方法,直到在网关设备212和网关设备216上的所测得流量流处于预定的百分比或阈值之内(例如直到在每个网关设备上的流量负载至少为总流量负载的45%)为止。如果新流量被引导至vMAC地址0007.B400.0108,则其他vMAC地址中的一个或多个上的所测得流量负载将至少略微减少,这是因为新分发的地址获得了更多的主机流量。AVG212可以通过执行这种ARP分配来继续调整流量流以靠近或保持目标流量流。
如本领域技术人员将意识到的,这种“低百分比”分配方法可以从冗余性群组210的操作开始时起使用,以建立和维持网关设备群组间通常平均的流量流分发。如果AVG总是分发最低流量流网关设备中的最低流量流转发地址,则系统将在某种程度上自我调整,这是因为当主机发出对转发地址的ARP请求时,系统将把所测得的流量流与目标流量流相比较,并且将仅仅通过分发“低百分比”转发地址来调整流量流。如果所测得的流量流距离目标流量流相差太大,则可以使用上述通过重新分配一个或多个vMAC地址来调整流量流以校正总的差异。这种低百分比地址分发和校正性重新分配的混合利用在建立、维持和调整流量流以控制冗余性群组中的流量时既简单又有效。
例如,AVG可以将新流量仅分配给一个vMAC地址,直到该vMAC地址上的流量负载超过更低量网关设备上的次低负载为止。在图2中,如果在vMAC地址0007.B400.0108上的流量负载增大到超过5.0%的水平,AVG则可以开始以vMAC地址0007.B400.0107或0007.B400.0110来回复ARP请求,这里假设它们的流量流低于0007.B400.0108的流量流,并且穿过AVF 216的流量流仍旧低于AVG 212的流量流。该技术不仅平衡了网关设备212和216之间的流量负载,还有助于平衡各个vMAC地址之间的负载,如果需要平衡vMAC地址之间的负载的话。
在通过分发低流量流转发地址来解决距离目标流量流的差异的实施例中,可以通过在每个网关设备的转发地址组中使用更多转发地址来实现对流量流的更细微调整。如本领域技术人员将意识到的,假设主机定期发送对vIP地址的ARP请求,则可设想每个网关设备只可以操作一个转发地址。如果不是这种情况下,则利用转发地址的重新分配对流量流的调整将更加有效,这是因为只要检测到不平衡就可以抢先执行校正,而不用等待来自主机的ARP请求来开始流量流调整。
对本领域技术人员来说,各种类型的转发地址将是显而易见的。即使在最简单的实现方式中,vMAC地址都是合乎需要的,这是因为利用vMAC地址,网关设备可以被容易地替换和/或添加,而无需利用新的MAC地址信息来重新编程整个系统。新的网关设备仅仅在被安装到冗余性群组中时被分配一组新的包含一个或多个vMAC地址的转发地址。冗余性群组中多个vMAC地址的使用使冗余性群组中的网关设备的数量能够被容易地扩展,并且还易于调整群组的操作。每个网关设备内的多个vMAC地址的使用提供了对单独的网关设备上的流量分发的更细微调整,而不会大大增加系统的复杂性。
本领域技术人员将意识到,用在给定设置中的冗余性协议的选择可能受到各种因素的影响。但是,无论选择什么协议,本发明都可以通过适当地选择冗余性协议和系统需求而被实现在虚拟路由器群组或其他冗余性群组中,从而可以获得所需性能。
一般而言,用于实现本发明的技术可以在软件和/或硬件上实现。例如,这些技术可被实现在操作系统内核中、分离的用户进程中、绑定到网络应用的库程序包中、特别构建的机器上或者网络接口卡上。在本发明的特定实施例中,本发明的技术被实现在诸如操作系统或运行在操作系统上的应用程序之类的软件中。
本发明的软件或软件/硬件混合分组处理系统优选地被实现在通用可编程机器上,这种通用可编程机器可由存储在存储器中的计算机程序来有选择地激活或重配置。这样的可编程机器可以是被设计用于处理网络流量的网络设备。这样的网络设备通常具有多个网络接口,例如包括帧中继和ISDN接口。这种网络设备的特定示例包括路由器和交换机。例如,本发明的分组处理系统可以是特殊配置的路由器,例如可从加州San Jose的Cisco系统公司获得的特殊配置的路由器型号1600、2500、2600、3600、4500、4700、7200、7500和12000。这些机器中的某些的一般体系结构将从以下描述中变明显。在替换实施例中,系统可被实现在通用网络主机机器上,例如个人计算机或工作站上。此外,本发明可被至少部分地实现在用于网络设备或通用计算设备的卡(例如接口卡)上。
现在参考图6,适合于实现本发明的路由器610包括主中央处理单元(CPU)662、接口668和总线615(例如PCI总线)。当在适当的软件或固件的控制下动作时,CPU 662负责诸如路由表计算和网络管理之类的路由器任务。它还可以负责网络地址转换、虚拟网关操作等等。它优选地在包括操作系统(例如Cisco系统公司的因特网操作系统(IOS.RTM.))和任意适当的应用软件在内的软件的控制下完成所有这些功能。CPU 662可以包括一个或多个处理器663,例如来自Mototola微处理器族的处理器或来自MIPS微处理器族的处理器。在替换实施例中,处理器663是特别设计的用于控制路由器610的操作的硬件。在优选实施例中,存储器661(例如非易失性RAM和/或ROM)也构成CPU 662的一部分。但是,可以有很多不同的方式将存储器耦合到系统。
接口668通常是作为接口卡(有时被称为“线路卡”)提供的。一般,它们控制网络上数据分组的发送和接收,有时还支持路由器610使用的其他外设。可以提供的接口包括以太网接口、帧中继接口、电缆接口、DSL接口、令牌环接口等等。另外,可以提供各种甚高速接口,例如快速以太网接口、千兆位以太网接口、ATM接口、HSSI接口、POS接口、FDDI接口等等。一般,这些接口可以包括适合于与适当的媒体通信的端口。在某些情况下,它们可以还包括独立的处理器,并且在某些示例中,还包括易失性RAM。独立处理器可以控制诸如分组交换、媒体控制和管理之类的通信密集型任务。通过为通信密集型任务提供分离的处理器,这些接口使主微处理器662能够高效地执行路由计算、网络诊断、安全性功能等等。
虽然图6所示的系统是本发明的一个优选路由器,但是它并不意味着本发明只可以在网关设备或路由器的体系结构上实现。例如,可以使用具有用于处理通信和路由计算等的单个处理器的体系结构。此外,其他类型的接口和媒体也可以用于路由器。
无论网络设备的配置是怎样的,它都可以采用一个或多个存储器或存储器模块(包括存储器661),这些存储器或存储器模块被配置用于存储用于这里所述的地址转换操作和通用网络操作的程序指令。程序指令例如可以控制操作系统和/或一个或多个应用程序的操作。存储器还可被配置用于存储相关的状态信息、数据结构等等,例如这里所述的所测得的流量流数据和目标流量流数据以及转发地址。
由于这样的信息和程序指令可被用于实现这里所述的系统/方法,因此本发明涉及包括用于执行这里所述的各种操作的程序指令、状态信息等等的机器可读介质。机器可读介质的示例包括,但不局限于磁介质,例如硬盘、软盘和磁带;光介质,例如CD-ROM盘;磁光介质,例如光盘;以及被特别配置用于存储和执行程序指令的硬件设备,例如只读存储设备(ROM)和随机访问存储器(RAM)。本发明还可被包含在通过适当的介质传播的载波中,例如无线电波、光线路、电线路等等。程序指令的示例既包括诸如由编译器产生的机器代码,又包括包含可由计算机利用解释器执行的更高级代码的文件。
虽然为了清楚理解已经详细描述了本发明,但是很明显,在所附权利要求书的范围内可以实现某些改变和修改。因此,所描述的实施例应被看作示例性的而非限制性的,并且本发明不应被局限于这里给出的细节,而应该由所附权利要求书及其等同物的全部范围来限定,无论它们在现在或未来是可预知的还是不可预知的。
权利要求
1.一种用于控制负载共享冗余性群组中的流量流分发的方法,所述负载共享冗余性群组包含被配置用于转发从主机发送的分组的第一网关设备和第二网关设备,所述方法包括将第一多个转发地址分配给所述第一网关设备;将第二多个转发地址分配给所述第二网关设备;向主机分发将在向所述冗余性群组发送分组时使用的转发地址;所述主机使用已分发的转发地址来发送分组;测量针对已分配的转发地址中的每个转发地址的流量流;将所测得的流量流与目标流量流相比较,以及调整所述流量流。
2.如权利要求1所述的方法,其中每个转发地址是MAC地址。
3.如权利要求2所述的方法,其中每个MAC地址是vMAC地址。
4.如权利要求1所述的方法,其中调整所述流量流的步骤包括改变向主机的转发地址分发。
5.权利要求4所述的方法,其中改变向主机的转发地址分发的步骤包括利用具有最低的所测得的流量流的网关设备上的具有最低的所测得的流量流的转发地址来回复来自主机的ARP询问。
6.如权利要求1所述的方法,其中调整所述流量流的步骤包括将转发地址重新分配到另一网关设备。
7.如权利要求1所述的方法,其中所述第一网关设备是第一路由器,而所述第二网关设备是第二路由器。
8.如权利要求1所述的方法,其中所述冗余性群组被配置用于在所述网关设备之一中止操作的情况下提供失效转移服务。
9.如权利要求1所述的方法,其中所述目标流量流是流量在所述第一网关设备和所述第二网关设备间的平均分发,并且其中调整所述流量流的步骤包括调整穿过所述第一网关设备和所述第二网关设备的流量流以在所述第一网关设备和所述第二网关设备之间更平均地分发所述所测得的流量流。
10.一种用于控制负载共享冗余性群组中的流量流的方法,所述负载共享冗余性群组包含被配置用于转发从主机发送的分组的第一网关设备和第二网关设备,所述方法包括将第一地址组分配给所述第一网关设备,其中所述第一地址组包括多个转发地址,并且其中所述第一网关设备被配置用于转发由主机发送并且去往所述第一地址组中的转发地址的分组;将第二地址组分配给所述第二网关设备,其中所述第二地址组包括多个转发地址,并且其中所述第二网关设备被配置用于转发由主机发送并且去往所述第二地址组中的转发地址的分组;测量去往每个转发地址的流量流;利用已分配的转发地址组之一中的转发地址之一来调整所测得的流量流。
11.如权利要求10所述的方法,其中调整所述流量流的步骤包括指导主机使用具有最低的所测得的流量流的网关设备上的具有最低的所测得的流量流的已分配的转发地址。
12.如权利要求10所述的方法,其中所述转发地址是vMAC地址。
13.如权利要求10所述的方法,其中所述第一网关设备是第一路由器,而所述第二网关设备是第二路由器。
14.如权利要求10所述的方法,其中调整所述流量流的步骤包括将转发地址之一从所述第一地址组重新分配到所述第二地址组。
15.一种计算机程序产品,包括机器可读介质;以及包含在所述机器可读介质中的程序指令,所述程序指令指定用于控制负载共享冗余性群组中的流量流的方法,所述负载共享冗余性群组包含被配置用于转发来自主机的分组的第一网关设备和第二网关设备,所述方法包括将第一多个转发地址分配给所述第一网关设备;将第二多个转发地址分配给所述第二网关设备;所述冗余性群组向主机分发将在向所述冗余性群组发送分组时使用的转发地址;所述主机使用已分发的转发地址来发送分组;测量针对已分配的转发地址中的每个转发地址的流量流;将所测得的流量流与目标流量流相比较,以及调整所述流量流。
16.如权利要求15所述的计算机程序产品,其中所述负载共享冗余性群组实现了Cisco GLBP,并且其中所述第一网关设备是第一路由器,而所述第二网关设备是第二路由器。
17.如权利要求15所述的计算机程序产品,其中每个转发地址是MAC地址。
18.如权利要求17所述的计算机程序产品,其中每个MAC地址是vMAC地址。
19.如权利要求15所述的计算机程序产品,其中调整所述流量流的步骤包括改变向主机的转发地址分发。
20.如权利要求19所述的计算机程序产品,其中改变向主机的转发地址分发的步骤包括利用具有最低的所测得的流量流的网关设备上的具有最低的所测得的流量流的转发地址来回复来自主机的ARP询问。
21.如权利要求15所述的计算机程序产品,其中调整所述流量流的步骤包括将转发地址重新分配到另一网关设备。
22.如权利要求15所述的计算机程序产品,其中所述冗余性群组被配置用于在所述网关设备之一中止操作的情况下提供失效转移服务。
23.如权利要求15所述的计算机程序产品,其中所述目标流量流是流量在所述第一网关设备和所述第二网关设备间的平均分发,并且其中调整所述流量流的步骤包括调整穿过所述第一网关设备和所述第二网关设备的流量流以在所述第一网关设备和所述第二网关设备之间更平均地分发所述所测得的流量流。
24.一种用于控制负载共享冗余性群组中的流量流的装置,所述负载共享冗余性群组包含被配置用于转发从主机发送的分组的第一网关设备和第二网关设备,所述装置包括用于将第一多个转发地址分配给所述第一网关设备的装置;用于将第二多个转发地址分配给所述第二网关设备的装置;用于向主机分发将在向所述冗余性群组发送分组时使用的转发地址的装置;用于使所述主机使用已分发的转发地址来发送分组的装置;用于测量针对已分配的转发地址中的每个转发地址的流量流的装置;用于将所测得的流量流与目标流量流相比较的装置,以及用于调整所述流量流的装置。
25.如权利要求24所述的装置,其中所述用于调整流量流的装置包括用于改变向主机的转发地址分发的装置。
26.如权利要求24所述的装置,其中所述用于改变向主机的转发地址分发的装置包括用于利用具有最低的所测得的流量流的网关设备上的具有最低的所测得的流量流的转发地址来回复来自主机的ARP询问的装置。
27.如权利要求24所述的装置,其中所述用于调整流量流的装置包括用于将转发地址重新分配到另一网关设备的装置。
28.如权利要求24所述的装置,其中所述冗余性群组被配置用于在所述网关设备之一中止操作的情况下提供失效转移服务。
29.如权利要求24所述的装置,其中所述目标流量流是流量在所述第一网关设备和所述第二网关设备间的平均分发,并且其中所述用于调整流量流的装置包括用于调整穿过所述第一网关设备和所述第二网关设备的流量流以在所述第一网关设备和所述第二网关设备之间更平均地分发所述所测得的流量流的装置。
30.一种被配置用于控制负载共享冗余性群组中的流量流的主网关设备,所述负载共享冗余性群组包含被配置用于转发从主机发送的分组的所述主网关设备和第二网关设备,所述网关设备包括一个或多个处理器;与所述处理器中的至少一个通信的存储器,其中所述处理器中的至少一个和所述存储器被配置用于将第一多个转发地址分配给所述主网关设备;将第二多个转发地址分配给所述第二网关设备;向主机分发将在向所述冗余性群组发送分组时使用的转发地址;使用已分发给所述主网关设备的转发地址来发送分组;测量针对所述主网关设备和所述第二网关设备中已分配的转发地址中的每个转发地址的流量流;将所测得的流量流与目标流量流相比较,以及调整所述流量流。
31.如权利要求30所述的主网关设备,其中每个转发地址是MAC地址。
32.如权利要求30所述的主网关设备,其中每个MAC地址是vMAC地址。
33.如权利要求30所述的主网关设备,其中调整所述流量流的步骤包括改变向主机的转发地址分发。
34.如权利要求33所述的主网关设备,其中改变向主机的转发地址分发的步骤包括利用具有最低的所测得的流量流的网关设备上的具有最低的所测得的流量流的转发地址来回复来自主机的ARP询问。
35.如权利要求30所述的主网关设备,其中调整所述流量流的步骤包括将转发地址重新分配到另一网关设备。
36.如权利要求30所述的主网关设备,其中所述主网关设备是第一路由器,而所述第二网关设备是第二路由器。
37.如权利要求30所述的主网关设备,其中所述冗余性群组被配置用于在所述网关设备之一中止操作的情况下提供失效转移服务。
38.如权利要求30所述的主网关设备,其中所述目标流量流是流量在所述主网关设备和所述第二网关设备间的平均分发,并且其中调整所述流量流的步骤包括调整穿过所述主网关设备和所述第二网关设备的流量流以在所述主网关设备和所述第二网关设备之间更平均地分发所述所测得的流量流。
39.一种被配置用于控制负载共享冗余性群组中的流量流的主网关设备,所述负载共享冗余性群组包含被配置用于转发从主机发送的分组的所述主网关设备和第二网关设备,所述网关设备包括一个或多个处理器;与所述处理器中的至少一个通信的存储器,其中所述处理器中的至少一个和所述存储器被配置用于将第一地址组分配给所述主网关设备,其中所述第一地址组包括多个转发地址,并且其中所述主网关设备被配置用于转发由主机发送并且去往所述第一地址组中的转发地址的分组;将第二地址组分配给所述第二网关设备,其中所述第二地址组包括多个转发地址,并且其中所述第二网关设备被配置用于转发由主机发送并且去往所述第二地址组中的转发地址的分组;测量去往每个转发地址的流量流;利用已分配的转发地址组之一中的转发地址之一来调整所测得的流量流。
40.如权利要求39所述的主网关设备,其中调整所述流量流的步骤包括指导主机使用具有最低的所测得的流量流的网关设备上的具有最低的所测得的流量流的已分配的转发地址。
41.如权利要求39所述的主网关设备,其中所述转发地址是vMAC地址。
42.如权利要求39所述的主网关设备,其中所述主网关设备是第一路由器,而所述第二网关设备是第二路由器。
43.如权利要求39所述的主网关设备,其中调整所述流量流的步骤包括将转发地址之一从所述第一地址组重新分配到所述第二地址组。
全文摘要
在包括了第一网关设备和第二网关设备的负载共享冗余性群组中的流量流分发包括将第一组转发地址分配给第一网关设备,并将第二组转发地址分配给第二网关设备。冗余性群组向主机分发转发地址,主机进而使用已分发的转发地址向冗余性群组发送分组。针对已分配的转发地址中的每个转发地址的流量流被测量,并可被与目标流量流相比较。流量流被调整以靠近目标流量流。流量流的调整可通过以下方式来实现或者通过将最初分配给一个网关设备的转发地址重新分配给另一网关设备来改变现有的所测得的流量流,或者通过改变未来的转发地址分发,以使附加的流量被发送到具有较低所测得流量的一个或多个转发地址。网关设备可以是将虚拟MAC地址用作转发地址的路由器。冗余性群组还可被配置用于在网关设备之一中止操作的情况下提供失效转移服务。
文档编号H04J3/16GK1826773SQ200480021154
公开日2006年8月30日 申请日期2004年6月18日 优先权日2003年7月31日
发明者道格拉斯·麦柯拉格恩, 伊恩·赫伯特·威尔逊, 马克·A·丹尼, 里克·L·威廉斯 申请人:思科技术公司