互联网协议安全隧道的负载均衡的制作方法

文档序号:11290931阅读:171来源:国知局
互联网协议安全隧道的负载均衡的制造方法与工艺

本申请要求于2015年1月21日提交的、发明名称为“互联网协议安全隧道的负载均衡”、申请号为14/601,995的美国非临时专利申请的权益,其在此通过引用并入本文。

本公开涉及网络流量的负载均衡,并且具体地涉及互联网协议安全(ipsec)流量的负载均衡。



背景技术:

在企业、公司和数据中心网络环境中,服务器或处理装置可跨多个服务器或处理装置来复制处理功能,以提供更强的处理能力。虽然跨多个服务器或处理装置可以复制相同的功能,但每个装置所关联的都是自己的地址。因此,对该功能的请求必须发往多个服务器或处理装置中特定的一个。

随着处理要求的增加,可在多个服务器或处理装置的前端放置负载均衡器,以在服务器之间分发业务。负载均衡器从连接中的客户端接收数据,选择一个合适的服务器,然后将数据转发到被选定的服务器。

服务器所提供的功能可包括互联网协议安全(ipsec)服务。可在起始计算装置与多个服务器中的一个之间建立ipsec隧道,以作为目的地端点或转接点。但是,所述同一个服务器必须处理与单个ipsec隧道所关联的所有业务以维持ipsec隧道。因此,ipsec隧道对实现网络业务的负载均衡提出了挑战。

所以,需要改进的网络中ipsec业务的负载均衡。



技术实现要素:

根据本公开的一个方面,提供了一种负载均衡的方法,包括:在负载均衡器处接收来自互联网协议安全(ipsec)发起方的ipsec包,所述接收到的包包括所述ipsec发起方的ip地址和安全参数标识符(spi);当所述负载均衡器未识别到所述接收到的包的所述ipsec发起方的ip地址以及spi时,将所述接收到的包转发到多个ipsec端点中的每一个;从所述多个ipsec端点中的一个接收响应于所述被转发的包的响应消息;以及基于接收到的所述响应消息,确定所述接收到的包的ip地址以及spi所关联的ipsec端点。

根据本公开的另一个方面,提供了一种负载均衡器装置,包括耦合到网络的网络接口,所述网络接口用于自互联网协议安全(ipsec)发起方接收ipsec包,所述接收到的包包括所述ipsec发起方的ip地址和安全参数标识符(spi);耦合到所述网络接口的处理器,其用于执行配置所述负载均衡器装置的指令,以当所述负载均衡器未识别到所述接收到的包的所述ipsec发起方的ip地址以及spi时,将所述接收到的包转发到连接到所述网络接口的多个ipsec端点中的每一个;从所述多个ipsec端点中的一个接收响应于所述被转发的包的响应消息;以及基于接收到的所述响应消息,更新所述接收到的包的ip地址以及spi所关联的ipsec端点。

根据本公开的又一个方面,提供了一种虚拟专用网(vpn)端点装置,包括:耦合到网络的网络接口,所述网络接口用于自互联网协议安全(ipsec)负载均衡器接收ipse包,所述接收到的包包括所述ipsec发起方的ip地址和安全参数标识符(spi);以及耦合到所述网络接口的处理器,其用于执行配置所述端点装置的指令以:确定所述接收到的ipsec包的spi是否与所述端点装置所终结的ipsec隧道关联;以及向所述ipsec负载均衡器发送信息消息,其指示所述接收到的ipsec包未被所述端点装置终结。

根据本公开的再一个方面,提供了一种在负载均衡中使用的方法,包括:在互联网协议安全(ipsec)端点装置处接收来自ipsec负载均衡器的ipsec包,所述接收到的包包括所述ipsec发起方的ip地址和安全参数标识符(spi);确定所述接收到的ipsec包的spi是否与所述端点装置所终结的ipsec隧道关联;以及向所述ipsec负载均衡器发送信息消息,其指示所述接收到的ipsec包未被所述端点装置终结。

根据本公开的还一个方面,提供了一种非暂时性计算机可读介质,其具有供处理器执行的指令,当所述指令被执行时,配置计算装置以:在负载均衡器处接收来自ipsec发起方的ipsec包,所述接收到的包包括所述ipsec发起方的ip地址和安全参数标识符(spi);当所述负载均衡器未识别到所述接收到的包的所述ipsec发起方的ip地址以及spi时,将所述接收到的包转发到多个ipsec端点中的每一个;从所述多个ipsec端点中的一个接收响应于所述被转发的包的响应消息;以及基于接收到的所述响应消息,更新所述接收到的包的ip地址以及spi所关联的ipsec端点。

