本申請要求于2015年1月21日提交的、發(fā)明名稱為“互聯(lián)網(wǎng)協(xié)議安全隧道的負載均衡”、申請?zhí)枮?4/601,995的美國非臨時專利申請的權益,其在此通過引用并入本文。
本公開涉及網(wǎng)絡流量的負載均衡,并且具體地涉及互聯(lián)網(wǎng)協(xié)議安全(ipsec)流量的負載均衡。
背景技術:
在企業(yè)、公司和數(shù)據(jù)中心網(wǎng)絡環(huán)境中,服務器或處理裝置可跨多個服務器或處理裝置來復制處理功能,以提供更強的處理能力。雖然跨多個服務器或處理裝置可以復制相同的功能,但每個裝置所關聯(lián)的都是自己的地址。因此,對該功能的請求必須發(fā)往多個服務器或處理裝置中特定的一個。
隨著處理要求的增加,可在多個服務器或處理裝置的前端放置負載均衡器,以在服務器之間分發(fā)業(yè)務。負載均衡器從連接中的客戶端接收數(shù)據(jù),選擇一個合適的服務器,然后將數(shù)據(jù)轉(zhuǎn)發(fā)到被選定的服務器。
服務器所提供的功能可包括互聯(lián)網(wǎng)協(xié)議安全(ipsec)服務??稍谄鹗加嬎阊b置與多個服務器中的一個之間建立ipsec隧道,以作為目的地端點或轉(zhuǎn)接點。但是,所述同一個服務器必須處理與單個ipsec隧道所關聯(lián)的所有業(yè)務以維持ipsec隧道。因此,ipsec隧道對實現(xiàn)網(wǎng)絡業(yè)務的負載均衡提出了挑戰(zhàn)。
所以,需要改進的網(wǎng)絡中ipsec業(yè)務的負載均衡。
技術實現(xiàn)要素:
根據(jù)本公開的一個方面,提供了一種負載均衡的方法,包括:在負載均衡器處接收來自互聯(lián)網(wǎng)協(xié)議安全(ipsec)發(fā)起方的ipsec包,所述接收到的包包括所述ipsec發(fā)起方的ip地址和安全參數(shù)標識符(spi);當所述負載均衡器未識別到所述接收到的包的所述ipsec發(fā)起方的ip地址以及spi時,將所述接收到的包轉(zhuǎn)發(fā)到多個ipsec端點中的每一個;從所述多個ipsec端點中的一個接收響應于所述被轉(zhuǎn)發(fā)的包的響應消息;以及基于接收到的所述響應消息,確定所述接收到的包的ip地址以及spi所關聯(lián)的ipsec端點。
根據(jù)本公開的另一個方面,提供了一種負載均衡器裝置,包括耦合到網(wǎng)絡的網(wǎng)絡接口,所述網(wǎng)絡接口用于自互聯(lián)網(wǎng)協(xié)議安全(ipsec)發(fā)起方接收ipsec包,所述接收到的包包括所述ipsec發(fā)起方的ip地址和安全參數(shù)標識符(spi);耦合到所述網(wǎng)絡接口的處理器,其用于執(zhí)行配置所述負載均衡器裝置的指令,以當所述負載均衡器未識別到所述接收到的包的所述ipsec發(fā)起方的ip地址以及spi時,將所述接收到的包轉(zhuǎn)發(fā)到連接到所述網(wǎng)絡接口的多個ipsec端點中的每一個;從所述多個ipsec端點中的一個接收響應于所述被轉(zhuǎn)發(fā)的包的響應消息;以及基于接收到的所述響應消息,更新所述接收到的包的ip地址以及spi所關聯(lián)的ipsec端點。
根據(jù)本公開的又一個方面,提供了一種虛擬專用網(wǎng)(vpn)端點裝置,包括:耦合到網(wǎng)絡的網(wǎng)絡接口,所述網(wǎng)絡接口用于自互聯(lián)網(wǎng)協(xié)議安全(ipsec)負載均衡器接收ipse包,所述接收到的包包括所述ipsec發(fā)起方的ip地址和安全參數(shù)標識符(spi);以及耦合到所述網(wǎng)絡接口的處理器,其用于執(zhí)行配置所述端點裝置的指令以:確定所述接收到的ipsec包的spi是否與所述端點裝置所終結的ipsec隧道關聯(lián);以及向所述ipsec負載均衡器發(fā)送信息消息,其指示所述接收到的ipsec包未被所述端點裝置終結。
根據(jù)本公開的再一個方面,提供了一種在負載均衡中使用的方法,包括:在互聯(lián)網(wǎng)協(xié)議安全(ipsec)端點裝置處接收來自ipsec負載均衡器的ipsec包,所述接收到的包包括所述ipsec發(fā)起方的ip地址和安全參數(shù)標識符(spi);確定所述接收到的ipsec包的spi是否與所述端點裝置所終結的ipsec隧道關聯(lián);以及向所述ipsec負載均衡器發(fā)送信息消息,其指示所述接收到的ipsec包未被所述端點裝置終結。
根據(jù)本公開的還一個方面,提供了一種非暫時性計算機可讀介質(zhì),其具有供處理器執(zhí)行的指令,當所述指令被執(zhí)行時,配置計算裝置以:在負載均衡器處接收來自ipsec發(fā)起方的ipsec包,所述接收到的包包括所述ipsec發(fā)起方的ip地址和安全參數(shù)標識符(spi);當所述負載均衡器未識別到所述接收到的包的所述ipsec發(fā)起方的ip地址以及spi時,將所述接收到的包轉(zhuǎn)發(fā)到多個ipsec端點中的每一個;從所述多個ipsec端點中的一個接收響應于所述被轉(zhuǎn)發(fā)的包的響應消息;以及基于接收到的所述響應消息,更新所述接收到的包的ip地址以及spi所關聯(lián)的ipsec端點。
根據(jù)本公開的還一個方面,提供了一種非暫時性計算機可讀介質(zhì),其具有供處理器執(zhí)行的指令,當所述指令被執(zhí)行時,配置計算裝置以:在互聯(lián)網(wǎng)協(xié)議安全(ipsec)端點裝置處接收來自ipsec負載均衡器的ipsec包,所述接收到的包包括所述ipsec發(fā)起方的ip地址和安全參數(shù)標識符(spi);確定所述接收到的ipsec包的spi是否與所述端點裝置所終結的ipsec隧道關聯(lián);以及向所述ipsec負載均衡器發(fā)送通知消息,指示所述接收到的ipsec包未被所述端點裝置終結。
附圖說明
此處參照有關附圖,對實施例進行描述,其中:
圖1描繪了一個可以在其中使用ipsec隧道負載均衡的環(huán)境;
圖2描繪了自同一個接入裝置所發(fā)起的ipsec業(yè)務的負載均衡;
圖3描繪了用于為ipsec隧道進行負載均衡的系統(tǒng)的組件;
圖4、5和6描繪了ipsec隧道負載均衡的程序流程;
圖7描繪了負載均衡器的組件;
圖8描繪了用于ipsec業(yè)務負載均衡的一種方法;
圖9描繪了用于ipsec業(yè)務負載均衡的另一種方法;和
圖10描繪了用于ipsec業(yè)務負載均衡的再一種方法。
具體實施方式
數(shù)據(jù)流量的負載均衡可提供更高效的資源使用。正如以下還要描述的,可以提供一種負載均衡器,即便ipsec隧道的業(yè)務是接收來自同一個源ip地址,所述負載均衡器也能夠?qū)⒏鱾€隧道的ipsec業(yè)務導向至不同的隧道端點。
提供了一種負載均衡器,其可將接收來自單個ipsec(互聯(lián)網(wǎng)協(xié)議安全)隧道發(fā)起方的虛擬專用網(wǎng)(vpn)ipsec業(yè)務引導到網(wǎng)絡中vpn網(wǎng)關所提供的多個端點中的一個。該負載均衡器提供vpn業(yè)務的分發(fā),使得發(fā)起端的vpn業(yè)務可以在多個端點之間進行分發(fā)。但在vpn業(yè)務的分發(fā)中,一旦會話已經(jīng)初始化,則負載均衡器就未必能夠確定后續(xù)業(yè)務應當引導向哪個端點。負載均衡器使用ip(互聯(lián)網(wǎng)協(xié)議)地址和spi(安全參數(shù)標識符)來識別負責處理vpn特定包的端點。故而對于已知源ip地址和未知spi值。當在負載均衡器處接收到消息時,負載均衡器也就無法識別該包所關聯(lián)的端點是哪個。負載均衡器將這個接收到的包轉(zhuǎn)發(fā)到所有端點,如果端點接收到的包的spi所對應的隧道并不在該端點終結,則該端點響應一條消息,指示該spi為未知。根據(jù)這些響應,負載均衡器即可確定該spi的合適的端點。負載均衡器可以利用表來跟蹤各響應,從而找出合適的端點。
圖1描繪了一個可以在其中使用ipsec隧道負載均衡的環(huán)境。所述環(huán)境100包括若干個計算裝置,其可通信地耦合到網(wǎng)絡102。網(wǎng)絡102在相連的計算裝置之間提供通信。所述裝置可包括位于不同地點的若干計算裝置。所述裝置可以在一個或多個網(wǎng)絡的外部或構成其中一部分。舉例而言,所述計算裝置可包括位于企業(yè)總部或總園區(qū)104的計算裝置、位于家中(homelocation)106的計算裝置和位于企業(yè)分支部門108的計算裝置。顯然,這些示意性示例并非唯一可能性。存在大量不同的使用案例,雖然具體用途不同,但共用類似架構。
這些計算裝置可以例如位于企業(yè)總部104并包含若干虛擬專用網(wǎng)(vpn)網(wǎng)關110a、110b、110c(合稱vpn網(wǎng)關110),向相連裝置提供功能。正如進一步描述的,所述vpn網(wǎng)關110提供vpn終結點或vpn端點,該vpn終結點或vpn端點在計算裝置之間提供安全通信隧道,例如在企業(yè)總部104的計算裝置與位于遠程的例如家中106和分支部門108的計算裝置之間提供。每個vpn網(wǎng)關110提供大體類似的vpn功能,同樣地,計算裝置可以用相同的方式連接任意一個vpn網(wǎng)關110。處理功能或服務可以跨多個vpn網(wǎng)關110進行復制,以提供冗余,并擴展處理能力。為均衡各vpn網(wǎng)關110之間的處理負載,并允許各裝置透明地連接到不同的vpn網(wǎng)關110,可提供負載均衡功能112,其接收對vpn網(wǎng)關110的請求和數(shù)據(jù),并將所述請求引導到其中某一個vpn網(wǎng)關110。
家中106的計算裝置可包含接入裝置或網(wǎng)關114,其為相連的計算裝置116a、116b(合稱計算裝置116)提供到網(wǎng)絡102的接入。如圖所示,接入裝置114可以是路由器。計算裝置116可以無線或通過有線連接來連接到接入裝置114。計算裝置116通過接入裝置114接入到網(wǎng)絡102。如圖所示,接入裝置114可以關聯(lián)到公共ip地址(圖示為5.x.x.12)以及內(nèi)網(wǎng)的專用網(wǎng)絡地址(圖示為例如192.x.x.1)。計算裝置116關聯(lián)到內(nèi)網(wǎng)的ip地址,即分別為192.x.x.101和192.x.x.102。當通過互聯(lián)網(wǎng)訪問裝置或服務時,接入裝置114會修改來自裝置116的業(yè)務,使其看似是來自該接入裝置114的公共ip地址。
類似地,位于分支部門108的計算裝置可以包含接入裝置或網(wǎng)關118,提供與家中106的接入裝置114類似的功能。圖示為臺式計算機120a、120b、120c(合稱計算裝置120)的若干計算裝置連接到接入裝置118。應理解的是,,接入裝置118可提供附加功能,或可具有附加容量,以提供相比家中106的,在辦公環(huán)境中所要求的服務質(zhì)量。不過,接入裝置118為連接到內(nèi)網(wǎng)的計算裝置120提供互聯(lián)網(wǎng)接入,在這點上,接入裝置118的功能又類似于家中的接入裝置114。如圖所示,接入裝置118包含至少一個公共ip地址(圖示為12.x.x.55)以及內(nèi)網(wǎng)上的至少一個ip地址(圖示為10.x.x.1)。連接到接入裝置118的每個計算裝置120都與各自一個內(nèi)網(wǎng)ip地址關聯(lián),分別圖示為10.x.x.12、10.x.x.13和10.x.x.14。接入裝置118為計算裝置120提供互聯(lián)網(wǎng)接入。當通過互聯(lián)網(wǎng)訪問計算裝置或服務時,接入裝置118可將來自計算裝置120的業(yè)務封裝進隧道,使其看似是來自接入裝置118的公共ip地址。
接入裝置114、118可以是啟用了ipsec的裝置,能夠建立與vpn網(wǎng)關(例如vpn網(wǎng)關110中的一個)的安全隧道。將理解,ipsec隧道可用于對隧道端點之間所傳輸?shù)臄?shù)據(jù)進行驗證和/或加密。一旦對特定一個vpn網(wǎng)關的隧道已建立,該隧道連接所關聯(lián)的所有業(yè)務都必須發(fā)往這同一個vpn網(wǎng)關。相應地,負載均衡功能112必須將該所有關聯(lián)業(yè)務都發(fā)送到該vpn的該同一個vpn網(wǎng)關110。負載均衡功能112可使用發(fā)起業(yè)務的ip地址來識別特定隧道的關聯(lián)業(yè)務。然而對負載均衡功能112而言,來自特定接入裝置114、118的所有業(yè)務均看似來自同一個ip地址,同樣地,被發(fā)送到同一個vpn網(wǎng)關110。換言之,即便來自裝置116a的業(yè)務可由vpn網(wǎng)關110a處理,且來自裝置116b的業(yè)務可由vpn網(wǎng)關110b處理,但對負載均衡功能來說它們的發(fā)起端ip地址看起來均相同,并且同樣地如果負載均衡器只使用源ip地址來識別各個隧道的業(yè)務,則兩個業(yè)務流都會被負載均衡功能112導向同一個vpn網(wǎng)關。
正如進一步描述的,在確定接收到的業(yè)務應在何處處理時,除發(fā)起端的源ip地址之外,負載均衡功能112還可利用附加信息。負載均衡功能112可用于同時使用ip地址和其他信息,例如安全參數(shù)標識符(spi),來將業(yè)務導向各自的vpn網(wǎng)關。利用附加信息允許負載均衡功能112將來自不同計算裝置的業(yè)務導向不同的vpn網(wǎng)關,即便這些業(yè)務是接收自同一個接入裝置。
圖2描繪了對從同一個接入裝置所發(fā)起的ipsec業(yè)務進行負載均衡。如圖所示,接入裝置114是ipsec發(fā)起方,其與vpn網(wǎng)關110建立ipsec隧道。然而,接入裝置114試圖與負載均衡功能112建立ipsec隧道。即,隧道初始化請求和后續(xù)業(yè)務應被導向至負載均衡功能112,由其將這些業(yè)務導向合適的vpn網(wǎng)關110,例如通過修改所接收到的業(yè)務的包頭信息。負載均衡功能112選擇vpn網(wǎng)關110中合適的一個,以將業(yè)務導向該網(wǎng)關。如圖所示,通信裝置116a可以與接入裝置114進行通信。接入裝置114與計算裝置116a之間的通信202可能不是安全的。接入裝置114可以與vpn網(wǎng)關110a建立一個安全隧道204。雖然通信要通過負載均衡功能112,但在接入裝置114與被選的vpn網(wǎng)關110a之間建立了ipsec隧道。如圖所示,即便業(yè)務發(fā)自同一個接入裝置114,但負載均衡功能112仍能夠?qū)I(yè)務正確地導向不同vpn網(wǎng)關。相應地,負載均衡功能112也就能夠為不同隧道的業(yè)務使用不同的vpn網(wǎng)關。例如,來自計算裝置116b的通信206就可以穿過接入裝置與負載均衡功能112所選定的vpn網(wǎng)關110b之間的ipsec隧道208。
為了使描述清楚起見,以上所描述的網(wǎng)絡環(huán)境旨在提供一個示意性示例。雖然以上描述了特定的計算裝置和連接,但應當理解的是,大量其他實際實施方式也是可能的。相應地,以下描述所指的是ipsec發(fā)起方,其為能夠發(fā)起多個ipsec隧道的任意計算裝置。所述ipsec發(fā)起方可包括接入點、網(wǎng)關、路由器、計算機、服務器或其他有ipsec能力的計算裝置。雖然所述ipsec發(fā)起方被描述為代表不同的計算裝置來建立不同的ipsec隧道,但也構思了單個計算裝置可發(fā)起多個獨立的ipsec隧道。類似地,以下描述所指的是ipsec端點,其可為能夠終結ipsec隧道的任意計算裝置,并可包含在接入點、網(wǎng)關、路由器、計算機、服務器或其他計算裝置中。
圖3描述了用于為ipsec隧道進行負載均衡的系統(tǒng)的組件。如圖所示,所述系統(tǒng)包括負載均衡器302,若干個ipsec發(fā)起方304a、304b、304c、304n(合稱發(fā)起方304),以及稱為ipsec端點306a、306b、306c、306n(合稱端點306)的若干個vpn網(wǎng)關。負載均衡器302從發(fā)起方304接收隧道初始化請求,并且針對每個初始化請求,負載均衡器302確定將該vpn的隧道導向哪個端點306。負載均衡器302所用的選擇標準可以不同。例如,負載均衡器可以按輪詢方式選擇端點,或者基于一個或多個端點306的處理負載。不論負載均衡器如何選擇端點306端點,與建立的隧道所關聯(lián)的全部后續(xù)業(yè)務都必須由負載均衡器發(fā)往同一個端點。
如圖3所示,發(fā)起方304可能關聯(lián)有各個ip地址,其用于發(fā)起方304與負載均衡器302之間的通信。每個發(fā)起方304也可與一個或多個通信端點308(在圖3中描繪為圓圈)通信。每個發(fā)起方304可以與負載均衡器所選定的一個端點306建立起ipsec隧道,以保護來自一個通信裝置308的業(yè)務。在隧道的建立和利用中,發(fā)起方將隧道業(yè)務(包括初始化請求)導向負載均衡器。針對該端點,負載均衡器選擇一個合適的vpn網(wǎng)關,并向其轉(zhuǎn)發(fā)業(yè)務。
負載均衡器302允許多個ipsec隧道發(fā)起方304發(fā)起ipsec隧道指向單一ip地址,該ip地址被用于代表多ipsec隧道端點306。為確保對應同一個隧道的所有包都到達合適的端點306,負載均衡器302維持一個映射表312,該表提供信息,用于識別對接收到的包進行處理的端點。當有ipsec包到達時,使用所述映射來確定正確的端點來處理該包,且負載均衡器302將該包轉(zhuǎn)發(fā)到該確定的端點。如果接收到的ipsec包與建立新的ipsec隧道關聯(lián),即該包并不與已有的隧道關聯(lián),則負載均衡器302可以基于任意適當?shù)呢撦d均衡準則來選擇端點以向其轉(zhuǎn)發(fā)該包。
所述負載均衡器302所用的映射表312將所接收包的源ip、所述包的安全參數(shù)標識符(spi)、以及應當用于處理具有該源ip及spi的包的端點關聯(lián)起來。正如將理解的,關聯(lián)到同一個隧道的包應具有相同的ip地址,其應對應著發(fā)起方的ip地址。還有,關聯(lián)到同一個隧道的包可具有不同的spi值。當?shù)竭_的包有已知源ip地址和未知spi值時,負載均衡器302就無法識別該包所關聯(lián)的端點是哪個。相應地,負載均衡器302中包含了識別該spi與哪個端點關聯(lián)的處理。在用于做出負載均衡決策的初始的ike階段1消息之后,當有包到達負載均衡器302時,若其spi為未知,即該spi不在映射表312中,則負載均衡器302將所接收到的包轉(zhuǎn)發(fā)到所有端點306。如果端點306接收到的包的spi所對應的隧道并不在該點終結,則端點306響應一條消息,指示該spi為未知。如果端點306識別出該包的spi,則正常處理該包,并通過負載均衡器302將響應消息發(fā)回到發(fā)起方。負載均衡器302監(jiān)視從網(wǎng)關接收到的消息,并使用該響應來更新映射表312。
圖3中的映射表312描繪了由同一個發(fā)起方(即發(fā)起方304a)所發(fā)起、但分別在兩個不同的端點306b、306a終結的ipsec隧道314、316。如圖所示,第一ipsec隧道314與三個不同的spi關聯(lián),即s1、s2、s3。相應地,凡是在負載均衡器302處,從源ip地址“ip1”接收到的、具有的spi為s1、s2或s3的包,都將被轉(zhuǎn)發(fā)到端點306b進行處理。但是,從同一個源ip地址(即“ip1”)接收到的其他的包則可導向其他端點。例如,從源ip地址“ip1”發(fā)起的第二隧道可能關聯(lián)到兩個spi,即s10和s11。凡是從源ip地址“ip1”到達負載均衡器的、具有的spi為s10或s11的包,都將被轉(zhuǎn)發(fā)到端點306a做進一步的處理。
ipsec隧道內(nèi)的業(yè)務可以是加密的;不過,spi并未加密,故而負載均衡器302可以查看。spi被發(fā)起方和端點用于唯一標識一個安全關聯(lián)(sa)或子sa。雖然spi可能并未加密,但來自端點的響應,例如指示某個spi未被識別的響應,可在加密的sa中發(fā)送。為允許負載均衡器302利用該響應,端點可以附加地或另選地在sa之外發(fā)送該響應。相應地,來自端點指示某spi未被識別的消息可以由負載均衡器302接收,并用于更新其映射表312。
在ipsec隧道的建立中,涉及各種消息的交換。執(zhí)行初始密鑰交換(ike)過程,以在隧道端點之間建立初始安全關聯(lián)(sa)。sa定義了安全信息,例如在建立隧道式初始使用的加密算法、共用密鑰等。一旦建立起sa,即可建立一個或多個子sa來進行隧道端點之間的通信。每個子sa用于一個方向的通信,因此,如果要求或希望進行雙向通信,則將建立至少兩個子sa。對于雙向業(yè)務,子sa一般在同一個ike交換中成對建立。建立好的隧道中的包可以(但不需要)是加密的。包可以是認證報頭(ah)包,其保護包的內(nèi)容,防止在傳輸中被更改,但ah包并不會單獨加密。封裝安全有效載荷(esp)包可用于包的加密,并可能用于包的驗證。
如上所述,負載均衡器302接收包,并確定多個ipsec端點306中的一個以轉(zhuǎn)發(fā)該包。如果接收到的包并未關聯(lián)到已有ipsec隧道,例如該包關聯(lián)到建立ipsec隧道的請求,則負載均衡器302可以根據(jù)選擇標準,在多個ipsec端點306中選擇一個。如果接收到的包關聯(lián)到了已有ipsec隧道,例如該包中包含有spi,則負載均衡器302嘗試確定包(并且尤其是該包的源ip地址和spi)與負責關聯(lián)的隧道的ipsec端點306之間的映射。負載均衡器302可利用映射表,其將包的源ip地址和spi值關聯(lián)到負責處理該包的ipsec端點。如果能找到匹配,則將該包轉(zhuǎn)發(fā)到提供該ipsec端點306的關聯(lián)vpn。
當負責該spi所關聯(lián)的隧道的端點處接收到ike包時,該包將按正常處理。端點可傳輸建立子sa的ike消息或其他有關消息,具體取決于消息類型。對于從端點發(fā)送的子sa消息,負載均衡器302可以基于包報頭信息來加以識別,所述包報頭信息可以是未加密的。相應地,負載均衡器302可以接收該消息,識別子sa,并將新的spi關聯(lián)到發(fā)送該消息的端點。相應地,當接收到另一個具有相匹配的ip和spi的包時,該包可被轉(zhuǎn)發(fā)到該端點。
如果負載均衡器302處接收到的ike包并不與映射表中的源ip和spi對相匹配,但又并非用于執(zhí)行負載均衡決策的第一ike階段1消息,則負載均衡器302將無法確定正確的ipsec端點來轉(zhuǎn)發(fā)該包以進行處理。相應地,負載均衡器302會將該包轉(zhuǎn)發(fā)到所有ipsec端點306,并監(jiān)視來自端點306的響應,以確定合適的端點以轉(zhuǎn)發(fā)后續(xù)包。負載均衡器302所監(jiān)視的響應中,可以包含任意已建立的sa之外的端點所發(fā)送的信息消息,該消息指示被轉(zhuǎn)發(fā)包的spi未被該端點識別。該信息消息允許負載均衡器302確定后續(xù)包所不應被轉(zhuǎn)發(fā)至的端點。如果包所對應的隧道所關聯(lián)的端點對該包進行了處理,則可以在ah/esp包中發(fā)送響應;由于可能的加密,故而對負載均衡器302而言,此ah/esp包也許不能訪問。相應地,負載均衡器302也就無法明確地識別負責處理該包的端點,于是可轉(zhuǎn)而依靠排除法來確定用于處理該包的端點。如果負載均衡器302接到信息消息,指示該spi未被識別,則將對應的端點從可能的端點列表中排除,所述可能的端點可以處理與相匹配的源ip和spi關聯(lián)的包。
圖4、5和6描繪了ipsec隧道負載均衡的程序流程。圖4、5和6中所描繪的程序流程旨在傳達ipsec隧道負載均衡的總體流程,故而關于被傳輸?shù)奶囟ㄏ⒌囊恍┘毠?jié)并未詳細涵蓋。不過,較好地記載和理解了ipsec協(xié)議以及在ipsec中所用的其他協(xié)議,如ike、ah和esp。
發(fā)起方304通過發(fā)送初始ipsec消息,或更具體地,ike消息402到負載均衡器302,以嘗試與ipsec端點建立ipsec隧道。該初始消息中包含spi,其可用于標識作為結果的sa。負載均衡器302接收到要求建立ipsec隧道的初始請求消息,并選擇404可能的ipsec端點中的一個來建立該隧道。一旦選定端點(在圖4中示為端點306a),負載均衡器記錄下源ip地址(在圖4中示為與發(fā)起方304a關聯(lián)的“ip1”)、所收消息的spi(即“s1”)和選定的端點之間的關聯(lián)關系。源ip、spi和端點之間的關聯(lián)關系可以存儲406在映射表312中。進一步地,一旦端點被網(wǎng)關選定來處理該隧道請求,則該消息被轉(zhuǎn)發(fā)408到被選定的端點306a,不過其可以先修改目的地地址。端點306a接收并處理該消息,并且以ike階段1響應消息410響應,該消息由負載均衡器302接收,并轉(zhuǎn)發(fā)到發(fā)起方412。
雖然以上描述為交換單個請求和響應,但ike階段1交換可以涉及多個消息的交換以協(xié)商安全信息,如所使用的協(xié)議和密鑰。一旦ike階段1交換完成,即在發(fā)起方304a和被選的端點306a之間建立414初始sa。在ike階段1之后,發(fā)起方可通過ike階段2消息交換建立附加的子sa。ike階段2消息在已建立的sa中發(fā)送,但會包含新的spi,用于標識新的子sa。如圖所示,發(fā)起方可發(fā)送ike階段2消息416,其中包含新的spis2。當負載均衡器302接收到階段2消息,負載均衡器就會將該消息的源ip和spi與映射表312中的進行比對。但是,由于spis2在映射表中并未關聯(lián)到該源ip,故而對負載均衡器302而言spi是未識別的418,故而負載均衡器302也就無法確定將接收到的消息發(fā)送到哪個網(wǎng)關。當接收到的消息具有未識別的ip:spi對時,即該ip和spi不在映射312中時,負載均衡器302將該ip:spi與所有端點420關聯(lián)記錄在映射表中,然后將該包轉(zhuǎn)發(fā)到與負載均衡器422、424關聯(lián)的所有ipsec端點。每個端點306a、306n接收到被轉(zhuǎn)發(fā)的消息。對于端點306a,由于該端點正是負責處理該包的端點,故而能夠正確處理該包,并以子sa響應426進行響應。負載均衡器302從與該隧道關聯(lián)的端點接收到子sa響應。負載均衡器能夠基于該消息的報頭信息來識別來自端點的子sa響應426。相應地,當從端點306中的一個接到子sa消息時,負載均衡器能適當更新428映射表,以將用該子sa消息響應的端點306a與映射表312中的ip:spi關聯(lián)起來。在負載均衡器處從該端點接收到的子sa響應被轉(zhuǎn)發(fā)430到發(fā)起方304a。發(fā)起方304a處接收到該子sa響應430,且建立432子sa,其不論是否是已驗證的和/或已加密的,都可用于進行安全數(shù)據(jù)傳輸434。而對于雙向業(yè)務,同一次消息交換中可能建立兩個子sa。
與該隧道的處理無關聯(lián)的端點(被示出為端點306n),可用一個指示來響應轉(zhuǎn)發(fā)來的消息,所述指示為指示該接收到的spi為無效436,即該spi沒有關聯(lián)到該端點所處理的隧道。當響應ike消息時,端點可以在sa內(nèi)響應;不過,正如以下還要描述的,當響應ah或esp消息時,端點會在sa之外發(fā)送通知消息,該通知消息指示spi無效。當負載均衡器302接收到spi無效的通知消息時,即可更新映射表,將該端點從用于轉(zhuǎn)發(fā)相對應的ip:spi的消息的端點列表中移除。如圖4所示,映射表已經(jīng)基于子sa響應更新,故而也就無需再行更新。
圖5描繪了針對ah/esp消息的程序流程。發(fā)起方304a可在sa中發(fā)送ah和/或esp包。ah/esp消息502中包含了各自的spi。雖然包可以被加密,但包的spi部分并不被加密,故而負載均衡器也就可以訪問包中的spi。如圖5所示,ah/esp消息502中包含了spi:“s3”。當在負載均衡器接收時,將消息的源ip和所含的spi與映射表312進行比對,確定向哪個端點發(fā)送該消息。當該ip:spi對在映射表中未找到時,即不能被負載均衡器302識別時,則更新506映射,將所有端點都關聯(lián)到該ip:spi。當ip:spi未被負載均衡器識別時,則該消息被轉(zhuǎn)發(fā)到所有端點508、510。在圖5中,負責消息502所關聯(lián)的隧道的是端點306a。端點306a接收到轉(zhuǎn)發(fā)來的消息510并處理該消息,并響應以ah/esp響應512。該ah/esp響應消息在負載均衡器302處接收,并被轉(zhuǎn)發(fā)到發(fā)起方514。負載均衡器302并不能確定該ah/esp消息的內(nèi)容,故而也就無法用該響應來更新映射表。進一步地,負載均衡器302無法利用該消息中的spi值來確定由哪個端點處理該包,由于spi值是本地值,即發(fā)起端有一個spi值、端點有一個值,而在ah/esp消息中僅出現(xiàn)一個值,因此不可能將一個方向的spi關聯(lián)到反方向的spi。當端點306n處接收到該ah/esp消息508時,spi不被識別,故而端點也就發(fā)送信息消息,指示該spi無效516。端點306n在sa之外傳輸該信息消息。當在負載均衡器302接收到518該消息516時,就用之以更新映射表520,從而將發(fā)送該信息消息的端點306n從與關聯(lián)著ip:spi的映射表中移除。當從源ip接收到后續(xù)包時,其中后續(xù)包包括可以在映射表中找到的spi,則負載均衡器302將該包轉(zhuǎn)發(fā)到映射表中所標識的端點(或端點)。如此,即便建立了從同一個ip地址到不同端點的多個隧道,與特定隧道關聯(lián)的包也會被轉(zhuǎn)發(fā)到正確的端點。
圖6描繪了負載均衡器處從同一個發(fā)起方接收到新的隧道請求的流程。此流程類似于以上關于圖4描述的流程。發(fā)起方304a可嘗試建立新的ipsec隧道,并將ike階段1請求,具有對應的新spi,即“s10”,發(fā)送到602負載均衡器302。負載均衡器302接收到建立新隧道的請求消息,該消息尚未關聯(lián)到ipsec終結點,于是在ipsec端點中選擇一個(圖示為端點306n)來建立隧道。一旦負載均衡器302為vpn選定端點306n,該請求消息的源ip和spi就在映射表中關聯(lián)606到所選端點。負載均衡器302將ike階段1響應轉(zhuǎn)發(fā)到被選端點608,后者相應地向負載均衡器302做出響應610。負載均衡器302將響應消息轉(zhuǎn)發(fā)612到發(fā)起方來建立614初始sa。
如上所述,通過追蹤消息的ip和spi以及消息所用的端點,可以對接收從同一個源ip地址的ipsec隧道進行負載均衡。隨著用于負載均衡決策的原始ike階段1消息之后的關聯(lián)到未識別的ip和spi對的消息被接收到,則該消息被轉(zhuǎn)發(fā)到所有端點,而作為響應接收到的消息則用于更新映射表,其規(guī)定用于該ip:spi對的后續(xù)消息的端點。來自端點的、指示被轉(zhuǎn)發(fā)消息的spi不被識別或無效的響應消息可以在sa之外傳輸,以作為對ah和/或esp消息的響應。接收到的此消息可提供明確指示,表示該端點就是處理該ip:spi對的正確端點。例如,從端點接到子sa響應即明確標識該端點就是處理該ip:spi對的正確端點。不過,其他消息未必可以明確標識處理該消息的端點。相反,通知性的響應消息可指示:該端點不是處理該ip:spi對消息的正確端點。這種通知消息可供負載均衡器302用在排除法過程中,將已經(jīng)表示轉(zhuǎn)發(fā)來的spi無效的端點移除。
圖7描繪了一個負載均衡器的組件以及一個合作的端點例如vpn網(wǎng)關的組件。負載均衡器302中可包含處理單元702,用于執(zhí)行指令。所述處理單元702可由一個或多個物理中央處理單元(cpu)提供,每個具有一個或多個處理核心。所述負載均衡器302可包含存儲單元704,用于存儲數(shù)據(jù)和指令,供所述處理單元702執(zhí)行。所述存儲單元可包含易失性和非易失性存儲組件。所述存儲單元704可包含例如與所述處理單元相關聯(lián)的寄存器和存儲器、隨機存取存儲器(ram)、閃存和固態(tài)驅(qū)動器(ssd)以及硬盤驅(qū)動器(hdd)。所述負載均衡器302也可包含一個或多個輸入/輸出(i/o)組件706。所述i/o組件可包括i/o總線和/或連接到所述處理單元的組件。連接的i/o裝置可包含例如用于通過網(wǎng)絡進行通信的網(wǎng)絡接口、監(jiān)視器、揚聲器、鍵盤、鼠標、麥克風等。所述存儲單元704包含數(shù)據(jù)和指令,用以提供能夠?qū)碜酝粋€發(fā)起方的多個ipsec隧道進行負載均衡的負載均衡器。
當被所述處理單元702執(zhí)行時,所述負載均衡功能708配置服務器來接收發(fā)自發(fā)起方裝置的ipsec包(710)。所述負載均衡器處所接收到的每個ipsec包都包含特定的spi,并且是接收來自與源ip地址關聯(lián)的發(fā)起方。所述負載均衡器維護一個源ip:spi與ipsec端點之間的映射表,所述ipsec端點與處理具有相匹配的ip:spi對的包關聯(lián)。在用于執(zhí)行負載均衡決策的原始ike階段1消息之后,若所述負載均衡器接收到具有在所述映射表中找不到的未識別ip:spi對時,則所述被接收到的包被轉(zhuǎn)發(fā)到與所述負載均衡器關聯(lián)的所有ipsec端點(712)。一旦所述ipsec包被轉(zhuǎn)發(fā)到所有端點,將可從這些端點接收到一個或多個響應消息(714)。這些接收到的消息可以指示發(fā)送該消息的端點并不處理與該spi關聯(lián)的隧道,或者可以為指示與該端點已建立的子sa的響應消息?;谒鲆粋€或多個接收到的消息,所述負載均衡器確定ipsec終結點或端點(716),其將處理在所述負載均衡器處接收到的與所述被轉(zhuǎn)發(fā)包具有相同源ip:spi的包。所述負載均衡器相應地更新映射表,這樣當具有該ip:spi對的新包被接收到時,就會被發(fā)送到對應的終結點,而不用要求將其首先轉(zhuǎn)發(fā)到所有端點。
所述端點裝置306可以是與所述負載均衡器302關聯(lián)的多個端點裝置中的一個,并可包括用于執(zhí)行指令的處理單元718。所述處理單元718可由一個或多個物理中央處理單元(cpu)提供,每個具有一個或多個處理核心。所述端點裝置306可包含存儲單元720,用于存儲數(shù)據(jù)和指令,供所述處理單元718執(zhí)行。所述存儲單元720可包含易失性和非易失性存儲組件。所述存儲單元720可包含例如與所述處理單元相關聯(lián)的寄存器和存儲器、隨機存取存儲器(ram)、閃存和固態(tài)驅(qū)動器(ssd)以及硬盤驅(qū)動器(hdd)。所述端點裝置306也可包含一個或多個輸入/輸出(i/o)組件722。所述i/o組件可包括i/o總線和/或連接到所述處理單元的組件。連接的i/o裝置可包含例如用于通過網(wǎng)絡進行通信的網(wǎng)絡接口、監(jiān)視器、揚聲器、鍵盤、鼠標、麥克風等。所述存儲單元720包含數(shù)據(jù)和指令,以提供用于對ipsec隧道進行負載均衡的端點裝置。
通過執(zhí)行所述指令而提供的端點功能724包括接收包(726)。所述包從所述負載均衡器接收,并包含spi值,可用于確定該包是否與端點裝置306所終結的ipsec隧道關聯(lián)(728)。如果該包與端點裝置306所終結的ipsec隧道關聯(lián)(728處的“是”),則所述端點裝置正常處理該ipsec包(730)。如果該包并不與端點裝置306所終結的ipsec隧道關聯(lián)(728處的“否”),則端點裝置306將信息消息發(fā)回給所述負載均衡器302,指示所述接收到的ipsec包并非與端點裝置所終結的隧道關聯(lián)(732)。所述信息消息可以在已建立的sa之外發(fā)送,以允許所述負載均衡器接收該信息,并將該端點裝置從具有同一個spi的包將被轉(zhuǎn)發(fā)到的端點的列表中移除。
圖8描述了用于ipsec業(yè)務負載均衡的一種方法。所述方法800描繪了與ike階段1包關聯(lián)的處理。所述方法800從發(fā)起方接收具有第一spi的ike階段1包(802)。該方法確定所接收包的spi是否已識別(804),如果該spi確已識別(804處的“是”),即另一個具有相同spi的包被接收,并被發(fā)送到特定終結點,關聯(lián)的端點被確定(806)。一旦關聯(lián)端點被確定,則所述接收到的包被轉(zhuǎn)發(fā)到確定的端點(808)并做相應處理。如果該spi未被識別(804處的“否”),例如如果接收到的包是第一ike階段1包,且尚未分配處理該隧道的ipsec端點,則確定處理該包的端點以及關聯(lián)的隧道(810)。所述負載均衡器可以用各種方式來確定端點,例如按輪詢方式,或者基于各個端點當前的處理負載。一旦端點被確定,則將其與來自初始消息的源ip和spi關聯(lián)記錄(812),例如記錄在映射表或類似結構中。接收到的ike階段1包被轉(zhuǎn)發(fā)到被確定的端點(814),并在所述發(fā)起方與被確定的端點之間建立安全關聯(lián)(sa)(816)。一旦端點被選定,并且關聯(lián)被記錄,則后續(xù)接收到的具有相同ip:spi對的包將被轉(zhuǎn)發(fā)到同一個端點進行處理。
圖9描述了用于ipsec業(yè)務負載均衡的又一種方法。所述方法900描繪了與ike階段2包關聯(lián)的處理。ike階段2包可從同一個發(fā)起方接收但可以具有不同的spi(902)。一旦接到包,就判斷其ip:spi對是否已經(jīng)與所述確定的端點被關聯(lián)記錄(904)。在圖9中,假定接收到的ike階段2包與在以上圖8中描述的之前接收到的ike階段1包關聯(lián),并且同樣地應由同一個終結點處理;但是,第二spi并未與該端點關聯(lián),故而所述負載均衡器并不知道其所接收的消息應向何處轉(zhuǎn)發(fā)。如果接收到的包的spi能夠被識別(904處的“是”),則確定與該ip:spi關聯(lián)的端點(906),并將該包轉(zhuǎn)發(fā)到該端點(908)。但是,如果該ip:spi未被識別(904處的“否”),則該ip:spi與所有ipsec端點被關聯(lián)記錄(910),并將該包轉(zhuǎn)發(fā)到所有端點(912)。接收到來自各端點的響應(914),且每個接收到的響應(916)都被處理,直至所有響應都被處理完畢(926)。對于每個接收到的響應,確定該響應是子sa消息還是通知消息(918)。如果該消息是指示該spi無效的通知消息(918處的“通知”),則發(fā)送該通知消息的端點從與該ip:spi的關聯(lián)中被移除(920),以使后續(xù)收到的具有相同ip:spi的包不會被轉(zhuǎn)發(fā)到該端點。如果該消息是子sa消息(918處的“子sa”),則子sa響應被轉(zhuǎn)發(fā)到所述發(fā)起方(922),并且發(fā)送該子sa消息的端點與該ip:spi被關聯(lián)記錄,以使該端點成為唯一關聯(lián)到該ip:spi的端點(924)。一旦沒有更多接收到的響應(926)需要處理,則確定是否有至少一個端點與該ip:spi被關聯(lián)記錄(928)。如果沒有端點仍被與該ip:spi關聯(lián)登記(928處的“否”),則任何一個端點都不能識別該spi,且最后接收到的通知消息被轉(zhuǎn)發(fā)到該發(fā)起方(930)作為錯誤消息。轉(zhuǎn)發(fā)最后一條通知消息之后,或者如果還有端點仍與該ip:spi被關聯(lián)記錄(928處的“是”),則處理完畢(932)。
圖10描述了用于ipsec業(yè)務負載均衡的又一種方法。所述方法1000描繪了與ah和/或esp包關聯(lián)的處理。從發(fā)起方接收到具有spi的ah/esp包(1002)。判斷接收到的包的spi是否被識別(1004)。當該ip:spi對關聯(lián)到具體端點時,則spi被識別。該關聯(lián)可以各種方式記錄,包括例如使用映射表或類似結構。如果該spi被識別(1004處的“是”),則確定與該ip:spi關聯(lián)的端點(1006),并將該包轉(zhuǎn)發(fā)到該被確定的端點1008),并且該ah/esp包處理完畢(1018)。但是,如果該spi未被識別(1004處的“否”),則所有端點都與該ip:spi關聯(lián)登記(1010),并將接收到的該包轉(zhuǎn)發(fā)到每個端點(1012)。任何接收到該ah/esp包但不具有由spi指示的sa的端點,在sa之外發(fā)送的信息消息以響應該包,指示該spi無效。負責該spi所指示的sa的端點,將用ah/esp響應來進行響應,由于隧道加密,所述負載均衡器將不能對此進行識別,該ah/esp響應消息將被轉(zhuǎn)發(fā)到合適的發(fā)起方。相應地,為了確定具有ip:spi的包應轉(zhuǎn)發(fā)到哪個端點,此方法使用排除法,當接到指示該spi無效的信息消息時,將關聯(lián)從記錄的關聯(lián)中移除。當從端點接收到指示無效spi的信息消息時(1014),對應的端點從與該ip:spi的關聯(lián)中被移除(1016),并且該ah/esp包處理完畢(1018)。
以上已描述了對ipsec業(yè)務進行負載均衡的各個方面。如所描述,即便從單個發(fā)起方建立了的多個ipsec隧道,各隧道也可跨多個分離的ipsec端點進行均衡。雖然上文結合各種具體細節(jié)描述了負載均衡,但應當理解的是,可以改變具體細節(jié),而仍可提供ipsec業(yè)務的負載均衡。舉例而言,上文描述了將ipsec端點、源ip與spi之間的關聯(lián)存儲在映射表中,但其他存儲結構也可用于記錄該關聯(lián)。還有,關于各方法所描述的具體步驟順序可以改變。例如,雖然描述的是先記錄關聯(lián)、然后將包轉(zhuǎn)發(fā)到端點,但也可以先轉(zhuǎn)發(fā)包、然后記錄關聯(lián),或者并行完成。雖然各個組件,如ipsec發(fā)起方、負載均衡器和ipsec端點被描述為分離的物理組件,但也構思了在同一個物理計算硬件上提供所述組件中的一個或多個。舉例而言,多個發(fā)起方可以在單個計算裝置上提供。還有,例如負載均衡器可以提供在同一個物理計算裝置上,作為一個或多個ipsec端點。
雖然已經(jīng)描述了某些組件和步驟,但也構思了將分別描述的組件以及步驟合并起來成為更少的組件或步驟,或者這些步驟可以順序執(zhí)行、非順序執(zhí)行或并發(fā)執(zhí)行。類似地,單個的組件或步驟也可以由多個組件或步驟來提供??紤]到當前教示的本領域普通技術人員應可理解,除了本文作為示意性示例而描述的具體實施方式之外,所述ipsec負載均衡功能可以由軟件、固件和/或硬件的各種組合來進行提供。