根据本公开的还一个方面,提供了一种非暂时性计算机可读介质,其具有供处理器执行的指令,当所述指令被执行时,配置计算装置以:在互联网协议安全(ipsec)端点装置处接收来自ipsec负载均衡器的ipsec包,所述接收到的包包括所述ipsec发起方的ip地址和安全参数标识符(spi);确定所述接收到的ipsec包的spi是否与所述端点装置所终结的ipsec隧道关联;以及向所述ipsec负载均衡器发送通知消息,指示所述接收到的ipsec包未被所述端点装置终结。

附图说明

此处参照有关附图,对实施例进行描述,其中:

图1描绘了一个可以在其中使用ipsec隧道负载均衡的环境;

图2描绘了自同一个接入装置所发起的ipsec业务的负载均衡;

图3描绘了用于为ipsec隧道进行负载均衡的系统的组件;

图4、5和6描绘了ipsec隧道负载均衡的程序流程;

图7描绘了负载均衡器的组件;

图8描绘了用于ipsec业务负载均衡的一种方法;

图9描绘了用于ipsec业务负载均衡的另一种方法;和

图10描绘了用于ipsec业务负载均衡的再一种方法。

具体实施方式

数据流量的负载均衡可提供更高效的资源使用。正如以下还要描述的,可以提供一种负载均衡器,即便ipsec隧道的业务是接收来自同一个源ip地址,所述负载均衡器也能够将各个隧道的ipsec业务导向至不同的隧道端点。

提供了一种负载均衡器,其可将接收来自单个ipsec(互联网协议安全)隧道发起方的虚拟专用网(vpn)ipsec业务引导到网络中vpn网关所提供的多个端点中的一个。该负载均衡器提供vpn业务的分发,使得发起端的vpn业务可以在多个端点之间进行分发。但在vpn业务的分发中,一旦会话已经初始化,则负载均衡器就未必能够确定后续业务应当引导向哪个端点。负载均衡器使用ip(互联网协议)地址和spi(安全参数标识符)来识别负责处理vpn特定包的端点。故而对于已知源ip地址和未知spi值。当在负载均衡器处接收到消息时,负载均衡器也就无法识别该包所关联的端点是哪个。负载均衡器将这个接收到的包转发到所有端点,如果端点接收到的包的spi所对应的隧道并不在该端点终结,则该端点响应一条消息,指示该spi为未知。根据这些响应,负载均衡器即可确定该spi的合适的端点。负载均衡器可以利用表来跟踪各响应,从而找出合适的端点。

图1描绘了一个可以在其中使用ipsec隧道负载均衡的环境。所述环境100包括若干个计算装置,其可通信地耦合到网络102。网络102在相连的计算装置之间提供通信。所述装置可包括位于不同地点的若干计算装置。所述装置可以在一个或多个网络的外部或构成其中一部分。举例而言,所述计算装置可包括位于企业总部或总园区104的计算装置、位于家中(homelocation)106的计算装置和位于企业分支部门108的计算装置。显然,这些示意性示例并非唯一可能性。存在大量不同的使用案例,虽然具体用途不同,但共用类似架构。

这些计算装置可以例如位于企业总部104并包含若干虚拟专用网(vpn)网关110a、110b、110c(合称vpn网关110),向相连装置提供功能。正如进一步描述的,所述vpn网关110提供vpn终结点或vpn端点,该vpn终结点或vpn端点在计算装置之间提供安全通信隧道,例如在企业总部104的计算装置与位于远程的例如家中106和分支部门108的计算装置之间提供。每个vpn网关110提供大体类似的vpn功能,同样地,计算装置可以用相同的方式连接任意一个vpn网关110。处理功能或服务可以跨多个vpn网关110进行复制,以提供冗余,并扩展处理能力。为均衡各vpn网关110之间的处理负载,并允许各装置透明地连接到不同的vpn网关110,可提供负载均衡功能112,其接收对vpn网关110的请求和数据,并将所述请求引导到其中某一个vpn网关110。

家中106的计算装置可包含接入装置或网关114,其为相连的计算装置116a、116b(合称计算装置116)提供到网络102的接入。如图所示,接入装置114可以是路由器。计算装置116可以无线或通过有线连接来连接到接入装置114。计算装置116通过接入装置114接入到网络102。如图所示,接入装置114可以关联到公共ip地址(图示为5.x.x.12)以及内网的专用网络地址(图示为例如192.x.x.1)。计算装置116关联到内网的ip地址,即分别为192.x.x.101和192.x.x.102。当通过互联网访问装置或服务时,接入装置114会修改来自装置116的业务,使其看似是来自该接入装置114的公共ip地址。

类似地,位于分支部门108的计算装置可以包含接入装置或网关118,提供与家中106的接入装置114类似的功能。图示为台式计算机120a、120b、120c(合称计算装置120)的若干计算装置连接到接入装置118。应理解的是,,接入装置118可提供附加功能,或可具有附加容量,以提供相比家中106的,在办公环境中所要求的服务质量。不过,接入装置118为连接到内网的计算装置120提供互联网接入,在这点上,接入装置118的功能又类似于家中的接入装置114。如图所示,接入装置118包含至少一个公共ip地址(图示为12.x.x.55)以及内网上的至少一个ip地址(图示为10.x.x.1)。连接到接入装置118的每个计算装置120都与各自一个内网ip地址关联,分别图示为10.x.x.12、10.x.x.13和10.x.x.14。接入装置118为计算装置120提供互联网接入。当通过互联网访问计算装置或服务时,接入装置118可将来自计算装置120的业务封装进隧道,使其看似是来自接入装置118的公共ip地址。

接入装置114、118可以是启用了ipsec的装置,能够建立与vpn网关(例如vpn网关110中的一个)的安全隧道。将理解,ipsec隧道可用于对隧道端点之间所传输的数据进行验证和/或加密。一旦对特定一个vpn网关的隧道已建立,该隧道连接所关联的所有业务都必须发往这同一个vpn网关。相应地,负载均衡功能112必须将该所有关联业务都发送到该vpn的该同一个vpn网关110。负载均衡功能112可使用发起业务的ip地址来识别特定隧道的关联业务。然而对负载均衡功能112而言,来自特定接入装置114、118的所有业务均看似来自同一个ip地址,同样地,被发送到同一个vpn网关110。换言之,即便来自装置116a的业务可由vpn网关110a处理,且来自装置116b的业务可由vpn网关110b处理,但对负载均衡功能来说它们的发起端ip地址看起来均相同,并且同样地如果负载均衡器只使用源ip地址来识别各个隧道的业务,则两个业务流都会被负载均衡功能112导向同一个vpn网关。

正如进一步描述的,在确定接收到的业务应在何处处理时,除发起端的源ip地址之外,负载均衡功能112还可利用附加信息。负载均衡功能112可用于同时使用ip地址和其他信息,例如安全参数标识符(spi),来将业务导向各自的vpn网关。利用附加信息允许负载均衡功能112将来自不同计算装置的业务导向不同的vpn网关,即便这些业务是接收自同一个接入装置。

图2描绘了对从同一个接入装置所发起的ipsec业务进行负载均衡。如图所示,接入装置114是ipsec发起方,其与vpn网关110建立ipsec隧道。然而,接入装置114试图与负载均衡功能112建立ipsec隧道。即,隧道初始化请求和后续业务应被导向至负载均衡功能112,由其将这些业务导向合适的vpn网关110,例如通过修改所接收到的业务的包头信息。负载均衡功能112选择vpn网关110中合适的一个,以将业务导向该网关。如图所示,通信装置116a可以与接入装置114进行通信。接入装置114与计算装置116a之间的通信202可能不是安全的。接入装置114可以与vpn网关110a建立一个安全隧道204。虽然通信要通过负载均衡功能112,但在接入装置114与被选的vpn网关110a之间建立了ipsec隧道。如图所示,即便业务发自同一个接入装置114,但负载均衡功能112仍能够将业务正确地导向不同vpn网关。相应地,负载均衡功能112也就能够为不同隧道的业务使用不同的vpn网关。例如,来自计算装置116b的通信206就可以穿过接入装置与负载均衡功能112所选定的vpn网关110b之间的ipsec隧道208。

为了使描述清楚起见,以上所描述的网络环境旨在提供一个示意性示例。虽然以上描述了特定的计算装置和连接,但应当理解的是,大量其他实际实施方式也是可能的。相应地,以下描述所指的是ipsec发起方,其为能够发起多个ipsec隧道的任意计算装置。所述ipsec发起方可包括接入点、网关、路由器、计算机、服务器或其他有ipsec能力的计算装置。虽然所述ipsec发起方被描述为代表不同的计算装置来建立不同的ipsec隧道,但也构思了单个计算装置可发起多个独立的ipsec隧道。类似地,以下描述所指的是ipsec端点,其可为能够终结ipsec隧道的任意计算装置,并可包含在接入点、网关、路由器、计算机、服务器或其他计算装置中。

图3描述了用于为ipsec隧道进行负载均衡的系统的组件。如图所示,所述系统包括负载均衡器302,若干个ipsec发起方304a、304b、304c、304n(合称发起方304),以及称为ipsec端点306a、306b、306c、306n(合称端点306)的若干个vpn网关。负载均衡器302从发起方304接收隧道初始化请求,并且针对每个初始化请求,负载均衡器302确定将该vpn的隧道导向哪个端点306。负载均衡器302所用的选择标准可以不同。例如,负载均衡器可以按轮询方式选择端点,或者基于一个或多个端点306的处理负载。不论负载均衡器如何选择端点306端点,与建立的隧道所关联的全部后续业务都必须由负载均衡器发往同一个端点。

如图3所示,发起方304可能关联有各个ip地址,其用于发起方304与负载均衡器302之间的通信。每个发起方304也可与一个或多个通信端点308(在图3中描绘为圆圈)通信。每个发起方304可以与负载均衡器所选定的一个端点306建立起ipsec隧道,以保护来自一个通信装置308的业务。在隧道的建立和利用中,发起方将隧道业务(包括初始化请求)导向负载均衡器。针对该端点,负载均衡器选择一个合适的vpn网关,并向其转发业务。

负载均衡器302允许多个ipsec隧道发起方304发起ipsec隧道指向单一ip地址,该ip地址被用于代表多ipsec隧道端点306。为确保对应同一个隧道的所有包都到达合适的端点306,负载均衡器302维持一个映射表312,该表提供信息,用于识别对接收到的包进行处理的端点。当有ipsec包到达时,使用所述映射来确定正确的端点来处理该包,且负载均衡器302将该包转发到该确定的端点。如果接收到的ipsec包与建立新的ipsec隧道关联,即该包并不与已有的隧道关联,则负载均衡器302可以基于任意适当的负载均衡准则来选择端点以向其转发该包。

所述负载均衡器302所用的映射表312将所接收包的源ip、所述包的安全参数标识符(spi)、以及应当用于处理具有该源ip及spi的包的端点关联起来。正如将理解的,关联到同一个隧道的包应具有相同的ip地址,其应对应着发起方的ip地址。还有,关联到同一个隧道的包可具有不同的spi值。当到达的包有已知源ip地址和未知spi值时,负载均衡器302就无法识别该包所关联的端点是哪个。相应地,负载均衡器302中包含了识别该spi与哪个端点关联的处理。在用于做出负载均衡决策的初始的ike阶段1消息之后,当有包到达负载均衡器302时,若其spi为未知,即该spi不在映射表312中,则负载均衡器302将所接收到的包转发到所有端点306。如果端点306接收到的包的spi所对应的隧道并不在该点终结,则端点306响应一条消息,指示该spi为未知。如果端点306识别出该包的spi,则正常处理该包,并通过负载均衡器302将响应消息发回到发起方。负载均衡器302监视从网关接收到的消息,并使用该响应来更新映射表312。

图3中的映射表312描绘了由同一个发起方(即发起方304a)所发起、但分别在两个不同的端点306b、306a终结的ipsec隧道314、316。如图所示,第一ipsec隧道314与三个不同的spi关联,即s1、s2、s3。相应地,凡是在负载均衡器302处,从源ip地址“ip1”接收到的、具有的spi为s1、s2或s3的包,都将被转发到端点306b进行处理。但是,从同一个源ip地址(即“ip1”)接收到的其他的包则可导向其他端点。例如,从源ip地址“ip1”发起的第二隧道可能关联到两个spi,即s10和s11。凡是从源ip地址“ip1”到达负载均衡器的、具有的spi为s10或s11的包,都将被转发到端点306a做进一步的处理。

ipsec隧道内的业务可以是加密的;不过,spi并未加密,故而负载均衡器302可以查看。spi被发起方和端点用于唯一标识一个安全关联(sa)或子sa。虽然spi可能并未加密,但来自端点的响应,例如指示某个spi未被识别的响应,可在加密的sa中发送。为允许负载均衡器302利用该响应,端点可以附加地或另选地在sa之外发送该响应。相应地,来自端点指示某spi未被识别的消息可以由负载均衡器302接收,并用于更新其映射表312。

在ipsec隧道的建立中,涉及各种消息的交换。执行初始密钥交换(ike)过程,以在隧道端点之间建立初始安全关联(sa)。sa定义了安全信息,例如在建立隧道式初始使用的加密算法、共用密钥等。一旦建立起sa,即可建立一个或多个子sa来进行隧道端点之间的通信。每个子sa用于一个方向的通信,因此,如果要求或希望进行双向通信,则将建立至少两个子sa。对于双向业务,子sa一般在同一个ike交换中成对建立。建立好的隧道中的包可以(但不需要)是加密的。包可以是认证报头(ah)包,其保护包的内容,防止在传输中被更改,但ah包并不会单独加密。封装安全有效载荷(esp)包可用于包的加密,并可能用于包的验证。

如上所述,负载均衡器302接收包,并确定多个ipsec端点306中的一个以转发该包。如果接收到的包并未关联到已有ipsec隧道,例如该包关联到建立ipsec隧道的请求,则负载均衡器302可以根据选择标准,在多个ipsec端点306中选择一个。如果接收到的包关联到了已有ipsec隧道,例如该包中包含有spi,则负载均衡器302尝试确定包(并且尤其是该包的源ip地址和spi)与负责关联的隧道的ipsec端点306之间的映射。负载均衡器302可利用映射表,其将包的源ip地址和spi值关联到负责处理该包的ipsec端点。如果能找到匹配,则将该包转发到提供该ipsec端点306的关联vpn。

当负责该spi所关联的隧道的端点处接收到ike包时,该包将按正常处理。端点可传输建立子sa的ike消息或其他有关消息,具体取决于消息类型。对于从端点发送的子sa消息,负载均衡器302可以基于包报头信息来加以识别,所述包报头信息可以是未加密的。相应地,负载均衡器302可以接收该消息,识别子sa,并将新的spi关联到发送该消息的端点。相应地,当接收到另一个具有相匹配的ip和spi的包时,该包可被转发到该端点。

如果负载均衡器302处接收到的ike包并不与映射表中的源ip和spi对相匹配,但又并非用于执行负载均衡决策的第一ike阶段1消息,则负载均衡器302将无法确定正确的ipsec端点来转发该包以进行处理。相应地,负载均衡器302会将该包转发到所有ipsec端点306,并监视来自端点306的响应,以确定合适的端点以转发后续包。负载均衡器302所监视的响应中,可以包含任意已建立的sa之外的端点所发送的信息消息,该消息指示被转发包的spi未被该端点识别。该信息消息允许负载均衡器302确定后续包所不应被转发至的端点。如果包所对应的隧道所关联的端点对该包进行了处理,则可以在ah/esp包中发送响应;由于可能的加密,故而对负载均衡器302而言,此ah/esp包也许不能访问。相应地,负载均衡器302也就无法明确地识别负责处理该包的端点,于是可转而依靠排除法来确定用于处理该包的端点。如果负载均衡器302接到信息消息,指示该spi未被识别,则将对应的端点从可能的端点列表中排除,所述可能的端点可以处理与相匹配的源ip和spi关联的包。

图4、5和6描绘了ipsec隧道负载均衡的程序流程。图4、5和6中所描绘的程序流程旨在传达ipsec隧道负载均衡的总体流程,故而关于被传输的特定消息的一些细节并未详细涵盖。不过,较好地记载和理解了ipsec协议以及在ipsec中所用的其他协议,如ike、ah和esp。

发起方304通过发送初始ipsec消息,或更具体地,ike消息402到负载均衡器302,以尝试与ipsec端点建立ipsec隧道。该初始消息中包含spi,其可用于标识作为结果的sa。负载均衡器302接收到要求建立ipsec隧道的初始请求消息,并选择404可能的ipsec端点中的一个来建立该隧道。一旦选定端点(在图4中示为端点306a),负载均衡器记录下源ip地址(在图4中示为与发起方304a关联的“ip1”)、所收消息的spi(即“s1”)和选定的端点之间的关联关系。源ip、spi和端点之间的关联关系可以存储406在映射表312中。进一步地,一旦端点被网关选定来处理该隧道请求,则该消息被转发408到被选定的端点306a,不过其可以先修改目的地地址。端点306a接收并处理该消息,并且以ike阶段1响应消息410响应,该消息由负载均衡器302接收,并转发到发起方412。

虽然以上描述为交换单个请求和响应,但ike阶段1交换可以涉及多个消息的交换以协商安全信息,如所使用的协议和密钥。一旦ike阶段1交换完成,即在发起方304a和被选的端点306a之间建立414初始sa。在ike阶段1之后,发起方可通过ike阶段2消息交换建立附加的子sa。ike阶段2消息在已建立的sa中发送,但会包含新的spi,用于标识新的子sa。如图所示,发起方可发送ike阶段2消息416,其中包含新的spis2。当负载均衡器302接收到阶段2消息,负载均衡器就会将该消息的源ip和spi与映射表312中的进行比对。但是,由于spis2在映射表中并未关联到该源ip,故而对负载均衡器302而言spi是未识别的418,故而负载均衡器302也就无法确定将接收到的消息发送到哪个网关。当接收到的消息具有未识别的ip:spi对时,即该ip和spi不在映射312中时,负载均衡器302将该ip:spi与所有端点420关联记录在映射表中,然后将该包转发到与负载均衡器422、424关联的所有ipsec端点。每个端点306a、306n接收到被转发的消息。对于端点306a,由于该端点正是负责处理该包的端点,故而能够正确处理该包,并以子sa响应426进行响应。负载均衡器302从与该隧道关联的端点接收到子sa响应。负载均衡器能够基于该消息的报头信息来识别来自端点的子sa响应426。相应地,当从端点306中的一个接到子sa消息时,负载均衡器能适当更新428映射表,以将用该子sa消息响应的端点306a与映射表312中的ip:spi关联起来。在负载均衡器处从该端点接收到的子sa响应被转发430到发起方304a。发起方304a处接收到该子sa响应430,且建立432子sa,其不论是否是已验证的和/或已加密的,都可用于进行安全数据传输434。而对于双向业务,同一次消息交换中可能建立两个子sa。

与该隧道的处理无关联的端点(被示出为端点306n),可用一个指示来响应转发来的消息,所述指示为指示该接收到的spi为无效436,即该spi没有关联到该端点所处理的隧道。当响应ike消息时,端点可以在sa内响应;不过,正如以下还要描述的,当响应ah或esp消息时,端点会在sa之外发送通知消息,该通知消息指示spi无效。当负载均衡器302接收到spi无效的通知消息时,即可更新映射表,将该端点从用于转发相对应的ip:spi的消息的端点列表中移除。如图4所示,映射表已经基于子sa响应更新,故而也就无需再行更新。

图5描绘了针对ah/esp消息的程序流程。发起方304a可在sa中发送ah和/或esp包。ah/esp消息502中包含了各自的spi。虽然包可以被加密,但包的spi部分并不被加密,故而负载均衡器也就可以访问包中的spi。如图5所示,ah/esp消息502中包含了spi:“s3”。当在负载均衡器接收时,将消息的源ip和所含的spi与映射表312进行比对,确定向哪个端点发送该消息。当该ip:spi对在映射表中未找到时,即不能被负载均衡器302识别时,则更新506映射,将所有端点都关联到该ip:spi。当ip:spi未被负载均衡器识别时,则该消息被转发到所有端点508、510。在图5中,负责消息502所关联的隧道的是端点306a。端点306a接收到转发来的消息510并处理该消息,并响应以ah/esp响应512。该ah/esp响应消息在负载均衡器302处接收,并被转发到发起方514。负载均衡器302并不能确定该ah/esp消息的内容,故而也就无法用该响应来更新映射表。进一步地,负载均衡器302无法利用该消息中的spi值来确定由哪个端点处理该包,由于spi值是本地值,即发起端有一个spi值、端点有一个值,而在ah/esp消息中仅出现一个值,因此不可能将一个方向的spi关联到反方向的spi。当端点306n处接收到该ah/esp消息508时,spi不被识别,故而端点也就发送信息消息,指示该spi无效516。端点306n在sa之外传输该信息消息。当在负载均衡器302接收到518该消息516时,就用之以更新映射表520,从而将发送该信息消息的端点306n从与关联着ip:spi的映射表中移除。当从源ip接收到后续包时,其中后续包包括可以在映射表中找到的spi,则负载均衡器302将该包转发到映射表中所标识的端点(或端点)。如此,即便建立了从同一个ip地址到不同端点的多个隧道,与特定隧道关联的包也会被转发到正确的端点。

图6描绘了负载均衡器处从同一个发起方接收到新的隧道请求的流程。此流程类似于以上关于图4描述的流程。发起方304a可尝试建立新的ipsec隧道,并将ike阶段1请求,具有对应的新spi,即“s10”,发送到602负载均衡器302。负载均衡器302接收到建立新隧道的请求消息,该消息尚未关联到ipsec终结点,于是在ipsec端点中选择一个(图示为端点306n)来建立隧道。一旦负载均衡器302为vpn选定端点306n,该请求消息的源ip和spi就在映射表中关联606到所选端点。负载均衡器302将ike阶段1响应转发到被选端点608,后者相应地向负载均衡器302做出响应610。负载均衡器302将响应消息转发612到发起方来建立614初始sa。

如上所述,通过追踪消息的ip和spi以及消息所用的端点,可以对接收从同一个源ip地址的ipsec隧道进行负载均衡。随着用于负载均衡决策的原始ike阶段1消息之后的关联到未识别的ip和spi对的消息被接收到,则该消息被转发到所有端点,而作为响应接收到的消息则用于更新映射表,其规定用于该ip:spi对的后续消息的端点。来自端点的、指示被转发消息的spi不被识别或无效的响应消息可以在sa之外传输,以作为对ah和/或esp消息的响应。接收到的此消息可提供明确指示,表示该端点就是处理该ip:spi对的正确端点。例如,从端点接到子sa响应即明确标识该端点就是处理该ip:spi对的正确端点。不过,其他消息未必可以明确标识处理该消息的端点。相反,通知性的响应消息可指示:该端点不是处理该ip:spi对消息的正确端点。这种通知消息可供负载均衡器302用在排除法过程中,将已经表示转发来的spi无效的端点移除。

图7描绘了一个负载均衡器的组件以及一个合作的端点例如vpn网关的组件。负载均衡器302中可包含处理单元702,用于执行指令。所述处理单元702可由一个或多个物理中央处理单元(cpu)提供,每个具有一个或多个处理核心。所述负载均衡器302可包含存储单元704,用于存储数据和指令,供所述处理单元702执行。所述存储单元可包含易失性和非易失性存储组件。所述存储单元704可包含例如与所述处理单元相关联的寄存器和存储器、随机存取存储器(ram)、闪存和固态驱动器(ssd)以及硬盘驱动器(hdd)。所述负载均衡器302也可包含一个或多个输入/输出(i/o)组件706。所述i/o组件可包括i/o总线和/或连接到所述处理单元的组件。连接的i/o装置可包含例如用于通过网络进行通信的网络接口、监视器、扬声器、键盘、鼠标、麦克风等。所述存储单元704包含数据和指令,用以提供能够对来自同一个发起方的多个ipsec隧道进行负载均衡的负载均衡器。

当被所述处理单元702执行时,所述负载均衡功能708配置服务器来接收发自发起方装置的ipsec包(710)。所述负载均衡器处所接收到的每个ipsec包都包含特定的spi,并且是接收来自与源ip地址关联的发起方。所述负载均衡器维护一个源ip:spi与ipsec端点之间的映射表,所述ipsec端点与处理具有相匹配的ip:spi对的包关联。在用于执行负载均衡决策的原始ike阶段1消息之后,若所述负载均衡器接收到具有在所述映射表中找不到的未识别ip:spi对时,则所述被接收到的包被转发到与所述负载均衡器关联的所有ipsec端点(712)。一旦所述ipsec包被转发到所有端点,将可从这些端点接收到一个或多个响应消息(714)。这些接收到的消息可以指示发送该消息的端点并不处理与该spi关联的隧道,或者可以为指示与该端点已建立的子sa的响应消息。基于所述一个或多个接收到的消息,所述负载均衡器确定ipsec终结点或端点(716),其将处理在所述负载均衡器处接收到的与所述被转发包具有相同源ip:spi的包。所述负载均衡器相应地更新映射表,这样当具有该ip:spi对的新包被接收到时,就会被发送到对应的终结点,而不用要求将其首先转发到所有端点。

所述端点装置306可以是与所述负载均衡器302关联的多个端点装置中的一个,并可包括用于执行指令的处理单元718。所述处理单元718可由一个或多个物理中央处理单元(cpu)提供,每个具有一个或多个处理核心。所述端点装置306可包含存储单元720,用于存储数据和指令,供所述处理单元718执行。所述存储单元720可包含易失性和非易失性存储组件。所述存储单元720可包含例如与所述处理单元相关联的寄存器和存储器、随机存取存储器(ram)、闪存和固态驱动器(ssd)以及硬盘驱动器(hdd)。所述端点装置306也可包含一个或多个输入/输出(i/o)组件722。所述i/o组件可包括i/o总线和/或连接到所述处理单元的组件。连接的i/o装置可包含例如用于通过网络进行通信的网络接口、监视器、扬声器、键盘、鼠标、麦克风等。所述存储单元720包含数据和指令,以提供用于对ipsec隧道进行负载均衡的端点装置。

通过执行所述指令而提供的端点功能724包括接收包(726)。所述包从所述负载均衡器接收,并包含spi值,可用于确定该包是否与端点装置306所终结的ipsec隧道关联(728)。如果该包与端点装置306所终结的ipsec隧道关联(728处的“是”),则所述端点装置正常处理该ipsec包(730)。如果该包并不与端点装置306所终结的ipsec隧道关联(728处的“否”),则端点装置306将信息消息发回给所述负载均衡器302,指示所述接收到的ipsec包并非与端点装置所终结的隧道关联(732)。所述信息消息可以在已建立的sa之外发送,以允许所述负载均衡器接收该信息,并将该端点装置从具有同一个spi的包将被转发到的端点的列表中移除。

图8描述了用于ipsec业务负载均衡的一种方法。所述方法800描绘了与ike阶段1包关联的处理。所述方法800从发起方接收具有第一spi的ike阶段1包(802)。该方法确定所接收包的spi是否已识别(804),如果该spi确已识别(804处的“是”),即另一个具有相同spi的包被接收,并被发送到特定终结点,关联的端点被确定(806)。一旦关联端点被确定,则所述接收到的包被转发到确定的端点(808)并做相应处理。如果该spi未被识别(804处的“否”),例如如果接收到的包是第一ike阶段1包,且尚未分配处理该隧道的ipsec端点,则确定处理该包的端点以及关联的隧道(810)。所述负载均衡器可以用各种方式来确定端点,例如按轮询方式,或者基于各个端点当前的处理负载。一旦端点被确定,则将其与来自初始消息的源ip和spi关联记录(812),例如记录在映射表或类似结构中。接收到的ike阶段1包被转发到被确定的端点(814),并在所述发起方与被确定的端点之间建立安全关联(sa)(816)。一旦端点被选定,并且关联被记录,则后续接收到的具有相同ip:spi对的包将被转发到同一个端点进行处理。

图9描述了用于ipsec业务负载均衡的又一种方法。所述方法900描绘了与ike阶段2包关联的处理。ike阶段2包可从同一个发起方接收但可以具有不同的spi(902)。一旦接到包,就判断其ip:spi对是否已经与所述确定的端点被关联记录(904)。在图9中,假定接收到的ike阶段2包与在以上图8中描述的之前接收到的ike阶段1包关联,并且同样地应由同一个终结点处理;但是,第二spi并未与该端点关联,故而所述负载均衡器并不知道其所接收的消息应向何处转发。如果接收到的包的spi能够被识别(904处的“是”),则确定与该ip:spi关联的端点(906),并将该包转发到该端点(908)。但是,如果该ip:spi未被识别(904处的“否”),则该ip:spi与所有ipsec端点被关联记录(910),并将该包转发到所有端点(912)。接收到来自各端点的响应(914),且每个接收到的响应(916)都被处理,直至所有响应都被处理完毕(926)。对于每个接收到的响应,确定该响应是子sa消息还是通知消息(918)。如果该消息是指示该spi无效的通知消息(918处的“通知”),则发送该通知消息的端点从与该ip:spi的关联中被移除(920),以使后续收到的具有相同ip:spi的包不会被转发到该端点。如果该消息是子sa消息(918处的“子sa”),则子sa响应被转发到所述发起方(922),并且发送该子sa消息的端点与该ip:spi被关联记录,以使该端点成为唯一关联到该ip:spi的端点(924)。一旦没有更多接收到的响应(926)需要处理,则确定是否有至少一个端点与该ip:spi被关联记录(928)。如果没有端点仍被与该ip:spi关联登记(928处的“否”),则任何一个端点都不能识别该spi,且最后接收到的通知消息被转发到该发起方(930)作为错误消息。转发最后一条通知消息之后,或者如果还有端点仍与该ip:spi被关联记录(928处的“是”),则处理完毕(932)。

图10描述了用于ipsec业务负载均衡的又一种方法。所述方法1000描绘了与ah和/或esp包关联的处理。从发起方接收到具有spi的ah/esp包(1002)。判断接收到的包的spi是否被识别(1004)。当该ip:spi对关联到具体端点时,则spi被识别。该关联可以各种方式记录,包括例如使用映射表或类似结构。如果该spi被识别(1004处的“是”),则确定与该ip:spi关联的端点(1006),并将该包转发到该被确定的端点1008),并且该ah/esp包处理完毕(1018)。但是,如果该spi未被识别(1004处的“否”),则所有端点都与该ip:spi关联登记(1010),并将接收到的该包转发到每个端点(1012)。任何接收到该ah/esp包但不具有由spi指示的sa的端点,在sa之外发送的信息消息以响应该包,指示该spi无效。负责该spi所指示的sa的端点,将用ah/esp响应来进行响应,由于隧道加密,所述负载均衡器将不能对此进行识别,该ah/esp响应消息将被转发到合适的发起方。相应地,为了确定具有ip:spi的包应转发到哪个端点,此方法使用排除法,当接到指示该spi无效的信息消息时,将关联从记录的关联中移除。当从端点接收到指示无效spi的信息消息时(1014),对应的端点从与该ip:spi的关联中被移除(1016),并且该ah/esp包处理完毕(1018)。

以上已描述了对ipsec业务进行负载均衡的各个方面。如所描述,即便从单个发起方建立了的多个ipsec隧道,各隧道也可跨多个分离的ipsec端点进行均衡。虽然上文结合各种具体细节描述了负载均衡,但应当理解的是,可以改变具体细节,而仍可提供ipsec业务的负载均衡。举例而言,上文描述了将ipsec端点、源ip与spi之间的关联存储在映射表中,但其他存储结构也可用于记录该关联。还有,关于各方法所描述的具体步骤顺序可以改变。例如,虽然描述的是先记录关联、然后将包转发到端点,但也可以先转发包、然后记录关联,或者并行完成。虽然各个组件,如ipsec发起方、负载均衡器和ipsec端点被描述为分离的物理组件,但也构思了在同一个物理计算硬件上提供所述组件中的一个或多个。举例而言,多个发起方可以在单个计算装置上提供。还有,例如负载均衡器可以提供在同一个物理计算装置上,作为一个或多个ipsec端点。

虽然已经描述了某些组件和步骤,但也构思了将分别描述的组件以及步骤合并起来成为更少的组件或步骤,或者这些步骤可以顺序执行、非顺序执行或并发执行。类似地,单个的组件或步骤也可以由多个组件或步骤来提供。考虑到当前教示的本领域普通技术人员应可理解,除了本文作为示意性示例而描述的具体实施方式之外,所述ipsec负载均衡功能可以由软件、固件和/或硬件的各种组合来进行提供。

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