專利名稱:用于經(jīng)由wan設(shè)備分離代理ssl的系統(tǒng)和方法
用于經(jīng)由WAN設(shè)備分離代理SSL的系統(tǒng)和方法
相關(guān)串請
本申請要求2010年4月21日提交的、名稱為“SYSTEMS ANDMETHODS FOR SPLIT PROXYING OF SSL VIA WAN APPLIANCES” 的美國專利申請 No. 12/764633 的優(yōu)先權(quán),通過引用將該美國專利申請全部包含于此。技術(shù)領(lǐng)域
本申請總的涉及數(shù)據(jù)通信網(wǎng)絡(luò)。本申請尤其涉及用于經(jīng)由廣域網(wǎng)(wan)設(shè)備對 SSL進(jìn)行分離代理的系統(tǒng)和方法。
背景技術(shù):
可以通過跨越一個或多個網(wǎng)絡(luò)的一個或多個中間裝置對在諸如客戶機(jī)和服務(wù)器的兩個網(wǎng)絡(luò)端點(diǎn)之間的通信進(jìn)行中轉(zhuǎn)。這些中間裝置的示例包括網(wǎng)關(guān)、路由器、交換機(jī)和其他網(wǎng)絡(luò)設(shè)備??梢酝ㄟ^安全連接,例如SSL會話連接,來提供客戶機(jī)和服務(wù)器之間的端到端通信??蛻魴C(jī)和服務(wù)器之間的中間裝置可便于SSL會話連接的建立,以及例如經(jīng)由虛擬專用網(wǎng)(VPN)為客戶機(jī)或服務(wù)器提供屏蔽保護(hù)。在一些情況下,在兩個端點(diǎn)之間的多個中間裝置可跨越一個或多個網(wǎng)絡(luò)提供數(shù)據(jù)加速和其他服務(wù)。每個中間裝置還可以充當(dāng)服務(wù)器或客戶機(jī)的代理,代表該服務(wù)器或客戶機(jī)中轉(zhuǎn)或處理數(shù)據(jù)。 發(fā)明內(nèi)容
本申請涉及用于跨越客戶機(jī)和服務(wù)器之間部署的多個中間裝置或廣域網(wǎng)(WAN)設(shè)備分離代理SSL通信的方法和系統(tǒng)。中間裝置可以與服務(wù)器建立安全連接,例如SSL連接。 另一個中間裝置可以與客戶機(jī)建立安全連接,例如SSL連接。這兩個中間裝置可以用這兩個中間裝置之間的又一個安全連接來橋接該客戶機(jī)側(cè)和服務(wù)器側(cè)的連接??梢允褂靡粋€或多個加密密鑰來保證這三個連接安全。當(dāng)從服務(wù)器向客戶機(jī)傳輸數(shù)據(jù)時(shí),本系統(tǒng)可以給每個安全連接分配密鑰并且隔離每個密鑰在所分配的安全連接中的使用,而不是跨越中間裝置共享和/或傳遞加密密鑰信息。相應(yīng)地,使用對應(yīng)的加密密鑰來加密經(jīng)由每個安全連接發(fā)送的數(shù)據(jù),并且可以在該安全連接的接收端使用相同的加密密鑰來對所述數(shù)據(jù)進(jìn)行解密(例如從服務(wù)器發(fā)送的且由中間裝置A接收的數(shù)據(jù))。在經(jīng)由又一個安全連接重新傳輸之前,可以使用又一個加密密鑰來對所接收的數(shù)據(jù)進(jìn)行加密并且相應(yīng)地在接收端使用后一個密鑰來對所述數(shù)據(jù)進(jìn)行解密(例如,從中間裝置A發(fā)送的且在又一個中間裝置B處接收的數(shù)據(jù))。因此,可以使用本文所述的方法和系統(tǒng)經(jīng)由代理(即中間裝置)在兩個端點(diǎn)(例如,客戶機(jī)和/或服務(wù)器)之間實(shí)現(xiàn)多個安全連接。相應(yīng)地,每個連接可以是安全的并且是隔離的, 而沒有沿該數(shù)據(jù)傳輸路徑跨越代理不當(dāng)?shù)乇┞秾?yīng)的加密密鑰。
在一個方面,本發(fā)明涉及用于跨越客戶機(jī)和服務(wù)器之間部署的中間裝置分離代理安全套接字層(SSL)通信的方法。該方法包括由與服務(wù)器通信的第一中間裝置與服務(wù)器建立第一 SSL會話。與一個或多個客戶機(jī)通信的第二中間裝置可以使用從第一中間裝置接收的SSL配置信息與客戶機(jī)建立第二 SSL會話。第二中間裝置和第一中間裝置可以經(jīng)由第三 SSL會話進(jìn)行通信。第一中間裝置可以使用第一 SSL會話的第一會話密鑰對從所述服務(wù)器接收的加密的數(shù)據(jù)進(jìn)行解密。第一中間裝置可以經(jīng)由第三SSL會話向第二中間裝置傳輸使用第三SSL會話的第三會話密鑰加密的所述數(shù)據(jù)。第二中間裝置可以使用該第三會話密鑰對經(jīng)由第三SSL會話加密的所述數(shù)據(jù)進(jìn)行解密。第二中間裝置可以向所述客戶機(jī)傳輸使用第二 SSL會話的第二會話密鑰加密的所述數(shù)據(jù)。
在一些實(shí)施例中,第二中間裝置向第一中間裝置傳輸來自客戶機(jī)的與服務(wù)器建立傳輸層連接的請求。第一中間裝置可以修改該請求以指示第二中間裝置執(zhí)行安全套接字層 (SSL)加速。第一中間裝置可以向第二中間裝置傳輸識別用于客戶機(jī)側(cè)SSL代理的SSL配置的消息。第二中間裝置可以使用從第一中間裝置接收的該SSL配置向客戶機(jī)傳輸服務(wù)器問候、服務(wù)器證書和服務(wù)器問候結(jié)束消息。第一中間裝置可以向第二中間裝置傳輸執(zhí)行分離SSL代理的請求。
在一些實(shí)施例中,第二中間裝置向第一中間裝置傳輸對加密操作的請求。第一中間裝置可以代表第二中間裝置執(zhí)行所請求的加密操作,并且向第二中間裝置傳送對所述請求的響應(yīng)。第一中間裝置可以使用在第一中間裝置上存儲的壓縮歷史對所接收的數(shù)據(jù)進(jìn)行壓縮。第二中間裝置可以使用在第二中間裝置上存儲的所述壓縮歷史對所接收的數(shù)據(jù)進(jìn)行解壓縮。第一中間裝置和第二中間裝置可以從由第一中間裝置和第二中間裝置中的每一個維護(hù)的預(yù)先建立的SSL會話池識別第三SSL會話。
在又一個方面,本發(fā)明涉及用于跨越客戶機(jī)和服務(wù)器之間部署的中間裝置分離代理安全套接字層(SSL)通信的系統(tǒng)。該系統(tǒng)可以包括用于由與服務(wù)器通信的第一中間裝置與服務(wù)器建立第一安全套接字層(SSL)會話的裝置。該系統(tǒng)可以包括用于由與一個或多個客戶機(jī)通信的第二中間裝置使用從第一中間裝置接收的SSL配置信息與客戶機(jī)建立第二安全套接字層(SSL)會話的裝置。第二中間裝置和第一中間裝置可以經(jīng)由第三SSL會話進(jìn)行通信。該系統(tǒng)可以包括用于由第一中間裝置使用第一 SSL會話的第一會話密鑰對從所述服務(wù)器接收的加密的數(shù)據(jù)進(jìn)行解密的裝置。該系統(tǒng)可以包括用于由第一中間裝置經(jīng)由第三 SSL會話向第二中間裝置傳輸使用第三SSL會話的第三會話密鑰加密的所述數(shù)據(jù)的裝置。 該系統(tǒng)可以包括用于由第二中間裝置使用所述第三會話密鑰對經(jīng)由第三SSL會話加密的數(shù)據(jù)進(jìn)行解密的裝置。在一個實(shí)施例中,該系統(tǒng)包括用于由第二中間裝置向所述客戶機(jī)傳輸使用第二 SSL會話的第二會話密鑰加密的所述數(shù)據(jù)的裝置。
在一些實(shí)施例中,該系統(tǒng)包括用于由第二中間裝置向第一中間裝置傳輸來自客戶機(jī)的、與服務(wù)器建立傳輸層連接的請求的裝置。第一中間裝置可以修改該請求以指示第二中間裝置執(zhí)行安全套接字層(SSL)加速。該系統(tǒng)可以包括用于由第一中間裝置向第二中間裝置傳輸識別用于客戶機(jī)側(cè)SSL代理的SSL配置的消息的裝置。在一個實(shí)施例中,該系統(tǒng)包括用于由第二中間裝置使用從第一中間裝置接收的所述SLL配置向客戶機(jī)傳輸服務(wù)器問候、服務(wù)器證書以及服務(wù)器問候結(jié)束消息的裝置。該系統(tǒng)可以包括用于由第一中間裝置向第二中間裝置傳輸執(zhí)行分離SSL代理的請求的裝置。
在一些實(shí)施例中,該系統(tǒng)包括用于由第二中間裝置向第一中間裝置傳輸對加密操作請求的裝置。該系統(tǒng)可以包括用于由第一中間裝置代表第二中間裝置執(zhí)行所請求的加密操作,并且向第二中間裝置傳送對所述請求的響應(yīng)的裝置。該系統(tǒng)可以包括用于由第一中5間裝置使用在第一中間裝置上存儲的壓縮歷史對所接收的數(shù)據(jù)進(jìn)行壓縮的裝置。在一個實(shí)施例中,該系統(tǒng)包括用于由第二中間裝置使用在第二中間裝置上存儲的所述壓縮歷史對所接收的數(shù)據(jù)進(jìn)行解壓縮的裝置。該系統(tǒng)可以包括用于由第一中間裝置和第二中間裝置從由第一中間裝置和第二中間裝置中的每一個維護(hù)的預(yù)先建立的SSL會話池識別第三SSL會話的裝置。
在附圖和下文的描述中詳細(xì)闡述本發(fā)明的各種實(shí)施例的細(xì)節(jié)。
通過參考下面結(jié)合附圖的描述,本發(fā)明的前述和其它目的、方面、特征和優(yōu)點(diǎn),將會更加明顯并更易于理解,其中
圖IA是客戶機(jī)通過一個或多個網(wǎng)絡(luò)優(yōu)化設(shè)備訪問服務(wù)器的網(wǎng)絡(luò)環(huán)境的實(shí)施例的框圖IB是客戶機(jī)通過一個或多個網(wǎng)絡(luò)優(yōu)化設(shè)備連同其他網(wǎng)絡(luò)設(shè)備訪問服務(wù)器的網(wǎng)絡(luò)環(huán)境的又一個實(shí)施例的框圖IC是客戶機(jī)通過單獨(dú)部署的或者與其他網(wǎng)絡(luò)設(shè)備一起部署的單個網(wǎng)絡(luò)優(yōu)化設(shè)備訪問服務(wù)器的網(wǎng)絡(luò)環(huán)境的又一個實(shí)施例的框圖ID和IE是計(jì)算裝置的實(shí)施例的框圖2A是用于處理客戶機(jī)與服務(wù)器之間的通信的設(shè)備的實(shí)施例的框圖2B是部署設(shè)備的網(wǎng)絡(luò)優(yōu)化特征的客戶機(jī)和/或服務(wù)器的又一個實(shí)施例的框圖3是使用網(wǎng)絡(luò)優(yōu)化特征與服務(wù)器通信的客戶機(jī)的實(shí)施例的框圖4A是使用來自中間裝置之間共享的SSL會話池的安全套接字層(SSL)會話的系統(tǒng)的實(shí)施例的框圖。
圖4B是用于中間裝置的專用池的狀態(tài)機(jī)的實(shí)施例的框圖4C顯示對于SSL狀態(tài)機(jī)標(biāo)識符的狀態(tài)機(jī)的實(shí)施例;
圖4D是使用來自中間裝置之間共享的SSL會話池的安全套接字層(SSL)會話的方法的實(shí)施例的流程圖5A和5B是用于跨越中間裝置分離代理安全套接字層(SSL)通信的系統(tǒng)的實(shí)施例的框圖5C是用于提供加密操作功能的系統(tǒng)的實(shí)施例的框圖是用于跨越中間裝置分離代理安全套接字層(SSL)通信的方法的實(shí)施例的流程圖5E、5F和5G是用于跨越中間裝置分離代理安全套接字層(SSL)通信的方法的又一個實(shí)施例的流程圖。
從下面結(jié)合附圖所闡述的詳細(xì)描述,本發(fā)明的特征和優(yōu)點(diǎn)將更明顯,其中,同樣的參考標(biāo)記在全文中標(biāo)識相應(yīng)的元素。在附圖中,同樣的附圖標(biāo)記通常指示相同的、功能上相似的和/或結(jié)構(gòu)上相似的元素。
具體實(shí)施方式
為了閱讀下述對本發(fā)明的各種實(shí)施例的描述,下面對于說明書的部分以及它們各自內(nèi)容的描述是有用的
- A部分描述有益于實(shí)施本發(fā)明的實(shí)施例的網(wǎng)絡(luò)環(huán)境和計(jì)算環(huán)境;
- B部分描述用于向遠(yuǎn)程用戶加速傳送計(jì)算環(huán)境的系統(tǒng)和設(shè)備架構(gòu)的實(shí)施例;
-C部分描述用于加速客戶機(jī)和服務(wù)器之間的通信的客戶機(jī)代理的實(shí)施例;
- D部分描述用于使用來自中間裝置之間共享的SSL會話池的SSL會話的系統(tǒng)和方法的實(shí)施例;以及
— E部分描述用于經(jīng)由WAN設(shè)備對SSL進(jìn)行分尚代理的系統(tǒng)和方法的實(shí)施例。
A.網(wǎng)絡(luò)和計(jì)算環(huán)塏
在討論設(shè)備和/或客戶機(jī)的系統(tǒng)和方法的實(shí)施例的細(xì)節(jié)之前,討論可在其中部署這樣的實(shí)施例的網(wǎng)絡(luò)和計(jì)算環(huán)境是有幫助的?,F(xiàn)在參見圖1A,描述了網(wǎng)絡(luò)環(huán)境的實(shí)施例。 概括來講,網(wǎng)絡(luò)環(huán)境包括經(jīng)由一個或多個網(wǎng)絡(luò)104、104’、104”與一個或多個服務(wù)器106a — 106η (同樣總的稱為服務(wù)器106,或遠(yuǎn)程機(jī)器106)通信的一個或多個客戶機(jī)102a — 102η (同樣總的稱為本地機(jī)器102,或客戶機(jī)102)。在一些實(shí)施例中,客戶機(jī)102經(jīng)由一個或多個網(wǎng)絡(luò)優(yōu)化設(shè)備200、200’(總的稱為設(shè)備200)與服務(wù)器106通信。在一個實(shí)施例中,網(wǎng)絡(luò)優(yōu)化設(shè)備200被設(shè)計(jì)為、配置為或適合于優(yōu)化廣域網(wǎng)(WAN)網(wǎng)絡(luò)流量。在一些實(shí)施例中,第一設(shè)備200與第二設(shè)備200’結(jié)合或協(xié)同工作來優(yōu)化網(wǎng)絡(luò)流量。例如,第一設(shè)備200可位于分支機(jī)構(gòu)和WAN連接之間而第二設(shè)備200’位于WAN和公司局域網(wǎng)(LAN)之間。設(shè)備200、 200’可一起工作以優(yōu)化在分支機(jī)構(gòu)中的客戶機(jī)和公司LAN上的服務(wù)器之間的WAN相關(guān)的網(wǎng)絡(luò)流量。
雖然圖IA示出了在客戶機(jī)102和服務(wù)器106之間的網(wǎng)絡(luò)104、網(wǎng)絡(luò)104’和網(wǎng)絡(luò) 104”(總的稱為網(wǎng)絡(luò)104),但客戶機(jī)102和服務(wù)器106可以位于同一個的網(wǎng)絡(luò)104上。網(wǎng)絡(luò)104、104’、104”可以是相同類型的網(wǎng)絡(luò)或不同類型的網(wǎng)絡(luò)。網(wǎng)絡(luò)104可為局域網(wǎng)(LAN) (例如公司內(nèi)網(wǎng)),城域網(wǎng)(MAN),或者廣域網(wǎng)(WAN)(例如互聯(lián)網(wǎng)或萬維網(wǎng))。網(wǎng)絡(luò)104、104’、 104”可為專用網(wǎng)絡(luò)或公網(wǎng)。在一個實(shí)施例中,網(wǎng)絡(luò)104’和網(wǎng)絡(luò)104”可為專用網(wǎng)而網(wǎng)絡(luò)104 可為公網(wǎng)。在一些實(shí)施例中,網(wǎng)絡(luò)104可為專用網(wǎng)而網(wǎng)絡(luò)104’和/或網(wǎng)絡(luò)104”可為公網(wǎng)。 在又一個實(shí)施例中,網(wǎng)絡(luò)104、104’、104”可都為專用網(wǎng)。在一些實(shí)施例中,客戶機(jī)102可位于公司企業(yè)的分支機(jī)構(gòu)中,經(jīng)由網(wǎng)絡(luò)104上的WAN連接與位于公司數(shù)據(jù)中心中的公司LAN 上的服務(wù)器106進(jìn)行通信。
網(wǎng)絡(luò)104可以是任何類型和/或形式的網(wǎng)絡(luò),并且可包括任何下列任何一種網(wǎng)絡(luò) 點(diǎn)對點(diǎn)網(wǎng)絡(luò),廣播網(wǎng)絡(luò),廣域網(wǎng),局域網(wǎng),電信網(wǎng)絡(luò),數(shù)據(jù)通信網(wǎng)絡(luò),計(jì)算機(jī)網(wǎng)絡(luò),ATM (異步傳輸模式)網(wǎng)絡(luò),SONET (同步光纖網(wǎng)絡(luò))網(wǎng)絡(luò),SDH (同步數(shù)字體系)網(wǎng)絡(luò),無線網(wǎng)絡(luò)和有線網(wǎng)絡(luò)。在一些實(shí)施例中,網(wǎng)絡(luò)104可以包括諸如紅外信道或者衛(wèi)星頻帶的無線鏈路。網(wǎng)絡(luò)104 的拓?fù)淇蔀榭偩€型、星型或環(huán)型網(wǎng)絡(luò)拓?fù)?。網(wǎng)絡(luò)104以及網(wǎng)絡(luò)拓?fù)淇梢允潜绢I(lǐng)域普通技術(shù)人員所知的能夠支持此處描述的操作的任何這樣的網(wǎng)絡(luò)或網(wǎng)絡(luò)拓?fù)洹?br>
如圖IA所示,第一網(wǎng)絡(luò)優(yōu)化設(shè)備200被顯示在網(wǎng)絡(luò)104和104’之間,并且第二網(wǎng)絡(luò)優(yōu)化設(shè)備200’也在網(wǎng)絡(luò)104’和104”之間。在一些實(shí)施例中,設(shè)備200可位于網(wǎng)絡(luò)104 上。例如,公司企業(yè)可在分支機(jī)構(gòu)中部署設(shè)備200。在其它實(shí)施例中,設(shè)備200可以位于網(wǎng)絡(luò)104’上。在一些實(shí)施例中,設(shè)備200可以位于網(wǎng)絡(luò)104’或網(wǎng)絡(luò)104”上。例如,設(shè)備200可位于公司的數(shù)據(jù)中心。在一個實(shí)施例中,設(shè)備200和200’在同一網(wǎng)絡(luò)上,在又一個實(shí)施例中,設(shè)備200和200’在不同的網(wǎng)絡(luò)上。
在一個實(shí)施例中,設(shè)備200是用于加速、優(yōu)化或者以其他方式改善任何類型和形式的網(wǎng)絡(luò)流量的性能、操作或服務(wù)質(zhì)量的裝置。在一些實(shí)施例中,設(shè)備200是一個性能增強(qiáng)代理。在其它實(shí)施例中,設(shè)備200是任何類型和形式的WAN優(yōu)化或加速裝置,有時(shí)也被稱為 WAN優(yōu)化控制器。在一個實(shí)施例中,設(shè)備200是由位于佛羅里達(dá)州Ft. Lauderdale的Citrix Systems公司出品的被稱為WANScaler的產(chǎn)品實(shí)施例中的任何一種。在其它實(shí)施例中,設(shè)備 200包括由位于華盛頓州Seattle的F5Networks公司出品的被稱為BIG-IP鏈路控制器和 WANjet的產(chǎn)品實(shí)施例中的任何一種。在又一個實(shí)施例中,設(shè)備200包括由位于加利福尼亞州Sunnyvale的Juniper NetWorks公司出品的WX和WXC WAN加速裝置平臺中的任何一種。 在一些實(shí)施例中,設(shè)備200包括由加利福尼亞州San Francisco的Riverbed Technology公司出品的虹鱒(steeIhead)系列WAN優(yōu)化設(shè)備中的任何一種。在其它實(shí)施例中,設(shè)備200包括由位于新澤西州Roseland的Expand Networks公司出品的WAN相關(guān)裝置中的任何一種。 在一個實(shí)施例中,設(shè)備200包括由位于加利福尼亞州Cupertino的Packeteer公司出品的任何一種WAN相關(guān)設(shè)備,例如由Packeteer提供的PacketShaper、iShared和SkyX產(chǎn)品實(shí)施例。在又一個實(shí)施例中,設(shè)備200包括由位于加利福尼亞州San Jose的Cisco Systems 公司出品的任何WAN相關(guān)設(shè)備和/或軟件,例如Cisco廣域網(wǎng)應(yīng)用服務(wù)軟件和網(wǎng)絡(luò)模塊以及廣域網(wǎng)引擎設(shè)備。
在一些實(shí)施例中,設(shè)備200為分支機(jī)構(gòu)或遠(yuǎn)程辦公室提供應(yīng)用和數(shù)據(jù)加速服務(wù)。 在一個實(shí)施例中, 設(shè)備200包括廣域文件服務(wù)(WAFS)的優(yōu)化。在又一個實(shí)施例中,設(shè)備200 加速文件的傳送,例如經(jīng)由通用互聯(lián)網(wǎng)文件系統(tǒng)(CIFS)協(xié)議。在其它實(shí)施例中,設(shè)備200在存儲器和/或存儲裝置中提供高速緩存來加速應(yīng)用和數(shù)據(jù)的傳送。在一個實(shí)施例中,設(shè)備 200在任何級別的網(wǎng)絡(luò)堆?;蛟谌魏蔚膮f(xié)議或網(wǎng)絡(luò)層中提供網(wǎng)絡(luò)流量的壓縮。在又一個實(shí)施例中,設(shè)備200提供傳輸層協(xié)議優(yōu)化、流量控制、性能增強(qiáng)或修改和/或管理,以加速WAN 連接上的應(yīng)用和數(shù)據(jù)的傳送。例如,在一個實(shí)施例中,設(shè)備200提供傳輸控制協(xié)議(TCP)優(yōu)化。在其它實(shí)施例中,設(shè)備200提供對于任何會話或應(yīng)用層協(xié)議的優(yōu)化、流量控制、性能增強(qiáng)或修改和/或管理。在下文的B部分中討論設(shè)備200的架構(gòu)、操作和優(yōu)化技術(shù)的進(jìn)一步的細(xì)節(jié)。
仍參考圖1A,網(wǎng)絡(luò)環(huán)境可包括多個邏輯分組的服務(wù)器106。在這些實(shí)施例中,服務(wù)器的邏輯分組可以被稱為服務(wù)器群38。在這些實(shí)施例的一些中,服務(wù)器106可為地理上分散的。在一些情況中,群38可以作為單個實(shí)體被管理。在其它實(shí)施例中,服務(wù)器群38包括多個服務(wù)器群38。在一個實(shí)施例中,服務(wù)器群代表一個或多個客戶機(jī)102執(zhí)行一個或多個應(yīng)用程序。
在每個群38中的服務(wù)器106可為不同種類。一個或多個服務(wù)器106可根據(jù)一種類型的操作系統(tǒng)平臺(例如,由華盛頓州Redmond的Microsoft公司制造的WINDOWS NT)操作,而一個或多個其它服務(wù)器106可根據(jù)另一類型的操作系統(tǒng)平臺(例如,Unix或Linux) 操作。每個群38的服務(wù)器106不需要與同一群38內(nèi)的另一個服務(wù)器106物理上接近。因此,被邏輯分組為群38的服務(wù)器106組可使用廣域網(wǎng)(WAN)連接或城域網(wǎng)(MAN)連接互聯(lián)。 例如,群38可包括物理上位于不同大陸或大陸的不同區(qū)域、國家、州、城市、校園或房間的服務(wù)器106。如果使用局域網(wǎng)(LAN)連接或一些直連形式來連接服務(wù)器106,則可增加群38 中的服務(wù)器106間的數(shù)據(jù)傳送速度。
服務(wù)器106可指文件服務(wù)器、應(yīng)用服務(wù)器、web服務(wù)器、代理服務(wù)器或者網(wǎng)關(guān)服務(wù)器。在一些實(shí)施例中,服務(wù)器106可以有作為應(yīng)用服務(wù)器或者作為主應(yīng)用服務(wù)器工作的能力。在一個實(shí)施例中,服務(wù)器106可包括活動目錄。客戶端102也可稱為客戶端節(jié)點(diǎn)或端點(diǎn)。在一些實(shí)施例中,客戶機(jī)102可以有作為客戶機(jī)節(jié)點(diǎn)尋求訪問服務(wù)器上的應(yīng)用的能力, 也可以有作為應(yīng)用服務(wù)器為其它客戶機(jī)102a-102n提供對寄載的應(yīng)用的訪問的能力。
在一些實(shí)施例中,客戶端102與服務(wù)器106通信。在一個實(shí)施例中,客戶端102可與群38中的服務(wù)器106的其中一個直接通信。在又一個實(shí)施例中,客戶端102執(zhí)行程序鄰近應(yīng)用(program neighborhood application)以與群38內(nèi)的服務(wù)器106通信。在又一個實(shí)施例中,服務(wù)器106提供主節(jié)點(diǎn)的功能。在一些實(shí)施例中,客戶端102通過網(wǎng)絡(luò)104與群 38中的服務(wù)器106通信。通過網(wǎng)絡(luò)104,客戶機(jī)102例如可以請求執(zhí)行由群38中的服務(wù)器 106a-106n寄載的各種應(yīng)用,并接收應(yīng)用執(zhí)行結(jié)果的輸出進(jìn)行顯示。在一些實(shí)施例中,只有主節(jié)點(diǎn)提供識別和提供與寄載所請求的應(yīng)用的服務(wù)器106’相關(guān)的地址信息所需的功能。
在一個實(shí)施例中,服務(wù)器106提供web服務(wù)器的功能。在又一個實(shí)施例中,服務(wù)器 106a接收來自客戶機(jī)102的請求,將請求轉(zhuǎn)發(fā)到第二服務(wù)器106b,并使用來自服務(wù)器106b 對該請求的響應(yīng)來對客戶機(jī)102的請求進(jìn)行響應(yīng)。在又一個實(shí)施例中,服務(wù)器106獲得客戶機(jī)1·02可用的應(yīng)用的列舉以及與由該應(yīng)用的列舉所識別的應(yīng)用的服務(wù)器106相關(guān)的地址信息。在又一個實(shí)施例中,服務(wù)器106使用web接口將對請求的響應(yīng)提供給客戶機(jī)102。在一個實(shí)施例中,客戶端102直接與服務(wù)器106通信以訪問所識別的應(yīng)用。在又一個實(shí)施例中,客戶機(jī)102接收由執(zhí)行服務(wù)器106上所識別的應(yīng)用而產(chǎn)生的諸如顯示數(shù)據(jù)的應(yīng)用輸出數(shù)據(jù)。
與其他設(shè)備一起部署
現(xiàn)在參考圖1B,描述了網(wǎng)絡(luò)環(huán)境的又一個實(shí)施例,在其中,網(wǎng)絡(luò)優(yōu)化設(shè)備200和諸如網(wǎng)關(guān)、防火墻或加速設(shè)備的一個或多個其他設(shè)備205、205’(總的稱為設(shè)備205或第二設(shè)備205)部署在一起。例如,在一個實(shí)施例中,設(shè)備205是防火墻或安全設(shè)備,而設(shè)備205’ 是LAN加速設(shè)備。在一些實(shí)施例中,客戶機(jī)102可通過一個或多個第一設(shè)備200和一個或多個第二設(shè)備205與服務(wù)器106通信。
一個或多個設(shè)備200和205可以位于在客戶機(jī)102和服務(wù)器106之間的網(wǎng)絡(luò)或網(wǎng)絡(luò)通信路徑中的任一點(diǎn)處。在一些實(shí)施例中,第二設(shè)備205可與第一設(shè)備200位于同一網(wǎng)絡(luò)104上。在其他實(shí)施例中,第二設(shè)備205可位于與第一設(shè)備200不同的網(wǎng)絡(luò)104上。在又一個實(shí)施例中,第一設(shè)備200和第二設(shè)備205在同一網(wǎng)絡(luò)上,例如網(wǎng)絡(luò)104,而第一設(shè)備 200,和第二設(shè)備205,在同一網(wǎng)絡(luò)上,例如網(wǎng)絡(luò)104,。
在一個實(shí)施例中,第二設(shè)備205包括任何類型和形式的傳輸控制協(xié)議或傳輸后終止裝置,例如網(wǎng)關(guān)或防火墻裝置。在一個實(shí)施例中,設(shè)備205通過與客戶機(jī)建立第一傳輸控制協(xié)議連接并且與第二設(shè)備或服務(wù)器建立第二傳輸控制協(xié)議連接來終止傳輸控制協(xié)議。在又一個實(shí)施例中,設(shè)備205通過改變、管理或控制在客戶機(jī)和服務(wù)器或第二設(shè)備之間的傳輸控制協(xié)議連接的行為來終止傳輸控制協(xié)議。例如,設(shè)備205可以改變、排隊(duì)、轉(zhuǎn)發(fā)或傳輸網(wǎng)絡(luò)分組以有效地終止傳輸控制協(xié)議連接或者起到終止該連接的作用或模擬為終止該連接。
在一些實(shí)施例中,第二設(shè)備205是性能增強(qiáng)代理。在一個實(shí)施例中,設(shè)備205提供虛擬專用網(wǎng)(VPN)連接。在一些實(shí)施例中,設(shè)備205提供安全套接字層VPN (SSLVPN)連接。 在其他實(shí)施例中,設(shè)備205提供基于Ipsec (互聯(lián)網(wǎng)協(xié)議安全)的VPN連接。在一些實(shí)施例中,設(shè)備205提供任何一個或多個下列功能壓縮、加速、負(fù)載平衡、交換/路由、緩存和傳輸控制協(xié)議(TCP)加速。
在一個實(shí)施例中,設(shè)備205是由位于佛羅里達(dá)州Ft. Lauderdale的CitrixSystems 公司出品的被稱為訪問網(wǎng)關(guān)、應(yīng)用防火墻、應(yīng)用網(wǎng)關(guān)或NetScaler的產(chǎn)品實(shí)施例中的任何一種。這樣,在一些實(shí)施例中,設(shè)備200包括執(zhí)行諸如SSL VPN連通、SSL卸載、交換/負(fù)載平衡、域名服務(wù)解析、LAN加速和應(yīng)用防火墻的服務(wù)或功能的任何邏輯、功能、規(guī)則或操作。
在一些實(shí)施例中,設(shè)備205提供在客戶機(jī)102和服務(wù)器106之間的SSLVPN連接。 例如,第一網(wǎng)絡(luò)104上的客戶端102請求建立到第二網(wǎng)絡(luò)104’上的服務(wù)器106的連接。在一些實(shí)施例中,第二網(wǎng)絡(luò)104”是不能從第一網(wǎng)絡(luò)104路由的。在其它實(shí)施例中,客戶端102 位于公用網(wǎng)絡(luò)104上,而服務(wù)器106位于專用網(wǎng)絡(luò)104’上,例如公司網(wǎng)。在一個實(shí)施例中, 客戶機(jī)代理攔截第一網(wǎng)絡(luò)104上的客戶機(jī)102的通信,加密該通信,并且經(jīng) 第一傳輸層連接發(fā)送該通信到設(shè)備205。設(shè)備205將第一網(wǎng)絡(luò)104上的第一傳輸層連接與到第二網(wǎng)絡(luò)104 上的服務(wù)器106的第二傳輸層連接相關(guān)聯(lián)。設(shè)備205接收來自客戶端代理的被攔截的通信, 解密該通信,并且經(jīng)第二傳輸層連接發(fā)送該通信到第二網(wǎng)絡(luò)104上的服務(wù)器106。第二傳輸層連接可以是池化的傳輸層連接。在一個實(shí)施例中,設(shè)備205為在兩個網(wǎng)絡(luò)104和104’之間的客戶機(jī)102提供端到端安全傳輸層連接。
在一個實(shí)施例中,設(shè)備205寄載虛擬專用網(wǎng)絡(luò)104上的客戶機(jī)102的內(nèi)部網(wǎng)互聯(lián)網(wǎng)協(xié)議或者IntranetIP地址??蛻魴C(jī)102具有本地網(wǎng)絡(luò)標(biāo)識符,諸如第一網(wǎng)絡(luò)104上的互聯(lián)網(wǎng)協(xié)議(IP)地址和/或主機(jī)名稱。當(dāng)經(jīng)由設(shè)備205連接到第二網(wǎng)絡(luò)104’時(shí),設(shè)備205在第二網(wǎng)絡(luò)104’上為客戶機(jī)102建立、分配或者以其它方式提供IntranetIP (內(nèi)部網(wǎng)IP), 其是諸如IP地址和/或主機(jī)名稱的網(wǎng)絡(luò)標(biāo)識符。使用客戶機(jī)的所建立的IntranetIP,設(shè)備 205在第二或?qū)S镁W(wǎng)104’上監(jiān)聽并接收指向該客戶機(jī)102的任何通信。在一個實(shí)施例中, 設(shè)備205在第二專用網(wǎng)絡(luò)104上用作或者代表客戶機(jī)102。
在一些實(shí)施例中,設(shè)備205具有加密引擎,所述加密引擎提供用于操控諸如SSL或 TLS的任何安全相關(guān)協(xié)議或其中涉及的任何功能的處理的邏輯、商業(yè)規(guī)則、功能或操作。例如,加密引擎加密并解密通過設(shè)備205傳輸?shù)木W(wǎng)絡(luò)分組,或其任何部分。加密引擎也可代表客戶機(jī)102a-102n、服務(wù)器106a_106n或設(shè)備200、205來設(shè)置或建立SSL或TLS連接。因此,加密引擎提供SSL處理的卸載和加速。在一個實(shí)施例中,加密引擎使用隧道協(xié)議來提供在客戶機(jī)102a-102n和服務(wù)器106a_106n間的虛擬專用網(wǎng)絡(luò)。在一些實(shí)施例中,加密引擎使用加密處理器。在其它實(shí)施例中,加密引擎包括運(yùn)行在加密處理器260上的可執(zhí)行指令。
在一些實(shí)施例中,設(shè)備205為在客戶機(jī)102和服務(wù)器106之間的通信提供下列一個或多個加速技術(shù)1)壓縮、2)解壓縮、3)傳輸控制協(xié)議池、4)傳輸控制協(xié)議多路復(fù)用、5) 傳輸控制協(xié)議緩沖、以及6)高速緩存。在一個實(shí)施例中,設(shè)備200通過打開與每一服務(wù)器 106的一個或者多個傳輸層連接并且維持這些連接以允許由客戶機(jī)經(jīng)由互聯(lián)網(wǎng)的重復(fù)數(shù)據(jù)訪問,來為服務(wù)器106緩解由重復(fù)打開和關(guān)閉到客戶機(jī)102的傳輸層連接所造成的大量處理負(fù)載。該技術(shù)此處稱為“連接池”。
在一些實(shí)施例中,為了經(jīng)由池化的傳輸層連接無縫拼接從客戶機(jī)102到服務(wù)器 106的通信,設(shè)備205通過在傳輸層協(xié)議級修改序列號和確認(rèn)號來轉(zhuǎn)換或多路復(fù)用通信。這被稱為“連接多路復(fù)用”。在一些實(shí)施例中,不需要應(yīng)用層協(xié)議相互作用。例如,在到來的分組(即,自客戶機(jī)102接收的分組)的情況中,所述分組的源網(wǎng)絡(luò)地址被改變?yōu)樵O(shè)備205的輸出端口的網(wǎng)絡(luò)地址,而目的網(wǎng)絡(luò)地址被改為目的服務(wù)器的網(wǎng)絡(luò)地址。在發(fā)出的分組(即,自服務(wù)器106接收的一個分組)的情況中,源網(wǎng)絡(luò)地址被從服務(wù)器106的網(wǎng)絡(luò)地址改變?yōu)樵O(shè)備 205的輸出端口的網(wǎng)絡(luò)地址,而目的地址被從設(shè)備205的網(wǎng)絡(luò)地址改變?yōu)檎埱蟮目蛻魴C(jī)102 的網(wǎng)絡(luò)地址。分組的序列號和確認(rèn)號也被轉(zhuǎn)換為到客戶機(jī)102的設(shè)備205的傳輸層連接上的由客戶機(jī)102所期待的序列號和確認(rèn)。在一些實(shí)施例中,傳輸層協(xié)議的分組校驗(yàn)和被重新計(jì)算以計(jì)及這些轉(zhuǎn)換。
在又一個實(shí)施例中,設(shè)備205為客戶機(jī)102和服務(wù)器106之間的通信提供交換或負(fù)載平衡功能。在一些實(shí)施例 中,設(shè)備205根據(jù)層4有效載荷或應(yīng)用層請求數(shù)據(jù)來分配流量并將客戶機(jī)請求定向到服務(wù)器106。在一個實(shí)施例中,盡管網(wǎng)絡(luò)分組的網(wǎng)絡(luò)層或者層2標(biāo)識了目的服務(wù)器106,但設(shè)備205利用承載為傳輸層分組的有效載荷的數(shù)據(jù)和應(yīng)用信息來確定服務(wù)器106以便分發(fā)網(wǎng)絡(luò)分組。在一個實(shí)施例中,設(shè)備205的健康監(jiān)控程序監(jiān)控服務(wù)器的健康來確定分發(fā)客戶機(jī)請求到哪個服務(wù)器106。在一些實(shí)施例中,如果設(shè)備205檢測到某個服務(wù)器106不可用或者具有超過預(yù)定閾值的負(fù)載,設(shè)備205可以將客戶機(jī)請求定向或者分發(fā)到另一個服務(wù)器106。
在一些實(shí)施例中,設(shè)備205用作域名服務(wù)(DNS)解析器或以其他方式提供對來自客戶機(jī)102的DNS請求的解析。在一些實(shí)施例中,設(shè)備攔截由客戶機(jī)102發(fā)送的DNS請求。 在一個實(shí)施例中,設(shè)備205以設(shè)備205的IP地址或其所寄載的IP地址來響應(yīng)客戶機(jī)的DNS 請求。在此實(shí)施例中,客戶機(jī)102把用于該域名的網(wǎng)絡(luò)通信發(fā)送到設(shè)備200。在又一個實(shí)施例中,設(shè)備200以第二設(shè)備200’的或其所寄載的IP地址來響應(yīng)客戶機(jī)的DNS請求。在一些實(shí)施例中,設(shè)備205使用由設(shè)備200確定的服務(wù)器106的IP地址來響應(yīng)客戶機(jī)的DNS請求。
在又一個實(shí)施例中,設(shè)備205為客戶機(jī)102和服務(wù)器106之間的通信提供應(yīng)用防火墻功能。在一個實(shí)施例中,策略引擎295’提供用于檢測和阻斷非法請求的規(guī)則。在一些實(shí)施例中,應(yīng)用防火墻防御拒絕服務(wù)(DoS )攻擊。在其它實(shí)施例中,設(shè)備檢查所攔截的請求的內(nèi)容,以識別和阻斷基于應(yīng)用的攻擊。在一些實(shí)施例中,規(guī)則/策略引擎包括用于提供對多個種類和類型的基于web或互聯(lián)網(wǎng)的脆弱點(diǎn)的保護(hù)的一個或多個應(yīng)用防火墻或安全控制策略,例如下列的一個或多個1)緩沖區(qū)泄出,2) CGI-BIN參數(shù)操縱,3)表單/隱藏字段操縱,4)強(qiáng)制瀏覽,5) cookie或會話中毒,6)被破壞的訪問控制列表(ACLs)或弱密碼,7) 跨站腳本處理(XSS),8)命令注入,9) SQL注入,10)錯誤觸發(fā)敏感信息泄露,11)對加密的不安全使用,12)服務(wù)器錯誤配置,13)后門和調(diào)試選項(xiàng),14)網(wǎng)站涂改,15)平臺或操作系統(tǒng)弱點(diǎn),和16)零天攻擊。在一個實(shí)施例中,對下列情況的一種或多種,設(shè)備的防火墻以檢查或分析網(wǎng)絡(luò)通信的形式來提供HTML格式字段的保護(hù)1)返回所需的字段,2)不允許附加字段,3)只讀和隱藏字段強(qiáng)制(enf0rcement),4)下拉列表和單選按鈕字段的一致,以及5)格式字段最大長度強(qiáng)制。在一些實(shí)施例中,設(shè)備205的應(yīng)用防火墻確保cookie不被修改。在其它實(shí)施例中,設(shè)備205通過執(zhí)行合法的URL來防御強(qiáng)制瀏覽。
在其他實(shí)施例中,應(yīng)用防火墻設(shè)備205保護(hù)在網(wǎng)絡(luò)通信中包含的任何機(jī)密信息。 設(shè)備205可以根據(jù)策略引擎的規(guī)則或策略來檢查或分析任一網(wǎng)絡(luò)通信以識別在網(wǎng)絡(luò)分組的任一字段中的任一機(jī)密信息。在一些實(shí)施例中,應(yīng)用防火墻在網(wǎng)絡(luò)通信中識別信用卡號、 口令、社會保險(xiǎn)號、姓名、病人代碼、聯(lián)系信息和年齡的一次或多次出現(xiàn)。網(wǎng)絡(luò)通信的編碼部分可以包括這些出現(xiàn)或機(jī)密信息。基于這些出現(xiàn),在一個實(shí)施例中,應(yīng)用防火墻可以對網(wǎng)絡(luò)通信采取策略行動,諸如阻止發(fā)送網(wǎng)絡(luò)通信。在又一個實(shí)施例中,應(yīng)用防火墻可以重寫、移動或者以其它方式掩蓋該所識別的出現(xiàn)或者機(jī)密信息。
盡管總的稱為網(wǎng)絡(luò)優(yōu)化或第一設(shè)備200和第二設(shè)備205,但第一設(shè)備200和第二設(shè)備205可以是相同類型和形式的設(shè)備。在一個實(shí)施例中,第二設(shè)備205可執(zhí)行與第一設(shè)備200相同的功能,或部分相同的功能,反之亦然。例如,第一設(shè)備200和第二設(shè)備205都可以提供加速技術(shù)。在一個實(shí)施例中,第一設(shè)備200可執(zhí)行LAN加速而第二設(shè)備205執(zhí)行 WAN加速,或者反之亦然。在又一個實(shí)施例中,第一設(shè)備200也可以與第二設(shè)備205 —樣是傳輸控制協(xié)議終止裝置。而且,盡管設(shè)備200和205被顯示為在網(wǎng)絡(luò)上單獨(dú)的裝置,但設(shè)備 200和/或設(shè)備205可以是客戶機(jī)102或服務(wù)器106的一部分。
現(xiàn)參考圖1C,描述了用于部署設(shè)備200的網(wǎng)絡(luò)環(huán)境的其他實(shí)施例。在如圖IC的上部所描述的又一個實(shí)施例中,設(shè)備200可以部署為網(wǎng)絡(luò)104上單個設(shè)備或單個代理。例如, 設(shè)備200可以被設(shè)計(jì)、構(gòu)建或調(diào)整來執(zhí)行此處所討論的WAN優(yōu)化技術(shù),而不需要第二協(xié)同設(shè)備200’。在如圖IC的下部所描述的其他實(shí)施例中,可以將單個設(shè)備200與一個或多個第二設(shè)備205部署在一起。例如,諸如Citrix WANScaler設(shè)備的WAN加速第一設(shè)備200可以與 LAN加速或應(yīng)用防火墻第二設(shè)備205 (例如Citrix NetScaler設(shè)備)部署在一起。
計(jì)算裝置
客戶機(jī)102、服務(wù)器106和設(shè)備200和205可以被部署為和/或執(zhí)行在任何類型和形式的計(jì)算裝置上,諸如能夠在任何類型和形式的網(wǎng)絡(luò)上通信并執(zhí)行此處描述的操作的計(jì)算機(jī)、網(wǎng)絡(luò)裝置或者設(shè)備。圖ID和IE描述了可用于實(shí)施客戶機(jī)102、服務(wù)器106或設(shè)備 200的實(shí)施例的計(jì)算裝置100的框圖。如圖ID和IE所示,每個計(jì)算裝置100包括中央處理單元101和主存儲器單元122。如圖ID所示,計(jì)算裝置100可以包括可視顯示裝置124、鍵盤126和/或諸如鼠標(biāo)的指示裝置127。每個計(jì)算裝置100也可包括其它可選元件,例如一個或多個輸入/輸出裝置130a — 130b (總的使用附圖標(biāo)記130表不),以及與中央處理單元101通信的高速緩存存儲器140。
中央處理單元101是響應(yīng)并處理從主存儲器單元122取出的指令的任何邏輯電路。在許多實(shí)施例中,中央處理單元由微處理器單元提供,例如由加利福尼亞州Mountain View的Intel公司制造的微處理器單元;由伊利諾伊州Schaumburg的Motorola公司制造的微處理器單元;由加利福尼亞州SantaClara的Transmeta公司制造的微處理器單元;由紐約州 White Plains 的 International Business Machines 公司制造的 RS/6000 處理器; 或者由加利福尼亞州Sunnyvale的Advanced Micro Devices公司制造的微處理器單元。計(jì)算裝置100可以基于這些處理器中的任何一種,或者能夠按照這里所說明的那樣運(yùn)行的任何其它處理器。
主存儲器單元122可以是能夠存儲數(shù)據(jù)并允許微處理器101直接訪問任何存儲位置的一個或多個存儲器芯片,例如靜態(tài)隨機(jī)存取存儲器(SRAM)、突發(fā)SRAM或同步突發(fā)SRAM (BSRAM)、動態(tài)隨機(jī)存取存儲器DRAM、快速頁模式DRAM (FPM DRAM)、增強(qiáng)型DRAM (EDR AM)、 擴(kuò)展數(shù)據(jù)輸出RAM (EDO RAM)、擴(kuò)展數(shù)據(jù)輸出DRAM (EDO DRAM)、突發(fā)式擴(kuò)展數(shù)據(jù)輸出DRAM (BEDO DRAM)、增強(qiáng)型 DRAM (EDRAM)、同步 DRAM (SDRAM)、JEDEC SRAM、PC100SDRAM、雙數(shù)據(jù)速率 SDRAM (DDRSDRAM)、增強(qiáng)型 SRAM (ESDRAM)、同步鏈路 DRAM (SLDRAM)、直接 Rambus DRAM (DRDRAM)或鐵電RAM (FRAM)0主存儲器122可以基于上述存儲芯片的任何一種,或者能夠像這里所說明的那樣運(yùn)行的任何其它可用存儲芯片。在圖IC中所示的實(shí)施例中,處理器101通過系統(tǒng)總線150 (在下面進(jìn)行更詳細(xì)的描述)與主存儲器122進(jìn)行通信。圖IC 描述了在其中處理器通過存儲器端口 103直接與主存儲器122通信的計(jì)算裝置100的實(shí)施例。例如,在圖IE中,主存儲器122可以是DRDRAM。
圖IE描述了在其中主處理器101通過第二總線與高速緩存存儲器140直接通信的實(shí)施例,第二總線有時(shí)也稱為后端總線。其他實(shí)施例中,主處理器101使用系統(tǒng)總線150 和高速緩存存儲器140通信。高速緩存存儲器140通常有比主存儲器122更快的響應(yīng)時(shí)間,并且通常由SRAM、BSRAM或EDRAM提供。在圖IF中所示的實(shí)施例中,處理器101通過本地系統(tǒng)總線150與多個I/O裝置130進(jìn)行通信??梢允褂酶鞣N不同的總線將中央處理單元101連接到任何I/O裝置130,所述總線包括VESAVL總線、ISA總線、EISA總線、微通道架構(gòu)(MCA)總線、PCI總線、PCI-X總線、PCI-Express總線或NuBus。對于I/O裝置是視頻顯示器124的實(shí)施例,處理器101可以使用高級圖形端口(AGP)與顯示器124通信。圖IE 說明了主處理器101通過超傳輸(HyperTransport)、快速I/O或者Inf iniBand直接與I/O 裝置130通信的計(jì)算機(jī)100的一個實(shí)施例。圖IE還描述了在其中混合本地總線和直接通信的實(shí)施例處理器101使用本地互連總線與I/O裝置130進(jìn)行通信,同時(shí)直接與I/O裝置 130進(jìn)行通信。
計(jì)算裝置100可以支持任何適當(dāng)?shù)陌惭b裝置116,例如用于接收像3. 5英寸、5. 25 英寸磁盤或ZIP磁盤這樣的軟盤的軟盤驅(qū)動器、CD-ROM驅(qū)動器、CD-R/RW驅(qū)動器、DVD-ROM 驅(qū)動器、多種格式的磁帶驅(qū)動器、USB裝置、硬盤驅(qū)動器或適于安裝像任何客戶機(jī)代理120 或其部分的軟件和程序的任何其它裝置。計(jì)算裝置100還可以包括存儲裝置128,諸如一個或者多個硬盤驅(qū)動器或者獨(dú)立磁盤冗余陣列,用于存儲操作系統(tǒng)和其它相關(guān)軟件,以及用于存儲諸如涉及客戶機(jī)代理120的任何程序的應(yīng)用軟件程序。或者,可以使用安裝裝置116 的任何一種作為存儲裝置128。此外,操作系統(tǒng)和軟件可從例如可引導(dǎo)CD的可引導(dǎo)介質(zhì)運(yùn)行,諸如KNOPPIX ,一種用于GNU/Linux的可引導(dǎo)CD,該可引導(dǎo)CD可自knoppix. net作為GNU/Linux分發(fā)獲得。
此外,計(jì)算裝置100可以包括通過多種連接接口到局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)或互聯(lián)網(wǎng)的網(wǎng)絡(luò)接口 118,所述多種連接包括但不限于標(biāo)準(zhǔn)電話線路、LAN或WAN鏈路(例如 802. ll,Tl,T3、56kb、X. 25)、寬帶連接(如ISDN、幀中繼、ATM)、無線連接、或上述任何或所有連接的一些組合。網(wǎng)絡(luò)接口 118可以包括內(nèi)置網(wǎng)絡(luò)適配器、網(wǎng)絡(luò)接口卡、PCMCIA網(wǎng)絡(luò)卡、卡總線網(wǎng)絡(luò)適配器、無線網(wǎng)絡(luò)適配器、USB網(wǎng)絡(luò)適配器、調(diào)制解調(diào)器或適用于將計(jì)算裝置100 接口到能夠通信并執(zhí)行本文所述的操作的任何類型的網(wǎng)絡(luò)的任何其它設(shè)備。
計(jì)算裝置100中可以包括各種1/0裝置130a_130n。輸入裝置包括鍵盤、鼠標(biāo)、觸控板、軌跡球、麥克風(fēng)和繪圖板。輸出裝置包括視頻顯示器、揚(yáng)聲器、噴墨打印機(jī)、激光打印機(jī)和熱升華打印機(jī)。如圖IC所示,I/O裝置130可以由I/O控制器123控制。I/O控制器可以控制一個或多個I/O裝置,例如鍵盤126和指示裝置127 (如鼠標(biāo)或光筆)。此外,I/O裝置還可以為計(jì)算裝置100提供存儲裝置128和/或安裝介質(zhì)116。在其它實(shí)施例中,計(jì)算裝置100可以提供USB連接以接納手持USB存儲裝置,例如由位于加利福尼亞州LosAlamitos 的Twintech Industry公司制造的USB閃存驅(qū)動系列裝置。
在一些實(shí)施例中,計(jì)算裝置100可以包括多個顯示裝置124a_124n或與其相連,這些顯示裝置各自可以是相同或不同的類型和/或形式。因而,任何一種I/O裝置130a-130n 和/或I/O控制器123可以包括任一類型和/或形式的適當(dāng)?shù)挠布?、軟件或硬件和軟件的組合,以支持、允許或提供通過計(jì)算裝置100連接和使用多個顯示裝置124a-124n。例如, 計(jì)算裝置100可以包括任何類型和/或形式的視頻適配器、視頻卡、驅(qū)動器和/或庫,以與顯示裝置124a-124n接口、通信、連接或以其他方式使用顯示裝置。在一個實(shí)施例中,視頻適配器可以包括多個連接器以與多個顯示裝置124a-124n接口。在其它實(shí)施例中,計(jì)算裝置100可以包括多個視頻適配器,每個視頻適配器與顯示裝置124a-124n中的一個或多個連接。在一些實(shí)施例中,計(jì)算裝置100的操作系統(tǒng)的任一部分都可以被配置用于使用多個顯示器124a-124n。在其它實(shí)施例中,顯示裝置124a_124n中的一個或多個可以由一個或多個其它計(jì)算裝置提供,諸如例如通過網(wǎng)絡(luò)與計(jì)算裝置100連接的計(jì)算裝置IOOa和100b。 這些實(shí)施例可以包括被設(shè)計(jì)和構(gòu)造為將另一個計(jì)算機(jī)的顯示裝置用作計(jì)算裝置100的第二顯示裝置124a的任一類型的軟件。本領(lǐng)域的普通技術(shù)人員會認(rèn)識和理解可以將計(jì)算裝置100配置成具有多個顯示裝置124a-124n的各種方法和實(shí)施例。
在進(jìn)一步的實(shí)施例中,I/O裝置130可以是系統(tǒng)總線150和外部通信總線之間的橋170,所述外部通信總線例如USB總線、Apple桌面總線、RS-232串行連接、SCSI總線、 FireWire總線、Fireffire800總線、以太網(wǎng)總線、AppleTalk總線、千兆位以太網(wǎng)總線、異步傳輸模式總線、HIPPI總線、超級HIPPI總線、SerialPlus總線、SCI/LAMP總線、光纖信道總線或串行SCSI總線。
圖ID和IE中描述的那類計(jì)算裝置100通常在控制任務(wù)的調(diào)度和對系統(tǒng)資源的訪問的操作系統(tǒng)的控制下操作。計(jì)算裝置100可以運(yùn)行任何操作系統(tǒng),如Microsoft Windows操作系統(tǒng),不同發(fā)行版本的Unix和Linux操作系統(tǒng),用于Macintosh計(jì)算機(jī)的任何版本的MAC OS旬任何嵌入式操作系統(tǒng),任何實(shí)時(shí)操作系統(tǒng),任何開源操作系統(tǒng),任何專有操作系統(tǒng),任何用于移動計(jì)算裝置的操作系統(tǒng),或者任何其它能夠在計(jì)算裝置上運(yùn)行并完成這里所述操作的操作系統(tǒng)。典型的操作系統(tǒng)包括WIND0WS 3. X,WINDOWS 95,WINDOWS 98,WINDOWS 2000,WINDOWS NT 3. 51、WINDOWS NT 4. 0、WINDOWS CE 和 WINDOWS XP,所有這些均由位于華盛頓州Redmond的微軟公司出品;由位于加利福尼亞州Cupertino的蘋果計(jì)算機(jī)出品的MacOS ;由位于紐約州Armonk的國際商業(yè)機(jī)器公司出品的OS/2 ;以及由位于猶他州Salt Lake City的Caldera公司發(fā)布的可免費(fèi)使用的Linux操作系統(tǒng)或者任何類型和/或形式的Unix操作系統(tǒng),以及其它。
在其它實(shí)施例中,計(jì)算裝置100可以有符合該裝置的不同的處理器、操作系統(tǒng)和輸入設(shè)備。例如,在一個實(shí)施例中,計(jì)算機(jī)100是由Palm公司出品的Treo 180、270、1060、600 或650智能電話。在該實(shí)施例中,Treo智能電話在PalmOS操作系統(tǒng)的控制下操作,并包括指示筆輸入裝置以及五向?qū)Ш窖b置。此外,計(jì)算裝置100可以是任何工作站、桌面計(jì)算機(jī)、膝上型或筆記本計(jì)算機(jī)、服務(wù)器、手持計(jì)算機(jī)、移動電話、任何其它計(jì)算機(jī)、或能夠通信并有足夠的處理器能力和存儲容量以執(zhí)行此處所述的操作的其它形式的計(jì)算或者電信裝置。
B.系統(tǒng)和設(shè)各架構(gòu)
現(xiàn)參考圖2A,描述了用于傳送和/或操作客戶機(jī)上的計(jì)算環(huán)境的設(shè)備200的系統(tǒng)環(huán)境和架構(gòu)的實(shí)施例。在一些實(shí)施例中,服務(wù)器106包括用于向一個或多個客戶機(jī)102傳送計(jì)算環(huán)境或應(yīng)用和/或數(shù)據(jù)文件的應(yīng)用傳送系統(tǒng)290??偟膩碚f,客戶機(jī)102經(jīng)由網(wǎng)絡(luò) 104和設(shè)備200與服務(wù)器106通信。例如,客戶機(jī)102可駐留在公司的遠(yuǎn)程辦公室里,例如分支機(jī)構(gòu),而服務(wù)器106可駐留在公司數(shù)據(jù)中心??蛻魴C(jī)102包括客戶機(jī)代理120以及計(jì)算環(huán)境215。計(jì)算環(huán)境215可執(zhí)行或操作用于訪問、處理或使用數(shù)據(jù)文件的應(yīng)用??山?jīng)由設(shè)備200和/或服務(wù)器106傳送計(jì)算環(huán)境215、應(yīng)用和/或數(shù)據(jù)文件。
在一些實(shí)施例中,設(shè)備200向客戶機(jī)102加速傳送計(jì)算環(huán)境215或者其任何部分。 在一個實(shí)施例中,設(shè)備200通過應(yīng)用傳送系統(tǒng)290加速計(jì)算環(huán)境15的傳送。例如,可使用此處描述的實(shí)施例來加速從公司中央數(shù)據(jù)中心到遠(yuǎn)程用戶位置(例如公司的分支機(jī)構(gòu))的流應(yīng)用(streaming application)及該應(yīng)用可處理的數(shù)據(jù)文件的傳送。在又一個實(shí)施例中, 設(shè)備200加速客戶機(jī)102和服務(wù)器106之間的傳輸層流量。在又一個實(shí)施例中,設(shè)備200 控制、管理、或調(diào)整傳輸層協(xié)議以便加速計(jì)算環(huán)境的傳送。在一些實(shí)施例中,設(shè)備200使用緩存和/或壓縮技術(shù)來加速計(jì)算環(huán)境的傳輸。
在一些實(shí)施例中,基于多個執(zhí)行方法并且基于通過策略引擎295所應(yīng)用的任一驗(yàn)證和授權(quán)策略,應(yīng)用傳送管理系統(tǒng)290提供將計(jì)算環(huán)境傳送到遠(yuǎn)程的或者其它的用戶的桌面的應(yīng)用傳送技術(shù)。使用這些技術(shù),遠(yuǎn)程用戶可以從任何網(wǎng)絡(luò)連接裝置100獲取計(jì)算環(huán)境并且訪問存儲應(yīng)用和數(shù)據(jù)文件的服務(wù)器。在一個實(shí)施例中,應(yīng)用傳送系統(tǒng)290可駐留在服務(wù)器106上或在其上執(zhí)行。在又一個實(shí)施例中,應(yīng)用傳送系統(tǒng)290可駐留在多個服務(wù)器 106a-106n上或在其上執(zhí)行。在一些實(shí)施例中,應(yīng)用傳送系統(tǒng)290可在服務(wù)器群38內(nèi)執(zhí)行。 在一個實(shí)施例中,執(zhí)行應(yīng)用傳送系統(tǒng)290的服務(wù)器106也可存儲或提供應(yīng)用和數(shù)據(jù)文件。在又一個實(shí)施例中,一個或多個服務(wù)器106的第一組可執(zhí)行應(yīng)用傳送系統(tǒng)290,而不同的服務(wù)器106η可存儲或提供應(yīng)用和數(shù)據(jù)文件。在一些實(shí)施例中,應(yīng)用傳送系統(tǒng)290、應(yīng)用和數(shù)據(jù)文件中的每一個可駐留或位于不同的服務(wù)器。在又一個實(shí)施例中,應(yīng)用傳送系統(tǒng)290的任何部分可駐留、執(zhí)行、或被存儲于或分發(fā)到設(shè)備200或多個設(shè)備。
客戶機(jī)102可包括用于執(zhí)行使用或處理數(shù)據(jù)文件的應(yīng)用的計(jì)算環(huán)境215??蛻魴C(jī) 102可通過網(wǎng)絡(luò)104、104’和設(shè)備200請求來自服務(wù)器106的應(yīng)用和數(shù)據(jù)文件。在一個實(shí)施例中,設(shè)備200可以將來自客戶機(jī)102的請求轉(zhuǎn)發(fā)到服務(wù)器106。例如,客戶機(jī)102可能不具有本地存儲或者本地可訪問的應(yīng)用和數(shù)據(jù)文件。響應(yīng)于請求,應(yīng)用傳送系統(tǒng)290和/或服務(wù)器106可以傳送應(yīng)用和數(shù)據(jù)文件到客戶機(jī)102。例如,在一個實(shí)施例中,服務(wù)器106可以把應(yīng)用作為應(yīng)用流來傳輸,以在客戶機(jī)102上的計(jì)算環(huán)境215中操作。
在一些實(shí)施例中,應(yīng)用傳送系統(tǒng)290包括Citrix Systems公司的CitrixAccess Suite 的任一部分(例如 MetaFrame 或 Citrix Presentation Server ),和 / 或微軟公司開發(fā)的Microsoft Windows終端服務(wù)中的任何一個。在一個實(shí)施例中,應(yīng)用傳送系統(tǒng)290 可以通過遠(yuǎn)程顯示協(xié)議或者以其它方式通過基于遠(yuǎn)程計(jì)算或者基于服務(wù)器計(jì)算來傳送一個或者多個應(yīng)用到客戶機(jī)102或者用戶。在又一個實(shí)施例中,應(yīng)用傳送系統(tǒng)290可以通過應(yīng)用流來傳送一個或者多個應(yīng)用到客戶機(jī)或者用戶。
在一個實(shí)施例中,應(yīng)用傳送系統(tǒng)290包括策略引擎295,其用于控制和管理對應(yīng)用的訪問、應(yīng)用執(zhí)行方法的選擇以及應(yīng)用的傳送。在一些實(shí)施例中,策略引擎295確定用戶或者客戶機(jī)102可以訪問的一個或者多個應(yīng)用。在又一個實(shí)施例中,策略引擎295確定應(yīng)用應(yīng)該如何被傳送到用戶或者客戶機(jī)102,例如執(zhí)行的方法。在一些實(shí)施例中,應(yīng)用傳送系統(tǒng) 290提供多個傳送技術(shù),從中選擇應(yīng)用執(zhí)行的方法,例如基于服務(wù)器的計(jì)算、本地流式傳輸或傳送應(yīng)用給客戶機(jī)120以用于本地執(zhí)行。
在一個實(shí)施例中,客戶機(jī)102請求應(yīng)用程序的執(zhí)行而包括服務(wù)器106的應(yīng)用傳送系統(tǒng)290選擇執(zhí)行應(yīng)用程序的方法。在一些實(shí)施例中,服務(wù)器106從客戶機(jī)102接收證書。 在又一個實(shí)施例中,服務(wù)器106從客戶機(jī)102接收對于可用應(yīng)用的列舉的請求。在一個實(shí)施例中,響應(yīng)該請求或者證書的接收,應(yīng)用傳送系統(tǒng)290列舉對于客戶機(jī)102可用的多個應(yīng)用程序。應(yīng)用傳送系統(tǒng)290接收執(zhí)行所列舉的應(yīng)用的請求。應(yīng)用傳送系統(tǒng)290選擇預(yù)定數(shù)量的方法之一來執(zhí)行所列舉的應(yīng)用,例如響應(yīng)策略引擎的策略。應(yīng)用傳送系統(tǒng)290可以選擇執(zhí)行應(yīng)用的方法,使得客戶機(jī)102接收通過執(zhí)行服務(wù)器106上的應(yīng)用程序所產(chǎn)生的應(yīng)用輸出數(shù)據(jù)。應(yīng)用傳送系統(tǒng)290可以選擇執(zhí)行應(yīng)用的方法,使得本地機(jī)器102在檢索包括應(yīng)用的多個應(yīng)用文件之后本地執(zhí)行應(yīng)用程序。在又一個實(shí)施例中,應(yīng)用傳送系統(tǒng)290可以選擇執(zhí)行應(yīng)用的方法,以通過網(wǎng)絡(luò)104流式傳輸應(yīng)用到客戶機(jī)102。
客戶機(jī)102可以執(zhí)行、操作或者以其它方式提供應(yīng)用,所述應(yīng)用可為任何類型和/ 或形式的軟件、程序或者可執(zhí)行指令,例如任何類型和/或形式的web瀏覽器、基于web的客戶機(jī)、客戶機(jī)一服務(wù)器應(yīng)用、瘦客戶端計(jì)算客戶機(jī)、ActiveX控件、或者Java程序、或者可以在客戶機(jī)102上執(zhí)行的任何其它類型和/或形式的可執(zhí)行指令。在一些實(shí)施例中,應(yīng)用可以是代表客戶機(jī)102在服務(wù)器106上執(zhí)行的基于服務(wù)器或者基于遠(yuǎn)程的應(yīng)用。在一個實(shí)施例中,服務(wù)器106可以使用任何瘦-客戶端或遠(yuǎn)程顯示協(xié)議來顯示輸出到客戶機(jī)102,所述瘦_客戶端或遠(yuǎn)程顯示協(xié)議例如由位于佛羅里達(dá)州Ft. Lauderdale的Citrix Systems 公司出品的獨(dú)立計(jì)算架構(gòu)(ICA)協(xié)議或由位于華盛頓州Redmond的微軟公司出品的遠(yuǎn)程桌面協(xié)議(RDP )。應(yīng)用可使用任何類型的協(xié)議,并且它可為,例如,HTTP客戶機(jī)、FTP客戶機(jī)、 Oscar客戶機(jī)或Telnet客戶機(jī)。在其它實(shí)施例中,應(yīng)用包括和VoIP通信相關(guān)的任何類型的軟件,例如軟IP電話。在進(jìn)一步的實(shí)施例中,應(yīng)用包括涉及到實(shí)時(shí)數(shù)據(jù)通信的任一應(yīng)用,例如用于流式傳輸視頻和/或音頻的應(yīng)用。
在一些實(shí)施例中,服務(wù)器106或服務(wù)器群38可運(yùn)行一個或多個應(yīng)用,例如提供瘦客戶端計(jì)算或遠(yuǎn)程顯示表示應(yīng)用的應(yīng)用。在一個實(shí)施例中,服務(wù)器106或服務(wù)器群38 作為一個應(yīng)用來執(zhí)行Citrix Systems Inc.的Citrix AccessSuite 的任一部分(例如 MetaFrame 或 Citrix Presentation Server ),和 / 或微軟公司開發(fā)的Microsoft Windows終端服務(wù)中的任何一個。在一個實(shí)施例中,該應(yīng)用是位于佛羅里達(dá)州Fort Lauderdale的Citrix Systems Inc.開發(fā)的ICA客戶機(jī)。在其它實(shí)施例中,該應(yīng)用包括由位于華盛頓州Redmond的Microsoft公司開發(fā)的遠(yuǎn)程桌面(RDP)客戶機(jī)。另外,服務(wù)器106 可以運(yùn)行一個應(yīng)用,例如,其可以是提供電子郵件服務(wù)的應(yīng)用服務(wù)器,例如由位于華盛頓州 Redmond 的 Microsoft 公司制造的 Microsoft Exchange, web 或 Internet 服務(wù)器,或者桌面共享服務(wù)器,或者協(xié)作服務(wù)器。在一些實(shí)施例中,任一應(yīng)用可以包括任一類型的所寄載的服務(wù)或產(chǎn)品,例如位于加利福尼亞州SantaBarbara的Citrix Online Division提供的 GoToMeeting ,位于加利福尼亞州Santa Clara的WebEx Inc.提供的WebEx ,或者位于華盛頓州 Redmond 的 Microsoft 公司提供的 Microsoft Office Live Meeting。_7] 示例設(shè)備架構(gòu)
圖2A也示出設(shè)備200的示例實(shí)施例。僅通過示例來提供圖2A的設(shè)備200的架構(gòu)并且不意于以任一方式受限。設(shè)備200可包括任何類型和形式的計(jì)算裝置100,例如上文結(jié)合圖ID和IE所討論的任何元件或部分。概括來講,設(shè)備200具有用于經(jīng)由網(wǎng)絡(luò)104接收和/或傳輸通信的一個或多個網(wǎng)絡(luò)堆棧267A-267N和一個或多個網(wǎng)絡(luò)端口 266A-266N。設(shè)備200還具有用于優(yōu)化、加速或以其他方式改善經(jīng)過設(shè)備200的任何網(wǎng)絡(luò)流量或通信的質(zhì)量、操作或性能。
設(shè)備200包括操作系統(tǒng)或在操作系統(tǒng)的控制之下。設(shè)備200的操作系統(tǒng)可以是任何類型和/或形式的Unix操作系統(tǒng),盡管本發(fā)明并未這樣限制。這樣,設(shè)備200可以運(yùn)行任何操作系統(tǒng),如任何版本的Microsoft Windows操作系統(tǒng)、不同版本的Unix和Linux操作系統(tǒng)、用于Macintosh計(jì)算機(jī)的任何版本的Mae OS 、任何的嵌入式操作系統(tǒng)、任何的網(wǎng)絡(luò)操作系統(tǒng)、任何的實(shí)時(shí)操作系統(tǒng)、任何的開放源操作系統(tǒng)、任何的專用操作系統(tǒng)、用于移動計(jì)算裝置或網(wǎng)絡(luò)裝置的任何操作系統(tǒng)、或者能夠運(yùn)行在設(shè)備200上并執(zhí)行此處所描述的操作的任何其它操作系統(tǒng)。
設(shè)備200的操作系統(tǒng)分配、管理或以其他方式將可用的系統(tǒng)存儲器分離到被稱為內(nèi)核或系統(tǒng)空間和用戶或應(yīng)用空間中。通常保留內(nèi)核空間用于運(yùn)行內(nèi)核,所述內(nèi)核包括任何設(shè)備驅(qū)動器,內(nèi)核擴(kuò)展或其他內(nèi)核相關(guān)軟件。就像本領(lǐng)域技術(shù)人員所知的,內(nèi)核是操作系統(tǒng)的核心,并提供對設(shè)備200的資源和硬件相關(guān)的元件的訪問、控制和管理。根據(jù)設(shè)備200 的實(shí)施例,內(nèi)核空間也包括與網(wǎng)絡(luò)優(yōu)化引擎250或其任何部分協(xié)同工作的多個網(wǎng)絡(luò)服務(wù)或進(jìn)程。另外,內(nèi)核的實(shí)施例將依賴于通過設(shè)備200安裝、配置或以其他方式使用的操作系統(tǒng)的實(shí)施例。與內(nèi)核空間不同,用戶空間是由用戶模式應(yīng)用或以其他方式運(yùn)行于用戶模式的程序所使用的操作系統(tǒng)的存儲區(qū)域或部分。用戶模式應(yīng)用不能直接訪問內(nèi)核空間而使用服務(wù)調(diào)用以訪問內(nèi)核服務(wù)。操作系統(tǒng)使用用戶或應(yīng)用空間來執(zhí)行或運(yùn)行應(yīng)用以及供應(yīng)用戶級程序、服務(wù)、進(jìn)程和/或任務(wù)。
設(shè)備200具有一個或多個網(wǎng)絡(luò)端口 266,用于通過網(wǎng)絡(luò)104傳輸和接收數(shù)據(jù)。網(wǎng)絡(luò)端口 266提供在計(jì)算裝置和網(wǎng)絡(luò)104或另一個裝置100之間的物理和/或邏輯接口,用于傳輸和接收網(wǎng)絡(luò)通信。網(wǎng)絡(luò)端口 266的類型和形式取決于網(wǎng)絡(luò)的類型和形式以及用于連接到網(wǎng)絡(luò)的介質(zhì)的類型。而且,網(wǎng)絡(luò)端口 266和網(wǎng)絡(luò)堆棧267的、為其供應(yīng)的或者其使用的任何軟件可運(yùn)行在內(nèi)核空間或用戶空間。
在一個實(shí)施例中,設(shè)備200具有一個網(wǎng)絡(luò)堆棧267,例如基于TCP/IP的堆棧,用于在網(wǎng)絡(luò)105上與客戶機(jī)102和/或服務(wù)器106通信。在一個實(shí)施例中,網(wǎng)絡(luò)堆棧267用于與諸如網(wǎng)絡(luò)104第一網(wǎng)絡(luò)以及第二網(wǎng)絡(luò)104’通信。在又一個實(shí)施例中,設(shè)備200可具有兩個或多個網(wǎng)絡(luò)堆棧,例如第一網(wǎng)絡(luò)堆棧267A和第二網(wǎng)絡(luò)堆棧267N。第一網(wǎng)絡(luò)堆棧267A可與第一網(wǎng)絡(luò)端口 266A聯(lián)合使用以在第一網(wǎng)絡(luò)104上通信。第二網(wǎng)絡(luò)堆??膳c第二網(wǎng)絡(luò)端口 266N聯(lián)合使用以在第二網(wǎng)絡(luò)104’上通信。在一個實(shí)施例中,網(wǎng)絡(luò)堆棧267包括用于為由設(shè)備200產(chǎn)生的一個或多個網(wǎng)絡(luò)分組進(jìn)行排隊(duì)的一個或多個緩沖器。17
網(wǎng)絡(luò)堆棧267可包括任何類型和形式的軟件、或硬件或其組合,用于提供與網(wǎng)絡(luò)的連接和通信。在一個實(shí)施例中,網(wǎng)絡(luò)堆棧267包括用于網(wǎng)絡(luò)協(xié)議組的軟件實(shí)現(xiàn)。網(wǎng)絡(luò)堆棧267可包括一個或多個網(wǎng)絡(luò)層,例如為本領(lǐng)域技術(shù)人員所公認(rèn)和了解的開放式系統(tǒng)互聯(lián)(OSI)通信模型的任何網(wǎng)絡(luò)層。這樣,網(wǎng)絡(luò)堆棧267可包括用于下列OSI模型的任何一層的任何類型和形式的協(xié)議1)物理鏈路層;2)數(shù)據(jù)鏈路層;3)網(wǎng)絡(luò)層;4)傳輸層;5)會話層);6)表示層,以及7)應(yīng)用層。在一個實(shí)施例中,網(wǎng)絡(luò)堆棧267可包括在互聯(lián)網(wǎng)協(xié)議(IP) 的網(wǎng)絡(luò)層協(xié)議上的傳輸控制協(xié)議(TCP),通常稱為TCP/IP。在一些實(shí)施例中,可在以太網(wǎng)協(xié)議上承載TCP/IP協(xié)議,所述以太網(wǎng)協(xié)議可包括IEEE廣域網(wǎng)(WAN)或局域網(wǎng)(LAN)協(xié)議的任何族,例如被IEEE802. 3覆蓋的這些協(xié)議。在一些實(shí)施例中,網(wǎng)絡(luò)堆棧267包括任何類型和形式的無線協(xié)議,例如IEEE 802. 11和/或移動互聯(lián)網(wǎng)協(xié)議。
考慮到基于TCP/IP的網(wǎng)絡(luò),可使用任何基于TCP/IP的協(xié)議,包括消息應(yīng)用編程接口(MAPI) (email)、文件傳輸協(xié)議(FTP)、超文本傳輸協(xié)議(HTTP)、通用互聯(lián)網(wǎng)文件系統(tǒng)(CIFS)協(xié)議(文件傳輸)、獨(dú)立計(jì)算架構(gòu)(ICA)協(xié)議、遠(yuǎn)程桌面協(xié)議(RDP)、無線應(yīng)用協(xié)議 (WAP)、移動IP協(xié)議,以及IP語音(VoIP)協(xié)議。在又一個實(shí)施例中,網(wǎng)絡(luò)堆棧267包括任何類型和形式的傳輸控制協(xié)議,諸如修改的傳輸控制協(xié)議,例如事務(wù)TCP(T/TCP),帶有選擇確認(rèn)的TCP (TCP-SACK),帶有大窗口的TCP (TCP-LW),例如TCP-Vegas協(xié)議的擁塞預(yù)測協(xié)議,以及TCP欺騙協(xié)議。在其他實(shí)施例中,網(wǎng)絡(luò)堆棧267可使用諸如IP上UDP的任何類型和形式的用戶數(shù)據(jù)報(bào)協(xié)議(UDP),例如用于語音通信或?qū)崟r(shí)數(shù)據(jù)通信。
另外,網(wǎng)絡(luò)堆棧267可包括支持一個或多個層的一個或多個網(wǎng)絡(luò)驅(qū)動器,例如TCP 驅(qū)動器或網(wǎng)絡(luò)層驅(qū)動器。網(wǎng)絡(luò)層驅(qū)動器可作為計(jì)算裝置100的操作系統(tǒng)的一部分或者作為計(jì)算裝置100的任何網(wǎng)絡(luò)接口卡或其它網(wǎng)絡(luò)訪問組件的一部分被包括。在一些實(shí)施例中, 網(wǎng)絡(luò)堆棧267的任何網(wǎng)絡(luò)驅(qū)動器可被定制、修改或調(diào)整以提供支持此處描述的任何技術(shù)網(wǎng)絡(luò)堆棧267的定制或修改部分。
在一個實(shí)施例中,設(shè)備200使用單個網(wǎng)絡(luò)堆棧267來提供或維持在客戶機(jī)102和服務(wù)器106之間的傳輸層連接。在一些實(shí)施例中,設(shè)備200通過改變、管理或控制在客戶機(jī)和服務(wù)器之間的傳輸控制協(xié)議連接的行為來有效地終止傳輸層連接。在這些實(shí)施例中, 設(shè)備200可使用單個網(wǎng)絡(luò)堆棧267。在其他實(shí)施例中,設(shè)備200終止第一傳輸層連接,例如客戶機(jī)102的TCP連接,并建立客戶機(jī)102使用的或代表客戶機(jī)102的到服務(wù)器106的第二傳輸層連接,例如,終止在設(shè)備200和服務(wù)器106的第二傳輸層連接??赏ㄟ^單個網(wǎng)絡(luò)堆棧267建立第一和第二傳輸層連接。在其他實(shí)施例中,設(shè)備200可使用多個網(wǎng)絡(luò)堆棧,例如 267A和267N。在這些實(shí)施例中,在第一網(wǎng)絡(luò)堆棧267A可建立或終止第一傳輸層連接,且在第二網(wǎng)絡(luò)堆棧267N可建立或者終止第二傳輸層連接。例如,一個網(wǎng)絡(luò)堆??捎糜谠诘谝痪W(wǎng)絡(luò)上接收和傳輸網(wǎng)絡(luò)分組,并且另一個網(wǎng)絡(luò)堆棧可用于在第二網(wǎng)絡(luò)上接收和傳輸網(wǎng)絡(luò)分組。
如圖2A所示,網(wǎng)絡(luò)優(yōu)化引擎250包括一個或多個下列元件、組件或模塊網(wǎng)絡(luò)分組處理引擎250、LAN/WAN檢測器210、流控制器220、Qos引擎236、協(xié)議加速器234、壓縮引擎 238、高速緩存管理器232和策略引擎295’。網(wǎng)絡(luò)優(yōu)化引擎250或其任何部分可包括軟件、 硬件或軟件和硬件的任何組合。而且網(wǎng)絡(luò)引擎250的、為其供應(yīng)的或由其使用的任何軟件可運(yùn)行在內(nèi)核空間或用戶空間。例如,在一個實(shí)施例中,網(wǎng)絡(luò)優(yōu)化引擎250可運(yùn)行在內(nèi)核空間。在又一個實(shí)施例中,網(wǎng)絡(luò)優(yōu)化引擎250可運(yùn)行在用戶空間。在又一個實(shí)施例中,網(wǎng)絡(luò)優(yōu)化引擎250的第一部分可運(yùn)行在內(nèi)核空間而網(wǎng)絡(luò)優(yōu)化引擎250的第二部分可運(yùn)行在用戶空間。
網(wǎng)絡(luò)分鉬處理引擎
網(wǎng)絡(luò)分組引擎240,通常也稱為分組處理引擎,或分組引擎,負(fù)責(zé)控制和管理對由設(shè)備200通過網(wǎng)絡(luò)端口 266和網(wǎng)絡(luò)堆棧267接收和傳輸?shù)姆纸M的處理。網(wǎng)絡(luò)分組引擎240 可操作在網(wǎng)絡(luò)堆棧267的任一層。在一個實(shí)施例中,網(wǎng)絡(luò)分組引擎240操作在網(wǎng)絡(luò)堆棧267 的層2和層3.在一些實(shí)施例中,分組引擎240在網(wǎng)絡(luò)層(例如,TCP/IP實(shí)施例中的IP層) 攔截或以其他方式接收分組。在又一個實(shí)施例中,分組引擎240操作在網(wǎng)絡(luò)堆棧267的層 4。例如,在一些實(shí)施例中,分組引擎240在傳輸層攔截或以其他方式接收分組,例如在TCP/ IP實(shí)施例中的TCP層攔截分組。在其他實(shí)施例中,分組引擎240操作在層4之上的任何會話或應(yīng)用層。例如,在一個實(shí)施例中,分組引擎240在傳輸層協(xié)議層之上攔截或以其他方式接收的網(wǎng)絡(luò)分組,例如在TCP實(shí)施例中的TCP分組的有效載荷。
分組引擎240可包括用于在例如接收網(wǎng)絡(luò)分組或者傳輸網(wǎng)絡(luò)分組的處理期間排隊(duì)一個或多個網(wǎng)絡(luò)分組的緩沖器。另外,分組引擎240與一個或多個網(wǎng)絡(luò)堆棧267通信以通過網(wǎng)絡(luò)端口 266發(fā)送和接收網(wǎng)絡(luò)分組。分組引擎240包括分組處理定時(shí)器。在一個實(shí)施例中,分組處理定時(shí)器提供一個或多個時(shí)間間隔以觸發(fā)輸入的(即,接收的)或輸出的(即, 傳輸?shù)?網(wǎng)絡(luò)分組的處理。在一些實(shí)施例中,分組引擎240響應(yīng)于定時(shí)器來處理網(wǎng)絡(luò)分組。 分組處理定時(shí)器向分組引擎240提供任何類型和形式的信號以通知、觸發(fā)或傳輸時(shí)間相關(guān)的事件、間隔或發(fā)生。在許多實(shí)施例中,分組處理定時(shí)器以毫秒級操作,例如100ms、50ms、 25ms、10ms、5ms 或 Ims0
在操作期間,分組引擎240可與諸如LAN/WAN檢測器210、流控制器220、Qos引擎236、協(xié)議加速器234、壓縮引擎238、高速緩存管理器232和/或策略引擎295’的網(wǎng)絡(luò)優(yōu)化引擎250的任一部分接口、集成或通信。因此,可響應(yīng)于分組處理定時(shí)器和/或分組引擎240來執(zhí)行LAN/WAN檢測器210、流控制器220、Qos引擎236、協(xié)議加速器234、壓縮引擎 238、高速緩存管理器232和策略引擎295’的任何邏輯、功能或操作。在一些實(shí)施例中,在由分組處理定時(shí)器提供的時(shí)間間隔粒度(例如,少于或等于IOms的時(shí)間間隔),可執(zhí)行加密引擎234、高速緩存管理器232、策略引擎236以及多協(xié)議壓縮引擎238的任何邏輯、功能或操作。例如,在一個實(shí)施例中,高速緩存管理器232可響應(yīng)于集成分組引擎240和/或分組處理定時(shí)器242來執(zhí)行任何高速緩存的對象的終止。在又一個實(shí)施例中,高速緩存的對象的終止或無效時(shí)間被設(shè)定為與分組處理定時(shí)器的時(shí)間間隔相同的粒度級,例如每10ms。
高速緩存管理器
高速緩存管理器232可包括軟件、硬件或軟件和硬件的任何組合,以將數(shù)據(jù)、信息和對象存儲到在存儲器或存儲中的高速緩存、提供高速緩存訪問以及控制和管理高速緩存。由高速緩存管理器232處理和存儲的數(shù)據(jù)、對象或內(nèi)容可包括任何格式(例如標(biāo)記語言) 的數(shù)據(jù),或者通過任何協(xié)議的通信的任何類型的數(shù)據(jù)。在一些實(shí)施例中,高速緩存管理器 232復(fù)制存儲在其他地方的原始數(shù)據(jù)或先前計(jì)算、生成或傳輸?shù)臄?shù)據(jù),其中相對于讀高速緩存存儲器或存儲元件,需要更長的訪問時(shí)間以取得、計(jì)算或以其他方式得到原始數(shù)據(jù)。一旦數(shù)據(jù)被存儲在高速緩存中,通過訪問高速緩存的副本而不是重新獲得或重新計(jì)算原始數(shù)據(jù)即可進(jìn)行后續(xù)操作,因此而減少了訪問時(shí)間。在一些實(shí)施例中,高速緩存可以包括設(shè)備200 的存儲器中的數(shù)據(jù)對象。在又一個實(shí)施例中,高速緩存可以包括設(shè)備200的任一類型和形式的存儲元件,諸如硬盤的一部分。在一些實(shí)施例中,裝置的處理單元可提供由高速緩存管理器232使用的高速緩存存儲器。在又一個實(shí)施例中,高速緩存管理器232可使用存儲器、 存儲區(qū)或處理單元的任何部分和組合來高速緩存數(shù)據(jù)、對象或其它內(nèi)容。
另外,高速緩存管理器232包括用于執(zhí)行設(shè)備200的任何高速緩存技術(shù)的任何邏輯、功能、規(guī)則或操作。在一些實(shí)施例中,高速緩存管理器232可作為應(yīng)用、庫、程序、服務(wù)、 進(jìn)程、線程或任務(wù)而操作。在一些實(shí)施例中,高速緩存管理器232可包括任何類型的通用處理器(GPP),或者任何其他類型的集成電路,例如現(xiàn)場可編程門陣列(FPGA),可編程邏輯設(shè)備(PLD),或者專用集成電路(ASIC)。
策略引擎
策略引擎295’包括用于提供和應(yīng)用一個或多個策略或規(guī)則到設(shè)備200的任一部分的功能、操作或配置的任何邏輯、功能或操作。策略引擎295’可包括例如智能統(tǒng)計(jì)引擎或其它可編程應(yīng)用。在一個實(shí)施例中,策略引擎295’提供配置機(jī)制以允許用戶識別、指定、 定義或配置用于網(wǎng)絡(luò)優(yōu)化引擎250或其任何部分的策略。例如,策略引擎295’可提供用于緩存哪些數(shù)據(jù)、何時(shí)緩存該數(shù)據(jù)、為誰緩存該數(shù)據(jù)、何時(shí)終止高速緩存中的對象或刷新高速緩存的策略。在其他實(shí)施例中,除了對安全、網(wǎng)絡(luò)流量、網(wǎng)絡(luò)訪問、壓縮或由設(shè)備200執(zhí)行的任何其它功能或操作的訪問、控制和管理之外,策略引擎236可包括任何邏輯、規(guī)則、功能或操作以確定和提供對設(shè)備200所高速緩存的對象、數(shù)據(jù)、或內(nèi)容的訪問、控制和管理。
在一些實(shí)施例中,策略引擎295’可基于下列的任何一個或多個來提供和應(yīng)用一個或多個策略用戶、客戶機(jī)的標(biāo)識、服務(wù)器的標(biāo)識、連接的類型、連接的時(shí)間、網(wǎng)絡(luò)的類型或網(wǎng)絡(luò)流量的內(nèi)容。在一個實(shí)施例中,策略引擎295’基于網(wǎng)絡(luò)分組的任何協(xié)議層的字段或首部來提供和應(yīng)用策略。在又一個實(shí)施例中,策略引擎295’基于網(wǎng)絡(luò)分組的任一有效載荷來提供和應(yīng)用策略。例如,在一個實(shí)施例中,策略弓I擎295 ’基于對被承載為傳輸層分組的有效載荷的應(yīng)用層協(xié)議內(nèi)容的特定部分的識別來應(yīng)用策略。在又一個實(shí)施例中,策略引擎295’ 基于由客戶機(jī)、服務(wù)器或用戶證書識別的任何信息來應(yīng)用策略。在又一個實(shí)施例中,策略引擎295’基于例如通過任何類型和形式的端點(diǎn)檢測(參見下面所描述的客戶機(jī)代理的收集代理示例)所獲得的關(guān)于客戶機(jī)102的任何屬性或特征來應(yīng)用策略。
在一個實(shí)施例中,策略引擎295’和應(yīng)用傳送系統(tǒng)290的策略引擎295聯(lián)合或協(xié)同工作。在一些實(shí)施例中,策略引擎295’是應(yīng)用傳送系統(tǒng)290的策略引擎295的一個分布式的部分。在又一個實(shí)施例中,應(yīng)用傳送系統(tǒng)290的策略引擎295被部署于或執(zhí)行在設(shè)備200 上。在一些實(shí)施例中,策略引擎295、295’都操作在設(shè)備200上。在又一個實(shí)施例中,設(shè)備 200的策略引擎295’或其一部分操作在服務(wù)器106上。
多協(xié)議和多層壓縮引擎
壓縮引擎238包括用于壓縮一個或多個協(xié)議的網(wǎng)絡(luò)分組(例如由設(shè)備200的網(wǎng)絡(luò)堆棧267使用的任何協(xié)議)的任何邏輯、商業(yè)規(guī)則、功能或操作。壓縮引擎238也可被稱為多協(xié)議壓縮引擎238,這是由于其可以被設(shè)計(jì)、構(gòu)建為或能夠壓縮多個協(xié)議。在一個實(shí)施例中,壓縮引擎238使用對上下文不敏感的壓縮,其可在不了解數(shù)據(jù)類型的情況下對數(shù)據(jù)進(jìn)行壓縮。在又一個實(shí)施例中,壓縮引擎238使用對上下文敏感的壓縮。在該實(shí)施例中,壓縮引擎238利用數(shù)據(jù)類型的知識來從一系列合適的算法中選擇特定的壓縮算法。在一些實(shí)施例中,使用特定協(xié)議的知識來執(zhí)行上下文敏感的壓縮。在一個實(shí)施例中,設(shè)備200或壓縮引擎238可使用端口號(例如,公知端口),以及來自連接本身的數(shù)據(jù)來確定要使用的合適的壓縮算法。一些協(xié)議僅使用一種類型的數(shù)據(jù),僅要求當(dāng)連接建立時(shí)可被選擇的單個壓縮算法。 其他協(xié)議在不同的時(shí)間包含不同類型的數(shù)據(jù)。例如,POP、MSP、SMTP和HTTP都移動夾雜其他協(xié)議數(shù)據(jù)的任意類型的文件。
在一個實(shí)施例中,壓縮引擎238使用增量型壓縮算法。在又一個實(shí)施例中,壓縮引擎238使用首地點(diǎn)壓縮以及搜索在高速緩存、存儲器或盤中存儲的數(shù)據(jù)間的重復(fù)模式。在一些實(shí)施例中,壓縮引擎238使用無損壓縮算法。在其他實(shí)施例中,壓縮引擎238使用有損壓縮算法。在一些情況下,數(shù)據(jù)類型的知識和有時(shí)來自用戶的許可被要求使用有損壓縮算法。壓縮不限于協(xié)議的有效載荷。協(xié)議本身的控制字段也可以被壓縮。在一些實(shí)施例中, 壓縮引擎238使用與用于有效載荷的算法不同的算法。
在一些實(shí)施例中,壓縮引擎238在網(wǎng)絡(luò)堆棧267的一個或多個層進(jìn)行壓縮。在一個實(shí)施例中,壓縮引擎238在傳輸層協(xié)議處進(jìn)行壓縮。在又一個實(shí)施例中,壓縮引擎238在應(yīng)用層協(xié)議處進(jìn)行壓縮。在一些實(shí)施例中,壓縮引擎238在層2-4協(xié)議處進(jìn)行壓縮。在其他實(shí)施例中,壓縮引擎238在層5-7協(xié)議處進(jìn)行壓縮。在又一個實(shí)施例中,壓縮引擎238壓縮傳輸層協(xié)議和應(yīng)用層協(xié)議。在一些實(shí)施例中,壓縮引擎238壓縮層2-4協(xié)議和層5-7協(xié)議。
在一些實(shí)施例中,壓縮引擎238使用基于存儲器的壓縮、基于高速緩存的壓縮或基于盤的壓縮或上述的任一組合。這樣,壓縮引擎238也可以被稱為多層壓縮引擎。在一個實(shí)施例中,壓縮引擎238使用在存儲器(例如RAM)中存儲的數(shù)據(jù)歷史。在又一個實(shí)施例中,壓縮引擎238使用在高速緩存(例如處理器的L2高速緩存)中存儲的數(shù)據(jù)歷史。在其他實(shí)施例中,壓縮引擎238使用存儲到盤或存儲單元的數(shù)據(jù)歷史。在一些實(shí)施例中,壓縮引擎 238使用基于高速緩存的、基于存儲器的和基于盤的數(shù)據(jù)歷史的分層結(jié)構(gòu)。壓縮引擎238可首先使用基于高速緩存的數(shù)據(jù)來確定用于壓縮的一個或多個數(shù)據(jù)匹配,然后可檢查基于存儲器的數(shù)據(jù)以確定用于壓縮的一個或多個數(shù)據(jù)匹配。在另一種情況下,壓縮引擎238可在檢查基于高速緩存的和/或基于存儲器的數(shù)據(jù)歷史之后檢查盤存儲來找出用于壓縮的數(shù)據(jù)匹配。
在一個實(shí)施例中,多協(xié)議壓縮引擎238雙向壓縮在客戶機(jī)102a_102n和服務(wù)器 106a-106n間任一基于TCP/IP的協(xié)議,包括消息應(yīng)用編程接口(MAPI)(電子郵件)、文件傳輸協(xié)議(FTP )、超文本傳輸協(xié)議(HTTP )、通用互聯(lián)網(wǎng)文件系統(tǒng)(CIFS )協(xié)議(文件傳輸)、獨(dú)立計(jì)算架構(gòu)(ICA)協(xié)議、遠(yuǎn)程桌面協(xié)議(RDP)、無線應(yīng)用協(xié)議(WAP)、移動IP協(xié)議以及IP上語音(VoIP)協(xié)議。在其它實(shí)施例中,多協(xié)議壓縮引擎238提供基于超文本標(biāo)記語言(HTML)的協(xié)議的壓縮,并且在一些實(shí)施例中,提供任何標(biāo)記語言的壓縮,例如可擴(kuò)展標(biāo)記語言(XML)。 在一個實(shí)施例中,多協(xié)議壓縮引擎238提供任何高性能協(xié)議的壓縮,例如設(shè)計(jì)用于設(shè)備200 到設(shè)備200通信的任何協(xié)議。在又一個實(shí)施例中,多協(xié)議壓縮引擎238使用修改的傳輸控制協(xié)議來壓縮任何通信的任何載荷或任何通信,例如事務(wù)TCP (T/TCP)、帶有選擇確認(rèn)的TCP (TCP-SACK)、帶有大窗口的TCP(TCP-LW)、諸如TCP-Vegas協(xié)議的擁塞預(yù)報(bào)協(xié)議以及TCP欺騙協(xié)議(TCP spoofing protocol)。
同樣的,多協(xié)議壓縮引擎238為用戶加速經(jīng)由桌面客戶機(jī)以及甚至移動客戶機(jī)訪問應(yīng)用的性能。所述桌面客戶機(jī)例如Micosoft Outlook和非web瘦客戶機(jī),例如由像 Oracle、SAP和Siebel的通用企業(yè)應(yīng)用所啟動的任何客戶機(jī),所述移動客戶機(jī)例如掌上電腦。在一些實(shí)施例中,通過與訪問網(wǎng)絡(luò)堆棧267的分組處理引擎240集成,多協(xié)議壓縮引擎能夠壓縮由傳輸層協(xié)議攜帶的任何協(xié)議,例如任何應(yīng)用層協(xié)議。
LAN/ffAN 檢測器
LAN/WAN檢測器238包括用于自動檢測慢速側(cè)連接(例如,諸如內(nèi)部網(wǎng)的廣域網(wǎng) (WAN)連接)和關(guān)聯(lián)端口 267,以及快速側(cè)連接(例如,局域網(wǎng)(LAN)連接)和關(guān)聯(lián)端口 267的任何邏輯、商業(yè)規(guī)則、功能或操作。在一些實(shí)施例中,LAN/WAN檢測器238監(jiān)控設(shè)備200的網(wǎng)絡(luò)端口 267上的網(wǎng)絡(luò)流量以便檢測同步分組(有時(shí)被稱為“加標(biāo)記的”網(wǎng)絡(luò)分組)。同步分組識別網(wǎng)絡(luò)流量的類型或速度。在一個實(shí)施例中,同步分組識別WAN的速度或WAN類型的連接。LAN/WAN檢測器238也識別對加標(biāo)記的同步分組的確認(rèn)分組的接收以及其在哪個端口上被接收。接著,設(shè)備200將自身配置為操作所識別的、加標(biāo)記的同步分組到達(dá)的端口以使得該端口上的速度被設(shè)置為與連接到該端口的網(wǎng)絡(luò)相關(guān)聯(lián)的速度。那么,另一個端口被設(shè)置為與連接到該端口的網(wǎng)絡(luò)相關(guān)聯(lián)的速度。
為了本文討論的方便,“快速”側(cè)可參考關(guān)于與廣域網(wǎng)(WAN)(例如,互聯(lián)網(wǎng))的連接,并且以該WAN的網(wǎng)絡(luò)速度操作。類似地,“慢速”側(cè)可參考關(guān)于與局域網(wǎng)(LAN)的連接并且以LAN的網(wǎng)絡(luò)速度操作。然而,應(yīng)指出網(wǎng)絡(luò)的“快速”和“慢速”側(cè)可以在每連接的基礎(chǔ)上改變并且是對于網(wǎng)絡(luò)連接的速度或者網(wǎng)絡(luò)拓?fù)漕愋偷南嚓P(guān)術(shù)語。這樣的配置可以用在復(fù)雜的網(wǎng)絡(luò)拓?fù)渲校渲芯W(wǎng)絡(luò)僅在與相鄰網(wǎng)絡(luò)比較時(shí)是“快速”或“慢速”,而不是絕對的“快速” 或“慢速”。
在一個實(shí)施例中,LAN/WAN檢測器238可用于使設(shè)備200自動發(fā)現(xiàn)其所連接的網(wǎng)絡(luò)。在又一個實(shí)施例中,LAN/WAN檢測器238可用于檢測在網(wǎng)絡(luò)104中部署的第二設(shè)備200 ’ 的存在或在場。例如,根據(jù)圖IA的操作中的自動發(fā)現(xiàn)機(jī)制起到以下作用將設(shè)備200和 200’置于與鏈接客戶機(jī)102和服務(wù)器106的連接在一條線上。設(shè)備200和200’處于連接兩個LAN的低速鏈路(例如,互聯(lián)網(wǎng))的端點(diǎn)處。在一個示例實(shí)施例中,設(shè)備200和200’各自包括兩個端口,一個端口與“較低”速度的鏈路連接而另一個端口與“較高”速度的鏈路 (例如,LAN)連接。到達(dá)一個端口的任一分組被復(fù)制到另一個端口。因此,設(shè)備200和200’ 各自被配置為充當(dāng)兩個網(wǎng)絡(luò)104之間的橋。
當(dāng)諸如客戶機(jī)102的端節(jié)點(diǎn)打開與諸如服務(wù)器106的另一個端節(jié)點(diǎn)的新的TCP連接時(shí),客戶機(jī)102向服務(wù)器106發(fā)送具有同步(SYN)首部位組的TCP分組或SYN分組。在本例中,客戶機(jī)102打開到服務(wù)器106的傳輸層連接。當(dāng)SYN分組穿過設(shè)備200時(shí),設(shè)備200 給該分組插入、附加或以其他方式提供特有的TCP首部選項(xiàng),以宣告其存在。如果該分組穿過第二設(shè)備(在該示例中設(shè)備200’),第二設(shè)備記錄該SYN分組中的首部選項(xiàng)。服務(wù)器106 用同步確認(rèn)(SYN-ACK)分組來響應(yīng)該SYN分組。當(dāng)SYN-ACK分組穿過設(shè)備200’時(shí),TCP首部選項(xiàng)被標(biāo)記(例如,附加、插入或添加)到該SYN-ACK分組以便向設(shè)備200宣告設(shè)備200’ 的存在。當(dāng)設(shè)備200收到該分組時(shí),設(shè)備200,200’此時(shí)互相察覺并且該連接可以被適當(dāng)?shù)丶铀佟?br>
關(guān)于LAN/WAN檢測器238的操作,描述了使用SYN分組來檢測網(wǎng)絡(luò)的“快速”側(cè)和“慢速”側(cè)的方法或過程。在客戶機(jī)102和服務(wù)器106之間建立傳輸層連接的期間,設(shè)備200 通過LAN/WAN檢測器238確定SYN分組是否被加了確認(rèn)(ACK)標(biāo)記。如果其被加了標(biāo)記,設(shè)備200將接收加標(biāo)記的SYN分組(SYN-ACK)的端口標(biāo)識或配置為“慢速”側(cè)。在一個實(shí)施例中,設(shè)備200可選擇在將該分組復(fù)制到另一個端口之前ACK標(biāo)記從該分組刪除。如果LAN/ WAN檢測器238確定該分組未加標(biāo)記,那么設(shè)備200將接收未加標(biāo)記的分組的端口標(biāo)識或配置為“快速”側(cè)。設(shè)備200接著給該SYN分組加上ACK標(biāo)記并將該分組復(fù)制到另一個端口。
在又一個實(shí)施例中,LAN/WAN檢測器238使用SYN-ACK分組來檢測網(wǎng)絡(luò)的快速側(cè)和慢速側(cè)。設(shè)備200通過LAN/WAN檢測器238確定SYN-ACK分組是否被加了確認(rèn)(ACK)標(biāo)記。如果其被加了標(biāo)記,設(shè)備200將接收加標(biāo)記的SYN分組(SYN-ACK)的端口標(biāo)識或配置為“慢速”側(cè)。在一個實(shí)施例中,設(shè)備200可選擇在將該分組復(fù)制到另一個端口之前從該分組刪除ACK標(biāo)記。如果LAN/WAN檢測器238確定該分組未加標(biāo)記,那么設(shè)備200將接收未加標(biāo)記的分組的端口標(biāo)識或配置為“快速”側(cè)。LAN/WAN檢測器238確定SYN分組是否被加了標(biāo)記。如果該SYN分組沒有被加標(biāo)記,那么設(shè)備200將該分組復(fù)制到另一個端口。如果該SYN分組被加了標(biāo)記,那么該設(shè)備在將該分組拷貝到另一個端口之前給SYN-ACK分組加T 己 O
設(shè)備200、200’可以添加、插入、修改、附加或以其他方式提供TCP選項(xiàng)首部中的任何信息或數(shù)據(jù),以提供關(guān)于網(wǎng)絡(luò)連接、網(wǎng)絡(luò)流量或者設(shè)備200的配置或操作的任何信息、數(shù)據(jù)或特征。在這種方式中,設(shè)備200不僅向另一個設(shè)備200’宣告其存在或者標(biāo)記較高或較低速度的連接,該設(shè)備200還通過TCP選項(xiàng)首部提供關(guān)于該設(shè)備或該連接的其他信息和數(shù)據(jù)。TCP選項(xiàng)首部信息可能是對設(shè)備有用的或由設(shè)備用于控制、管理、優(yōu)化、加速或改善經(jīng)過設(shè)備200的網(wǎng)絡(luò)流量,或者以其他方式配置其自身或網(wǎng)絡(luò)端口的操作。
盡管通常LAN/WAN檢測器238被結(jié)合檢測網(wǎng)絡(luò)連接的速度或設(shè)備的存在來描述, 但LAN/WAN檢測器238可被用于將設(shè)備200的任何類型的功能、邏輯或操作應(yīng)用到網(wǎng)絡(luò)流量的端口、連接或流。更具體地,每當(dāng)設(shè)備在不同的端口執(zhí)行不同的功能時(shí)都可以自動分配端口,其中給任務(wù)分配端口可以在該單元操作期間,和/或每個端口的網(wǎng)絡(luò)段的性質(zhì)可被設(shè)備200發(fā)現(xiàn)。
流控制
流控制器220包括用于優(yōu)化、加速或以其他方式改善網(wǎng)絡(luò)分組的傳輸層通信的性能、操作或服務(wù)質(zhì)量或者在傳輸層的分組的發(fā)送的任何邏輯、商業(yè)規(guī)則、功能或操作。流控制器(有時(shí)也被稱為流控制模塊)調(diào)節(jié)、管理和控制數(shù)據(jù)傳輸速率。在一些實(shí)施例中,流控制器220被部署在或連接在網(wǎng)絡(luò)104中的帶寬瓶頸處。在一個實(shí)施例中,流控制器220有效地調(diào)節(jié)、管理和控制帶寬的使用或利用。在其他實(shí)施例中,流控制模塊也可以被部署在延遲轉(zhuǎn)換(從低延遲到高延遲)的網(wǎng)絡(luò)上的位置和具有介質(zhì)損失的鏈路(例如無線或衛(wèi)星鏈路) 上的位置。
在一些實(shí)施例中,流控制器220可包括用于控制網(wǎng)絡(luò)傳輸?shù)慕邮账俾实慕邮掌鱾?cè)流控制模塊和用于控制網(wǎng)絡(luò)分組的傳輸速率的發(fā)送器側(cè)流控制模塊。在其他實(shí)施例中,第一流控制器220包括接收器側(cè)流控制模塊并且第二流控制器220’包括發(fā)送器側(cè)流控制模塊。在一些實(shí)施例中,第一流控制器220被部署在第一設(shè)備200上并且第二流控制器220’ 被部署在第二設(shè)備200’上。同樣,在一些實(shí)施例中,第一設(shè)備200控制接收器側(cè)上的數(shù)據(jù)流而第二設(shè)備200'控制來自發(fā)送器側(cè)的數(shù)據(jù)流。在又一個實(shí)施例中,單個設(shè)備200包括用于經(jīng)過設(shè)備200的網(wǎng)絡(luò)通信的接收器側(cè)和發(fā)送器側(cè)的流控制。
在一個實(shí)施例中,配置流控制模塊220以使瓶頸處的帶寬被更充分地利用,以及在一些實(shí)施例中,配置流控制模塊220以使瓶頸處的帶寬不被過度利用。在一些實(shí)施例中, 流控制模塊220透明地緩沖(或者重新緩沖例如發(fā)送器已經(jīng)緩沖的數(shù)據(jù))經(jīng)過具有相關(guān)聯(lián)的流控制模塊220的節(jié)點(diǎn)間的網(wǎng)絡(luò)會話。當(dāng)會話經(jīng)過兩個或多個流控制模塊220時(shí),一個或多個流控制模塊控制會話的速率。
在一個實(shí)施例中,用有關(guān)瓶頸帶寬的預(yù)定數(shù)據(jù)來配置流控制模塊200。在又一個實(shí)施例中,流控制模塊220可被配置為檢測瓶頸帶寬或與其關(guān)聯(lián)的數(shù)據(jù)。與諸如TCP的傳統(tǒng)網(wǎng)絡(luò)協(xié)議不同,接收器側(cè)流控制模塊220控制數(shù)據(jù)傳輸速率。接收器側(cè)流控制模塊220通過將傳輸速率限制轉(zhuǎn)發(fā)到發(fā)送器側(cè)流控制模塊220來控制發(fā)送器側(cè)流控制模塊(例如,220) 的數(shù)據(jù)傳輸速率。在一個實(shí)施例中,接收器側(cè)流控制模塊220在由接收器(例如服務(wù)器106) 向發(fā)送器(例如客戶機(jī)102)發(fā)送的確認(rèn)(ACK)分組(或信號)上捎帶這些傳輸速率限制。接收器側(cè)流控制模塊220響應(yīng)于由發(fā)送器側(cè)流控制模塊220'發(fā)送的速率控制請求來執(zhí)行這一工作??梢栽谟砂l(fā)送器106發(fā)送的數(shù)據(jù)分組上捎帶來自發(fā)送器側(cè)流控制模塊220’的請求。
在一些實(shí)施例中,流控制器220操縱、調(diào)整、模擬、改變、改進(jìn)或以其他方式修改傳輸層協(xié)議的行為以便提供傳輸層的傳送、數(shù)據(jù)速率和/或帶寬利用的改善的性能或操作。 流控制器220可在傳輸層實(shí)現(xiàn)多個數(shù)據(jù)流控制技術(shù),包括但不限于I)預(yù)確認(rèn),2)窗口虛擬化,3)重新?lián)砣夹g(shù),3)本地重傳技術(shù),4)波前檢測和消除二義性,5)傳輸控制協(xié)議選擇性確認(rèn),6)事務(wù)邊界檢測技術(shù)和7)重新分組。
盡管此處通常將發(fā)送器描述為客戶機(jī)102,將接收器描述為服務(wù)器106,但發(fā)送器可以是諸如網(wǎng)絡(luò)104上任一計(jì)算裝置100或者服務(wù)器106的任一端點(diǎn)。同樣地,接收器可以是客戶機(jī)102或者網(wǎng)絡(luò)104上的任何其他計(jì)算裝置。
預(yù)確認(rèn)
概括來講預(yù)確認(rèn)流控制技術(shù),在一些實(shí)施例中,流控制器220處理確認(rèn)并為發(fā)送器重傳確認(rèn),有效地終止發(fā)送器與網(wǎng)絡(luò)連接的下游部分的連接。參考圖1B,描述用來實(shí)現(xiàn)該特征的,設(shè)備200在網(wǎng)絡(luò)架構(gòu)中的一個可能的部署。在該示例實(shí)施例中,發(fā)送計(jì)算機(jī)或者客戶機(jī)102在網(wǎng)絡(luò)104上例如經(jīng)由交換機(jī)傳輸數(shù)據(jù),其確定該數(shù)據(jù)發(fā)往VPN設(shè)備205。由于所選擇的網(wǎng)絡(luò)拓?fù)?,發(fā)往VPN設(shè)備205的所有數(shù)據(jù)穿過設(shè)備200,使得設(shè)備200可以將任一必要的算法應(yīng)用到該數(shù)據(jù)。
進(jìn)一步在該示例中,客戶機(jī)102傳輸由設(shè)備200接收的分組。當(dāng)設(shè)備200接收從客戶機(jī)102向接收者傳輸?shù)慕?jīng)過VPN設(shè)備205的分組時(shí),設(shè)備200保留分組的副本并且將該分組向下游轉(zhuǎn)發(fā)到VPN設(shè)備205。設(shè)備200接著生成確認(rèn)分組(ACK)并且將ACK分組發(fā)送回客戶機(jī)102或者發(fā)送端點(diǎn)。該ACK (即預(yù)確認(rèn))使發(fā)送器102相信分組已經(jīng)被成功傳輸、 釋放發(fā)送器的資源用于后續(xù)的處理。在要求重傳分組的事件中,設(shè)備200保留該分組的副本,使得發(fā)送器102不必處理數(shù)據(jù)的重傳。提前生成確認(rèn)可以被稱為“提前確認(rèn)(preack)”。
如果要求重傳分組,設(shè)備200將分組重傳到發(fā)送器。設(shè)備200可以確定當(dāng)發(fā)送器處于傳統(tǒng)系統(tǒng)中時(shí)是否需要重傳,例如,在預(yù)定時(shí)間段之后對于該分組如果沒有接收到確認(rèn)則確定分組丟失。為此,設(shè)備200監(jiān)控由例如服務(wù)器106 (或者任何其他下游網(wǎng)絡(luò)實(shí)體) 的接收端點(diǎn)生成的確認(rèn),以便其可以確定是否已經(jīng)成功傳送分組或者需要重傳分組。如果設(shè)備200確定分 組已經(jīng)被成功傳送,則設(shè)備200能夠自由地丟棄所保存的分組數(shù)據(jù)。設(shè)備 200還可以禁止轉(zhuǎn)發(fā)對已經(jīng)由發(fā)送端點(diǎn)接收的分組的確認(rèn)。
在上述實(shí)施例中,設(shè)備200經(jīng)由流控制器220通過預(yù)確認(rèn)(也稱為“提取確認(rèn)”)的傳送來控制發(fā)送器102,如同設(shè)備200是接收端點(diǎn)本身一樣。由于設(shè)備200不是端點(diǎn)并且實(shí)際上不消耗數(shù)據(jù),所以設(shè)備200包括用于給發(fā)送端點(diǎn)提供溢出控制的機(jī)制。如果沒有溢出機(jī)制,設(shè)備200將耗盡存儲器,因?yàn)樵O(shè)備200存儲已經(jīng)向發(fā)送端點(diǎn)提取確認(rèn)的但還沒有被確認(rèn)為由接收端點(diǎn)接收的分組。因此,在發(fā)送器102傳輸分組到設(shè)備200快于設(shè)備200向下游轉(zhuǎn)發(fā)分組的情況下,設(shè)備200中可用于存儲未被確認(rèn)的分組數(shù)據(jù)的存儲器將迅速填滿。用于溢出控制的機(jī)制允許設(shè)備200控制來自發(fā)送器的分組的傳輸以避免該問題。
在一個實(shí)施例中,設(shè)備200或者流控制器220包括固有的“自同步 (self-clocking)”溢出控制機(jī)制。該自同步歸因于這樣的順序,其中設(shè)備200可以被設(shè)計(jì)為向下游傳輸分組并向發(fā)送器102或者106發(fā)送ACK。在一些實(shí)施例中,設(shè)備200直到其向下游傳輸分組后為才提前確認(rèn)分組。以此方式,發(fā)送器102將以設(shè)備200能夠傳輸分組的速率而不是以設(shè)備200從發(fā)送器100接收分組的速率來接收ACK。這有助于調(diào)節(jié)來自發(fā)送器102的分組的傳輸。
窗口虛擬化
設(shè)備200可以實(shí)現(xiàn)的另一個溢出控制機(jī)制是使用TCP窗口大小參數(shù),其告知發(fā)送器接收器允許該發(fā)送器填滿多少緩沖區(qū)。預(yù)確認(rèn)中的非零窗口大小(例如至少一個最大段大小(MSS)的大小)允許發(fā)送端點(diǎn)繼續(xù)向設(shè)備傳輸數(shù)據(jù),而零窗口大小禁止進(jìn)一步的數(shù)據(jù)傳輸。相應(yīng)地,設(shè)備200可以例如當(dāng)設(shè)備200的緩沖區(qū)變滿時(shí)通過適當(dāng)?shù)卦O(shè)置每一預(yù)確認(rèn)中的TCP窗口大小來調(diào)節(jié)來自發(fā)送器的分組的流量。
另一項(xiàng)用來降低該附加開銷的技術(shù)是應(yīng)用滯后作用(hysteresis)。當(dāng)設(shè)備200將數(shù)據(jù)傳送到較慢側(cè)時(shí),設(shè)備299中的溢出控制機(jī)制可以在向發(fā)送器發(fā)送非零窗口通告之前要求可用的最小數(shù)量的空間。在一個實(shí)施例中,設(shè)備200在發(fā)送非零窗口分組(例如,四個分組的窗口大小)之前進(jìn)行等待直到存在最小的預(yù)定數(shù)量的分組(諸如四個分組)的可用空間為止。由于對于四個數(shù)據(jù)分組的每個組僅發(fā)送兩個ACK分組,而不是對于四個數(shù)據(jù)分組要發(fā)送八個ACK分組,因此這將開銷降低到大約原來的四分之一。
設(shè)備200或流控制器220可用于溢出控制的另一技術(shù)是TCP延遲ACK機(jī)制,其跳過ACK來降低網(wǎng)絡(luò)流量。TCP延遲ACK自動延遲ACK的發(fā)送,直到接收到兩個分組或直到發(fā)生固定的超時(shí)為止。該機(jī)制單獨(dú)導(dǎo)致開銷減半,而且,通過將分組的數(shù)量增加到兩個以上, 降低了附加的開銷。但是僅延遲ACK本身不足以控制溢出,并且設(shè)備200還可以使用在ACK 上的通告窗口機(jī)制來控制發(fā)送器。當(dāng)這樣做時(shí),在一個實(shí)施例中,設(shè)備200通過延遲ACK很長時(shí)間來避免觸發(fā)發(fā)送器的超時(shí)機(jī)制。
在一個實(shí)施例中,流控制器220不對一組分組的最后一個分組進(jìn)行提取確認(rèn)。通過不提取確認(rèn)最后一個分組或者該組中分組的至少一個,設(shè)備避免對一組分組的錯誤確認(rèn)。例如,如果設(shè)備將發(fā)送對最后一個分組的預(yù)確認(rèn)而該分組隨后丟失,那么發(fā)送器在分組沒有被傳送時(shí)已經(jīng)欺騙認(rèn)為其被傳送??紤]到分組已被傳送,發(fā)送器將丟棄該數(shù)據(jù)。如果設(shè)備也丟失該分組,那么不能將該分組重傳到接收者。通過不對一組分組的最后一個分組進(jìn)行提前確認(rèn),發(fā)送器直到該分組被傳送時(shí)才將其丟棄。
在又一個實(shí)施例中,流控制器220可以使用窗口虛擬化技術(shù)來控制網(wǎng)絡(luò)連接的帶寬利用或者流速。雖然根據(jù)檢查諸如RFC1323的傳統(tǒng)文獻(xiàn)其可能不是直接明顯的,但是用于諸如TCP的傳輸層協(xié)議的發(fā)送窗口是有效的。由于發(fā)送窗口消耗緩沖區(qū)空間(盡管在發(fā)送器上),所以發(fā)送窗口類似于接收窗口。發(fā)送器的發(fā)送窗口包括還沒有被接收器確認(rèn)的、 由應(yīng)用發(fā)送的所有數(shù)據(jù)。在要求重傳的情況下,必須在存儲器中保留該數(shù)據(jù)。由于存儲器是共享資源,所以一些TCP堆棧的實(shí)現(xiàn)限制了該數(shù)據(jù)的大小。當(dāng)發(fā)送窗口滿時(shí),應(yīng)用程序嘗試發(fā)送更多的數(shù)據(jù)導(dǎo)致阻塞應(yīng)用程序直到空間可用為止。隨后接收的確認(rèn)將釋放發(fā)送窗口存儲器并且不再阻塞應(yīng)用程序。在一些實(shí)施例中,該窗口大小就是一些TCP實(shí)現(xiàn)中的套接字緩沖區(qū)大小。
在一個實(shí)施例中,流控制模塊220被配置為提供對增加的窗口(或緩沖區(qū))大小的訪問。該配置還可以被稱為窗口虛擬化。在作為傳輸層協(xié)議的TCP的實(shí)施例中,TCP首部可以包括對應(yīng)窗口比例(window scale)的位串。在一個實(shí)施例中,“窗口 ”可以在發(fā)送、接收或二者的上下文中提及。
窗口虛擬化的一個實(shí)施例是將預(yù)確認(rèn)設(shè)備200插入到TCP會話中。參考圖IA和 IB的任何一個環(huán)境,建立例如客戶機(jī)102 (為討論方便,現(xiàn)稱為源節(jié)點(diǎn)102)的源節(jié)點(diǎn)與例如服務(wù)器106 (為討論方便,現(xiàn)稱之為目標(biāo)節(jié)點(diǎn)106)的目標(biāo)節(jié)點(diǎn)之間數(shù)據(jù)通信會話的初始化。對于TCP通信,源節(jié)點(diǎn)102最初將同步信號(“SYN”)通過其局域網(wǎng)104傳輸?shù)降谝涣骺刂颇K220。第一流控制模塊220將配置標(biāo)識符插入到TCP首部選項(xiàng)區(qū)域中。該配置標(biāo)識符將數(shù)據(jù)路徑中的該點(diǎn)識別為流控制模塊。
盡管具有例如16k字節(jié)的小緩沖區(qū)大小的端節(jié)點(diǎn),但設(shè)備200經(jīng)由流控制模塊220 提供窗口(或緩沖區(qū))來允許提高會話內(nèi)的數(shù)據(jù)緩沖能力。然而,RFC1323要求對大于64k字節(jié)的任何緩沖區(qū)大小進(jìn)行窗口縮放(windowscaling),其必須在會話初始化(SYN、SYN-ACK 信號)時(shí)設(shè)置。此外,窗口縮放對應(yīng)于數(shù)據(jù)路徑中的最小公分母,經(jīng)常是具有小的緩沖區(qū)大小的端節(jié)點(diǎn)。該窗口比例通常是O或I的比例,其對應(yīng)于高達(dá)64k或者128k字節(jié)的緩沖區(qū)大小。注意到,由于窗口大小被限定為每一分組中的、隨窗口比例改變的窗口字段,窗口比例建立緩沖區(qū)的上限,但并不保證該緩沖區(qū)實(shí)際上就那么大。每個分組在窗口字段中指示接收器處當(dāng)前可用的緩沖區(qū)空間。
在使用窗口虛擬化技術(shù)進(jìn)行縮放的一個實(shí)施例中,在連接建立(S卩,會話初始化) 期間,當(dāng)?shù)谝涣骺刂颇K220從源節(jié)點(diǎn)102接收SYN信號(或者分組)時(shí),流控制模塊220源節(jié)點(diǎn)102 (其是之前的節(jié)點(diǎn))的窗口比例或者如果之前的節(jié)點(diǎn)的比例丟失則為窗口比例存儲 O。第一流控制模塊220還在SYN-FCM信號中修改該比例,例如將該比例從O或者I增加到4。當(dāng)?shù)诙骺刂颇K220接收SYN信號時(shí),其存儲來自第一流控制信號的增加的比例并且將該SYN信號中的比例重置為源節(jié)點(diǎn)103的比例值以用于到目標(biāo)節(jié)點(diǎn)106的傳輸。當(dāng)?shù)诙骺刂破?20接收到來自目標(biāo)節(jié)點(diǎn)106的SYN-ACK信號時(shí),其存儲來自目標(biāo)節(jié)點(diǎn)106的比例(例如,O或I)的比例并且將其修改為與SYN-ACK-FCM信號一起發(fā)送的增加的比例。第一流控制節(jié)點(diǎn)220接收并且記錄所接收的窗口比例并且將被發(fā)回源節(jié)點(diǎn)102的窗口比例修訂為降回到初始比例(例如O或者I)?;谏厦嬖谶B接建立期間的窗口變換對話,會話的每個后續(xù)分組(例如TCP分組)的中的窗口字段必須隨窗口變換對話而改變。
如上所述,窗口比例表示出大于64k的緩沖區(qū)大小,并且可以不需要窗口虛擬化。 因此,窗口比例的變換可以用于表示在每個流控制模塊220中的增加的緩沖區(qū)容量。該緩沖區(qū)容量的增加可作為窗口(或緩沖區(qū))虛擬化而被提及。該緩沖區(qū)大小的增加允許更大的分組從各自的端節(jié)點(diǎn)102和106進(jìn)出。注意到,TCP中的緩沖區(qū)大小典型地以字節(jié)表示,但是為了討論的方便,由于“分組”和虛擬化相關(guān),在此處描述中可以使用“分組”。
通過舉例描述由流控制器220執(zhí)行的窗口(或緩存區(qū))虛擬化。在該示例中,源節(jié)點(diǎn)102和目標(biāo)節(jié)點(diǎn)106被配置為與具有16k字節(jié)的有限的緩存區(qū)容量的傳統(tǒng)端節(jié)點(diǎn)相似, 其大約等于10個數(shù)據(jù)分組。通常,端節(jié)點(diǎn)102、106在能夠傳輸下一組分組之前必須進(jìn)行等待,直到該分組被傳輸并且收到確認(rèn)為止。在一個實(shí)施例中,使用在流控制模塊220中的增加的緩沖區(qū)容量,當(dāng)源節(jié)點(diǎn)103傳輸其數(shù)據(jù)分組時(shí),第一流控制模塊220接收該分組,將該分組存儲在其較大容量的緩存區(qū)(例如512個分組容量)中,并且立即將指示分組接收的確認(rèn)信號(“REC-ACK”)發(fā)送回到源節(jié)點(diǎn)102。源節(jié)點(diǎn)102接著可以“刷新”其當(dāng)前緩沖區(qū),將 10個新的數(shù)據(jù)分組載入到緩存區(qū),并且將這些傳輸?shù)降谝涣骺刂颇K220上。再次,第一流控制模塊220將REC-ACK信號發(fā)送回到源節(jié)點(diǎn)102,并且源節(jié)點(diǎn)102刷新其緩沖區(qū)并且對其載入10個更新的分組用于傳輸。
當(dāng)?shù)谝涣骺刂颇K220接收到來自源節(jié)點(diǎn)的數(shù)據(jù)分組時(shí),其相應(yīng)地將該數(shù)據(jù)分組載入到緩沖區(qū)中。當(dāng)其準(zhǔn)備好時(shí),第一流控制模塊220可以開始將數(shù)據(jù)分組傳輸?shù)降诙骺刂颇K230,其也具有增加的緩存區(qū)大小,例如以便接收512個分組。第二流控制模塊 220’接收數(shù)據(jù)分組并且開始每次傳輸10個分組到目標(biāo)節(jié)點(diǎn)106。在第二流控制節(jié)點(diǎn)220 處接收的、來自目標(biāo)節(jié)點(diǎn)106的每個REC-ACK致使又有10個分組被傳輸?shù)侥繕?biāo)節(jié)點(diǎn)106, 直到所有的數(shù)據(jù)分組被傳送為止。因此,本發(fā)明能夠通過利用裝置之間的流控制模塊220、 220’的較大的緩沖區(qū)來增加在源節(jié)點(diǎn)(發(fā)送器)102和目標(biāo)節(jié)點(diǎn)(接收器)106之間的數(shù)據(jù)傳輸吞吐量。
注意到通過之前描述的“預(yù)確認(rèn)”數(shù)據(jù)的傳輸,發(fā)送器(或源節(jié)點(diǎn)102)被允許傳輸比沒有預(yù)確認(rèn)時(shí)可能傳輸?shù)臄?shù)據(jù)更多的數(shù)據(jù),因此造成更大的窗口大小。例如,在一個實(shí)施例中,流控制模塊220、220’處于缺乏大窗口的節(jié)點(diǎn)(例如,源節(jié)點(diǎn)102或者目標(biāo)節(jié)點(diǎn)106) 附近時(shí),該技術(shù)是有效的。
重新?lián)砣?br>
流控制器220的另一個技術(shù)或者算法被稱為重新?lián)砣1娝苤獦?biāo)準(zhǔn)的TCP擁塞避免算法在面對特定網(wǎng)絡(luò)條件(包括大的RTT (往返時(shí)間)、高分組丟失率,以及其它)時(shí)性能低下。當(dāng)設(shè)備200檢測到諸如長的往返時(shí)間或者高的分組丟失的擁塞條件時(shí),設(shè)備200 插入、代入更適合該特定網(wǎng)絡(luò)調(diào)節(jié)的替代的擁塞避免算法。在一個實(shí)施例中,重新?lián)砣惴ㄊ褂妙A(yù)確認(rèn)來有效地終止發(fā)送器和接收器之間的連接。設(shè)備200接著使用不同的擁塞避免算法從自身重新發(fā)送分組到接收器。重新?lián)砣惴梢砸蕾囉赥CP連接的特征。設(shè)備200 監(jiān)控每個TCP連接,在不同的維度將其特征化,選擇適合用于當(dāng)前特征的重新?lián)砣惴ā?br>
在一個實(shí)施例中,當(dāng)檢測到由往返時(shí)間(RTT)限制的TCP連接時(shí),應(yīng)用表現(xiàn)為多個 TCP連接的重新?lián)砣惴?。每個TCP連接操作在其自身性能限度內(nèi),但是聚合帶寬獲得了更高的性能水平。該機(jī)制中的一個參數(shù)是所應(yīng)用的并行連接的數(shù)量(N)。N值過大則連接束獲得超過其合理份額的帶寬。N值過小則連接束獲得低于其合理份額的帶寬。建立“N”的一個方法依賴于設(shè)備200監(jiān)控實(shí)際連接的分組大小、RTT和分組丟失率。將這些數(shù)字插入 TCP響應(yīng)曲線方程來提供本配置中單個TCP連接的性能的上限。如果連接束中每個連接正獲得與計(jì)算出的上限性能基本相同的性能,則應(yīng)用額外的并行連接。如果當(dāng)前束正獲得低于上限的性能,則減少并行連接的數(shù)量。依次方式,由于單獨(dú)的連接束包含的并行性不比消除協(xié)議自身所強(qiáng)加的限制所需的并行性更多,所以維持了系統(tǒng)的整體公平性。進(jìn)一步,每個單獨(dú)的連接保留TCP兼容性。
建立“N”的另一個方法是使用并行流控制算法,例如TCP “Vegas”算法或者其改進(jìn)版本“穩(wěn)定的Vegas”。在該方法中,與連接束中的連接相關(guān)聯(lián)的網(wǎng)絡(luò)信息(例如,RTT、丟失率、平均分組大小等等)被聚集并且被應(yīng)用到替代的流控制算法。該算法的結(jié)果進(jìn)而被分布到控制其數(shù)量(即,N)的束的連接之間。可選地,束中的每個連接仍舊使用標(biāo)準(zhǔn)TCP擁塞避免算法。
在又一個實(shí)施例中,并行束中的單獨(dú)的連接被虛擬化,即不建立實(shí)際的單獨(dú)的TCP 連接。事實(shí)上擁塞避免算法被修改為表現(xiàn)得就好像存在N個并行連接一樣。該方法的優(yōu)點(diǎn)在于對于經(jīng)過多個網(wǎng)絡(luò)節(jié)點(diǎn)而言就如同單個連接一樣。因此重新?lián)砣惴ú挥绊戇@些節(jié)點(diǎn)的Q0S、安全性和其他監(jiān)控方法。在又一個實(shí)施例中,并行束中的單獨(dú)的連接是真實(shí)存在的, 即獨(dú)立的。為束中的并行連接的每一個建立TCP連接。不必修改用于每個TCP連接的擁塞避免算法。
重佳
在一些實(shí)施例中,流控制器220可以使用本地重傳技術(shù)。實(shí)施預(yù)確認(rèn)的一個原因是為經(jīng)過高損的鏈路(例如無線)作準(zhǔn)備。在這些實(shí)施例中,預(yù)確認(rèn)設(shè)備200或者流控制模塊220最好位于無線鏈路“之前”。這使得要進(jìn)行的重傳更接近于高損鏈路,免去了網(wǎng)絡(luò)的剩余部分的重傳負(fù)擔(dān)。設(shè)備200可提供本地重傳,在這種情形中,由于鏈路錯誤而丟棄的分組由設(shè)備200直接重傳。由于這消除了在端節(jié)點(diǎn)(諸如服務(wù)器106)和任一網(wǎng)絡(luò)104的基礎(chǔ)設(shè)施上的重傳負(fù)擔(dān),所以這是有益的。利用設(shè)備200提供本地重傳,丟棄的分組可以被重傳通過高損鏈路而不必由端節(jié)點(diǎn)重傳且不會引起端節(jié)點(diǎn)的數(shù)據(jù)傳輸率的對應(yīng)下降。
實(shí)施預(yù)確認(rèn)的另一個原因是避免接收超時(shí)(RTO)懲罰。在標(biāo)準(zhǔn)TCP中,即使是成功接收傳輸中的較大百分比的分組,但仍存在多種情況導(dǎo)致RT0。使用標(biāo)準(zhǔn)TCP算法,在一個 RTT窗口中丟棄不只一個分組有可能會導(dǎo)致超時(shí)。此外,如果重傳的分組被丟棄,則大部分 TCP連接經(jīng)歷超時(shí)。在具有高帶寬延遲產(chǎn)品的網(wǎng)絡(luò)中,甚至相對小的分組丟失率也會導(dǎo)致頻繁的重傳超時(shí)(RT0)。在一個實(shí)施例中,設(shè)備200使用重傳和超時(shí)算法來避免過早的RT0。 設(shè)備200或者流控制器220基于每一分組來維持重傳的計(jì)數(shù)。每傳輸一個分組,將計(jì)數(shù)加一,然后設(shè)備200繼續(xù)傳輸分組。在一些實(shí)施例中,僅有當(dāng)一個分組已經(jīng)被重傳預(yù)定的次數(shù)后才宣告RT0。
波前檢測和消除二義件
在一些實(shí)施例中,設(shè)備200或者流控制器220在管理和控制網(wǎng)絡(luò)流量中使用波前檢測和消除二義性技術(shù)。在該技術(shù)中,流控制器220使用傳輸標(biāo)識符或者號碼來確定是否需要重傳特定數(shù)據(jù)分組。舉例來說,發(fā)送器在網(wǎng)絡(luò)上傳輸數(shù)據(jù)分組,其中所傳輸?shù)臄?shù)據(jù)分組的每一個實(shí)例與一個傳輸號碼相關(guān)聯(lián)??梢岳斫?,分組的傳輸號碼與分組的序列號不相同,因?yàn)樾蛄刑枠?biāo)記分組中的數(shù)據(jù),而傳輸號碼標(biāo)記該數(shù)據(jù)的傳輸?shù)膶?shí)例。傳輸號碼可以是對于該目的可用的任意信息,包括與分組相關(guān)聯(lián)的時(shí)間戳或者簡單地增加的號碼(類似于序列號或者分組號)。因?yàn)閿?shù)據(jù)段可以被重傳,所以不同的傳輸號碼可以與特定的序列號相關(guān)聯(lián)。
由于發(fā)送器傳輸數(shù)據(jù)分組,所以發(fā)送器保持被確認(rèn)的數(shù)據(jù)分組傳輸?shù)膶?shí)例的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)分組傳輸?shù)拿總€實(shí)例由其序列號和傳輸號碼標(biāo)記。通過保持對于每個分組的傳輸號碼,發(fā)送器保留數(shù)據(jù)分組的傳輸順序。當(dāng)發(fā)送器接收到ACK或者SACK時(shí),發(fā)送器確定與接收器(在所接收的確認(rèn)中)指示的已經(jīng)接收的分組相關(guān)聯(lián)的最高的傳輸號碼。具有較低傳輸號碼的任何未完成的未經(jīng)確認(rèn)的分組被假設(shè)為已丟失。
在一些實(shí)施例中,當(dāng)?shù)竭_(dá)分組已經(jīng)被重傳時(shí),發(fā)送器呈現(xiàn)出模糊的情形標(biāo)準(zhǔn)的 ACK/SACK沒有包含足夠的信息來使發(fā)送器確定該到達(dá)分組的哪個傳輸觸發(fā)了該確認(rèn)。從而,在接收到模糊確認(rèn)之后,發(fā)送器消除該確認(rèn)二義性以將其與傳輸號碼相關(guān)聯(lián)。在不同的實(shí)施例中,多個技術(shù)的其中之一或者組合可以被用來解決該模糊性。
在一個實(shí)施例中,發(fā)送器在所傳輸?shù)臄?shù)據(jù)分組中包含標(biāo)識符,然后,接收器在確認(rèn)中返回該標(biāo)識符或者該標(biāo)識符的函數(shù)。該標(biāo)識符可以是時(shí)間戳(例如在RFC1323中描述的 TCP時(shí)間戳)、序列號、可以被用來在分組傳輸?shù)膬蓚€或多個實(shí)例之間進(jìn)行解析的任何其他信息。在TCP時(shí)間戳選項(xiàng)被用來消除確認(rèn)的二義性的實(shí)施例中,使用高達(dá)32位唯一的信息來標(biāo)記每個分組。接收到數(shù)據(jù)分組時(shí),接收器通過確認(rèn)將該唯一信息回送到發(fā)送器。發(fā)送器確保最初發(fā)送的分組和其重傳的一個或者多個版本包含對于時(shí)間戳選項(xiàng)的不同值,這允許其明確地消除ACK的模糊性。發(fā)送器可以將該唯一信息保持在例如用來保存所發(fā)送的數(shù)據(jù)分組的狀態(tài)的數(shù)據(jù)結(jié)構(gòu)中。由于該技術(shù)與工業(yè)標(biāo)準(zhǔn)相兼容并且因此很少或不會遇到互操作性的問題,所以該技術(shù)是有益的。然而,該技術(shù)在一些實(shí)現(xiàn)中可能要求十個字節(jié)的TCP首部空間,這降低了網(wǎng)絡(luò)上有效吞吐率并且減少了可用于其他TCP選項(xiàng)的空間。
在又一個實(shí)施例中,分組中的另一個字段,諸如IP ID字段,被用來以與上述TCP 時(shí)間戳選項(xiàng)相似的方式來消除二義性。發(fā)送器安排該分組的最初和重傳版本的ID字段值, 以使在IP首部中具有不同的ID字段。在接收器或其代理裝置接收到數(shù)據(jù)分組時(shí),接收器將ACK分組的ID字段設(shè)置為觸發(fā)該ACK的分組的ID字段的函數(shù)。由于該方法不需要發(fā)送額外的數(shù)據(jù),保持了網(wǎng)絡(luò)和TCP首部空間的效率,所以該方法是有益的。所選擇的函數(shù)應(yīng)有極大可能消除二義性。在優(yōu)先實(shí)施例中,發(fā)送器選擇IP ID值且將最高有效位設(shè)置為O。當(dāng)接收器響應(yīng)時(shí),IP ID值被設(shè)置為相同的IP ID值,且最高有效位被設(shè)為I。
在另一個實(shí)施例中,與非模糊性確認(rèn)相關(guān)聯(lián)的傳輸號碼被用來消除模糊確認(rèn)的二義性。該技術(shù)基于這樣的原理由于兩個分組在時(shí)間上更接近地傳輸,則對于這兩個分組的確認(rèn)將傾向于時(shí)間上更接近地接收。由于對于未被重傳的分組所接收的確認(rèn)可容易地與傳輸號碼相關(guān)聯(lián),所以這樣的分組不會導(dǎo)致模糊性。因此,可以將這些已知的傳輸號碼與所接收的在時(shí)間上接近于已知確認(rèn)的模糊確認(rèn)的可能的傳輸號碼相比較。發(fā)送器將模糊確認(rèn)的傳輸號碼與最近已知的所接收的傳輸號碼相比較,選擇對于已知的所接收的傳輸號碼最接近的一個。例如,如果接收到對數(shù)據(jù)分組I的確認(rèn)并且最后所接收的確認(rèn)是針對數(shù)據(jù)分組 5,那么發(fā)送器通過假設(shè)數(shù)據(jù)分組I的第三個實(shí)例導(dǎo)致了該確認(rèn)來解決該模糊性。
詵擇件確認(rèn)
設(shè)備200或者流控制器220的另一項(xiàng)技術(shù)是實(shí)現(xiàn)傳輸控制協(xié)議選擇性確認(rèn)或TCP SACK的實(shí)施例以確定已經(jīng)收到哪些分組或沒有收到哪些分組。該技術(shù)允許發(fā)送器明確地確定已經(jīng)由接收器收到的分組的列表以及沒有收到的分組的精確的列表??梢酝ㄟ^修改發(fā)送器和/或接收器或者通過將發(fā)送器側(cè)和接收器側(cè)流控制模塊220插入到發(fā)送器和接收器之間的網(wǎng)絡(luò)路徑中來實(shí)現(xiàn)該功能。參考圖IA或者1B,發(fā)送器(例如客戶機(jī)102)被配置為通過網(wǎng)絡(luò)104向接收器(例如服務(wù)器106)傳輸數(shù)據(jù)分組。作為響應(yīng),接收器將被稱為SACK分組的TCP選擇性確認(rèn)選項(xiàng)返回給發(fā)送器。在一個實(shí)施例中,盡管此處為了簡便僅討論一個方向的通信,但是該通信是雙向的。接收器保持包含接收器實(shí)際已收到的數(shù)據(jù)分組的序列號的一組范圍的列表或者其他適合的數(shù)據(jù)結(jié)構(gòu)。在一些實(shí)施例中,該列表根據(jù)序列號以升序或者降序排列。接收器還保持放棄的(left-off)指針,其包括對列表的引用并且指示從之前生成的SACK分組的放棄點(diǎn)。
當(dāng)接收到數(shù)據(jù)分組時(shí),接收器生成SACK分組并將其傳輸回到發(fā)送器。在一些實(shí)施例中,SACK分組包括多個字段,每個字段可以保留序列號的范圍來指示一組已接收的數(shù)據(jù)分組。接收器用包括觸發(fā)SACK分組的正在到達(dá)(landing)分組的序列號的范圍來填充該 SACK分組的第一字段。剩余可用的SACK字段用已收到的分組的列表的序列號的范圍來填充。當(dāng)該列表中的范圍超過可以被載入SACK分組的范圍時(shí),接收器使用放棄指針來確定哪個范圍被載入SACK分組。接收器從有序的列表連續(xù)插入SACK范圍,從指針引用的范圍開始并且沿列表持續(xù)向下,直到消耗完SACK分組的TCP首部中的可用的SACK范圍空間。如果到達(dá)末端,則接收器環(huán)繞到列表的開始。在一些實(shí)施例中,兩個或三個附加的SACK范圍可以被添加到SACK范圍信息。
一旦接收器生成SACK分組,接收器將確認(rèn)發(fā)送會發(fā)送器。然后,接收器在列表中將放棄的指針前進(jìn)一個或者多個SACK范圍項(xiàng)。例如,如果接收器插入四個SACK范圍,則放棄指針可以在列表中被推進(jìn)兩個SACK范圍。當(dāng)所推進(jìn)的放棄的指針到達(dá)列表的末端,則指針被重置為列表的開始,從而有效地環(huán)繞已知所接收范圍的列表,環(huán)繞該列表使得系統(tǒng)甚至能在SACK分組大量丟失的情況下良好地運(yùn)行,這是由于一旦列表被環(huán)繞,則由于丟失的 SACK分組導(dǎo)致的未被通信的SACK信息將最終被通信。
因此可以理解,SACK分組可以通信關(guān)于接收器的情況的多個細(xì)節(jié)。首先,SACK分組指示在SACK分組生成時(shí)接收器剛剛收到該SACK信息的第一字段中的數(shù)據(jù)分組。其次, SACK信息的第二和隨后的字段指示接收器已經(jīng)收到這些范圍中的數(shù)據(jù)分組。SACK信息還暗示接收器在SACK分組生成時(shí)沒有接收落入SACK信息的第二和隨后的字段之間的任何一個數(shù)據(jù)分組。本質(zhì)上,SACK信息中的第二和隨后的字段之間的范圍是所接收的數(shù)據(jù)中的 “孔”,其中的數(shù)據(jù)是已知的未被傳送的數(shù)據(jù)。因此,使用該方法,當(dāng)SACK分組具有足夠空間來包括多余兩個的SACK范圍時(shí),接收器可以向發(fā)送器指示還沒有被接收器接收的數(shù)據(jù)分組的范圍。
在另一個實(shí)施例中,發(fā)送器使用上述的SACK分組結(jié)合上述重傳技術(shù)來假定哪些數(shù)據(jù)分組已經(jīng)被傳送到接收器。例如,當(dāng)重傳算法(使用傳輸號碼)宣告分組丟失時(shí),發(fā)送器認(rèn)為該分組僅是條件性丟失,因?yàn)橛锌赡苁亲R別該分組的接收的SACK分組丟失,而不是數(shù)據(jù)分組本身丟失。發(fā)送器因此將該分組添加到潛在丟失的分組的列表,稱之為假定丟失的列表。每當(dāng)SACK分組到達(dá),將來自SACK分組的數(shù)據(jù)的已知丟失范圍和假定丟失列表中的30分組相比較。包括已知丟失的數(shù)據(jù)分組被宣告實(shí)際丟失并被隨后重傳。以此方式,組合這兩個方案來將更好的關(guān)于已丟失且需要重傳哪些分組的信息給予發(fā)送器。
事務(wù)邊界檢測
在一些實(shí)施例中,設(shè)備200或流控制器220使用被稱為事務(wù)邊界檢測的技術(shù)。在一個實(shí)施例中,該技術(shù)適合于乒乓(ping-pong)表現(xiàn)的連接。在TCP層,乒乓行為是當(dāng)一個通信器(發(fā)送器)發(fā)送數(shù)據(jù)然后等待來自另一個通信器(接收器)的響應(yīng)。乒乓行為的例子包括遠(yuǎn)程程序調(diào)用、HTTP和其他。以上描述的算法使用重傳超時(shí)來從與事務(wù)相關(guān)的最后的一個分組或多個的丟棄進(jìn)行恢復(fù)。由于在一些實(shí)施例中,TCP RTO機(jī)制極端粗略,例如在所有情況中要求最小I秒的值,在這些情況下可以看到差的應(yīng)用行為。
在一個實(shí)施例中,數(shù)據(jù)的發(fā)送器或耦合到發(fā)送器的流控制模塊220檢測所發(fā)送的數(shù)據(jù)中的事務(wù)邊界。在檢測到事務(wù)邊界時(shí),發(fā)送器或者流控制器220發(fā)送額外的分組,額外的分組的接收從接收器生成額外的ACK或者SACK響應(yīng)。額外的分組的插入優(yōu)選地限于改善的應(yīng)用響應(yīng)時(shí)間和網(wǎng)絡(luò)能力利用之間的平衡。所插入的額外的分組的數(shù)量可以根據(jù)與該連接相關(guān)聯(lián)的當(dāng)前丟失率來進(jìn)行選擇,對于較高的丟失率的連接選擇更多的分組。
檢測事務(wù)邊界的一個方法是基于時(shí)間的。如果發(fā)送器已經(jīng)發(fā)送數(shù)據(jù)并停止,則在一段時(shí)間之后發(fā)送器或流控制模塊220宣告事務(wù)邊界。這可以和其他技術(shù)相結(jié)合。例如,由發(fā)送器在TCP首部中設(shè)置PSH (TCP推送)位可以指示事務(wù)邊界。因此,將基于時(shí)間的方法和這些附加的試探方法相組合可以提供對于事務(wù)邊界的更精確的檢測。在另一個技術(shù)中, 如果發(fā)送器或者流控制模塊220理解應(yīng)用協(xié)議,其可以解析協(xié)議數(shù)據(jù)流并且直接確定事務(wù)邊界。在一些實(shí)施例中,可以獨(dú)立于任一基于時(shí)間的機(jī)制使用此最后的行為。
響應(yīng)于檢測事務(wù)邊界,發(fā)送器或流控制模塊220向接收器傳輸額外的數(shù)據(jù)分組以便從接收器引發(fā)確認(rèn)。因此,額外的數(shù)據(jù)分組應(yīng)該使得接收器將響應(yīng)于接收數(shù)據(jù)分組來至少產(chǎn)生ACK或SACK。在一個實(shí)施例中,簡單地重傳事務(wù)的最后一個或多個分組。相比于僅發(fā)送虛擬的數(shù)據(jù)分組,如果最后一個或多個分組已經(jīng)被丟棄,這就具有重傳所需數(shù)據(jù)的增加的益處。在又一個實(shí)施例中,發(fā)送最后一個或多個分組的片段,允許發(fā)送器來消除來自于其最初分組的這些分組到來的二義性。這使接收器避免錯誤的混淆任意重新排序自適應(yīng)算法。在又一個實(shí)施例中,任意數(shù)量的公知的前向糾錯技術(shù)可被用來為所插入的分組生成額外的數(shù)據(jù),這允許重新構(gòu)造接收器處丟失的或以其他方式錯過的數(shù)據(jù)。
在一些實(shí)施例中,當(dāng)對事務(wù)中的最后的數(shù)據(jù)分組的確認(rèn)被丟棄時(shí),此處描述的邊界檢測技術(shù)有助于避免超時(shí)。當(dāng)發(fā)送器或流控制模塊220接收對于這些額外的數(shù)據(jù)分組的確認(rèn)時(shí),發(fā)送器可以從這些額外的確認(rèn)來確定最后的數(shù)據(jù)分組是否已經(jīng)被接收或這需要被重傳,從而避免超時(shí)。在一個實(shí)施例中,如果最后的分組已經(jīng)被接收但是它們的確認(rèn)被丟棄,則流控制模塊220生成對該數(shù)據(jù)分組的確認(rèn),并且將該確認(rèn)發(fā)送到發(fā)送器,從而告知發(fā)送器該數(shù)據(jù)分組已經(jīng)被傳送。在又一個實(shí)施例中,如果沒有收到最后的分組,則流控制模塊 220向發(fā)送器發(fā)送一個分組來使發(fā)送器重傳丟棄的數(shù)據(jù)分組。
重新分組
在又一個實(shí)施例中,設(shè)備200或流控制器220使用重新分組技術(shù)來改善傳輸層網(wǎng)絡(luò)流量。在一些實(shí)施例中,TCP性能和分組大小成比例。因此增加分組大小能改進(jìn)性能,除非其引起大大增加的分組丟失率或其他非線性效應(yīng),例如IP分片。通常,有線介質(zhì)(諸如銅纜或光纖)具有極低的誤碼率,低到可以忽略不計(jì)。對于這些介質(zhì),在分片發(fā)生之前,最大化分組大小是有益的(通過底層傳輸介質(zhì)的協(xié)議來限制最大化的分組大小)。但是對于具有較聞丟失率的傳輸介質(zhì)(例如,諸如WiFi等的無線技術(shù),或者諸如電力線網(wǎng)絡(luò)等聞?chuàng)p環(huán)境),增加分組大小可能導(dǎo)致較低的傳輸率,因?yàn)榻橘|(zhì)引發(fā)的錯誤導(dǎo)致整個分組被丟棄(即,介質(zhì)引發(fā)的錯誤超過對于該介質(zhì)的標(biāo)準(zhǔn)糾錯碼的能力),從而增加了分組丟失率。分組丟失率中的顯著大的增加實(shí)際上否定了增加的分組大小的任何性能益處。在一些情況中,對于TCP端點(diǎn)來選擇最優(yōu)的分組大小可能是困難的。例如,最優(yōu)的分組大小可以根據(jù)每個鏈路的性質(zhì)在傳輸路徑時(shí)發(fā)生變化。
通過將設(shè)備200或流控制模塊220插入到傳輸路徑中,流控制器220監(jiān)控鏈路的特征并且根據(jù)所確定的鏈路特征重新分組。在一個實(shí)施例中,設(shè)備200或流控制器220將具有連續(xù)數(shù)據(jù)的分組重新分組為少量的較大分組。在又一個實(shí)施例中,設(shè)備200或流控制器220通過將一系列大分組分為大量的較小的分組來對分組進(jìn)行重新分組。在其他實(shí)施例中,設(shè)備200或流控制器220監(jiān)控鏈路特征并且通過重新組合來調(diào)整分組大小以提高吞吐量。
QoS
仍參考圖2A,在一些實(shí)施例中,流控制器220可以包括QoS引擎236,(也被稱為 QoS控制器)。在又一個實(shí)施例中,例如,設(shè)備200和/或網(wǎng)絡(luò)優(yōu)化引擎250包括單獨(dú)的但與流控制器220通信的QoS引擎236。QoS引擎236包括用于執(zhí)行改善任何網(wǎng)絡(luò)連接的性能、 操作或服務(wù)質(zhì)量的一個或多個服務(wù)質(zhì)量(QoS)技術(shù)的任何邏輯、商業(yè)規(guī)則、功能或操作。在一些實(shí)施例中,QoS引擎236包括為不同用戶、應(yīng)用、數(shù)據(jù)流或連接提供不同優(yōu)先級的網(wǎng)絡(luò)流量控制和管理機(jī)制。在其他實(shí)施例中,QoS引擎236為用戶、應(yīng)用、數(shù)據(jù)流或連接控制、維持或確保特定水平的性能。在一個實(shí)施例中,QoS引擎236為用戶、應(yīng)用、數(shù)據(jù)流或連接控制、維持或確保特定部分的帶寬或網(wǎng)絡(luò)容量。在一些實(shí)施例中,QoS引擎236監(jiān)控對應(yīng)于用戶、應(yīng)用、數(shù)據(jù)流或連接的性能或服務(wù)質(zhì)量的所達(dá)到的水平,例如數(shù)據(jù)速率和延遲。響應(yīng)于監(jiān)控,QoS引擎236動態(tài)地控制或調(diào)整網(wǎng)絡(luò)分組的調(diào)度優(yōu)先級來獲得期望水平的性能或服務(wù)質(zhì)量。
在一些實(shí)施例中,QoS引擎236根據(jù)一個或多個類別或等級的服務(wù)來優(yōu)先排序、調(diào)度和傳輸網(wǎng)絡(luò)分組。在一些實(shí)施例中,服務(wù)類別或等級可以包括1)盡最大努力,2)控制的負(fù)載,3)有保證的或者4)定性的。對于盡最大努力類的服務(wù),設(shè)備200作出合理的努力來傳送分組(標(biāo)準(zhǔn)服務(wù)水平)。對于控制的負(fù)載類的服務(wù),設(shè)備200或QoS引擎236近似傳輸介質(zhì)的標(biāo)準(zhǔn)的分組錯誤丟失或者近似輕度負(fù)載網(wǎng)絡(luò)條件下的盡最大努力服務(wù)的行為。對于有保證類的服務(wù),設(shè)備200或QoS引擎236保證來在連接期間以確定的速率傳輸數(shù)據(jù)的能力。 對于定性類的服務(wù),設(shè)備200或QoS引擎236將定性類服務(wù)用于要求或期望優(yōu)先排序的流量的應(yīng)用、用戶、數(shù)據(jù)流或者連接,但不能對資源需求或服務(wù)水平進(jìn)行定量。在這些情況中, 設(shè)備200或QoS引擎236基于QoS引擎236的任意邏輯或配置或者基于商業(yè)規(guī)則或策略來確定服務(wù)類別或優(yōu)先級。例如,在一個實(shí)施例中,QoS引擎236根據(jù)策略引擎295、295’指定的一個或多個策略來優(yōu)先排序、調(diào)度和傳輸網(wǎng)絡(luò)分組。
協(xié)議加諫
協(xié)議加速器234包括用于優(yōu)化、加速或以其他方式改善一個或多個協(xié)議的性能、操作或服務(wù)質(zhì)量的任何邏輯、商業(yè)規(guī)則、功能或操作。在一個實(shí)施例中,協(xié)議加速器234在網(wǎng)絡(luò)堆棧的層5-7的加速任何應(yīng)用層協(xié)議。在其他實(shí)施例中,協(xié)議加速器234加速傳輸層或者層4協(xié)議。在一個實(shí)施例中,協(xié)議加速器234加速層2或?qū)?的協(xié)議。在一些實(shí)施例中,協(xié)議加速器234被配置、構(gòu)建或設(shè)計(jì)來根據(jù)數(shù)據(jù)類型、協(xié)議的特征和/或行為來優(yōu)化或加速一個或多個協(xié)議的每一個。在又一個實(shí)施例中,協(xié)議加速器234被配置、構(gòu)建或設(shè)計(jì)來改善用戶體驗(yàn)、響應(yīng)時(shí)間、網(wǎng)絡(luò)或者計(jì)算機(jī)負(fù)載,和/或關(guān)于協(xié)議的網(wǎng)絡(luò)或帶寬利用。
在一個實(shí)施例中,協(xié)議加速器234被配置、構(gòu)建或設(shè)計(jì)來最小化文件系統(tǒng)訪問上的WAN延遲的影響。在一些實(shí)施例中,協(xié)議加速器234優(yōu)化或加速CIFS (通用互聯(lián)網(wǎng)文件系統(tǒng))協(xié)議的使用來改善文件系統(tǒng)訪問時(shí)間或?qū)?shù)據(jù)和文件的訪問時(shí)間。在一些實(shí)施例中, 協(xié)議加速器234優(yōu)化或加速NFS (網(wǎng)絡(luò)文件系統(tǒng))協(xié)議的使用。在又一個實(shí)施例中,協(xié)議加速器234優(yōu)化或加速文件傳輸協(xié)議(FTP)的使用。
在一個實(shí)施例中,協(xié)議加速器234被配置、構(gòu)建或設(shè)計(jì)來優(yōu)化或加速承載為有效載荷的或使用任何類型和形式的標(biāo)記語言的協(xié)議。在其他實(shí)施例中,協(xié)議加速器234被配置、構(gòu)建或設(shè)計(jì)來優(yōu)化或加速超文本傳輸協(xié)議(HTTP)。在又一個實(shí)施例中,協(xié)議加速器234 被配置、構(gòu)建或設(shè)計(jì)來優(yōu)化或加速承載有效載荷或以其他方式使用XML (可擴(kuò)展標(biāo)記語言) 的協(xié)議。
透明并且多點(diǎn)部署配置
在一些實(shí)施例中,設(shè)備200和/或網(wǎng)絡(luò)優(yōu)化引擎250對于通過諸如WAN鏈路的網(wǎng)絡(luò)連接或鏈路的任何數(shù)據(jù)流是透明的。在一個實(shí)施例中,設(shè)備200和/或網(wǎng)絡(luò)優(yōu)化引擎250 以這樣的方式操作通過WAN的數(shù)據(jù)流是由任何網(wǎng)絡(luò)監(jiān)控、QoS管理或網(wǎng)絡(luò)分析工具可識別的。在一些實(shí)施例中,設(shè)備200和/或網(wǎng)絡(luò)優(yōu)化引擎250不創(chuàng)建用于傳輸可以隱藏、遮掩或以其他方式使網(wǎng)絡(luò)流量不透明的數(shù)據(jù)的任何隧道或流。在其他實(shí)施例中,設(shè)備200透明地操作,因?yàn)樵O(shè)備不改變網(wǎng)絡(luò)分組的任何源和/或目標(biāo)地址信息或端口信息,諸如互聯(lián)網(wǎng)協(xié)議地址或端口號。在其他實(shí)施例中,設(shè)備200和/或網(wǎng)絡(luò)優(yōu)化引擎250被認(rèn)為對于網(wǎng)絡(luò)架構(gòu)中的網(wǎng)絡(luò)、應(yīng)用、客戶機(jī)、服務(wù)器或其他設(shè)備或計(jì)算裝置透明地操作或運(yùn)轉(zhuǎn)。也就是在一些實(shí)施例中,設(shè)備是透明的,因?yàn)椴槐匦薷木W(wǎng)絡(luò)上的任何裝置或設(shè)備的網(wǎng)絡(luò)相關(guān)配置來支持設(shè)備200。
可以下面的部署配置的任何一個來部署設(shè)備200 :1)串行流量,2)代理模式,3)虛擬串行模式。在一些實(shí)施例中,設(shè)備200可以與以下的一個或多個串行部署路由器、客戶機(jī)、服務(wù)器或者另一個網(wǎng)絡(luò)裝置或設(shè)備。在其他實(shí)施例中,設(shè)備200可以與以下的一個或多個并行部署路由器、客戶機(jī)、服務(wù)器或者另一個網(wǎng)絡(luò)裝置或設(shè)備。在并行部署中,路由器、 客戶機(jī)、服務(wù)器或者其他網(wǎng)絡(luò)設(shè)備可以被配置為轉(zhuǎn)發(fā)、轉(zhuǎn)換或通過網(wǎng)絡(luò)至設(shè)備200或者經(jīng)由設(shè)備200轉(zhuǎn)發(fā)、轉(zhuǎn)換或通過網(wǎng)絡(luò)。
在串行的實(shí)施例中,設(shè)備200與路由器的WAN串行部署。以此方式,來自WAN的所有流量在到達(dá)LAN的目的地之前穿過該設(shè)備。
在代理模式的實(shí)施例中,設(shè)備200被部署為客戶機(jī)和服務(wù)器之間的代理裝置。在一些實(shí)施例中,設(shè)備200使客戶機(jī)與網(wǎng)絡(luò)上的資源間接連接。例如,客戶機(jī)經(jīng)由設(shè)備200連接到資源,并且設(shè)備通過連接到該資源、不同的資源、或者通過從高速緩存供應(yīng)該資源來提供資源。在一些情況中,設(shè)備可以對于不同的目的來改變客戶機(jī)請求或者服務(wù)器響應(yīng),諸如對于此處所討論的任何優(yōu)化技術(shù)。在其他實(shí)施例中,設(shè)備200通過透明地?cái)r截并轉(zhuǎn)發(fā)到客戶機(jī)和/或服務(wù)器的請求和響應(yīng)來作為透明代理運(yùn)行。不使用客戶機(jī)側(cè)配置,設(shè)備200可以將客戶機(jī)請求重定向到不同的服務(wù)器或網(wǎng)絡(luò)。在一些實(shí)施例中,設(shè)備200可以在穿過該設(shè)備的任何網(wǎng)絡(luò)流量上執(zhí)行任何類型和形式的網(wǎng)絡(luò)地址轉(zhuǎn)換(被稱為NAT)。
在一些實(shí)施例中,設(shè)備200以虛擬串行模式配置來部署。在該實(shí)施例中,具有路由或轉(zhuǎn)換功能的路由器或網(wǎng)絡(luò)裝置被配置為轉(zhuǎn)發(fā)、路由或以其他方式提供發(fā)往網(wǎng)絡(luò)或設(shè)備 200的網(wǎng)絡(luò)分組。設(shè)備200接著在該網(wǎng)絡(luò)分組上執(zhí)行任一期望的處理,諸如此處討論的任一 WAN優(yōu)化技術(shù)。當(dāng)完成處理時(shí),設(shè)備200將經(jīng)處理的網(wǎng)絡(luò)分組轉(zhuǎn)發(fā)到路由器以傳輸?shù)骄W(wǎng)絡(luò)上的目的地。以此方式,設(shè)備200可以并行耦合到路由器,但仍如同設(shè)備200串行一樣操作。該部署模式還提供透明性,因?yàn)楫?dāng)分組被處理并經(jīng)由設(shè)備通過網(wǎng)絡(luò)傳輸時(shí),保留了源和目標(biāo)地址以及端口信息。
端節(jié)點(diǎn)部署
盡管在上文網(wǎng)絡(luò)優(yōu)化引擎250總是結(jié)合設(shè)備200來描述,但是網(wǎng)絡(luò)優(yōu)化引擎250 或其任何部分可以被部署、分布或以其他方式操作在諸如客戶機(jī)102和/或服務(wù)器106的任一端節(jié)點(diǎn)上。由此,客戶機(jī)或服務(wù)器可以提供此處所描述的結(jié)合一個或多個設(shè)備200或者不結(jié)合設(shè)備200的網(wǎng)絡(luò)優(yōu)化引擎250的任何系統(tǒng)和方法。
現(xiàn)參考圖2B,描述部署在一個或多個端節(jié)點(diǎn)的網(wǎng)絡(luò)優(yōu)化引擎250的示例實(shí)施例。 總的來說,客戶機(jī)102可以包括第一網(wǎng)絡(luò)優(yōu)化引擎250’并且服務(wù)器106可以包括第二網(wǎng)絡(luò)優(yōu)化引擎250”??蛻魴C(jī)102和服務(wù)器106可以建立傳輸層連接并且交換穿過或不穿過設(shè)備 200的通信。
在一個實(shí)施例中,客戶機(jī)102的網(wǎng)絡(luò)優(yōu)化引擎250’執(zhí)行此處描述的技術(shù)來優(yōu)化、 加速或以其他方式改善與服務(wù)器106通信的網(wǎng)絡(luò)流量的性能、操作或服務(wù)質(zhì)量。在又一個實(shí)施例中,服務(wù)器106的網(wǎng)絡(luò)優(yōu)化引擎250”執(zhí)行此處描述的技術(shù)來優(yōu)化、加速或以其他方式改善與客戶機(jī)102通信的網(wǎng)絡(luò)流量的性能、操作或服務(wù)質(zhì)量。在一些實(shí)施例中,客戶機(jī) 102的網(wǎng)絡(luò)優(yōu)化引擎250’和服務(wù)器106的網(wǎng)絡(luò)優(yōu)化引擎250”執(zhí)行此處描述的技術(shù)來優(yōu)化、 加速或以其他方式改善在客戶機(jī)102與服務(wù)器106之間通信的網(wǎng)絡(luò)流量的性能、操作或服務(wù)質(zhì)量。在又一個實(shí)施例中,客戶機(jī)102的網(wǎng)絡(luò)優(yōu)化引擎250’結(jié)合設(shè)備200執(zhí)行此處描述的技術(shù)來優(yōu)化、加速或以其他方式改善與客戶機(jī)102通信的網(wǎng)絡(luò)流量的性能、操作或服務(wù)質(zhì)量。在又一個實(shí)施例中,服務(wù)器106的網(wǎng)絡(luò)優(yōu)化引擎250”結(jié)合設(shè)備200執(zhí)行此處描述的技術(shù)來優(yōu)化、加速或以其他方式改善與服務(wù)器106通信的網(wǎng)絡(luò)流量的性能、操作或服務(wù)質(zhì)量。
C.客戶機(jī)代理
現(xiàn)參考圖3,描述客戶機(jī)代理120的實(shí)施例。客戶機(jī)102包括客戶機(jī)代理120,用于經(jīng)由網(wǎng)絡(luò)104與設(shè)備200、設(shè)備205和/或服務(wù)器106來建立、交換、管理和控制通信。在一些實(shí)施例中,客戶機(jī)120 (其也可以被稱為WAN客戶機(jī))加速WAN網(wǎng)絡(luò)通信和/或用于通過網(wǎng)絡(luò)設(shè)備200通信。總的來說,客戶機(jī)102在計(jì)算裝置100上操作,該計(jì)算裝置100擁有帶有內(nèi)核模式302以及用戶模式303的操作系統(tǒng),以及帶有一個或多個層310a-310b的網(wǎng)絡(luò)堆棧267。客戶機(jī)102可以已經(jīng)安裝和/或執(zhí)行一個或多個應(yīng)用。在一些實(shí)施例中,一個或多個應(yīng)用可通過網(wǎng)絡(luò)堆棧267與網(wǎng)絡(luò)104通信。所述應(yīng)用之一,諸如web瀏覽器,也可包括第一程序322。例如,可在一些實(shí)施例中使用第一程序322來安裝和/或執(zhí)行客戶機(jī)代理 120,或其中任何部分。客戶機(jī)代理120包括攔截機(jī)制或者攔截器350,用于從網(wǎng)絡(luò)堆棧267 攔截來自一個或者多個應(yīng)用的網(wǎng)絡(luò)通信。
與設(shè)備200 —樣,客戶機(jī)102具有網(wǎng)絡(luò)堆棧267,其包括任何類型和形式的軟件、或硬件或其組合,用于提供與網(wǎng)絡(luò)104的連接和通信。客戶機(jī)102的網(wǎng)絡(luò)堆棧267包括上文結(jié)合設(shè)備200所描述的任何一個網(wǎng)絡(luò)堆棧實(shí)施例。在一些實(shí)施例中,客戶機(jī)代理120或其任何部分被設(shè)計(jì)和構(gòu)建為與由客戶機(jī)102的操作系統(tǒng)安裝或以其他方式提供的網(wǎng)絡(luò)堆棧267一起操作或聯(lián)合工作。
在進(jìn)一步的細(xì)節(jié)中,客戶機(jī)102或設(shè)備200 (205)的網(wǎng)絡(luò)堆棧267可包括任何類型和形式的接口,用于接收、獲得、提供或以其它方式訪問與客戶機(jī)102的網(wǎng)絡(luò)通信相關(guān)的任何信息和數(shù)據(jù)。在一個實(shí)施例中,與網(wǎng)絡(luò)堆棧267的接口包括應(yīng)用編程接口(API)。接口也可包括任何函數(shù)調(diào)用、鉤子或過濾機(jī)制,事件或回調(diào)機(jī)制、或任何類型的接口技術(shù)。網(wǎng)絡(luò)堆棧267通過接口可接收或提供與網(wǎng)絡(luò)堆棧267的功能或操作相關(guān)的任何類型和形式的數(shù)據(jù)結(jié)構(gòu),例如對象。例如,數(shù)據(jù)結(jié)構(gòu)可以包括與網(wǎng)絡(luò)分組相關(guān)的信息和數(shù)據(jù)或者一個或多個網(wǎng)絡(luò)分組。在一些實(shí)施例中,數(shù)據(jù)結(jié)構(gòu)包括、引用或識別在網(wǎng)絡(luò)堆棧267的協(xié)議層處理的網(wǎng)絡(luò)分組的一部分,例如傳輸層的網(wǎng)絡(luò)分組。在一些實(shí)施例中,數(shù)據(jù)結(jié)構(gòu)325包括內(nèi)核級別數(shù)據(jù)結(jié)構(gòu),而在其他實(shí)施例中,數(shù)據(jù)結(jié)構(gòu)325包括用戶模式數(shù)據(jù)結(jié)構(gòu)。內(nèi)核級數(shù)據(jù)結(jié)構(gòu)可以包括獲得的或與在內(nèi)核模式302中操作的網(wǎng)絡(luò)堆棧267的一部分、或者運(yùn)行在內(nèi)核模式302 中的網(wǎng)絡(luò)驅(qū)動程序或其它軟件相關(guān)的數(shù)據(jù)結(jié)構(gòu)、或者由運(yùn)行或操作在操作系統(tǒng)的內(nèi)核模式的服務(wù)、進(jìn)程、任務(wù)、線程或其它可執(zhí)行指令獲得或收到的任何數(shù)據(jù)結(jié)構(gòu)。
此外,網(wǎng)絡(luò)堆棧267的一些部分可在內(nèi)核模式302執(zhí)行或操作,例如,數(shù)據(jù)鏈路或網(wǎng)絡(luò)層,而其他部分在用戶模式303執(zhí)行或操作,例如網(wǎng)絡(luò)堆棧267的應(yīng)用層。例如,網(wǎng)絡(luò)堆棧的第一部分310a可以給應(yīng)用提供對網(wǎng)絡(luò)堆棧267的用戶模式訪問,而網(wǎng)絡(luò)堆棧267的第二部分310a提供對網(wǎng)絡(luò)的訪問。在一些實(shí)施例中,網(wǎng)絡(luò)堆棧的第一部分310a可包括網(wǎng)絡(luò)堆棧267的一個或多個更上層,例如層5-7的任何層。在其它實(shí)施例中,網(wǎng)絡(luò)堆棧267的第二部分310b包括一個或多個較低的層,例如層1-4的任何層。網(wǎng)絡(luò)堆棧267的第一部分 310a和第二部分310b的每一個可包括網(wǎng)絡(luò)堆棧267的任何部分,位于任何一個或多個網(wǎng)絡(luò)層,處于用戶模式203、內(nèi)核模式202,或其組合,或在網(wǎng)絡(luò)層的任何部分或者到網(wǎng)絡(luò)層的接口點(diǎn),或用戶模式203和內(nèi)核模式202的任何部分或到用戶模式203和內(nèi)核模式202的接口點(diǎn)。
攔截器350可以包括軟件、硬件、或者軟件和硬件的任何組合。在一個實(shí)施例中, 攔截器350在網(wǎng)絡(luò)堆棧267的任一點(diǎn)攔截或以其他方式接收網(wǎng)絡(luò)通信,并且重定向或者傳輸網(wǎng)絡(luò)通信到由攔截器350或者客戶機(jī)代理120所期望的、管理的或者控制的目的地。例如,攔截器350可以攔截第一網(wǎng)絡(luò)的網(wǎng)絡(luò)堆棧267的網(wǎng)絡(luò)通信并且傳輸該網(wǎng)絡(luò)通信到設(shè)備 200,用于在第二網(wǎng)絡(luò)104上傳輸。在一些實(shí)施例中,攔截器350包括驅(qū)動器或是驅(qū)動器,例如被構(gòu)建和設(shè)計(jì)來與網(wǎng)絡(luò)堆棧267對接并一同工作的網(wǎng)絡(luò)驅(qū)動器。在一些實(shí)施例中,客戶機(jī)代理120和/或攔截器350操作在網(wǎng)絡(luò)堆棧267的一個或者多個層,諸如在傳輸層。在一個實(shí)施例中,攔截器350包括過濾器驅(qū)動器、鉤子機(jī)制、或者連接到網(wǎng)絡(luò)堆棧的傳輸層的任一形式和類型的合適網(wǎng)絡(luò)驅(qū)動器接口,諸如通過傳輸驅(qū)動器接口(TDI)。在一些實(shí)施例中,攔截器350連接到諸如傳輸層的第一協(xié)議層和諸如傳輸協(xié)議層之上的任何層的另一個協(xié)議層,例如,應(yīng)用協(xié)議層。在一個實(shí)施例中,攔截器350可以包括遵守網(wǎng)絡(luò)驅(qū)動器接口規(guī)范(NDIS)的驅(qū)動器,或者NDIS驅(qū)動器。在又一個實(shí)施例中,攔截器350可以包括微型過濾器或者微端口驅(qū)動器。在一個實(shí)施例中,攔截器350或其部分在內(nèi)核模式202中操作。在又一個實(shí)施例中,攔截器350或其部分在用戶模式203中操作。在一些實(shí)施例中,攔截器350 的一部分在內(nèi)核模式202中操作,而攔截器350的另一部分在用戶模式203中操作。在其它實(shí)施例中,客戶機(jī)代理120在用戶模式203操作,但通過攔截器350連接到內(nèi)核模式驅(qū)動器、進(jìn)程、服務(wù)、任務(wù)或者操作系統(tǒng)的部分,諸如以獲取內(nèi)核級數(shù)據(jù)結(jié)構(gòu)225。在其它實(shí)施例中,攔截器350為用戶模式應(yīng)用或者程序,諸如應(yīng)用。
在一個實(shí)施例中,攔截器350攔截或接收任何的傳輸層連接請求。在這些實(shí)施例中,攔截器350執(zhí)行傳輸層應(yīng)用編程接口(API)調(diào)用以設(shè)置目的地信息,諸如到期望位置的目的地IP地址和/或端口用于定位。以此方式,攔截器350攔截并重定向傳輸層連接到由攔截器350或客戶機(jī)代理120控制或管理的IP地址和端口。在一個實(shí)施例中,攔截器350 把該連接的目的地信息設(shè)置為客戶機(jī)代理120監(jiān)聽的客戶機(jī)102的本地IP地址和端口。例如,客戶機(jī)代理120可以包括為重定向的傳輸層通信監(jiān)聽本地IP地址和端口的代理服務(wù)。 在一些實(shí)施例中,客戶機(jī)代理120隨后將重定向的傳輸層通信傳送到設(shè)備200。
在一些實(shí)施例中,攔截器350攔截域名服務(wù)(DNS )請求。在一個實(shí)施例中,客戶機(jī)代理120和/或攔截器350解析DNS請求。在又一個實(shí)施例中,攔截器發(fā)送所攔截的DNS 請求到設(shè)備200以進(jìn)行DNS解析。在一個實(shí)施例中,設(shè)備200解析DNS請求并且將DNS響應(yīng)傳送到客戶機(jī)代理120。在一些實(shí)施例中,設(shè)備200經(jīng)另一個設(shè)備200’或者DNS服務(wù)器 106來解析DNS請求。
在又一個實(shí)施例中,客戶機(jī)代理120可以包括兩個代理120和120’。在一個實(shí)施例中,第一代理120可以包括在網(wǎng)絡(luò)堆棧267的網(wǎng)絡(luò)層操作的攔截器350。在一些實(shí)施例中,第一代理120攔截網(wǎng)絡(luò)層請求,諸如互聯(lián)網(wǎng)控制消息協(xié)議(ICMP)請求(例如,查驗(yàn)和跟蹤路由)。在其它實(shí)施例中,第二代理120’可以在傳輸層操作并且攔截傳輸層通信。在一些實(shí)施例中,第一代理120在網(wǎng)絡(luò)堆棧210的一層攔截通信并且與第二代理120’對接或者將所攔截的通信傳送到第二代理120’。
客戶機(jī)代理120和/或攔截器350可以以對網(wǎng)絡(luò)堆棧267的任何其它協(xié)議層透明的方式在協(xié)議層操作或與之對接。例如,在一個實(shí)施例中,攔截器350可以以對諸如網(wǎng)絡(luò)層的傳輸層之下的任何協(xié)議層和諸如會話、表示或應(yīng)用層協(xié)議的傳輸層之上的任何協(xié)議層透明的方式在網(wǎng)絡(luò)堆棧267的傳輸層操作或與之對接。這允許網(wǎng)絡(luò)堆棧267的其它協(xié)議層如所期望的進(jìn)行操作并無需修改以使用攔截器350。這樣,客戶機(jī)代理120和/或攔截器350 可以與傳輸層對接以安全、優(yōu)化、加速、路由或者負(fù)載平衡經(jīng)由傳輸層承載的任一協(xié)議提供的任一通信,諸如TCP/IP上的任一應(yīng)用層協(xié)議。
此外,客戶機(jī)代理120和/或攔截器可以以對任何應(yīng)用、客戶機(jī)102的用戶、客戶機(jī)102和/或與客戶機(jī)102通信的諸如服務(wù)器或設(shè)備200、206的任何其它計(jì)算裝置100透明的方式在網(wǎng)絡(luò)堆棧267上操作或與之對接??蛻魴C(jī)代理120和/或攔截器350可以以無需修改應(yīng)用的方式被安裝和/或執(zhí)行在客戶機(jī)102上。在一個實(shí)施例中,客戶機(jī)代理120 或其任何部分被以對客戶機(jī)102、設(shè)備200、205或服務(wù)器106的任何網(wǎng)絡(luò)配置透明的方式被安裝和/或執(zhí)行。在一些實(shí)施例中,客戶機(jī)代理120或其任何部分被以無需修改客戶機(jī) 102、設(shè)備200、205或服務(wù)器106的任何網(wǎng)絡(luò)配置的方式被安裝和/或執(zhí)行。在一個實(shí)施例中,客戶機(jī)102的用戶或者與客戶機(jī)102通信的計(jì)算裝置未意識到客戶機(jī)代理120或其任何部分的存在、執(zhí)行或者操作。同樣,在一些實(shí)施例中,相對于應(yīng)用、客戶機(jī)102的用戶、客戶機(jī)102、諸如服務(wù)器或設(shè)備200、205的另一個計(jì)算裝置、或者在由攔截器350連接的協(xié)議層之上和/或之下的任何協(xié)議層透明地來安裝、執(zhí)行和/或操作客戶機(jī)代理120和/或攔截器350。
客戶機(jī)代理120包括流客戶機(jī)306、收集代理304、SSL VPN代理308、網(wǎng)絡(luò)優(yōu)化引擎250和/或加速程序302。在一個實(shí)施例中,客戶機(jī)代理120包括由佛羅里達(dá)州Fort Lauderdale的Citrix Systems公司開發(fā)的獨(dú)立計(jì)算架構(gòu)(ICA)客戶機(jī)或其任一部分,并且也被稱為ICA客戶機(jī)。在一些實(shí)施例中,客戶機(jī)代理120包括應(yīng)用流客戶機(jī)306,用于從服務(wù)器106流式傳輸應(yīng)用到客戶機(jī)102。在又一個實(shí)施例中,客戶機(jī)代理120包括收集代理 304,用于執(zhí)行端點(diǎn)檢測/掃描并且用于為設(shè)備200和/或服務(wù)器106收集端點(diǎn)信息。在一些實(shí)施例中,客戶機(jī)代理120具有一個或多個網(wǎng)絡(luò)加速或優(yōu)化程 序或代理,例如網(wǎng)絡(luò)優(yōu)化引擎250和加速程序302。在一個實(shí)施例中,加速程序302加速客戶機(jī)102和服務(wù)器106之間的經(jīng)過設(shè)備205’的通信。在一些實(shí)施例中,網(wǎng)絡(luò)優(yōu)化引擎250提供此處所討論的WAN優(yōu)化技術(shù)。
流客戶機(jī)306是應(yīng)用、程序、進(jìn)程、服務(wù)、任務(wù)或者可執(zhí)行指令集,所述應(yīng)用、程序、 進(jìn)程、服務(wù)、任務(wù)或者可執(zhí)行指令集用于接收和執(zhí)行從服務(wù)器106所流式傳輸?shù)膽?yīng)用。服務(wù)器106可以流式傳輸一個或者多個應(yīng)用數(shù)據(jù)文件到流客戶機(jī)306,用于播放、執(zhí)行或者以其它方式引起客戶機(jī)102上的應(yīng)用被執(zhí)行。在一些實(shí)施例中,服務(wù)器106發(fā)送一組壓縮或者打包的應(yīng)用數(shù)據(jù)文件到流客戶機(jī)306。在一些實(shí)施例中,多個應(yīng)用文件被壓縮并存儲在文件服務(wù)器上檔案文件中,例如CAB、ZIP、SIT、TAR、JAR或其它檔案文件。在一個實(shí)施例中,服務(wù)器106解壓縮、解包或者解檔應(yīng)用文件并且將該文件發(fā)送到客戶機(jī)102。在又一個實(shí)施例中,客戶機(jī)102解壓縮、解包或者解檔應(yīng)用文件。流客戶機(jī)306動態(tài)安裝應(yīng)用或其部分,并且執(zhí)行該應(yīng)用。在一個實(shí)施例中,流客戶機(jī)306可以是可執(zhí)行程序。在一些實(shí)施例中,流客戶機(jī)306可以能夠啟動另一個可執(zhí)行程序。
收集代理304是用于識別、獲取和/或收集關(guān)于客戶機(jī)102的信息的應(yīng)用、程序、 進(jìn)程、服務(wù)、任務(wù)或者可執(zhí)行指令集。在一些實(shí)施例中,設(shè)備200發(fā)送收集代理304到客戶機(jī)102或者客戶機(jī)代理120??梢愿鶕?jù)設(shè)備的策略引擎236的一個或多個策略來配置收集代理304。在其它實(shí)施例中,收集代理304發(fā)送在客戶機(jī)102上收集的信息到設(shè)備200。在一個實(shí)施例中,設(shè)備200的策略引擎236使用所收集的信息來確定和提供客戶機(jī)到網(wǎng)絡(luò)104 的連接的訪問、驗(yàn)證和授權(quán)控制。
在一個實(shí)施例中,收集代理304包括端點(diǎn)檢測和掃描機(jī)制,其識別并且確定客戶機(jī)的一個或者多個屬性或者特征。例如,收集代理304可以識別和確定任何一個或多個以下的客戶機(jī)側(cè)屬性1)操作系統(tǒng)和/或操作系統(tǒng)的版本,2)操作系統(tǒng)的服務(wù)包,3)運(yùn)行的服務(wù),4)運(yùn)行的進(jìn)程,和5)文件。收集代理304還可以識別并確定客戶機(jī)上任何一個或多個以下軟件的存在或版本1)防病毒軟件;2)個人防火墻軟件;3)防垃圾郵件軟件,和4) 互聯(lián)網(wǎng)安全軟件。策略引擎236可以具有基于客戶機(jī)或客戶機(jī)側(cè)屬性的任何一個或多個屬性或特性的一個或多個策略。
SSL VPN代理308是應(yīng)用、程序、進(jìn)程、服務(wù)、任務(wù)或者可執(zhí)行指令集,所述應(yīng)用、程序、進(jìn)程、服務(wù)、任務(wù)或者可執(zhí)行指令集用于建立從第一網(wǎng)絡(luò)104到第二網(wǎng)絡(luò)104’、104”的安全套接字層(SSL)虛擬專用網(wǎng)(VPN)連接,或從客戶機(jī)102到服務(wù)器106的SSL VPN連接。 在一個實(shí)施例中,SSLVPN代理308建立從公共網(wǎng)104到專用網(wǎng)104’或104”的SSL VPN連接。在一些實(shí)施例中,SSL VPN代理308和設(shè)備205聯(lián)合工作以提供SSL VPN連接。在一個實(shí)施例中,SSL VPN代理308建立與設(shè)備205的第一傳輸層連接。在一些實(shí)施例中,設(shè)備 205建立與服務(wù)器106的第二傳輸層連接。在又一個實(shí)施例中,SSL VPN代理308建立與客戶機(jī)上應(yīng)用的第一傳輸層連接,以及與設(shè)備205的第二傳輸層連接。在其他實(shí)施例中,SSL VPN代理308和WAN優(yōu)化設(shè)備200聯(lián)合工作以提供SSL VPN連通。
在一些實(shí)施例中,加速程序302是用于執(zhí)行一個或多個加速技術(shù)的客戶機(jī)側(cè)加速程序,以加速、增強(qiáng)或者以其他方式改善客戶機(jī)與服務(wù)器106的通信和/或?qū)Ψ?wù)器106的訪問,諸如訪問由服務(wù)器106提供的應(yīng)用。加速程序302的可執(zhí)行指令的邏輯、功能和/或操作可以執(zhí)行一個或多個下列加速技術(shù)1)多協(xié)議壓縮,2)傳輸控制協(xié)議池,3)傳輸控制協(xié)議多路復(fù)用,4)傳輸控制協(xié)議緩沖,以及5)通過高速緩存管理器的高速緩存。另外,加速程序302可執(zhí)行由客戶機(jī)102接收和/或發(fā)送的任何通信的加密和/或解密。在一些實(shí)施例中,加速程序302以集成的方式或者格式執(zhí)行一個或者多個加速技術(shù)。另外,加速程序302 可以對作為傳輸層協(xié)議的網(wǎng)絡(luò)分組的有效載荷所承載的任一協(xié)議或者多協(xié)議執(zhí)行壓縮。
在一個實(shí)施例中,加速程序302被設(shè)計(jì)、構(gòu)建或配置為與設(shè)備205 —起工作以提供 LAN側(cè)加速或者提供通過設(shè)備205提供的加速技術(shù)。例如,在由Citrix System公司出品的 NetScaler設(shè)備205的一個實(shí)施例中,加速程序302包括NetScaler客戶機(jī)。在一些實(shí)施例中,加速程序302在例如分支機(jī)構(gòu)中的遠(yuǎn)程裝置中提供獨(dú)立的NetScaler加速技術(shù)。在其他實(shí)施例中,加速程序302和一個或多個NetScaler設(shè)備205聯(lián)合工作。在一個實(shí)施例中, 加速程序302提供網(wǎng)絡(luò)流量的LAN側(cè)或基于LAN的加速或優(yōu)化。
在一些實(shí)施例中,網(wǎng)絡(luò)優(yōu)化引擎250可以被設(shè)計(jì)、構(gòu)建或配置為與WAN優(yōu)化設(shè)備 200 一起工作。在其他實(shí)施例中,網(wǎng)絡(luò)優(yōu)化引擎250可以被設(shè)計(jì)、構(gòu)建或配置為用或不用設(shè)備200提供設(shè)備200的WAN優(yōu)化技術(shù)。例如,在由Citrix System公司出品的WANScaler 設(shè)備200的一個實(shí)施例中,網(wǎng)絡(luò)優(yōu)化引擎250包括WANScaler客戶機(jī)。在一些實(shí)施例中,網(wǎng)絡(luò)優(yōu)化引擎250在例如分支機(jī)構(gòu)的遠(yuǎn)程位置中提供獨(dú)立的WANScaler加速技術(shù)。在其他實(shí)施例中,網(wǎng)絡(luò)優(yōu)化引擎250和一個或多個WANScaler設(shè)備200聯(lián)合工作。
在又一個實(shí)施例中,網(wǎng)絡(luò)優(yōu)化引擎250包括加速程序302、或加速程序302的功能、 操作和邏輯。在一些實(shí)施例中,加速程序302包括網(wǎng)絡(luò)優(yōu)化引擎250或網(wǎng)絡(luò)優(yōu)化引擎250的功能、操作和邏輯。在又一個實(shí)施例中,網(wǎng)絡(luò)優(yōu)化引擎250作為從加速程序302分開的程序或可執(zhí)行指令集而被提供或安裝。在其他實(shí)施例中,網(wǎng)絡(luò)優(yōu)化引擎250和加速程序302可被包括在同一程序或同一可執(zhí)行指令集中。
在一些實(shí)施例中,仍參見圖3,第一程序322可以用于自動地、靜默地、透明地或者以其它方式安裝和/或執(zhí)行客戶機(jī)代理120或其任何部分。在一個實(shí)施例中,第一程序322 包括插件組件,例如ActiveX控件或Java控件或腳本,其加載到應(yīng)用并由應(yīng)用執(zhí)行。例如, 第一程序包括由web瀏覽器應(yīng)用加載和運(yùn)行的ActiveX控件,例如在存儲器空間或應(yīng)用的上下文中。在又一個實(shí)施例中,第一程序322包括被例如瀏覽器的應(yīng)用載入并執(zhí)行的可執(zhí)行指令集。在一個實(shí)施例中,第一程序322是被設(shè)計(jì)和構(gòu)造為安裝客戶機(jī)代理120的程序。 在一些實(shí)施例中,第一程序322通過網(wǎng)絡(luò)從另一個計(jì)算裝置獲得、下載、或接收客戶機(jī)代理 120。在又一個實(shí)施例中,第一程序322是安裝程序或即插即用管理器,用于在客戶機(jī)102 的操作系統(tǒng)上安裝諸如網(wǎng)絡(luò)驅(qū)動和客戶機(jī)代理120或其任何部分的程序。
在一些實(shí)施例中,客戶機(jī)代理120的每一或任一部分(流客戶機(jī)360、收集代理 304、SSL VPN代理308和攔截代理350)可作為單獨(dú)的應(yīng)用、程序、進(jìn)程、服務(wù)、任務(wù)或可執(zhí)行指令集而被安裝、執(zhí)行、配置或操作。在其他實(shí)施例中,客戶機(jī)代理120的每一或任一部分可以一起作為單個客戶機(jī)代理120而被安裝、執(zhí)行、配置或操作。
D.使用來自在中間裝置之間共享的SSL會話池的SSL會話的系統(tǒng)和方法
可以通過SSL會話連接來提供客戶機(jī)102和服務(wù)器106之間的端到端安全通信。 可以跨越一個或多個中間裝置來建立該連接,所述中間裝置例如聯(lián)網(wǎng)系統(tǒng)中的客戶機(jī)102 和服務(wù)器106之間的網(wǎng)絡(luò)設(shè)備200。在一些實(shí)施例中,多個中間裝置可以被配置成在服務(wù)器 106和客戶機(jī)102之間提供數(shù)據(jù)加速和/或其他服務(wù)。提供在一對中間裝置之間的數(shù)據(jù)加速的該對中間裝置可以使用在該對中間裝置之間的信令隧道來建立用于通信的安全信道。
現(xiàn)參考圖4A,示出了用于使用來自在中間裝置200之間共享的SSL會話池477的 SSL會話的系統(tǒng)400的一個實(shí)施例??偟膩碚f,該系統(tǒng)示出了處理對于到服務(wù)器106的安全連接的客戶機(jī)請求405的第一中間裝置200a和第二中間裝置200b。這些中間裝置200可以是上文結(jié)合圖1A-C、2A和3所述的設(shè)備200的任一實(shí)施例或者包括來自上文結(jié)合圖1A-C、 2A和3所述的設(shè)備200的任一實(shí)施例的特征。第一中間裝置200a可以與一個或多個客戶機(jī)102通信,而第二中間裝置200b可以與一個或多個服務(wù)器106通信。在一些實(shí)施例中, 客戶機(jī)102可以與服務(wù)器106建立傳輸層連接,用于進(jìn)行通信。在這些實(shí)施例的一些中,客戶機(jī)102可以與第一中間裝置200a建立SSL會話。第一中間裝置200a有時(shí)被稱為客戶機(jī)側(cè)中間裝置200a。在一些其他實(shí)施例中,第一中間裝置200a可以例如響應(yīng)于來自客戶機(jī) 102的請求405,與客戶機(jī)102建立SSL會話。
在一些實(shí)施例中,服務(wù)器106可以與第二中間裝置200b建立SSL會話。第二中間裝置200b有時(shí)被稱為服務(wù)器側(cè)中間裝置200b。在一些實(shí)施例中,第二中間裝置200b可以例如響應(yīng)于來自客戶機(jī)102、服務(wù)器106和/或第一中間裝置200a的請求,與服務(wù)器106建立SSL會話。在又一個實(shí)施例中,可以響應(yīng)于信令隧道450的建立與服務(wù)器106建立一個或多個SSL會話。
可以并發(fā)地或在不同時(shí)間建立客戶機(jī)側(cè)和服務(wù)器側(cè)SSL會話??梢愿髯越⒖蛻魴C(jī)側(cè)和服務(wù)器側(cè)SSL會話。在一些實(shí)施例中,可以基于一些觸發(fā)器、配置或需求,例如響應(yīng)于對等列表468,來建立一對客戶機(jī)側(cè)和服務(wù)器側(cè)SSL會話。在一些實(shí)施例中,可以響應(yīng)于同一事件來建立客戶機(jī)側(cè)和服務(wù)器側(cè)SSL會話。例如且在一個實(shí)施例中,當(dāng)客戶機(jī)在系統(tǒng) (例如第一中間裝置200a)注冊時(shí),建立客戶機(jī)側(cè)和服務(wù)器側(cè)SSL會話。在又一個實(shí)施例中, 當(dāng)?shù)谝缓偷诙虚g裝置200被初始化或者以其他方式被添加到網(wǎng)絡(luò)104時(shí),建立客戶機(jī)側(cè)和服務(wù)器側(cè)SSL會話。在又一個實(shí)施例中,當(dāng)客戶機(jī)102和/或服務(wù)器106被添加到網(wǎng)絡(luò) 104時(shí),建立客戶機(jī)側(cè)和服務(wù)器側(cè)SSL會話。在又一個實(shí)施例中,當(dāng)?shù)谝缓偷诙虚g裝置被識別為處理與客戶機(jī)102和/或服務(wù)器106相關(guān)的通信時(shí),建立客戶機(jī)側(cè)和服務(wù)器側(cè)SSL會話。例如以及在一個實(shí)施例中,當(dāng)在對等列表468中識別第一和第二中間裝置時(shí),建立客戶機(jī)側(cè)和服務(wù)器側(cè)SSL會話,所述對等列表468對用于通信的多個中間裝置進(jìn)行配對或分組。
在一些實(shí)施例中,在對客戶機(jī)102和服務(wù)器102之間的通信的預(yù)期下,建立客戶機(jī)側(cè)和服務(wù)器側(cè)SSL會話的其中一個或者兩個都建立。在端到端SSL會話的其他部分之前或與其并行地建立客戶機(jī)側(cè)和服務(wù)器側(cè)SSL會話的其中一個或兩個,可以降低建立該端到端 SSL會話的延遲和/或復(fù)雜度??蛻魴C(jī)側(cè)和服務(wù)器側(cè)SSL會話可以共享一個或多個配置、 設(shè)置、屬性、標(biāo)識符和/或其他信息。這些配置、設(shè)置、屬性、標(biāo)識符和/或其他信息可以通過下列的一個或多個來確定、維護(hù)、存儲和/或管理客戶機(jī)102、服務(wù)器106、第一中間裝置 200a、第二中間裝置200b和存儲裝置。在一些實(shí)施例中,SSL會話池管理器466確定、維護(hù)、 存儲和/或管理這些配置、設(shè)置、屬性、標(biāo)識符和/或其他信息。
第一中間裝置200a和/或客戶機(jī)102可以在第一中間裝置200a和客戶機(jī)102之間建立多個客戶機(jī)側(cè)SSL會話。下文中有時(shí)將與一個或多個客戶機(jī)102相關(guān)的多個客戶機(jī)側(cè)SSL會話稱為客戶機(jī)側(cè)SSL會話池。第二中間裝置200b和/或服務(wù)器106可以在第二中間裝置200b和服務(wù)器106之間建立多個服務(wù)器側(cè)SSL會話。下文中有時(shí)將與一個或多個服務(wù)器106相關(guān)的多個服務(wù)器側(cè)SSL會話稱為服務(wù)器側(cè)SSL會話池。
客戶機(jī)102可以產(chǎn)生并傳輸去往服務(wù)器106的請求405以發(fā)起通信。在一些實(shí)施例中,請求405可以是對與服務(wù)器106的安全通信的請求。請求405可以包括任何形式或類型的消息、分組或通信,并且可以被加密和/或壓縮??梢砸匀我活愋突蛐问降耐ㄐ艆f(xié)議,包括定制的、專用的和/或標(biāo)準(zhǔn)的協(xié)議,來實(shí)現(xiàn)請求405。在一些實(shí)施例中,請求405可以是例如發(fā)起與服務(wù)器106的安全通信的不安全通信。在又一個實(shí)施例中,可以經(jīng)由安全通信信道,例如在客戶機(jī)102和第一中間裝置200a之間建立的SSL會話中,發(fā)送請求405。
在一些實(shí)施例中,請求405包括信令問候(Signaling Hello)協(xié)議消息。請求405 可以識別期望的應(yīng)用協(xié)議。而且,請求405可以包括能力細(xì)節(jié),例如,關(guān)于客戶機(jī)102的能力細(xì)節(jié)。請求405也可以是握手協(xié)議的部分,例如同步(SYN)信號或消息。請求405也可以包括發(fā)起沿例如第一和第二中間裝置200之間的客戶機(jī)-服務(wù)器網(wǎng)絡(luò)路徑的數(shù)據(jù)加速的請求。
請求405可以發(fā)起傳輸層(例如TCP)連接和/或SSl會話的建立。在一些實(shí)施例中,請求405被第一中間裝置200a攔截或接收并且可以被路由到服務(wù)器106。在這些實(shí)施例的一個中,將請求405定向到第二中間裝置200a。可以通過對等列表468a將第二中間裝置200b識別為與第一中間裝置200a成對或者以其他方式與第一中間裝置200a相關(guān)。在一些實(shí)施例中,可以經(jīng)由信令隧道450將請求405轉(zhuǎn)發(fā)到第二中間裝置200b。在其他實(shí)施例中,請求405發(fā)起在第一和第二中間裝置之間的一個或多個信令隧道450的建立。該請求可以發(fā)起SSL會話的建立。該請求可以發(fā)起客戶機(jī)102和服務(wù)器106之間的傳輸層連接的建立。響應(yīng)于該傳輸層連接的建立,可以建立安全會話(例如,SSL會話)。
在一些實(shí)施例中,請求405包括對與建立到服務(wù)器106的連接相關(guān)的信息的請求。 例如以及在一個實(shí)施例中,所請求的信息可以與在第二中間裝置200b和服務(wù)器106之間建立的池的一個或多個SSL會話有關(guān)??梢酝ㄟ^一個或多個池管理器466來處理或管理這個請求405。
在一些實(shí)施例中,響應(yīng)于請求405,第一中間裝置200a確定在第一中間裝置200a 和第二中間裝置200b之間信令隧道450是否可用。信令隧道450可以是任一類型或形式的通信隧道、信道、連接、會話或鏈接,并且可以以一個或多個通信協(xié)議,包括定制的、專用的和/或標(biāo)準(zhǔn)的協(xié)議,來實(shí)現(xiàn)信令隧道450。在一些實(shí)施例中,信令隧道450是用于但不限于控制消息、管理消息、握手消息和/或初始化消息的控制信道。信令隧道450可以支持或傳輸不同速率的數(shù)據(jù)傳送,包括間斷和連續(xù)的數(shù)據(jù)傳送。在一些實(shí)施例中,信令隧道450不同于傳統(tǒng)的通信信道,例如用于傳送非控制消息的那些通信信道。信令隧道450可以是臨時(shí)的隧道,或者在建立SSL會話之后可以是持續(xù)的。
信令隧道450可以被用于設(shè)置在第一中間裝置200a和第二中間裝置200b之間的數(shù)據(jù)加速,例如SSL加速。信令隧道450可以提供安全隧道,包括加密和/或其他安全措施。在一些實(shí)施例中,在對等列表468中識別的對等中間裝置之間設(shè)置一個或多個信令隧道450。可以在一個或多個中間裝置200上配置對等列表468。響應(yīng)于在中間裝置200上的該配置,中間裝置200可以嘗試與該中間裝置的對等方中的一個或多個建立信令隧道450。 可以通過任何方法來配置對等列表468,例如通過管理員或管理網(wǎng)絡(luò)流量的某些方面的對等列表管理模塊或進(jìn)程??梢灾苯釉谥虚g裝置200上配置對等列表468,或者可以例如經(jīng)由請求(例如,請求405)將對等列表468傳送到中間裝置。可以從另一個中間裝置200b、 200c傳送用于第一中間裝置200a的對等列表468,并且可以經(jīng)由現(xiàn)有的或已建立的信令隧道450來進(jìn)行傳送。
對等列表468有時(shí)被稱為對等中間裝置的配置列表。在一些實(shí)施例中,對等列表指示多對或多組可信的對等方或中間裝置200。對等中間裝置200可以使用對等證書或SSL 證書來建立對等中間裝置200之間的信任??梢允褂萌我恍问交蝾愋偷臉?biāo)識符(例如,IP地址)來列出或指定對等列表468中的中間裝置200。也可以通過域名來標(biāo)識中間裝置200, 所述域名例如是完全限定域名(Fully Qualified Domain Name)??梢酝ㄟ^域名系統(tǒng)(DNS) 來解析中間裝置200的域名。如果SSL會話建立請求是由第一中間裝置200a接收的,且該第一中間裝置200a還沒有被配置為在對等列表中具有第二中間裝置200b或者其不能訪問對等列表468,則中間裝置200a可以負(fù)責(zé)對第二中間裝置200b進(jìn)行認(rèn)證。第一中間裝置 200a還可以負(fù)責(zé)與第二中間裝置200b建立信令隧道450。第一中間裝置200a和第二中間裝置200b可以例如響應(yīng)于認(rèn)證來開始更新對等列表468。該更新可以被應(yīng)用于其中一個或兩個中間裝置200的對等列表468。
在一些實(shí)施例中,信令隧道450使一對中間裝置能夠互相進(jìn)行認(rèn)證。此外,信令隧道450可以允許一對中間裝置200傳送SSL特定信息。信令隧道450可以使該對中間裝置 200a、200b能設(shè)置一組SSL狀態(tài)機(jī)對,以用于在客戶機(jī)102和服務(wù)器106之間建立一個或多個SSL會話。在一些實(shí)施例中,信令隧道450被用于傳送帶外消息,例如SSL會話重新協(xié)商消息和SSL關(guān)閉消息。中間裝置200還可以使用信令隧道450來傳送關(guān)于信令代理的信息,例如代理的標(biāo)識符、信令隧道互聯(lián)網(wǎng)協(xié)議(IP)以及SSL加速規(guī)范。這些信息還可包括識別一對中間裝置的操作配置或模式的信息,例如用于欺騙或分離代理模式的配置。
信令隧道450本身可以是在該對中間裝置200之間的SSL連接。在一些實(shí)施例中, 信令隧道450的建立可以要求在該對中間裝置200上配置SSL配置信息。信令隧道450可以使用由在認(rèn)證機(jī)構(gòu)(CA)和中間裝置200之間建立的隧道提供的現(xiàn)有架構(gòu)的任何部分。信令隧道450可以支持用于在中間裝置200之間或者在中間裝置200和CA之間的內(nèi)部協(xié)議通信的應(yīng)用到應(yīng)用協(xié)議功能。
可以使用多種方法來建立信令隧道450。在一個實(shí)施例中,在例如對等對的一個或兩個中間裝置200初始化時(shí)建立信令隧道450。在又一個實(shí)施例中,響應(yīng)于例如由客戶機(jī)請求450發(fā)起的新的SSL連接請求來建立信令隧道450。在建立了信令隧道450之后,該對中間裝置200可以建立SSL上下文池。SSL上下文可以包括任何下列內(nèi)容用于建立SSL會話和/或連接的架構(gòu)、配置、設(shè)置、狀態(tài)機(jī)、握手操作和協(xié)議。在一些實(shí)施例中,SSL上下文池的建立允許在一對中間裝置200之間快速分配新的SSL連接。與該SSL上下文池關(guān)聯(lián)的一個或多個中間裝置200可以管理這個池。對上下文池的管理可以包括但不限于分配、清除、維護(hù)SSL狀態(tài)機(jī)和密鑰。在一些實(shí)施例中,將SSL上下文池稱為SSL會話池477。
在一些實(shí)施例中,在對等列表468中所識別的每個中間裝置200可以創(chuàng)建多個SSL 狀態(tài)機(jī)。在其他實(shí)施例中,不論對等列表468如何,中間裝置200可以例如響應(yīng)于SSL會話建立請求405來創(chuàng)建多個SSL狀態(tài)機(jī)。中間裝置200可以創(chuàng)建與在該中間裝置200和一個或多個客戶機(jī)102和/或服務(wù)器106之間建立的多個SSL會話對應(yīng)的多個SSL狀態(tài)機(jī)??梢詫⒍鄠€SSL狀態(tài)機(jī)到多個SSL會話的映射描述為一對一或者一對多的關(guān)系。第一中間裝置200a可以創(chuàng)建第一多個SSL狀態(tài)機(jī),第一多個SSL狀態(tài)機(jī)與由第二中間裝置200b創(chuàng)建的第二多個SSL狀態(tài)機(jī)相對應(yīng)(例如根據(jù)對等列表468)??梢詫⒌谝欢鄠€SSL狀態(tài)機(jī)到第二多個SSL狀態(tài)機(jī)的映射描述為一對一或者一對多的關(guān)系。
響應(yīng)于建立SSL會話的請求405,可以從第一多個和第二多個狀態(tài)機(jī)中選擇一對 SSL狀態(tài)機(jī)。在OpenSSL術(shù)語中,可以將SSL狀態(tài)機(jī)稱為SSL對象。在一些實(shí)施例中,每個狀態(tài)機(jī)可以使用信令隧道450作為傳輸機(jī)構(gòu)。在第一和第二中間裝置200之間,這些中間裝置200a的其中一個中間裝置上的狀態(tài)機(jī)可以運(yùn)行于“接受”模式。在另一個中間裝置200b 上的狀態(tài)機(jī)可以運(yùn)行在“連接”模式下。在一些實(shí)施例中,“連接”模式狀態(tài)機(jī)可以連接到唯一的“接受”狀態(tài)機(jī)。
可以在信令隧道450上進(jìn)行一對狀態(tài)機(jī)之間的SSL握手。在第一中間裝置200a 處的第一狀態(tài)機(jī)和在第二中間裝置200b處的第二狀態(tài)機(jī)可以使用OpenSSL應(yīng)用編程接口 (API)來加密/解密經(jīng)由信令隧道450傳送的數(shù)據(jù)。第一和第二狀態(tài)機(jī)可以使用在信令隧道建立過程期間預(yù)先協(xié)商的密碼對經(jīng)由該信令隧道450傳送的數(shù)據(jù)進(jìn)行加密/解密。在一些實(shí)施例中,當(dāng)完成SSL握手時(shí),用于數(shù)據(jù)傳送的傳輸機(jī)構(gòu)從信令隧道450切換到傳輸層 (例如,TCP)連接。然后,第一和第二狀態(tài)機(jī)可使用傳輸層連接來作為傳輸機(jī)構(gòu)以發(fā)送加密的流量。
可以將信令隧道450用于在一對中間裝置200或SSL狀態(tài)機(jī)之間傳送任何其他類似或形式的信息。在一些實(shí)施例中,響應(yīng)于請求405來傳輸信息444。在其他實(shí)施例中,響應(yīng)于信令隧道450的建立來傳輸或交換信息444。信息444可以包括一個或多個信令I(lǐng)P地址。信令I(lǐng)P地址可以是用于識別下列之一的IP地址中間裝置200、狀態(tài)機(jī)、客戶機(jī)102和服務(wù)器106。信息444還可以包括與一個或兩個SSL狀態(tài)機(jī)池和/或中間裝置200關(guān)聯(lián)的信息,例如
I.密碼列表-中間裝置200所支持的密碼的列表。
2.池大小_該池的大小(例如,在初始化時(shí))。42
3.空閑池閾值-用于在空閑池容量低于這個閾值的情況下開始增長池的閾值。
4.低的池使用率閾值-用于在(例如,在預(yù)定量的時(shí)間內(nèi))池使用率低于這個閾值的情況下開始減小池的閾值。
在一些實(shí)施例中,信息444可以包括SSL代理參數(shù),例如,用于初始化和/或建立 SSL會話,其可以包括
I. SSL服務(wù)類-用于數(shù)據(jù)傳送的服務(wù)類的指示,例如,包括指示啟用/禁用SSL加速的一個或多個位。
2.可信的CA-可信的認(rèn)證機(jī)構(gòu)的列表。
3.私鑰存儲表格-用于不同服務(wù)器106、客戶機(jī)102和/或中間裝置100的私鑰的列表。
4. SSL服務(wù)類表格-包含IP地址和端口兀組信息的表格或容器。在一些實(shí)施例中,對于每個元組,該表格包括引用代理配置表格的代理配置名和/或關(guān)鍵字的列表。
5.代理配置表格_具有多個條目的表格或容器,所述條目包括
a.代理配置名_主關(guān)鍵字
b.虛擬服務(wù)器名稱-當(dāng)由客戶機(jī)在請求405中(例如,經(jīng)由客戶機(jī)問候消息)發(fā)送服務(wù)器名稱時(shí)可使用的所關(guān)聯(lián)的虛擬服務(wù)器的標(biāo)識符。
c.代理類型-識別SSL代理類型是分離類型或欺騙類型。
d.客戶機(jī)和服務(wù)器側(cè)配置數(shù)據(jù)_配置數(shù)據(jù)結(jié)構(gòu)包括
·私鑰名-從私鑰存儲表格所引用的密鑰名
·服務(wù)器證書_服務(wù)器106或虛擬服務(wù)器的證書。
·認(rèn)證機(jī)構(gòu)
·證書鏈-用于公鑰密碼學(xué)的RSA (Rivest、Shamir和Adelman)
/DSA (數(shù)字簽名算法)格式。
.SSL協(xié)議版本
·密碼列表-由中間裝置200可用和/或協(xié)商的密碼。
在一些實(shí)施例中,第一中間裝置200a可以配置有用于加密和解密與第二中間裝置200b的流量的密碼列表,或反之亦然。一對中間裝置200 (例如,對等中間裝置)可以在信令隧道建立期間協(xié)商用于加密的密碼??梢杂衫缧帕顔柡蛳⒌恼埱?05來發(fā)起該協(xié)商。當(dāng)完成協(xié)商時(shí),這對中間裝置200可以將所協(xié)商的密碼用于在這對中間裝置200之間的加密/解密,其可以被限制為或可以不限于在信令隧道450中使用。在一些實(shí)施例中,可以為下列的任何兩個之間的每個連接段協(xié)商和/或配置一個或多個密碼客戶機(jī)102、第一中間裝置200a、第二中間裝置200b和服務(wù)器106。
除了通過密碼提供的安全性之外,每個中間裝置200可以在存儲裝置中加密、存儲和/或保留部分?jǐn)?shù)據(jù)。該存儲裝置可以是上文結(jié)合圖ID和IE所述的存儲單元128、122、 140的任一實(shí)施例,或者包括其特征。在一些實(shí)施例中,該存儲裝置是數(shù)據(jù)庫計(jì)算機(jī)(DBC)。 該存儲裝置還可以存儲與中間裝置200關(guān)聯(lián)的網(wǎng)絡(luò)數(shù)據(jù)歷史。該存儲裝置可以是由任一網(wǎng)絡(luò)裝置提供的并且可以駐留在一個或多個網(wǎng)絡(luò)裝置中,包括但不限于中間裝置200、客戶機(jī) 102和/或服務(wù)器106。所存儲的數(shù)據(jù)可以是基于每文件加密的。在一些實(shí)施例中,該系統(tǒng)可以加密與數(shù)據(jù)關(guān)聯(lián)的整個盤、分區(qū)、邏輯卷和文件。例如,在一個實(shí)施例中,在Windows平臺中,中間裝置200可以使用文件來存儲數(shù)據(jù)。在又一個實(shí)施例中,中間裝置200可以將數(shù)據(jù)存儲在Linux平臺下的邏輯卷中。例如,在Linux中可以使用dm-crypt來加密數(shù)據(jù)。此外,交換文件可以包含被分頁到盤的數(shù)據(jù),其可以用于支持比從該存儲裝置物理可用的存儲器更大的存儲器。為了安全,可以對這個交換文件進(jìn)行加密。
盡管在本公開中轉(zhuǎn)移(passage)通常指狀態(tài)機(jī),但應(yīng)理解每個狀態(tài)機(jī)表示由硬件和軟件的組合所實(shí)現(xiàn)的行為模型,并且同樣地,可以由對應(yīng)的硬件中間裝置200的模塊、組件和/或裝置來執(zhí)行本文所述的狀態(tài)機(jī)的任何動作。此外,狀態(tài)機(jī)或狀態(tài)機(jī)對的選擇可以等價(jià)于從SSL會話池477中選擇對應(yīng)的或相關(guān)的SSL會話。例如,且在一個實(shí)施例中,從第一和第二中間裝置200的各自狀態(tài)機(jī)池中選擇一對狀態(tài)機(jī)表示從第二中間裝置200b的服務(wù)器側(cè)SSL會話池477中選擇SSL會話。而且,可以通過一個或多個池管理器466來維護(hù)和/或管理狀態(tài)機(jī)池和/或SSL會話池。
在圖4A的進(jìn)一步的細(xì)節(jié)中,可以至少部分地通過第一中間裝置200a、第二中間裝置200b和/或其他網(wǎng)絡(luò)組件來提供池管理器466。多個池管理器466可以駐留在一個或多個網(wǎng)絡(luò)組件中,并且可以互相通信地操作。例如,且在一個實(shí)施例中,第一中間裝置200a 中的第一池管理器466可以與第二中間裝置200b中的第二池管理器466’共同操作。通過舉例說明而不旨在限制的方式,我們有時(shí)會將一個或多個池管理器466稱為單個池管理器 466。
可以以硬件或硬件和軟件的組合來實(shí)現(xiàn)池管理器466。池管理器466可以被構(gòu)建和配置為用于支持或提供SSL安全特征。池管理器466可以包括在一個或多個中間裝置 200上執(zhí)行的任何模塊、腳本、程序、代理、組件或可執(zhí)行指令集。池管理器466可以具有在網(wǎng)絡(luò)堆棧的一層或多層(例如傳輸層)操作的組件。池管理器466可以發(fā)起和/或建立SSL 會話和SSL會話中的連接??梢皂憫?yīng)于請求405、對等列表、信令隧道450的建立或通過其他方式來啟動池管理器466或以其他方式使其變成活動的。此外,池管理器466可以創(chuàng)建、 配置、維護(hù)或以其他方式管理多個SSL狀態(tài)機(jī)。池管理器466還可以創(chuàng)建、維護(hù)和管理在一對中間裝置200a、200b之間的SSL會話密鑰和/或哈希消息認(rèn)證碼(HMAC)密鑰的池。在一些實(shí)施例中,例如在從密鑰池選擇SSL會話密鑰期間,池管理器466可以經(jīng)由信令隧道450 來協(xié)調(diào)或管理通信。此外,池管理器466可以協(xié)調(diào)或管理關(guān)于狀態(tài)機(jī)、會話標(biāo)識符和/或密碼選擇與匹配的通信。
在一些實(shí)施例中,池管理器466可以為(例如一對對等中間裝置的)每個中間裝置 200維護(hù)多個狀態(tài)機(jī)池。第一多個狀態(tài)機(jī)池可以被稱為專用池。專用池是中間裝置200所擁有的池,其可以從該池分配用于SSL連接的狀態(tài)機(jī)。圖4B示出用于專用池443的狀態(tài)機(jī)的一個實(shí)施例。第二多個狀態(tài)機(jī)池可以被稱為監(jiān)控池445。監(jiān)控池445是由對等中間裝置 200b擁有的池,但是它可以被中間裝置200a用來監(jiān)控該對等中間裝置的狀態(tài)機(jī)分配。圖 4C示出對于專用池443和監(jiān)控池445的SSL狀態(tài)機(jī)標(biāo)識符的狀態(tài)機(jī)的實(shí)施例。
在一些實(shí)施例中,每個專用池和監(jiān)控池可以維護(hù)多個列表。在一個實(shí)施例中,該多個列表包括但不限于
I.空閑列表可用于分配的SSL狀態(tài)機(jī)的列表;
2.分配列表分配給連接的SSL狀態(tài)機(jī)的列表;以及
3.要銷毀列表例如從對等中間裝置確認(rèn)后要銷毀的SSL狀態(tài)機(jī)的列表。
經(jīng)由池管理器,每個中間裝置200a可以創(chuàng)建和維護(hù)該中間裝置的專用池和/或可以將該中間裝置的監(jiān)控池445與對等中間裝置200b的專用池443進(jìn)行同步。中間裝置 200a可以在用于同步監(jiān)控池445的控制或協(xié)議消息中使用對等中間裝置200b經(jīng)由信令隧道傳輸?shù)男畔ⅰH绻虚g裝置200檢測到對等方之間的信令隧道450已經(jīng)結(jié)束,則狀態(tài)機(jī)的專用池可以接收來自池管理器466的銷毀事件。響應(yīng)于該銷毀事件,可以解除該專用池 443。
池創(chuàng)律和池增長
為建立第一狀態(tài)機(jī)池,第一中間裝置200a可以確定初始池大小(比如說‘N’)并創(chuàng)建N個SSL狀態(tài)機(jī)。在一些實(shí)施例中,初始池大小可以基于平臺大小,例如,較小的初始池大小對應(yīng)于較小的平臺。在其他實(shí)施例中,每當(dāng)從狀態(tài)機(jī)池中識別SSL狀態(tài)機(jī)對供使用時(shí),系統(tǒng)可以維護(hù)并更新計(jì)數(shù)器值。當(dāng)中間裝置200a被初始化或重置時(shí),中間裝置200a可以訪問所更新的計(jì)數(shù)器值并且以所更新的計(jì)數(shù)器值的可配置百分比開始。在這些實(shí)施例的一個中,可以使用大于預(yù)定的最小數(shù)的計(jì)數(shù)器值來確定初始池大小。例如,且在一個實(shí)施例中, 如果所保存的計(jì)數(shù)器值為75、最小池大小為10并且可配置百分比為40%,則初始池大小可以被確定為30。這可以被設(shè)置為初始的計(jì)數(shù)器值,或者被保存為所更新的計(jì)數(shù)器值,直到達(dá)到更高的計(jì)數(shù)器值(開始于O)。
在一些實(shí)施例中,第一中間裝置200a可以部分地基于下列的一個或多個來確定初始池大小可用的資源(包括帶寬和會話計(jì)數(shù)限制)、關(guān)于客戶機(jī)102和/或服務(wù)器106的信息,以及來自請求405和/或中間裝置200的配置或用戶設(shè)置的信息??梢酝ㄟ^唯一標(biāo)識符來標(biāo)識每個SSL狀態(tài)機(jī)。池管理器可以將這些狀態(tài)機(jī)的每一個連接到信令隧道用于分組傳輸。然后,第一 SSL狀態(tài)機(jī)池可以移到“接受”狀態(tài)。池管理器466可以生成并向第二中間裝置200b發(fā)送池更新消息。池更新消息可以包括但不限于下列信息
I.設(shè)置為“創(chuàng)建請求”的請求標(biāo)識符;
2.理想的池大小N ;以及
3. SSL狀態(tài)機(jī)標(biāo)識符的列表。
在一些實(shí)施例中,第二中間裝置200b (例如,對等中間裝置)通過信令隧道450接收池更新消息。第二中間裝置200b可以創(chuàng)建所需數(shù)量的SSL狀態(tài)機(jī)以形成第二狀態(tài)機(jī)池。 例如,且在一個實(shí)施例中,第二中間裝置200b響應(yīng)于池更新消息創(chuàng)建N個SSL狀態(tài)機(jī)。第二中間裝置200b還可以生成并給第二池中的每個狀態(tài)機(jī)分配唯一標(biāo)識符。池管理器466 可以將來自第二池的狀態(tài)機(jī)與來自第一池的狀態(tài)機(jī)相關(guān)聯(lián)。在一些實(shí)施例中,池管理器466 可以通過根據(jù)每個狀態(tài)機(jī)對的標(biāo)識符生成該狀態(tài)機(jī)對的標(biāo)識符來將第一和第二狀態(tài)機(jī)池的標(biāo)識符進(jìn)行配對。例如,來自第一池的第一狀態(tài)機(jī)的標(biāo)識符與來自第二池的第二狀態(tài)機(jī)的標(biāo)識符的組合可以生成標(biāo)識包括第一和第二狀態(tài)機(jī)的SSL狀態(tài)機(jī)對的唯一標(biāo)識符。例如,如果第一狀態(tài)機(jī)標(biāo)識符為‘1234’并且第二狀態(tài)機(jī)標(biāo)識符為‘5678’,則基于對狀態(tài)機(jī)標(biāo)識符進(jìn)行連接,可以由標(biāo)識符‘12345678’來標(biāo)識SSL狀態(tài)機(jī)對。
第二中間裝置200b可以發(fā)送池更新響應(yīng),在一個實(shí)施例中包括但不限于
I.設(shè)置為“創(chuàng)建完成”的請求標(biāo)識符;
2.與第一池關(guān)聯(lián)的SSL狀態(tài)機(jī)標(biāo)識符的列表;以及
3.與第二池關(guān)聯(lián)的SSL狀態(tài)機(jī)標(biāo)識符的列表。
響應(yīng)于接收池更新響應(yīng),第一中間裝置200a可以將SSL狀態(tài)機(jī)標(biāo)識符進(jìn)行配對和存儲。第一中間裝置200a還可以更新它的空閑池列表471。池管理器466可以代表第二中間裝置200b來將第二池的SSL狀態(tài)機(jī)連接到信令隧道450,以用于通過信令隧道450來發(fā)送分組。此外,池管理器466可以將第二池的狀態(tài)機(jī)移到“連接”狀態(tài)。在一些實(shí)施例中,將第二池的狀態(tài)機(jī)移到“連接”狀態(tài)完成了 SSL狀態(tài)機(jī)對之間的SSL握手。對于大小為N的狀態(tài)機(jī)池來說,可以在信令隧道450上完成N次SSL握手。池更新消息的發(fā)送者(例如,第一中間裝置200a)可以將SSL狀態(tài)機(jī)對標(biāo)識符的集合添加到該發(fā)送者的專用池443。對等中間裝置(例如,第二中間裝置200b)可以相應(yīng)地將這些標(biāo)識符添加到該對等中間裝置的監(jiān)控池445。因此,上文所討論的使用池更新消息和池更新響應(yīng)的機(jī)制使得能夠在狀態(tài)機(jī)池中進(jìn)行增長。
在一些實(shí)施例中,該系統(tǒng)包括可配置參數(shù),該可配置參數(shù)確定用于管理或維護(hù)池大小的空閑池閾值。如果空閑池容量低于該空閑池閾值,則池管理器466可以將池容量增加到最大份額。例如,且在一個實(shí)施例中,可以通過只要該池容量低于該最大份額和空閑池閾值就連續(xù)地將池容量增加一倍,來進(jìn)行這種增加。例如,且在又一個實(shí)施例中,如果我們將最大份額設(shè)置為25,空閑池閾值設(shè)置為100并且初始池大小設(shè)置為10,則該池可以逐步增長為20 (加倍的)、40 (加倍的)、65 (增加最大份額)、90 (增加最大份額;低于空閑池閾值)。在一些實(shí)施例,可以將狀態(tài)機(jī)對的池視為具有兩個所有者(第一中間裝置200a和第二中間裝置200b)。在這些實(shí)施例中,池管理器466可以致力于當(dāng)一個所有者的池縮小時(shí)維護(hù)或增長該池的大小。在一些實(shí)施例中,池管理器466可以在確定用于增長池的增長因子期間記錄該池減小的速率。
可以在SSL會話池的創(chuàng)建和增長期間將來自客戶機(jī)側(cè)池和服務(wù)器側(cè)池的SSL狀態(tài)機(jī)進(jìn)行配對。在一些實(shí)施例中,具有處于“連接”狀態(tài)的SSL狀態(tài)機(jī)的中間裝置200可以將中間裝置200的SSL會話標(biāo)識符設(shè)置為信令隧道450的SSL會話標(biāo)識符。在這些實(shí)施例的一些中,將中間裝置200的SSL會話標(biāo)識符設(shè)置為信令隧道450的SSL會話標(biāo)識符導(dǎo)致密鑰交換過程被跳過。在一些實(shí)施例中,跳過該密鑰交換過程可以加速SSL會話的建立。
在一些實(shí)施例中,每個中間裝置200可以創(chuàng)建對應(yīng)于N個SSL狀態(tài)機(jī)的N個存儲器基本輸入/輸出(BIO)的集合。然后,每個SSL狀態(tài)機(jī)可以連接到一個存儲器ΒΙ0。在一些實(shí)施例中,將要通過TCP連接發(fā)送的數(shù)據(jù)寫入存儲器BIO的寫緩沖器(wbio)??梢詮拇鎯ζ鰾IO的讀緩沖器(rbio)讀取該TCP連接上的輸入數(shù)據(jù)。對于從第一中間裝置200a到第二中間裝置的數(shù)據(jù)傳送(例如,通過WAN),第一中間裝置200a可以通過分離分組的有效載荷和頭部來處理該分組。第一中間裝置200a可以確定狀態(tài)機(jī)對標(biāo)識符來識別SSL狀態(tài)機(jī),以從其進(jìn)行傳輸。第一中間裝置200a可以將有效載荷放在連接到所識別的SSL狀態(tài)機(jī)的存儲器BIO中。第一中間裝置可以加密該有效載荷并且重新附加頭部以形成用于傳輸?shù)男碌姆纸M。在一些實(shí)施例中,該頭部是明文的(即未被加密)。
對于輸入的分組,接收中間裝置(例如,第二中間裝置200b)可以處理該分組以確定狀態(tài)機(jī)對標(biāo)識符?;谠摖顟B(tài)機(jī)對標(biāo)識符,接收中間裝置可以識別用于接收該分組的SSL 狀態(tài)機(jī)。所識別的狀態(tài)機(jī)可以分離頭部和加密的有效載荷,并且將該有效載荷存儲在連接到所識別的SSL狀態(tài)機(jī)的存儲器BIO中。所識別的狀態(tài)機(jī)可以解密該有效載荷并且重新將頭部附加到解密的有效載荷以形成新的所接收的分組。
在圖4B和4C的進(jìn)一步的細(xì)節(jié)中,且在一個實(shí)施例中,為了建立SSL會話,第二中間裝置200b可以根據(jù)第二中間裝置的專用池443上的空閑列表471分配SSL狀態(tài)機(jī)對。 第二中間裝置200b可以將第二中間裝置的專用池443上的狀態(tài)機(jī)對從空閑列表471移到分配列表472。第二中間裝置200b可以將包括這個SSL狀態(tài)機(jī)對的標(biāo)識符的消息(例如, SYN-ACK消息)傳輸?shù)降谝恢虚g裝置200a。第一中間裝置200a可以從該消息中提取該標(biāo)識符,并且將監(jiān)控池445上對應(yīng)的狀態(tài)機(jī)對從空閑列表471移到分配列表472。圖4C中,這表示從“空閑ID”到“分配的ID”的狀態(tài)機(jī)轉(zhuǎn)換。
池減小
池管理器466可以設(shè)置SSL會話池的有效使用率閾值,并且周期性地跟蹤實(shí)際的使用率。如果有效使用率沒有超過該閾值,則池管理器466可以將池大小減小某一預(yù)定百分比或動態(tài)地確定的百分比。池管理器可以維護(hù)使用率統(tǒng)計(jì)數(shù)據(jù),例如每個SSL會話或中間裝置200的最大使用率,每個時(shí)間段的使用率、跨越與中間裝置200關(guān)聯(lián)的一個或多個 SSL會話所聚集的池的存儲器使用率。在一些實(shí)施例中,到期的或要銷毀的狀態(tài)機(jī)的數(shù)量可能較小,例如與狀態(tài)機(jī)的增長相比較小。
為了減小或縮小專用池,中間裝置200a可以從空閑列表471識別要移除的多個 SSL狀態(tài)機(jī)對??梢詮目臻e列表471的末端(或任何部分)移除這些SSL狀態(tài)機(jī)對。池管理器466可以代表中間裝置200a向?qū)Φ戎虚g裝置200b發(fā)送池更新消息。該池更新消息可以包括被識別為移除的狀態(tài)機(jī)對的對應(yīng)標(biāo)識符。該池更新消息的請求標(biāo)識符可以被設(shè)置為 “銷毀請求”,指示該狀態(tài)機(jī)對要被移除對。然后,中間裝置200a可以將所識別的SSL狀態(tài)機(jī)對移到該中間裝置的專用池443上的要銷毀列表473。對等中間裝置200b可以通過信令隧道450接收該池更新消息。響應(yīng)于該池更新消息,對等中間裝置200b的池管理器466 可以將所識別的SSL狀態(tài)機(jī)從空閑列表471移到監(jiān)控池445上的要銷毀列表473。池管理器466可以發(fā)送回包括被識別為要移除的狀態(tài)機(jī)對的標(biāo)識符的池更新響應(yīng)。該池更新響應(yīng)的請求標(biāo)識符可以被設(shè)置為“銷毀完成”以確認(rèn)在對等中間裝置200b處已經(jīng)同步了該移除更新(如監(jiān)控池445中所反映的)。在一些實(shí)施例中,響應(yīng)于接收池更新響應(yīng),中間管理裝置 200a的池管理器466可以刷新要銷毀列表473。
SSL會話到期
在一些實(shí)施例中,在將SSL會話密鑰分配給TCP連接之前,完成SSL狀態(tài)機(jī)之間的 SSL握手。在一些實(shí)施例中,對于多個TCP連接重復(fù)使用同一 SSL會話密鑰。為了實(shí)現(xiàn)SSL 會話密鑰的重新協(xié)商,對等中間裝置200可以交換用于SSL會話密鑰的使用期參數(shù)??梢栽谛帕钏淼?50的建立期間進(jìn)行該交換。每個對等中間裝置的使用期參數(shù)可以在值上存在差異。在一個實(shí)施例中,可以計(jì)算兩個使用期參數(shù)值中的最小值,并且將其用于確定SSL會話的使用期。在其他實(shí)施例中,可以使用所述使用期參數(shù)值的最大、平均或其他函數(shù)??梢杂没谒?jì)算的值的到期時(shí)間來給每個SSL狀態(tài)機(jī)對加標(biāo)簽。每個SSL狀態(tài)機(jī)對可以周期性地檢查SSL會話密鑰的到期。
中間裝置200可以將到期的狀態(tài)機(jī)(即SSL會話)從空閑列表471或分配列表472 移到要銷毀列表473并且向?qū)Φ戎虚g裝置200b發(fā)送池更新消息。響應(yīng)于該池更新消息,對等中間裝置200b可以從該對等中間裝置的監(jiān)控池444上的空閑列表中刪除對應(yīng)的SSL狀態(tài)機(jī),并且發(fā)送確認(rèn)響應(yīng)。響應(yīng)于該確認(rèn)響應(yīng),中間裝置200a可以刷新或清空它的要銷毀列表473。
在一些實(shí)施例中,如果中間裝置200a在其分配列表472上發(fā)現(xiàn)到期的SSL狀態(tài)機(jī),則該中間裝置200a的池管理器466可以進(jìn)行等待直到現(xiàn)有的SSL會話或連接被關(guān)閉為止,使得這些狀態(tài)機(jī)被返回到空閑列表471。為了避免重新分配最近到期的狀態(tài)機(jī),該系統(tǒng)可以在將狀態(tài)機(jī)分配給SSL會話之前檢查該SSL狀態(tài)機(jī)是否到期。
現(xiàn)參考圖4D,流程圖描述了使用來自中間裝置200之間共享的SSL會話池的安全套接字層(SSL)會話的方法480中所采取的步驟的實(shí)施例。該方法包括由第一中間裝置接收包括第二中間裝置的對等列表468 (401)。第一中間裝置200a與一個或多個客戶機(jī)通信,并且第二中間裝置200b與一個或多個服務(wù)器通信。第一中間裝置與第二中間裝置建立信令隧道(403)。第二中間裝置的池管理器維護(hù)關(guān)于由第二中間裝置與服務(wù)器建立的池中的一個或多個SSL會話的信息(405)。第一中間裝置接收關(guān)于由第二中間裝置與服務(wù)器建立的池中的一個或多個SSL會話的信息(407)。第一中間裝置接收來自客戶機(jī)的、與服務(wù)器建立SSL會話的請求(409)。客戶機(jī)來自與第一中間裝置通信的一個或多個客戶機(jī)。第一中間裝置從SSL會話池識別SSL會話(411)。第一中間裝置響應(yīng)于所述請求與客戶機(jī)建立該SSL會話(413)。
現(xiàn)參考圖4D,更具體地,該方法包括由第一中間裝置接收包括第二中間裝置的對等列表468 (401)。第一中間裝置200a與一個或多個客戶機(jī)102通信,且第二中間裝置 200b與一個或多個服務(wù)器106通信。第一中間裝置200a可以從下列的一個或多個接收對等列表468 :系統(tǒng)400的管理員、第二中間裝置200b、第三中間裝置200c、客戶機(jī)102、服務(wù)器106、存儲裝置或其他網(wǎng)絡(luò)組件。在一些實(shí)施例中,管理員可以將對等列表468配置到第一中間裝置200a中。在一些實(shí)施例中,第一中間裝置200a響應(yīng)于事件(例如接收請求405) 來請求對等列表468。在其他實(shí)施例中,第一中間裝置200a響應(yīng)于諸如接收請求405 (例如SYN消息)的事件來創(chuàng)建對等列表468。在這些實(shí)施例的一些中,第一中間裝置200a基于在請求405中包含的信息來創(chuàng)建對等列表468。在又一個實(shí)施例中,中間裝置200a接收在請求405中的對等列表468。
在一些實(shí)施例中,第一中間裝置200a可以基于對等列表468來識別第二中間裝置200b。第一中間裝置200a可以將第二中間裝置200b識別為對等中間裝置200b,例如, 可信的中間裝置200b。第一中間裝置200a可以從多個中間裝置200中識別第二中間裝置 200b,例如由對等列表468所識別的中間裝置。第一中間裝置200a可以基于來自客戶機(jī) 102的請求405來識別第二中間裝置200b,例如由該請求405中信令I(lǐng)P地址所識別的中間裝置。例如,并且在一個實(shí)施例中,第一中間裝置200a可以基于第二中間裝置與該響應(yīng)405 中識別的服務(wù)器106的關(guān)聯(lián)來識別第二中間裝置200b。第一中間裝置200a可以確定是否存在到第二中間裝置200b的信令隧道450。如果不存在任何信令隧道450,則第一中間裝置200a可以向客戶機(jī)102發(fā)送對SYN請求405的響應(yīng)(例如,SYN-ACK),該響應(yīng)不附加SSL 選項(xiàng)。在一些實(shí)施例中,這發(fā)起與第二中間裝置200b的連接,而無需SSL加速。
在一些實(shí)施例中,第一中間裝置與第二中間裝置建立信令隧道450 (403)。第一中間裝置200a可以響應(yīng)于對等列表468和請求405中的一個或兩個來建立信令隧道450。 在一些實(shí)施例中,在接收來自客戶機(jī)102的請求405之前建立信令隧道450。第一和/或第二中間裝置200的池管理器466或其他組件可以代表第一和/或第二中間裝置200,或者基于第一和/或第二中間裝置200的指示,來建立信令隧道450。第一中間裝置200a可以建立信令隧道450作為與第二中間裝置200b的安全連接。第一中間裝置200a可以建立信令隧道450以用于與第二中間裝置200b交換控制消息。第一中間裝置200a可以建立信令隧道450以設(shè)置與第二中間裝置200b的SSL會話連接。
第一中間裝置200a可以發(fā)起對第二中間裝置200a的認(rèn)證。第一中間裝置200a 可以與第二中間裝置200b協(xié)商密碼或加密方法。第一中間裝置200a和第二中間裝置200b 可以從在這兩個中間裝置200中的一個或兩個中配置的密碼或加密密鑰池中進(jìn)行選擇。一個或兩個中間裝置200可以使用通過信令隧道450協(xié)商的密碼來加密在中間裝置200之間交換的一些或全部數(shù)據(jù)。
第一中間裝置200a可以例如響應(yīng)于信令隧道450和/或?qū)Φ攘斜?68的建立來與一個或多個客戶機(jī)102建立一個或多個SSL會話。第二中間裝置200b可以例如響應(yīng)于信令隧道450和/或?qū)Φ攘斜?68的建立來與一個或多個服務(wù)器106建立一個或多個SSL 會話。在一個實(shí)施例中,第二中間裝置200b對于一個或多個SSL會話池與多個服務(wù)器106 的每一個建立一個或多個SSL會話。第一中間裝置200a可以對于一個或多個SSL會話池 477與多個客戶機(jī)102的每一個建立一個或多個SSL會話。響應(yīng)于信令隧道450的建立, 第一中間裝置200a和第二中間裝置200b的其中一個或兩個可以創(chuàng)建一個或多個SSL狀態(tài)機(jī)。第一中間裝置200a的池管理器466可以將第一(或客戶機(jī)側(cè))SSL狀態(tài)機(jī)池與在客戶機(jī) 102和第一中間裝置200a之間建立的一個或多個SSL會話相關(guān)聯(lián)。第二中間裝置200b的池管理器466可以將第二 (或服務(wù)器側(cè))SSL狀態(tài)機(jī)池與在服務(wù)器106和第二中間裝置200b 之間建立的一個或多個SSL會話相關(guān)聯(lián)。
在一些實(shí)施例中,第二中間裝置200b的池管理器維護(hù)關(guān)于由第二中間裝置200b 與服務(wù)器建立的池477中的一個或多個SSL會話的信息(405)。第一中間裝置200a的池管理器466可以維護(hù)關(guān)于由第一中間裝置200a與客戶機(jī)102建立的池477中的一個或多個 SSL會話的信息。一個或多個池管理器466可以維護(hù)關(guān)于第一和/或第二狀態(tài)機(jī)池477的信息。一個或多個池管理器466可以維護(hù)關(guān)于在一個或兩個中間裝置200上配置的密碼或加密密鑰池的信息。此外,一個或多個池管理器466可以在上文結(jié)合圖4A所述的一個或多個存儲裝置上維護(hù)任何這些信息。
池管理器466可以維護(hù)對在中間裝置之間的當(dāng)前的和過去的SSL會話的統(tǒng)計(jì),包括每個SSL會話的使用率統(tǒng)計(jì)。池管理器466可以維護(hù)每個SSL會話池477的池閾值、池大小計(jì)數(shù)器、池大小的變化速率和增長量。池管理器466可以維護(hù)、更新和記錄每個中間裝置200的專用池443和/或監(jiān)控池445。池管理器466可以維護(hù)、更新和記錄中間裝置200 的空閑池471、分配池472和要銷毀池473。池管理器466可以維護(hù)和記錄SSL會話的狀態(tài)機(jī)對標(biāo)識符,無論SSL會話是活動還是到期的。
在圖4D的進(jìn)一步的細(xì)節(jié)中,第一中間裝置200a經(jīng)由信令隧道450從池管理器466 接收關(guān)于一個或多個SSL會話的信息444 (407)。第一中間裝置200a的池管理器466a可以從第二中間裝置200b的池管理器466b接收該信息444。第一中間裝置200a可以從第二中間裝置200b查詢關(guān)于池477的一個或多個SSL會話的信息。第二中間裝置200b可以向第一中間裝置200a轉(zhuǎn)發(fā)關(guān)于池477的一個或多個SSL會話的信息。第一中間裝置200a 可以與(例如,由第二中間裝置200b維護(hù)的)存儲裝置通信以訪問關(guān)于一個或多個SSL會話477的信息。 第一中間裝置200a可以接收對于池477的一個或多個SSL會話的會話特定數(shù)據(jù)。例如,且在一個實(shí)施例中,池管理器466可以通過收集和/或傳輸會話特定數(shù)據(jù)來識別服務(wù)器側(cè)的多個SSL會話和/或狀態(tài)機(jī)的其中一個??梢噪S機(jī)地或基于歷史記錄和/或來自客戶機(jī)102的請求450來識別多個SSL會話和/或狀態(tài)機(jī)的其中一個。在一些實(shí)施例中,所接收的信息444可以包括上文結(jié)合圖4A-4C所述的任何信息444??梢栽诮邮軄碜钥蛻魴C(jī)102的請求450之前傳輸和/或交換信息444。在一些實(shí)施例中,響應(yīng)于對等列表來傳輸和/或交換信息444。也可以響應(yīng)于信令隧道450的建立來傳輸和/或交換信息444。第二中間裝置200b可以在向第一中間裝置200a進(jìn)行傳輸之前對信息444的一些或全部進(jìn)行加密。第二中間裝置200b可以使用與中間裝置200a協(xié)商的密碼或加密密鑰來對信息444的一些或全部進(jìn)行加密。接收信息444的第一中間裝置200a可以例如使用與中間裝置200a協(xié)商的密碼或加密密鑰來對信息444進(jìn)行解密。第二中間裝置200b還可以在向第一中間裝置200a進(jìn)行傳輸之前對信息444進(jìn)行壓縮或其他處理。第二中間裝置200b可以經(jīng)由信令隧道450通過一個或多個消息來發(fā)送信息444。第二中間裝置200b可以發(fā)送包括SSL狀態(tài)機(jī)對標(biāo)識符的信息444。第二中間裝置200b可以響應(yīng)于來自第一中間裝置200a的SSL池更新消息來發(fā)送信息444。第二中間裝置200b可以以在對SSL池更新消息的SSL池更新響應(yīng)中發(fā)送信息444。在一些實(shí)施例中,第一中間裝置接收來自客戶機(jī)的、與服務(wù)器建立SSL會話的請求(409)。第一中間裝置200a可以接收與服務(wù)器106建立SSL會話的請求405。當(dāng)來自客戶機(jī)103的請求405去往服務(wù)器106,第一中間裝置200a可以攔截該請求。第一中間裝置200a可以響應(yīng)于在客戶機(jī)102和第一中間裝置200a之間的SSL會話的建立來接收請求405。第一中間裝置200a可以接收與第二服務(wù)器106b建立第二 SSL會話的請求405。第一中間裝置200a可以在已經(jīng)建立了信令隧道450之后接收請求405。第一中間裝置200a可以在已經(jīng)將一些信息444傳輸?shù)降谝恢虚g裝置200a之后接收請求405。第一中間裝置200a可以接收作為客戶機(jī)問候消息和/或SYN消息的部分的請求405。第一中間裝置200a可以接收作為發(fā)起和/或建立SSL會話的握手過程的部分的請求405。第一中間裝置200a可以接收具有SSL相關(guān)選項(xiàng)的請求405。第一中間裝置200a可以接收包括例如標(biāo)識一個或多個服務(wù)器106的一個或多個信令I(lǐng)P地址的請求405。第一中間裝置200a可以接收包括對數(shù)據(jù)加速、壓縮和/或加密的請求的請求405。第一中間裝置200a可以接收包括對關(guān)于第一裝置200a的對等列表的至少一部分的請求405。響應(yīng)于請求405,第一中間裝置200a可以識別用于建立連接的第二中間裝置200bο如果第二中間裝置200a不在第一中間裝置200b的對等列表468a中,則第一或第二中間裝置可以發(fā)起對它們的對等列表中的一個或兩個的更新。如果在第一和第二中間裝置之間還不存在信令隧道450,那么第一中間裝置200a可以根據(jù)上文結(jié)合步驟403所述的處理步驟來開始建立信令隧道450??蛇x地,該操作之后可以是在上文結(jié)合步驟405和/或407描述的處理步驟的任一實(shí)施例。響應(yīng)于請求405,第二中間裝置200a可以向第一中間裝置200a和/或池管理器466發(fā)送額外的信息。該信息發(fā)送可以補(bǔ)充較早發(fā)送的信息444。該信息可以包括SSL代理設(shè)置信息。例如,且在一個實(shí)施例中,可以將該信息作為確定要建立的代理類型(即分離或欺騙)的SSL代理握手的部分來進(jìn)行交換。而且,該信息可以包括上文結(jié)合圖4A所述的信息444的任何實(shí)施例。此外,可以在第一和第二中間裝置之間交換例如SSL會話密鑰、IP地址-端口元組、虛擬服務(wù)器名稱或其他客戶機(jī)和/或服務(wù)器側(cè)配置細(xì)節(jié)的信息。在一個實(shí)施例中,對于欺騙代理的配置信息包括引用SSL密鑰存儲表格的服務(wù)器私鑰。在又一個實(shí)施例中,對于分離代理的配置信息包括在SSL密鑰存儲表格中配置的服務(wù)器證書、證書鏈和其他數(shù)據(jù)。在步驟411的進(jìn)一步的細(xì)節(jié)中,第一中間裝置200a從SSL會話池477中識別SSL會話。第一中間裝置200a可以 從一個或多個服務(wù)器側(cè)SSL會話的池中請求可用的SSL會話。第一中間裝置200a可以從服務(wù)器側(cè)SSL狀態(tài)機(jī)池477請求可用的SSL狀態(tài)機(jī)。第一中間裝置200a可以請求第二中間裝置的專用池443的空閑列表471中的SSL狀態(tài)機(jī)。在一些實(shí)施例中,池管理器466從SSL會話池477中識別SSL會話。池管理器466可以從服務(wù)器側(cè)SSL會話中識別SSL會話。池管理器466可以從服務(wù)器側(cè)SSL狀態(tài)機(jī)池識別SSL狀態(tài)機(jī)。池管理器466還可以從客戶機(jī)側(cè)SSL狀態(tài)機(jī)池中識別SSL狀態(tài)機(jī)。池管理器466可以從服務(wù)器側(cè)和客戶機(jī)側(cè)SSL狀態(tài)機(jī)池中識別一對SSL狀態(tài)機(jī)。池管理器466可以使用SSL狀態(tài)機(jī)器對標(biāo)識符來標(biāo)識這對SSL狀態(tài)機(jī)。池管理器466、第一中間裝置200a和/或第二中間裝置200b可以基于下列中的一個或多個來從多個服務(wù)器側(cè)SSL會話中確定SSL會話所識別的服務(wù)器106、從服務(wù)器側(cè)和客戶機(jī)側(cè)SSL狀態(tài)機(jī)池所識別的SSL狀態(tài)機(jī)、請求405、信息444和所交換的其他信息。第一中間裝置200a的池管理器466可以向第二中間裝置200a識別對來自一個或多個SSL會話池的SSL會話的使用??梢詫⒃撟R別作為用于SSL會話建立的握手通信的部分傳送到第二中間裝置200b。在一些實(shí)施例中,進(jìn)行握手過程以將客戶機(jī)側(cè)狀態(tài)機(jī)和服務(wù)器側(cè)狀態(tài)機(jī)進(jìn)行配對用于SSL會話建立。第二中間裝置200a可以從第二中間裝置的專用池443的空閑列表471中選擇SSL狀態(tài)機(jī)。第二中間裝置200a可以使用在信令隧道450的建立期間協(xié)商的HMAC密鑰來計(jì)算所選擇的狀態(tài)機(jī)的標(biāo)識符的哈希消息認(rèn)證碼(HMAC)。第二中間裝置200a可以將該HMAC和標(biāo)識符附加于到第一中間裝置200a的消息(例如被附加為SYN-ACK消息中的TCP選項(xiàng))??梢詫⒃撓⑴c上文所述的其他SSL相關(guān)選項(xiàng)和信息一起進(jìn)行傳輸。第一中間裝置200a可以接收具有該標(biāo)識符的消息。第一中間裝置200a可以使用預(yù)先協(xié)商的HMAC密鑰來計(jì)算該標(biāo)識符的HMAC。第一中間裝置200a可以對比在該消息中所接收的HMAC來驗(yàn)證該HMAC。如果對比該消息中接收的HMAC證實(shí)該HMAC有效,則第一中間裝置200a可以根據(jù)所選擇的SSL狀態(tài)機(jī)來更新第一中間裝置的監(jiān)控池445。在一些實(shí)施例中,如果HMAC不匹配該消息中的HMAC,則第一中間裝置200a可以不向客戶機(jī)102轉(zhuǎn)發(fā)該消息。服務(wù)器最后可能超時(shí)并且重新發(fā)送帶有相同的標(biāo)識符或又一個標(biāo)識符的又一個消息??梢灾貜?fù)該過程直到接收到有效的HMAC,或者直到服務(wù)器106重置該連接。池管理器466可以根據(jù)該有效的標(biāo)識符來確定狀態(tài)機(jī)對標(biāo)識符。池管理器466可以基于該狀態(tài)機(jī)對標(biāo)識符來識別客戶機(jī)側(cè)狀態(tài)機(jī)。在一些實(shí)施例中,第一中間裝置響應(yīng)于所述請求來與客戶機(jī)建立SSL會話(413)。池管理器466可以經(jīng)由所識別的SSL狀態(tài)機(jī)對代表第一中間裝置200a與第二中間裝置200b建立SSL會話??梢皂憫?yīng)于有效的狀態(tài)機(jī)對來建立SSL會話。池管理器466可以將所識別的SSL狀態(tài)機(jī)對移到中間裝置的專用池443的相應(yīng)的分配列表472中。第二中間裝置200b可以配置中間裝置之間的SSL會話以具有與服務(wù)器106的所識別的SSL會話的相同的SSL會話標(biāo)識符。第二中間裝置200b可以配置中間裝置之間的SSL會話以具有與服務(wù)器106的所識別的SSL會 話的相同SSL會話密鑰。第一中間裝置200a可以配置客戶機(jī)側(cè)SSL會話以具有與服務(wù)器106的所識別的SSL會話的相同SSL會話標(biāo)識符。第一中間裝置200a可以配置客戶機(jī)側(cè)SSL會話以具有與服務(wù)器106的所識別的SSL會話的相同SSL會話密鑰。第一和/或第二中間裝置200可以通過經(jīng)由客戶機(jī)側(cè)、服務(wù)器側(cè)和中間裝置SSL連接段建立的單個SSL會話來連接客戶機(jī)102和服務(wù)器106。第一和第二中間裝置可以確定是否跨越中間裝置200加速數(shù)據(jù)傳送。第一和第二中間裝置可以基于在第一和第二中間裝置200之間交換的信息來確定是否加速數(shù)據(jù)傳送。在一些實(shí)施例中,如果中間裝置200中的一個或兩個能夠支持?jǐn)?shù)據(jù)加速,則池管理器466將客戶機(jī)側(cè)和服務(wù)器側(cè)狀態(tài)機(jī)配對。在其他實(shí)施例中,池管理器466將用于SSL會話建立的客戶機(jī)側(cè)和服務(wù)器側(cè)狀態(tài)機(jī)配對,而無論中間裝置200中的一個或兩個是否能夠支持?jǐn)?shù)據(jù)加速。E.經(jīng)由中間裝置對SSL講行分離代理可以跨越在兩個端點(diǎn)(例如,客戶機(jī)和服務(wù)器)之間部署的多個中間裝置來實(shí)現(xiàn)對SSL通信的分離代理??梢越?jīng)由一個或多個網(wǎng)絡(luò)104連接客戶機(jī)102,服務(wù)器106和中間裝置200,在圖1A-1C和4A中描述了一些實(shí)施例。中間裝置200b (下文有時(shí)也稱為“服務(wù)器側(cè)中間裝置”)可以與服務(wù)器106建立安全連接(下文有時(shí)稱為“服務(wù)器側(cè)”連接)例如,SSL連接。另一個中間裝置200a (下文有時(shí)也稱為“客戶機(jī)側(cè)中間裝置”)可以與客戶機(jī)102建立安全連接(下文有時(shí)稱為“客戶機(jī)側(cè)”連接)例如,SSL連接。這兩個中間裝置200a、200b可以用這兩個中間裝置之間的又一個安全連接來橋接該客戶機(jī)側(cè)和服務(wù)器側(cè)連接。可以使用一個或多個加密密鑰來使這三個連接安全。當(dāng)從服務(wù)器106向客戶機(jī)102傳輸數(shù)據(jù)時(shí),例如,本文所公開的系統(tǒng)和方法可以給每個安全連接分配密鑰并且隔離每個密鑰在所分配的安全連接中的使用,而不是跨越中間裝置傳遞加密密鑰信息。相應(yīng)地,使用相應(yīng)的加密密鑰來加密經(jīng)由每個安全連接發(fā)送的數(shù)據(jù),并且可以在該安全連接的接收端使用相同的加密密鑰來對所述數(shù)據(jù)進(jìn)行解密(例如從服務(wù)器106發(fā)送的且由服務(wù)器側(cè)中間裝置200b接收的數(shù)據(jù))。在經(jīng)由又一個安全連接重新傳輸之前,可以使用又一個加密密鑰來對所接收的數(shù)據(jù)進(jìn)行加密并且相應(yīng)地在接收端對所述數(shù)據(jù)進(jìn)行解密(例如,從服務(wù)器側(cè)中間裝置200b發(fā)送的且在客戶機(jī)側(cè)中間裝置200a處接收的數(shù)據(jù))。在一些實(shí)施例中,可以將加密密鑰分配給兩個或更多個安全連接。舉例來說,且在一個實(shí)施例中,客戶機(jī)側(cè)連接和這兩個中間裝置之間的連接可以共享相同的加密密鑰,而同時(shí)可以給服務(wù)器側(cè)連接分配另一個加密密鑰。因此,可以在該網(wǎng)絡(luò)路徑的相應(yīng)部分中使用并且隔離每個密鑰。因此,可以使用本文所述的方法和系統(tǒng)經(jīng)由代理(即中間裝置)在兩個網(wǎng)絡(luò)端點(diǎn)(例如,客戶機(jī)和/或服務(wù)器)之間配置多個安全連接和密鑰分配。相應(yīng)地,可以保護(hù)和隔離用于保護(hù)數(shù)據(jù)傳送的加密密鑰(例如,服務(wù)器側(cè)私有網(wǎng)絡(luò)密鑰),而不會產(chǎn)生沿?cái)?shù)據(jù)傳輸網(wǎng)絡(luò)路徑跨越代理的過度暴露。現(xiàn)參考圖5A,示出了用于跨越中間裝置分離代理SSL通信的系統(tǒng)的一個實(shí)施例。總的來說,該系統(tǒng)示出了處理客戶機(jī)102和服務(wù)器106之間的連接請求的客戶機(jī)側(cè)(例如,第一)中間裝置200a和服務(wù)器側(cè)(例如,第二)中間裝置200b。這些中間裝置200可以包含來自上文結(jié)合圖1A-C、2A、3和4A所述的設(shè)備200的任一實(shí)施例的特征。盡管將客戶機(jī)和服務(wù)器描述為網(wǎng)絡(luò)端點(diǎn),但這個實(shí)施例僅是示例而非旨在進(jìn)行限制。例如,可以將任何網(wǎng)絡(luò)節(jié)點(diǎn)或中間裝置稱為端點(diǎn)。此外,出于示例說明的目的,僅參考了客戶機(jī)側(cè)中間裝置200a和服務(wù)器側(cè)中間裝置200b,盡管在兩個網(wǎng)絡(luò)端點(diǎn)之間可以駐留任何數(shù)量的中間裝置(并不限于兩個中間裝置),并且取決于如何限定網(wǎng)絡(luò)端點(diǎn)和/或中間裝置200相對于“客戶機(jī)”端點(diǎn)、“服務(wù)器”端點(diǎn)和/其他中間裝置200’的相對位置,可以將這些中間裝置的任何一個識別為“客戶機(jī)側(cè)”或“服務(wù)器側(cè)”。相應(yīng)地,本文所述的方法和系統(tǒng)可以應(yīng)用于兩個網(wǎng)絡(luò)端點(diǎn)之間的任何數(shù)量的中間裝置和連接會話。
舉例來說,且在一個實(shí)施例中,圖5B示出了駐留在服務(wù)器106和服務(wù)器側(cè)中間裝置200b之間的另外的中間裝置200c。中間裝置200a可以被識別為相對于中間裝置200b的客戶機(jī)側(cè)中間裝置。然而,中間裝置200b可以被識別為相對于中間裝置200c的客戶機(jī)側(cè)中間裝置。在一些實(shí)施例中,中間裝置200b和200c可以被引用為單個節(jié)點(diǎn)或單元,例如相對于客戶機(jī)側(cè)中間裝置200a的服務(wù)器側(cè)中間裝置200bc。中間裝置200b和200c可以作為一個單元進(jìn)行互操作,或者以其他方式相對于服務(wù)器106和/或中間裝置200a將它們本身表現(xiàn)為單個中間裝置200bc。重新參考圖5A,中間裝置200a、200b可以經(jīng)由任何類型或形式的通信鏈路、連接或會話(下文有時(shí)總的稱為“連接”或“會話”)進(jìn)行通信。同樣地,每個網(wǎng)絡(luò)端點(diǎn)可以經(jīng)由任何類型或形式的連接與相鄰的中間裝置200進(jìn)行通信。在一些實(shí)施例中,這些連接可以包括相同類型或不同類型的連接。例如,且在一個實(shí)施例中,一些連接可以是安全連接。例如使用一種或多種類型的安全密鑰加密。一些連接可以是不安全的連接或提供有限的安全性。一些連接可以包含某一類型或形式的SSL加密、防火墻和/或虛擬專用網(wǎng)絡(luò)保護(hù)。一些連接可以應(yīng)用數(shù)據(jù)壓縮、加速、緩存和/或任一其他類型或形式的數(shù)據(jù)處理。一些連接可以支持一種或多種通信協(xié)議,包括標(biāo)準(zhǔn)的、定制的和/或?qū)S械膮f(xié)議。對于使用加密密鑰的連接,可以在不同的實(shí)施例中使用私鑰、公鑰或其他類型或形式的密鑰(包括協(xié)商的或生成的密鑰)的其中一個或多個。作為連接的端點(diǎn)的一對通信的網(wǎng)絡(luò)節(jié)點(diǎn)(例如、客戶機(jī)、服務(wù)器和/或中間裝置)可以將密碼用于使用加密密鑰在網(wǎng)絡(luò)節(jié)點(diǎn)之間的數(shù)據(jù)加密/解密。對于每個連接可以協(xié)商和/或配置例如來自密碼和/或加密密鑰池的一個或多個密碼和加密密鑰。所述加密密鑰和密碼可以包含如上文結(jié)合圖4A-4D所述的加密密鑰和密碼的實(shí)施例的特征。密碼和/或加密密鑰可以支持一種或多種類型或形式的加密標(biāo)準(zhǔn)、算法和/或協(xié)議,例如數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)、RSA (Rivest、Shamir和Adelman)算法、Diffie-Hellman (D-H)密鑰交換協(xié)議和高級加密標(biāo)準(zhǔn)(AES)。除了加密之外,密鑰相關(guān)的加密方法可以被用于實(shí)現(xiàn)數(shù)字簽名方案。出于驗(yàn)證的目的,可以將數(shù)字簽名與所傳輸?shù)臄?shù)據(jù)相關(guān)聯(lián)。加密密鑰(有時(shí)也被稱為秘密密鑰),可以被用于簽名算法(即處理所傳輸?shù)臄?shù)據(jù))中。另一個算法可以使用密鑰在接收端檢查簽名和所傳輸?shù)臄?shù)據(jù)的有效性。使用加密密鑰進(jìn)行加密、解密、簽名和驗(yàn)證可以被總的稱為加密操作或 crypto op。舉例來說,圖5C描述了使用加密密鑰在兩個裝置(例如,客戶機(jī)和服務(wù)器)之間的SSL握手過程的一個實(shí)施例。在該實(shí)施例中,SSL握手包括協(xié)商或生成加密或秘密密鑰以建立安全的連接或會話。如圖5C中所示的,該握手過程可以包括多個步驟,包括在裝置之間的各種交換。這樣的交換可以包括加密操作和/或交換諸如在裝置之間的公鑰信息的加密信息。在一些實(shí)施例中,例如,可以使用私鑰加密客戶機(jī)和/或服務(wù)器證書并且使用對應(yīng)的公鑰對其進(jìn)行驗(yàn)證。例如,且在一個實(shí)施例中,證書機(jī)構(gòu)(CA)可以在該握手之前或在該握手期間發(fā)出用于客戶機(jī)的客戶機(jī)證書,以用于驗(yàn)證該連接請求或過程??梢允褂每蛻魴C(jī)的私鑰加密該客戶機(jī)證書并且在服務(wù)器處使用該客戶機(jī)的公鑰來對該客戶機(jī)證書進(jìn)行驗(yàn)證。在服務(wù)器側(cè)的證書驗(yàn)證可以包括對該客戶機(jī)證書中客戶機(jī)的數(shù)字簽名的驗(yàn)證。在一些實(shí)施例中,可以在服務(wù)器106處使用客戶機(jī)的公鑰對該加密的客戶機(jī)證書進(jìn)行解密。當(dāng)驗(yàn)證相應(yīng)的證書時(shí),可以協(xié)商、計(jì)算或以其他方式確定用于SSL會話的秘密密鑰。在所建立的會話中,可以將這個秘密密鑰用于加密裝置之間的數(shù)據(jù)傳送。其他方案,不限于SSL,可以包含一些和/或類似的特征來保護(hù)連接或會話。在一些實(shí)施例中,可以協(xié)商和/或配置相同的密碼和/或加密密鑰用于在一 個或多個連接間共享。與共享單組密碼和/或加密密鑰相比,使用不同組的密碼和/或加密密鑰可以改善跨越一個或多個連接的安全性。由于使用分配給通信路徑的不同連接的不同組的密碼和/或加密密鑰,能夠利用對于端到端通信的額外的安全性級別。使用被隔離在特定連接內(nèi)的密碼和/或加密密鑰組可以在例如反黑客攻擊保持整體端到端通信的完整性中對加密信息的暴露進(jìn)行限制。在一些實(shí)施例中,用于連接或會話的加密或秘密密鑰可以總的被稱為會話密鑰。再次參考圖5A,中間裝置200可以被配置為對另一個裝置的代理。例如,客戶機(jī)側(cè)中間裝置200a可以被配置為與服務(wù)器106通信或請求與服務(wù)器106通信的客戶機(jī)102的代理。代理可以代表對應(yīng)的裝置進(jìn)行操作,例如,定向流量(例如,為去往服務(wù)器106的分組做出路由決策)、作出某些響應(yīng)(例如,對服務(wù)器的ICMP請求進(jìn)行響應(yīng))以及提供特定功能(例如,SSL加密、防火墻和加速服務(wù))。代理具有收發(fā)器和/或I/O接口 130,用于發(fā)送和接收所有形式或類型的消息、分組、控制信號和數(shù)據(jù)。上文結(jié)合圖1B-1C、2A、3和4A描述了代理的特征的其他實(shí)施例。當(dāng)跨越在客戶機(jī)102和服務(wù)器106之間的一個或多個網(wǎng)絡(luò)建立通信信道時(shí),中間裝置200或代理可以通過任一類型或形式的握手過程互相交互和/或與端點(diǎn)交互,所述握手過程例如傳輸控制協(xié)議(TCP)握手、SSL代理握手和SSL會話握手過程。將結(jié)合圖5E-5G更詳細(xì)地描述這些過程。在建立通信信道的握手過程期間或之后,可以發(fā)起與形成該信道的一個或多個連接關(guān)聯(lián)的涉及加密密鑰的任意次數(shù)的加密操作567。通信裝置的每一個,例如中間裝置200、客戶機(jī)102和服務(wù)器106,可以包括私鑰存儲556。以舉例說明而非限制的方式,私鑰存儲556可以駐留在中間裝置200或任何其他網(wǎng)絡(luò)裝置中。在一些實(shí)施例中,如圖所描述的,私鑰存儲556是用于在中間裝置200上配置的私鑰的安全容器。該密鑰存儲556可以是獨(dú)立的進(jìn)程(“服務(wù)器進(jìn)程”)。過濾器進(jìn)程545 (有時(shí)稱為軌道(Orbital)服務(wù)器進(jìn)程)使用操作系統(tǒng)(OS)套接字533與服務(wù)器進(jìn)程通信。一個或多個用戶接口(UI) /管理進(jìn)程578可以在OS套接字之上使用擴(kuò)展標(biāo)記語言遠(yuǎn)程過程調(diào)用(XML RPC)來與服務(wù)器進(jìn)程556通信。在一些實(shí)施例中,私鑰存儲556被實(shí)現(xiàn)為與過濾器進(jìn)程545分開的進(jìn)程,盡管在其他實(shí)施例中,它們可以是同一進(jìn)程的部分。私鑰存儲556可以打開套接字533,例如普通套接字,并且在本地端口上偵聽來自過濾器進(jìn)程545的輸入連接。密鑰存儲進(jìn)程556可以提供下列接口中的一個或多個I.加密接口。這個接口可以支持下列服務(wù)或加密操作類型中的一個或多個a.解密b. RSA (Rivest、Shamir 和 Adleman)簽名c.數(shù)字簽名算法(DSA)簽名在一些實(shí)施例中,這些加密類型被稱為樹加密操作類型。2.過濾器接口。在一些實(shí)施例中,過濾器接口可以被稱為域接口。過濾器進(jìn)程545可以使用這個接口來與私鑰存儲556通信。 3.擴(kuò)展標(biāo)記語言遠(yuǎn)程過程調(diào)用(XML RPC)接口 532。這個接口可以在端口(該端口可以不同于用于過濾進(jìn)程545的XML RPC偵聽器端口)上創(chuàng)建XML RPC偵聽器。用戶接口578 (UI)可以使用這個端口獨(dú)立地與私鑰存儲556通信,例如不必經(jīng)過過濾器進(jìn)程545。私鑰存儲可以是在中間裝置200上執(zhí)行或操作的任何類型或形式的進(jìn)程。在一些實(shí)施例中,該私鑰存儲是多線程進(jìn)程。可以在中間裝置200和/或私鑰存儲556的初始化期間創(chuàng)建線程池。可以將來自該池的空閑線程分配給觸發(fā)或請求加密操作567的SSL連接。UI 578可以提供機(jī)制來以任何格式(例如,以增強(qiáng)保密性郵件(PEM)格式)將私鑰添加到該密鑰存儲。該密鑰存儲中每個密鑰可以具有任意類型或形式的名稱或標(biāo)識符。在一個實(shí)施例中,密鑰名或標(biāo)識符可以是任何任意ASCII字符串和/或I到32字節(jié)長。密鑰可以是任何類型或形式。在一個實(shí)施例中,密鑰是RSA類型或DSA類型。在一些實(shí)施例中,使用OpenSSL的實(shí)現(xiàn)提供對RSA和DSA密鑰類型的支持。在限于支持RSA和DSA密鑰類型的實(shí)施例中,單個密鑰名可以最多引用2個不同密鑰(即RSA密鑰和DSA密鑰)??梢詫⒚荑€名和密鑰類型的配對一起用于唯一地標(biāo)識私鑰。在各個實(shí)施例中,密鑰存儲進(jìn)程中的每個密鑰保持在密鑰存儲進(jìn)程中。密鑰存儲進(jìn)程中的密鑰可以不離開該密鑰存儲進(jìn)程,例如,為了安全。密鑰存儲進(jìn)程可以代表另一個進(jìn)程或網(wǎng)絡(luò)組件來執(zhí)行加密操作。例如,且在一個實(shí)施例中,中間裝置或其他實(shí)體可以請求管理密鑰的密鑰存儲進(jìn)程代表中間裝置或其他實(shí)體執(zhí)行加密操作,而不是從該密鑰存儲進(jìn)程獲取該密鑰??梢詫⒁粋€或多個密鑰存儲在盤上的文件577中??梢允褂萌魏晤愋突蛐问降募用芊椒▉韺γ總€密鑰進(jìn)行加密。在一些實(shí)施例中,可以使用任何密鑰大小(例如,256位)的高級加密標(biāo)準(zhǔn)(AES)來對密鑰進(jìn)行加密。UI/管理578可以指定用于打開密鑰存儲556的加密密碼,例如,以從該文件加載一個或多個密鑰到存儲器中或者以便更新該文件577,例如添加或移除密鑰。這些密鑰可以被應(yīng)用于一個或多個加密操作,例如用于建立SSL連接或隧道。例如,重新參考圖5A-5B,且在一些實(shí)施例中,客戶機(jī)側(cè)中間裝置200a可以發(fā)送包括數(shù)據(jù)的消息和要服務(wù)器側(cè)中間裝置200b解密或簽名該數(shù)據(jù)的請求(即加密操作類型的指示)。響應(yīng)于該消息,服務(wù)器側(cè)中間裝置200b可以使用來自它的私鑰存儲556的密鑰來生成并返回對該請求的響應(yīng)。該響應(yīng)可以包括如所請求的加密操作的狀態(tài),和/或如所簽名的或解密的數(shù)據(jù)。中間裝置200a、200b中的一個或兩個包括用于處理各種加密操作的硬件安全模塊(HSM)。在請求端的HSM 520a可以執(zhí)行下列中的一個或多個(i)識別用于給定數(shù)據(jù)或數(shù)據(jù)集的加密操作類型,( )生成對該加密操作的請求,(iii)發(fā)送該請求到目的地,(iv)監(jiān)控對該請求的響應(yīng),(V)接收并識別所請求的加密操作的狀態(tài),和(vi )驗(yàn)證簽名的數(shù)據(jù)的數(shù)字簽名。在接收端的HSM 520b可以執(zhí)行下列中的一個或多個(i)接收加密操作請求,(ii)從該請求識別該加密操作類型和數(shù)據(jù),(iii)從密鑰存儲加載合適的密鑰來執(zhí)行所請求的加密操作,(iv)生成包括該加密操作的狀態(tài)和/或簽名的或解密的數(shù)據(jù)的響應(yīng)。HSM還可以使用協(xié)商的密鑰和/或來自密鑰存儲556的私鑰來加密數(shù)據(jù)。可以以硬件或硬件與軟件的組合來實(shí)現(xiàn)HSM 520。可以將HSM 520構(gòu)建和配置為用于提供任何類型或形式的加密操作,以及用于管理數(shù)字密鑰(例如,安全地存儲和/或備份密鑰)、加速加密過程并提供對密鑰的保護(hù)(例如,對訪問密鑰進(jìn)行認(rèn)證)。在一些實(shí)施例中,HSM是能直接附接到設(shè)備200(例如,中間裝置)、服務(wù)器106或計(jì)算裝置102的物理裝置(例如,插件卡或外部TCP/IP安全裝置)。HSM 520可以被設(shè)計(jì)、構(gòu)建和/或配置為用于提供一個或多個密鑰的物理安全。HSM 520可以提供對密鑰和/或其他敏感數(shù)據(jù)的邏輯和/或物理保護(hù)。HSM 520可以為訪問加密密鑰提供安全保障(例如,強(qiáng)認(rèn)證)。在一些實(shí)施例中,HSM 520可以被用于保護(hù)、存儲和/或管理一個或多個高價(jià)值密鑰。在某些實(shí)施例中,HSM520可以優(yōu)于用于保護(hù)、存儲和/或管理一個或多個密鑰的一些其他系統(tǒng)(例如軟件解決方 案)。HSM 520可以包括在HSM 520的硬件部分和/或主機(jī)中間裝置200上執(zhí)行的任何模塊、腳本、程序、代理、組件或可執(zhí)行指令集。HSM 520可以具有在網(wǎng)絡(luò)堆棧的一層或多層(例如傳輸層)操作的組件。在一些實(shí)施例中,HSM 520可以包括一個或多個密碼或包含密碼的特征。在這些實(shí)施例的一些中,HSM 520可以(例如,從密碼池)識別密碼以使用和/或執(zhí)行密碼算法。在其他實(shí)施例中,HSM 520可以是對密碼和/或其他類型的加密程序進(jìn)行替代或補(bǔ)充的硬件。HSM 520可以被用于加速兩個網(wǎng)絡(luò)節(jié)點(diǎn)之間的數(shù)據(jù)傳送(例如,加密的數(shù)據(jù))。如結(jié)合圖4A所述的,可以在兩個端點(diǎn)之間以任何順序建立并由任何類型的事件觸發(fā)一個或多個安全連接(例如,SSL連接)。在一些實(shí)施例中,可以在建立客戶機(jī)側(cè)中間裝置200a和服務(wù)器側(cè)中間裝置200b之間的安全連接之前,建立服務(wù)器側(cè)安全連接和/或客戶機(jī)側(cè)安全連接。在其他實(shí)施例中,在建立服務(wù)器側(cè)和/或客戶機(jī)側(cè)安全連接之前,在客戶機(jī)側(cè)中間裝置200a和服務(wù)器側(cè)中間裝置200b之間建立安全連接(例如,SSL連接)。可以使用上文結(jié)合圖4A-4D所述的任何方法和系統(tǒng)來建立這些安全連接中的一個或多個。在一個或多個中間裝置200經(jīng)由SSL提供安全代理信道的一些實(shí)施例中,代理類型可以被實(shí)現(xiàn)為分離代理或欺騙代理??梢栽赟SL代理握手期間來確定和/或協(xié)商代理類型。可以根據(jù)在客戶機(jī)側(cè)和服務(wù)器側(cè)中間裝置200中的一個或兩個中可用的配置信息566來確定和/或協(xié)商代理類型。該配置信息可以包括上文結(jié)合圖4A所述的信息444的任何部分和/或變形。在一些實(shí)施例中,服務(wù)器側(cè)中間裝置200b包括具有配置名的列表的代理配置表格。在該代理配置表格中的每個條目可以包括下列中的一個或多個配置名(例如,標(biāo)識主鍵(PK))、IP地址-端口元組、虛擬服務(wù)器名稱(當(dāng)客戶機(jī)在客戶機(jī)問候消息中發(fā)送服務(wù)器名稱指示時(shí),可以使用它)、代理類型(例如、分離、欺騙或混合的)以及可基于代理類型的其他客戶機(jī)側(cè)和服務(wù)器側(cè)配置細(xì)節(jié)(例如,包括一個或多個從私鑰存儲表格引用的私鑰名、月艮務(wù)器證書、證書機(jī)構(gòu)(CA)信息、證書鏈(RSA/DSA格式)、SSL協(xié)議版本和密碼列表)。對于欺騙代理來說,可以將引用SSL密鑰存儲表格的配置信息566傳輸?shù)娇蛻魴C(jī)側(cè)中間裝置200a。對于分離代理來說,可以將包括服務(wù)器證書、證書鏈和在代理配置表格中配置的其他數(shù)據(jù)的配置信息566傳輸?shù)娇蛻魴C(jī)側(cè)中間裝置200a。配置信息566也可以包括Open SSL選項(xiàng)、x509證書和證書驗(yàn)證選項(xiàng)。可以用于配置SSL代理的其他配置信息566或參數(shù)包括a. SSL服務(wù)類。在一個實(shí)施例中,這個參數(shù)是用于啟用/禁用SSL加速的單個位),b.可信的CA。在一個實(shí)施例中,這是可信的認(rèn)證機(jī)構(gòu)的列表。c.私鑰存儲表格。在一個實(shí)施例中,這是中間裝置、客戶機(jī)和/或服務(wù)器的所有私鑰的列表。在各種實(shí)施例中,在密鑰存儲進(jìn)程中存儲和/或保護(hù)私鑰。d. SSL服務(wù)類表格。在一個實(shí)施例中,這包括IP地址-端口元組信息。此外,SSL服務(wù)類表格的表格條目可以包括或引用代理配置名的列表,該列表引用代理配置表格和其他信息。在一些實(shí)施例中,SSL服務(wù)類表格與SSL代理配置表格具有一對多的關(guān)系。由此,單個IP地址-端口元組可以具有所配置的多個配置名,例如僅欺騙配置和混合配置。由服 務(wù)器側(cè)中間裝置根據(jù)這些配置執(zhí)行的匹配操作可以確定代理類型。在一些實(shí)施例中,客戶機(jī)側(cè)和/或服務(wù)器側(cè)中間裝置200使用配置信息566來啟動SSL代理設(shè)置。在這些實(shí)施例的一些中,服務(wù)器側(cè)中間裝置200a被配置為具有、確定或以其他方式提供配置信息566。服務(wù)器側(cè)中間裝置200a可以將配置信息566提供給客戶機(jī)側(cè)中間裝置200a以用于啟動客戶機(jī)SSL代理設(shè)置。服務(wù)器側(cè)中間裝置200a可以經(jīng)由任何方式且響應(yīng)于各種事件來提供該配置信息,例如經(jīng)由上文結(jié)合圖4A-4D所述的方式和/或事件?,F(xiàn)參考圖流程圖描述了用于跨越中間裝置200代理SSL通信的方法400中所采取的步驟的實(shí)施例。該方法包括由客戶機(jī)發(fā)起握手過程以經(jīng)由客戶機(jī)側(cè)中間裝置200a和服務(wù)器側(cè)中間裝置200b與服務(wù)器106建立通信(501)。服務(wù)器側(cè)中間裝置200b與該服務(wù)器建立服務(wù)器側(cè)安全套接字層(SSL)會話(503)。與一個或多個客戶機(jī)通信的客戶機(jī)側(cè)中間裝置200a使用從服務(wù)器側(cè)中間裝置200b接收的SSL配置信息與客戶機(jī)102建立客戶機(jī)側(cè)SSL會話(505)。客戶機(jī)側(cè)中間裝置200a和服務(wù)器側(cè)中間裝置200b經(jīng)由第三SSL會話進(jìn)行通信。服務(wù)器側(cè)中間裝置200b使用客戶機(jī)側(cè)SSL會話的會話密鑰對從服務(wù)器106接收的加密的數(shù)據(jù)進(jìn)行解密(507)。服務(wù)器側(cè)中間裝置200b經(jīng)由第三SSL會話向客戶機(jī)側(cè)中間裝置200a傳輸使用第三SSL會話的會話密鑰加密的數(shù)據(jù)(509)。客戶機(jī)側(cè)中間裝置200a使用第三SSL會話的會話密鑰對經(jīng)由第三SSL會話加密的數(shù)據(jù)進(jìn)行解密(511)。客戶機(jī)側(cè)中間裝置200a向客戶機(jī)102傳輸使用服務(wù)器側(cè)SSL會話的會話密鑰加密的數(shù)據(jù)(513)?,F(xiàn)參考圖5D,且更具體地,該方法包括由客戶機(jī)102發(fā)起握手過程以經(jīng)由客戶機(jī)側(cè)中間裝置和服務(wù)器側(cè)中間裝置與服務(wù)器106建立通信(501)。在一些實(shí)施例中,客戶機(jī)102、服務(wù)器106、其中一個中間裝置或任何其他網(wǎng)絡(luò)節(jié)點(diǎn)可以發(fā)起握手過程以在服務(wù)器106和客戶機(jī)102之間建立通信。該握手過程可以是由特定事件發(fā)起的,例如,通過根據(jù)對等列表468自動發(fā)現(xiàn)客戶機(jī)-服務(wù)器對或中間裝置200。可以經(jīng)由上文結(jié)合圖4A-4D所述的各種事件來發(fā)起該握手過程。在一些實(shí)施例中,發(fā)起傳輸控制協(xié)議(TCP )握手,或其他類型的通信協(xié)議握手??梢园l(fā)起任何類型或形式的安全握手,例如用于建立加密的信令或數(shù)據(jù)傳送連接。在某些實(shí)施例中,例如,在建立傳輸層或TCP連接時(shí),發(fā)起SSL代理握手。該系統(tǒng)可以跨越客戶機(jī)102、服務(wù)器106和中間裝置200建立一個或多個連接。一個或多個握手過程可以跨越客戶機(jī)102、服務(wù)器106和中間裝置200建立一個或多個連接。在建立客戶機(jī)102、服務(wù)器106和/或中間裝置200之間的一些或全部連接期間,握手過程可以并發(fā)地或順序地進(jìn)行。在建立客戶機(jī)102、服務(wù)器106和/或中間裝置200之間的一些或全部連接期間,握手過程可以獨(dú)立地或以協(xié)同方式進(jìn)行。所建立的連接可以包括安全的、部分安全的和/或不安全的連接。一個或多個握手過程可以與建立客戶機(jī)102、服務(wù)器106和/或中間裝置200之間的特定連接相關(guān)聯(lián)。所建立的連接可以包括傳輸層連接和/或在其他協(xié)議層的連接。所建立的連接可以包括加密的連接。在一些實(shí)施例中,所建立的連接可包括一個或多個SSL連接。握手過程還可以確定所建立的連接中的一個或多個是否將支持?jǐn)?shù)據(jù)加速、數(shù)據(jù)高速緩存、壓縮和/或其他數(shù)據(jù)傳送操作。在某些實(shí)施例中,握手過程包括TCP握手過程以跨越客戶機(jī)102、服務(wù)器106和/或中間裝置200建立一個或多個TCP或傳輸層連接。TCP握手過程可以在端點(diǎn)(例如,客戶機(jī)102和服務(wù)器106)之間建立單個或多個TCP連接。在一些實(shí)施例中,如下發(fā)起TCP握手其中一個中間裝置200可以檢測或接收輸入的SSL連接或連接請求。在某些實(shí)施例中,客戶機(jī)102發(fā)送去往服務(wù)器106的SYN消息,該消息被客戶機(jī)側(cè)中間裝置200a接收。該SYN消息可以表示輸入的SSL連接或連接請求??蛻魴C(jī)側(cè)中間裝置200a可以將該輸入連接確定或分類為SSL連接??蛻魴C(jī)側(cè)中間裝置200a可以修改該SYN消息,例如給該SYN消息添·加一個或多個選項(xiàng),以指示下列中的一個或多個客戶機(jī)側(cè)中間裝置自己的信令I(lǐng)P、SSL支持以及啟動SSL加速的指示。當(dāng)修改該SYN消息之后,客戶機(jī)側(cè)中間裝置200a可以向服務(wù)器側(cè)中間裝置200b傳輸該SYN消息。服務(wù)器側(cè)中間裝置200b可以在向服務(wù)器發(fā)送經(jīng)處理的SYN消息之前處理選項(xiàng)(例如剝?nèi)ミx項(xiàng))。服務(wù)器106可以例如使用SYN-ACK消息來對該經(jīng)處理的SYN消息進(jìn)行響應(yīng)。服務(wù)器側(cè)中間裝置200b可以接收該SYN-ACK消息。服務(wù)器側(cè)中間裝置200b可以檢查是否存在到客戶機(jī)側(cè)中間裝置200a的信令隧道。如果不存在信令隧道,則服務(wù)器側(cè)中間裝置200b可以經(jīng)由客戶機(jī)側(cè)中間裝置200a向客戶機(jī)發(fā)送沒有附加SSL選項(xiàng)的SYN-ACK,例如以指示當(dāng)建立該SSL連接時(shí)將不執(zhí)行SSL加速。在一些實(shí)施中,可以應(yīng)用流控制加速而不是數(shù)據(jù)加速。服務(wù)器側(cè)中間裝置200b也可以嘗試使用在SYN消息中接收到的信令I(lǐng)P來與客戶機(jī)側(cè)中間裝置200a建立信令隧道??蛻魴C(jī)102可以經(jīng)由客戶機(jī)側(cè)中間裝置200a和服務(wù)器側(cè)中間裝置200b用ACK消息對服務(wù)器106進(jìn)行確認(rèn),從而完成TCP連接的建立。在一些實(shí)施例中,服務(wù)器側(cè)中間裝置200b確定已經(jīng)建立了信令隧道。服務(wù)器側(cè)中間裝置200b可以給去往客戶機(jī)102的SYN-ACK消息附加SSL支持TCP選項(xiàng)。服務(wù)器側(cè)中間裝置200b還可以從SSL狀態(tài)機(jī)池477中選擇SSL狀態(tài)機(jī)對并且將對應(yīng)的SSL狀態(tài)機(jī)對標(biāo)識符作為TCP選項(xiàng)添加到SYN-ACK消息中。在一些實(shí)施例中,服務(wù)器側(cè)中間裝置200b附加該標(biāo)識符的基于哈希消息認(rèn)證碼(HMAC)以防止篡改??蛻魴C(jī)102可以通過用ACK消息經(jīng)由客戶機(jī)側(cè)中間裝置200a和服務(wù)器側(cè)中間裝置200b對服務(wù)器106進(jìn)行響應(yīng)來確認(rèn)該SYN-ACK消息,用于建立TCP連接。使用通過信令隧道預(yù)先協(xié)商的密碼和/或密鑰,通過所選擇的SSL狀態(tài)機(jī)對來加密在這兩個中間裝置之間傳送的數(shù)據(jù)??梢允褂蒙衔慕Y(jié)合圖4A-4D所述的方法和系統(tǒng)的任一實(shí)施例來建立信令隧道。中間裝置200可以將該信令隧道建立為任何類型或形式的連接、安全的或其他的,例如SSL連接。在一些實(shí)施例中,中間裝置200可以在信令隧道上建立SSL連接,或者除了建立信令隧道之外還建立SSL連接。中間裝置200可以使用上文結(jié)合圖4A-4D所述的方法和系統(tǒng)的任一實(shí)施例來建立這個SSL連接。例如,客戶側(cè)中間裝置和/或服務(wù)器側(cè)中間裝置可以從由客戶機(jī)側(cè)中間裝置200a和服務(wù)器側(cè)中間裝置200a的每一個維護(hù)的預(yù)先建立的SSL會話池或SSL狀態(tài)機(jī)池中識別該SSL會話。在一些實(shí)施例中,例如,緊接著TCP握手,發(fā)起SSL代理握手。響應(yīng)于TCP握手的完成或啟動,可以由客戶機(jī)102、服務(wù)器106和/或中間裝置200中的任何一個來發(fā)起SSL代理握手??梢皂憫?yīng)于在客戶機(jī)102、服務(wù)器106和/或中間裝置200之間的TCP連接的建立來發(fā)起SSL代理握手。可以啟動該SSL握手過程以確定要建立的代理的類型,即分離或欺騙。例如,如上文結(jié)合圖4A-4B所述的,可以由一個或兩個中間裝置200來檢索、協(xié)商、確定和/或提供用于確定代理類型的配置信息566。在一些實(shí)施例中,作為SSL代理握手和/或確定配置信息566的部分,客戶機(jī)102發(fā)送客戶機(jī)問候消息到客戶機(jī)側(cè)中間裝置200a。客戶機(jī)問候消息可以帶有可選的服務(wù)器名稱指示字段??蛻魴C(jī)側(cè)中間裝置200a可以接收并本地緩沖該客戶機(jī)問候消息??蛻魴C(jī)側(cè)中間裝置200a可以在該客戶機(jī)問候消息前附加代理問候消息,并將其發(fā)送到服務(wù)器側(cè)中間裝置200b。在一些實(shí)施例中,服務(wù)器側(cè)中間裝置200b可以被設(shè)置或配置為僅接收代理問候消息。例如,且在一個實(shí)施例中,如果服務(wù)器側(cè)中間裝置200b接收到不是代理問候消息 的消息,則服務(wù)器側(cè)中間裝置200b可以重置或解除早先建立的TCP連接。服務(wù)器側(cè)中間裝置200b可以解析該代理問候消息。服務(wù)器側(cè)中間裝置200b可以檢查IP地址-端口元組和對應(yīng)的代理配置名。服務(wù)器側(cè)中間裝置200b還可以在SSI的SSL代理配置表格中查找對于這些配置的每一個的代理類型。如果服務(wù)器側(cè)中間裝置200b從SSL代理配置表格確定例如所有配置的代理類型為欺騙代理,則服務(wù)器側(cè)中間裝置200b可以將該客戶機(jī)問候消息轉(zhuǎn)發(fā)到服務(wù)器。如果服務(wù)器側(cè)中間裝置200b從SSL代理配置表格確定例如所有匹配配置的代理類型為欺騙代理,則服務(wù)器側(cè)中間裝置200b可以將該客戶機(jī)問候消息轉(zhuǎn)發(fā)到服務(wù)器。服務(wù)器側(cè)中間裝置200b可以向客戶機(jī)發(fā)送代理問候消息。服務(wù)器側(cè)中間裝置200b可以向客戶機(jī)102發(fā)送客戶機(jī)側(cè)配置數(shù)據(jù)(即配置信息566)以用于客戶機(jī)代理設(shè)置。如果服務(wù)器側(cè)中間裝置200b例如從SSL代理配置表格確定所有配置或匹配配置的代理類型為分離代理,則服務(wù)器側(cè)中間裝置200b可以將客戶機(jī)問候消息轉(zhuǎn)發(fā)到服務(wù)器。服務(wù)器側(cè)中間裝置200b可以向客戶機(jī)102發(fā)送代理問候消息。服務(wù)器側(cè)中間裝置200b可以向客戶機(jī)102發(fā)送客戶機(jī)側(cè)配置數(shù)據(jù)(即配置信息566)以用于客戶機(jī)代理設(shè)置。在一些實(shí)施例中,服務(wù)器側(cè)中間裝置200b可以確定對于該IP-端口元組的配置具有混合的代理類型,即一些被配置為分離而一些被配置為欺騙。服務(wù)器側(cè)中間裝置200b可以基于在客戶機(jī)問候消息中的可選的服務(wù)器名稱指示字段中的服務(wù)器名稱來識別用于該通信的代理類型。服務(wù)器側(cè)中間裝置200b可以繼續(xù)用該可選的服務(wù)器名稱指示字段解析該客戶機(jī)問候消息。如果在該客戶機(jī)問候消息中沒有收到服務(wù)器名稱指示字段,則服務(wù)器側(cè)中間裝置200b可以在從代理配置表格所引用的配置名的列表中選擇第一匹配配置。如果在該客戶機(jī)問候消息中包含服務(wù)器名稱指示字段,則服務(wù)器側(cè)中間裝置200b可以將該服務(wù)器名稱與在代理配置表格中所標(biāo)識的虛擬服務(wù)器名稱進(jìn)行匹配。如果虛擬服務(wù)器名稱匹配,則服務(wù)器側(cè)中間裝置200b可以選擇對應(yīng)的代理配置。如果客戶機(jī)問候消息中的服務(wù)器名稱與對應(yīng)于該IP地址-端口元組的代理配置中的任何虛擬服務(wù)器名稱都不匹配,則月艮務(wù)器側(cè)中間裝置200b可以選擇在該列表中的第一配置。
如果所選擇的SSL代理配置的代理類型為欺騙,則服務(wù)器側(cè)中間裝置200b可以將所緩沖的客戶機(jī)問候消息轉(zhuǎn)發(fā)到服務(wù)器。如果所選擇的SSL代理配置的代理類型為分離,則服務(wù)器側(cè)中間裝置200b可以向服務(wù)器106發(fā)送新的客戶機(jī)問候消息。服務(wù)器側(cè)中間裝置200b還可以向客戶機(jī)102發(fā)送代理問候消息,以及客戶機(jī)側(cè)配置數(shù)據(jù)(即配置信息566),以用于客戶機(jī)代理設(shè)置。在(503)的進(jìn)一步細(xì)節(jié)中,服務(wù)器側(cè)中間裝置與服務(wù)器建立服務(wù)器側(cè)SSL會話。服務(wù)器側(cè)中間裝置可以通過發(fā)起與服務(wù)器106的SSL握手來建立服務(wù)器側(cè)SSL會話。在一些實(shí)施例中,響應(yīng)于SSL代理握手的完成,發(fā)起SSL握手。在一些實(shí)施例中,響應(yīng)于確定代理類型來發(fā)起SSL握手??梢栽诖_定代理類型之前發(fā)起SSL握手并且在確定代理類型之后建立SSL連接。在一些實(shí)施例中,可以在確定代理類型之后發(fā)起SSL握手。在服務(wù)器側(cè)的SSL握手和/或SSL會話的建立可以包括根據(jù)所確定的代理類型的服務(wù)器代理設(shè)置。在某些實(shí)施例中,服務(wù)器代理設(shè)置是由服務(wù)器中間裝置200b啟動的、相對于SSL握手和/或SSL會話建立獨(dú)立的步驟或過程。
在一些實(shí)施例中,可以在確定代理類型之前發(fā)起SSL握手??梢越?jīng)由上文結(jié)合圖4A-4D和5C所述的方法和系統(tǒng)的任一實(shí)施例來發(fā)起和/或處理在服務(wù)器側(cè)的SSL握手和/或SSL會話建立。例如,且在一個實(shí)施例中,客戶機(jī)側(cè)中間裝置200a向服務(wù)器側(cè)中間裝置200b傳輸來自客戶機(jī)102的、與服務(wù)器106建立傳輸層連接的請求。客戶機(jī)側(cè)中間裝置可以修改該請求以指示服務(wù)器側(cè)中間裝置200b執(zhí)行安全套接字層(SSL)建立和/或加速。響應(yīng)于接收所修改的請求,服務(wù)器側(cè)中間裝置200b可以啟動服務(wù)器側(cè)SSL握手和/或SSL會話建立。如上文結(jié)合圖1A-1C、2A、3和4A-4D所述的,可以通過中間裝置(例如分組引擎)、客戶機(jī)(例如客戶機(jī)代理)和/或服務(wù)器106 (例如應(yīng)用傳送系統(tǒng))的一個或多個組件來啟動SSL握手、代理設(shè)置和/或SSL會話的建立。服務(wù)器側(cè)中間裝置200b可以響應(yīng)于確定代理類型來啟動服務(wù)器106的SSL代理設(shè)置。服務(wù)器側(cè)中間裝置200b可以相對于客戶機(jī)102的SSL代理設(shè)置獨(dú)立地或異步地啟動服務(wù)器106的SSL代理設(shè)置。在一些實(shí)施例中,服務(wù)器側(cè)中間裝置200b可以相對于客戶機(jī)102的SSL代理設(shè)置以協(xié)同的方式來啟動服務(wù)器106的SSL代理設(shè)置。服務(wù)器側(cè)中間裝置200b可以響應(yīng)于檢索、識別、協(xié)商或確定代理類型來啟動服務(wù)器106的SSL代理設(shè)置。服務(wù)器側(cè)中間裝置200b可以響應(yīng)于來自代理配置表格的指示(例如,根據(jù)對配置的匹配操作)來啟動服務(wù)器106的SSL代理設(shè)置。服務(wù)器側(cè)中間裝置200b可以根據(jù)代理類型(即分離或欺騙)來啟動服務(wù)器106的SSL代理設(shè)置。如果代理類型被識別為分離代理,則服務(wù)器側(cè)中間裝置200b可以在服務(wù)器側(cè)建立SSL會話或連接。如果代理類型被識別為欺騙代理,則服務(wù)器側(cè)中間裝置200b可以建立與客戶機(jī)側(cè)共享的SSL會話或連接。如果代理類型被識別為欺騙代理,則服務(wù)器側(cè)中間裝置200b和/或客戶機(jī)側(cè)中間裝置200a可以在客戶機(jī)102和服務(wù)器106之間建立單個SSL會話或連接。SSL會話可以包括或表示一個或多個SSL連接。SSL握手、會話建立和/或代理設(shè)置過程可以包括交換和/或驗(yàn)證證書和加密(例如,密鑰和密碼)信息。在結(jié)合圖5C、5E、5F和5G描述的示例過程中描述了這些操作的各種實(shí)施例。例如,在服務(wù)器側(cè)中間裝置200b和服務(wù)器106之間可以改變或更新密碼規(guī)范。在服務(wù)器側(cè)的SSL會話或連接可以獨(dú)立于任何客戶機(jī)側(cè)會話或連接而存在。服務(wù)器側(cè)中間裝置200b可以在服務(wù)器側(cè)建立與相對于客戶機(jī)側(cè)SSL會話不同組的加密密鑰和/或密碼關(guān)聯(lián)的SSL會話。例如,如結(jié)合圖5A-5C所述的,服務(wù)器側(cè)中間裝置200b可以與服務(wù)器106協(xié)商和/或共享用于在服務(wù)器側(cè)SSL會話中使用的一組加密密鑰和/或密碼。在一些實(shí)施例中,服務(wù)器側(cè)中間裝置200b可以與另一個SSL會話,例如在中間裝置200a、200b之間的SSL會話,來共享該組加密密鑰和/或密碼。服務(wù)器側(cè)中間裝置200b可以響應(yīng)于例如經(jīng)由管理員干預(yù)的對分離代理設(shè)置的修改來與另一個SSL會話共享該組加密密鑰和/或密碼。在一些實(shí)施例中,服務(wù)器側(cè)中間裝置200b可以在服務(wù)器側(cè)建立包含一個或多個中間裝置200的SSL會話。例如,且在一個實(shí)施例中,服務(wù)器側(cè)中間裝置200b可以跨越如圖5B所示的服務(wù)器106和中間裝置200c、200b來建立與單組加密密鑰和/或密碼關(guān)聯(lián)的SSL會話。在(505)的進(jìn)一步細(xì)節(jié)中,客戶機(jī)側(cè)中間裝置200a使用從服務(wù)器側(cè)中間裝置接收的SSL配置信息與客戶機(jī)102建立客戶機(jī)側(cè)SSL會話??蛻魴C(jī)側(cè)中間裝置200a可以與一個或多個客戶機(jī)通信??蛻魴C(jī)側(cè)中間裝置200a和服務(wù)器側(cè)中間裝置200b可以經(jīng)由另一個(例如,第三)SSL會話進(jìn)行通信??蛻魴C(jī)側(cè)中間裝置200a可以根據(jù)適用于客戶機(jī)側(cè)的、如上文結(jié)合(503)所述的服務(wù)器側(cè)方法的實(shí)施例來在客戶機(jī)側(cè)發(fā)起SSL握手和或建立SSL會 話。在一些實(shí)施例中,客戶機(jī)側(cè)SSL握手和/或會話建立可以與服務(wù)器側(cè)SSL握手和/或會話建立并行地進(jìn)行??梢皂憫?yīng)于服務(wù)器側(cè)SSL握手和/或會話建立來進(jìn)行客戶機(jī)側(cè)SSL握手和/或會話建立??梢栽诜?wù)器側(cè)SSL握手和/或會話建立之前或之后來進(jìn)行客戶機(jī)側(cè)SSL握手和/或會話建立。在一些實(shí)施例中,例如,因?yàn)榉?wù)器側(cè)中間裝置200b在客戶機(jī)側(cè)中間裝置200a之前知道了 SSL配置(例如,代理類型),所以服務(wù)器側(cè)SSL握手和/或會話建立可以較早地進(jìn)行。服務(wù)器側(cè)中間裝置200b可以向CSI發(fā)送或傳輸配置信息566。在一些實(shí)施例中,客戶機(jī)側(cè)中間裝置200a可有限地訪問或無法訪問用于SSL代理設(shè)置的配置信息566。客戶機(jī)側(cè)中間裝置200a可以要求服務(wù)器側(cè)中間裝置200b提供配置信息566中的一些或全部??蛻魴C(jī)側(cè)中間裝置200a可以請求服務(wù)器側(cè)中間裝置200b提供配置信息566中的一些或全部。服務(wù)器側(cè)中間裝置200b可以響應(yīng)于來自客戶機(jī)的SSL客戶機(jī)問候消息經(jīng)由CSI發(fā)送配置信息566。服務(wù)器側(cè)中間裝置200b可以響應(yīng)于識別、協(xié)商和/或確定該配置信息566來發(fā)送該配置信息566。服務(wù)器側(cè)中間裝置200b可以經(jīng)由任何方法并使用任何協(xié)議來向客戶機(jī)側(cè)中間裝置200a發(fā)送配置信息566。例如,服務(wù)器側(cè)中間裝置200b可以經(jīng)由在服務(wù)器側(cè)中間裝置200b和客戶機(jī)側(cè)中間裝置200a之間所建立的信令隧道和/或SSL會話來發(fā)送配置信息566。服務(wù)器側(cè)中間裝置200b可以經(jīng)由一個或多個分組來發(fā)送配置信息566,例如,經(jīng)由結(jié)合圖5F-5G所述的代理問候消息。例如,且在一個實(shí)施例中,服務(wù)器側(cè)中間裝置200b向客戶機(jī)側(cè)中間裝置200a傳輸識別用于客戶機(jī)側(cè)SSL代理的SSL配置的消息。在某些實(shí)施例中,服務(wù)器側(cè)中間裝置200b可以向客戶機(jī)側(cè)中間裝置200a發(fā)送配置(例如,代理類型)的標(biāo)識符和/或命令以便本地檢索配置信息566。舉例來說,且在一些實(shí)施例中,SSL代理握手確定將要設(shè)置分離代理。作為響應(yīng),服務(wù)器側(cè)中間裝置200b可以向客戶機(jī)側(cè)中間裝置200a傳輸執(zhí)行分離SSL代理的請求。服務(wù)器側(cè)中間裝置200b可以在代理問候消息中向客戶機(jī)側(cè)中間裝置200a發(fā)送分離代理指示。服務(wù)器側(cè)中間裝置還可以在代理問候消息中傳輸對應(yīng)于服務(wù)器的SSL配置信息566,以用于將客戶機(jī)側(cè)中間裝置200a配置為充當(dāng)分離代理。在一些實(shí)施例中,中間裝置200a、200b可以在代理問候消息中交換代理實(shí)例標(biāo)識符。這些代理實(shí)例標(biāo)識符對于中間裝置200a和200b可以是唯一的,并且可以用于通過信令隧道的通信以識別信令消息(例如代理問候消息)應(yīng)用的SSL連接(例如,客戶機(jī)側(cè)SSL會話)。在一些實(shí)施例中,服務(wù)器側(cè)中間裝置200b可以向服務(wù)器106發(fā)送新的客戶機(jī)問候消息。客戶機(jī)側(cè)中間裝置200a可以使用從服務(wù)器側(cè)中間裝置200b接收的配置數(shù)據(jù)566向客戶機(jī)102發(fā)送服務(wù)器問候、服務(wù)器證書和/或服務(wù)器問候結(jié)束消息。在一些實(shí)施例中,響應(yīng)于對客戶機(jī)102的服務(wù)器問候、服務(wù)器證書和/或服務(wù)器問候結(jié)束消息,可以進(jìn)行客戶機(jī)102和客戶機(jī)側(cè)中間裝置200a之間的SSL握手。在一些實(shí)施例中,響應(yīng)于對客戶機(jī)的服務(wù)器問候、服務(wù)器證書和/或服務(wù)器問候結(jié)束消息,可以進(jìn)行服務(wù)器側(cè)中間裝置200b和服務(wù)器106之間的SSL握手。在各個實(shí)施例中,客戶機(jī)102和客戶機(jī)側(cè)中間裝置200a之間的SSL握手,與在服務(wù)器側(cè)中間裝置200b和服務(wù)器106之間的SSL握手可以順序地或并行地進(jìn)行??蛻魴C(jī)102和客戶機(jī)側(cè)中間裝置200a之間的SSL握手,與在服務(wù)器側(cè)中間裝置200b和服務(wù)器之間的SSl握手可以異步地或根據(jù)某些預(yù)定事件和/或條件來進(jìn)行。在一些實(shí)施例中,客戶機(jī)側(cè)中間裝置200a可以向服務(wù)器側(cè)中間裝置200b傳輸對加密操作的請求。例如,在圖5F-5G中描述了這樣的請求??蛻魴C(jī)側(cè)中間裝置200a可以傳輸使用例如在服務(wù)器側(cè)中間裝置200b與客戶機(jī)側(cè)中間裝置IOOa之間協(xié)商的共享加密密鑰加密的請求??梢詫⒃摴蚕砻荑€分配給處理在中間裝置200a、200b之間的通信的SSL狀態(tài)機(jī)對??蛻魴C(jī)側(cè)中間裝置200a可以經(jīng)由在服務(wù)器側(cè)中間裝置200b和CSI之間的信令隧道和/或SSL會話來傳輸該請求。加密操作可以是任何類型,例如,如上文結(jié)合圖5A-5C所述的類型。服務(wù)器側(cè)中間裝置200b可以接收和識別所請求的加密操作。服務(wù)器側(cè)中間裝置200b可以代表客戶機(jī)側(cè)中間裝置200a執(zhí)行所請求的加密操作(例如,RSA簽名)。服務(wù)器側(cè)中間裝置200b可以向客戶機(jī)側(cè)中間裝置200a傳輸對該請求的響應(yīng)。在一些實(shí)施例中,加密服務(wù)的一些或全部僅在服務(wù)器側(cè)中間裝置200b上可用。因?yàn)榧用芊?wù)僅在服務(wù)器側(cè)中間裝置200b上可用,所以客戶機(jī)側(cè)中間裝置200a可以向服務(wù)·器側(cè)中間裝置200b傳輸對加密操作的請求??蛻魴C(jī)側(cè)中間裝置200a可以發(fā)送對任何加密操作(例如計(jì)算主秘密密鑰)的請求。如果第三SSL會話是新建立的SSL會話,則客戶機(jī)側(cè)中間裝置200a可以如上所述向服務(wù)器側(cè)中間裝置200b發(fā)送加密操作請求。服務(wù)器側(cè)中間裝置200b可以用加密結(jié)果消息來進(jìn)行響應(yīng)。如果第三SSL會話是經(jīng)由會話重用而建立的,則客戶機(jī)側(cè)中間裝置200a可以向服務(wù)器側(cè)中間裝置200b發(fā)送空加密操作請求消息以指示完成了(例如,用于建立第三SSL會話和/或協(xié)商主秘密密鑰或加密密鑰的)握手過程。在一些實(shí)施例中,響應(yīng)于該空請求,服務(wù)器側(cè)中間裝置200b將不發(fā)送加密結(jié)果消息。在(507)的進(jìn)一步細(xì)節(jié)中,服務(wù)器側(cè)中間裝置使用客戶機(jī)側(cè)SSL會話的會話密鑰對從所述服務(wù)器接收的加密的數(shù)據(jù)進(jìn)行解密。服務(wù)器側(cè)中間裝置200b和/或服務(wù)器106可以執(zhí)行與客戶機(jī)側(cè)SSL會話的會話密鑰關(guān)聯(lián)的任何類型的加密操作。在使用分離代理設(shè)置的實(shí)施例中,這個會話密鑰獨(dú)立于服務(wù)器側(cè)SSL會話(即不與服務(wù)器側(cè)SSL會話共享)。服務(wù)器106可以使用服務(wù)器側(cè)SSL會話的會話密鑰來加密或簽名用于向服務(wù)器側(cè)中間裝置200b傳輸?shù)臄?shù)據(jù)。服務(wù)器側(cè)中間裝置200b可以接收該加密的數(shù)據(jù),并且使用服務(wù)器側(cè)SSL會話的會話密鑰來解密或驗(yàn)證該數(shù)據(jù)。對于去往服務(wù)器的數(shù)據(jù),服務(wù)器側(cè)中間裝置200b可以使用服務(wù)器側(cè)SSL會話的會話密鑰加密或簽名用于向服務(wù)器106傳輸?shù)臄?shù)據(jù)。服務(wù)器106可以接收該加密的數(shù)據(jù),并且使用服務(wù)器側(cè)SSL會話的會話密鑰來解密或驗(yàn)證該數(shù)據(jù)。在使用欺騙代理設(shè)置的實(shí)施例中,可以跨越客戶機(jī)和服務(wù)器建立單個SSL會話并且對于客戶機(jī)側(cè)和服 務(wù)器側(cè)通信共享一個會話密鑰。服務(wù)器106可以使用該SSL會話的會話密鑰來加密或簽名用于向服務(wù)器側(cè)中間裝置200b傳輸?shù)臄?shù)據(jù)。服務(wù)器側(cè)中間裝置200b可以接收該加密的數(shù)據(jù),并且使用該SSL會話的會話密鑰來解密或驗(yàn)證該數(shù)據(jù)。對于去往服務(wù)器106的數(shù)據(jù),服務(wù)器側(cè)中間裝置200b可以使用該SSL會話的會話密鑰加密或簽名用于向服務(wù)器106傳輸?shù)臄?shù)據(jù)。服務(wù)器106可以接收該加密的數(shù)據(jù),并且使用該SSL會話的會話密鑰來解密或驗(yàn)證該數(shù)據(jù)。在一些實(shí)施例中,可以在中間裝置200a、200b之間協(xié)商一個或多個操作,例如數(shù)據(jù)加速、數(shù)據(jù)緩存和/或數(shù)據(jù)壓縮。在TCP握手期間,或者在TCP和/或SSL連接建立之后,可以協(xié)商一個或多個操作。除了加密操作之外,可以將這些操作應(yīng)用于數(shù)據(jù)分組。例如,且在一個實(shí)施例中,服務(wù)器側(cè)中間裝置200b可以在解密之后壓縮所接收的數(shù)據(jù)。服務(wù)器側(cè)中間裝置200b可以使用在SSI上存儲的壓縮歷史來壓縮所接收的數(shù)據(jù)。在一些實(shí)施例中,月艮務(wù)器側(cè)中間裝置200b可以使用壓縮歷史來實(shí)現(xiàn)數(shù)據(jù)緩存?zhèn)魉?。例如,如果壓縮歷史包括在服務(wù)器側(cè)中間裝置200b和客戶機(jī)側(cè)中間裝置200a兩處緩存的相同的數(shù)據(jù),則服務(wù)器側(cè)中間裝置200b可以傳輸該數(shù)據(jù)的標(biāo)識符以用于在客戶機(jī)側(cè)中間裝置200a處進(jìn)行本地檢索,而不是發(fā)送壓縮的數(shù)據(jù)。在某些實(shí)施例中,壓縮歷史可以記錄先前遇到的數(shù)據(jù)是如何被壓縮的(例如,壓縮技術(shù)),其可以被應(yīng)用于重復(fù)遇到的相同數(shù)據(jù)。在(509 )的進(jìn)一步細(xì)節(jié)中,服務(wù)器側(cè)中間裝置經(jīng)由第三SSL會話向客戶機(jī)側(cè)中間裝置傳輸使用第三SSL會話的會話密鑰加密的數(shù)據(jù)。該第三SSL會話被識別為在中間裝置200a、200b之間建立的SSL會話,并且相對于客戶機(jī)側(cè)和服務(wù)器側(cè)SSL會話沒有預(yù)期的時(shí)間上的關(guān)系。服務(wù)器側(cè)中間裝置200b可以在如上文結(jié)合(507)所述的解密和/或壓縮操作之后,或響應(yīng)于如上文結(jié)合(507 )所述的解密和/或壓縮操作,來加密該數(shù)據(jù)。服務(wù)器側(cè)中間裝置200b可以在向客戶機(jī)側(cè)中間裝置200a傳輸之前加密該數(shù)據(jù)。服務(wù)器側(cè)中間裝置200b可以在向客戶機(jī)側(cè)中間裝置200a傳輸之前壓縮該加密的數(shù)據(jù)。服務(wù)器側(cè)中間裝置200b可以使用第三SSL會話的會話密鑰加密該數(shù)據(jù)。服務(wù)器側(cè)中間裝置200b可以使用在中間裝置200a、200b之間協(xié)商的加密密鑰來加密該數(shù)據(jù)。服務(wù)器側(cè)中間裝置200b可以使用被分配給處理在中間裝置200a、200b之間的通信的SSL狀態(tài)機(jī)對的加密密鑰來加密該數(shù)據(jù)。在使用欺騙代理設(shè)置的實(shí)施例中,該加密密鑰可以不同于跨越客戶機(jī)102和服務(wù)器106建立的SSL會話的會話密鑰。在(511)的進(jìn)一步細(xì)節(jié)中,客戶機(jī)側(cè)中間裝置使用該第三SSL會話的會話密鑰對經(jīng)由第三SSL會話加密的數(shù)據(jù)進(jìn)行解密。客戶機(jī)側(cè)中間裝置可以使用在中間裝置200a、200b之間協(xié)商的加密密鑰來解密該數(shù)據(jù)??蛻魴C(jī)側(cè)中間裝置200a可以使用被分配給處理在中間裝置200a、200b之間的通信的SSL狀態(tài)機(jī)對的加密密鑰來解密該數(shù)據(jù)。除了加密/解密之外,中間裝置200a、200b可以使用特定的會話或加密密鑰例如經(jīng)由它們的HSM 520和/或密碼對在中間裝置200a、200b之間交換的數(shù)據(jù)執(zhí)行其他加密操作(例如,簽名和/或驗(yàn)證簽名)。在一些實(shí)施例中,可以執(zhí)行其他操作,例如數(shù)據(jù)加速、數(shù)據(jù)緩存和/或數(shù)據(jù)壓縮操作。例如,且在一個實(shí)施例中,客戶機(jī)側(cè)中間裝置200a可以使用在CSI上存儲的壓縮歷史對所接收的數(shù)據(jù)進(jìn)行解壓縮。在使用數(shù)據(jù)緩存的一些實(shí)施例中,服務(wù)器側(cè)中間裝置200b可以對包含數(shù)據(jù)的標(biāo)識符的消息進(jìn)行加密。服務(wù)器側(cè)中間裝置200b可以使用第三SSL會話的會話或加密密鑰來加密該消息。響應(yīng)于接收所加密的消息,客戶機(jī)側(cè)中間裝置200a可以使用第三SSL會話的會話或加密密鑰來解密該消息??蛻魴C(jī)側(cè)中間裝置200a可以使用由該消息傳送的標(biāo)識符從本地高速緩存存儲器檢索該數(shù)據(jù)。在一些實(shí)施例中,可以使用上文所述的壓縮和/或數(shù)據(jù)緩存技術(shù)來(例如,通過網(wǎng)絡(luò)優(yōu)化引擎250)實(shí)現(xiàn)中間裝置200a、200b之間的數(shù)據(jù)加速。在(513)的進(jìn)一步細(xì)節(jié)中,客戶機(jī)側(cè)中間裝置向客戶機(jī)傳輸使用服務(wù)器側(cè)SSL會話的會話密鑰加密的數(shù)據(jù)??蛻魴C(jī)側(cè)中間裝置200a可以加密和傳輸服務(wù)器側(cè)SSL會話內(nèi)的數(shù)據(jù),包含適用于服務(wù)器側(cè)SSL會話的、結(jié)合(509 )所述的方法的實(shí)施例。例如,客戶機(jī)側(cè)中間裝置200a可以在使用第三SSL會話的會話/加密密鑰解密從服務(wù)器側(cè)中間裝置200b接收的數(shù)據(jù)之后,使用客戶機(jī)側(cè)SSL會話的會話密鑰對其進(jìn)行加密。客戶機(jī)側(cè)中間裝置200a可以在向客戶機(jī)102進(jìn)行傳輸之前加密該數(shù)據(jù)。在使用欺騙代理設(shè)置的實(shí)施例中,客戶機(jī) 側(cè)中間裝置200a可以使用跨越客戶機(jī)102和服務(wù)器106建立的SSL會話的會話密鑰來加密該數(shù)據(jù)。盡管(507) - (513)總的描述了從服務(wù)器106到客戶機(jī)102的數(shù)據(jù)傳輸,但例如,如圖5F-5G所示的,可以將相同的方法和技術(shù)應(yīng)用于從客戶機(jī)到服務(wù)器的數(shù)據(jù)傳輸。此外,在(507)- (513)中描述的特定操作舉例說明了沿通信路徑的每個安全連接使用不同的會話或加密密鑰,并且因此可以將其他類型的加密操作應(yīng)用于某些實(shí)施例中。同樣地,如早前所討論的,本文描述的方法和系統(tǒng)可以被應(yīng)用于任何數(shù)量的中間裝置、中間的會話或連接,以及包括分離和欺騙代理的組合的任何設(shè)置。應(yīng)該理解,上述的系統(tǒng)可提供多個組件或每個組件并且這些組件可以在單獨(dú)機(jī)器上提供,或者在一些實(shí)施例中,可在分布式系統(tǒng)的多個機(jī)器上提供。此外,上述系統(tǒng)和方法可作為一件或多件產(chǎn)品上所體現(xiàn)的或在其中的一個或多個計(jì)算機(jī)可讀程序而被提供。所述產(chǎn)品可以是軟盤、硬盤、CD-ROM,閃存卡、PROM、RAM、ROM或磁帶。通常,計(jì)算機(jī)可讀程序可以任何編程語言來實(shí)現(xiàn),如LISP、PERL、C、C++、C#、PROLOG,或者諸如JAVA的任何字節(jié)碼語言。軟件程序可以作為目標(biāo)代碼被存儲在一件或多件產(chǎn)品上或其中雖然已經(jīng)參考特定實(shí)施例詳細(xì)地示出和描述了本發(fā)明,但是本領(lǐng)域的普通技術(shù)人員應(yīng)該理解在不脫離如所附權(quán)利要求限定的本發(fā)明的精神和保護(hù)范圍的情況下可以在形式上和細(xì)節(jié)上做出多種改變。
權(quán)利要求
1.一種用于跨越在客戶機(jī)和服務(wù)器之間部署的中間裝置分離代理安全套接字層 (SSL)通信的方法,所述方法包括a)由與服務(wù)器通信的第一中間裝置與服務(wù)器建立第一安全套接字層(SSL)會話;b)由與一個或多個客戶機(jī)通信的第二中間裝置使用從所述第一中間裝置接收的SSL 配置信息與客戶機(jī)建立第二安全套接字層(SSL)會話,所述第二中間裝置和所述第一中間裝置經(jīng)由第三SSL會話進(jìn)行通信;c)由所述第一中間裝置使用所述第一SSL會話的第一會話密鑰對從所述服務(wù)器接收的加密的數(shù)據(jù)進(jìn)行解密;d)由所述第一中間裝置經(jīng)由所述第三SSL會話向所述第二中間裝置傳輸使用所述第三SSL會話的第三會話密鑰加密的所述數(shù)據(jù);e)由所述第二中間裝置使用所述第三會話密鑰對經(jīng)由所述第三SSL會話加密的所述數(shù)據(jù)進(jìn)行解密;以及f)由所述第二中間裝置向所述客戶機(jī)傳輸使用所述第二SSL會話的第二會話密鑰加密的所述數(shù)據(jù)。
2.根據(jù)權(quán)利要求I所述的方法,其中步驟(a)還包括由所述第二中間裝置向所述第一中間裝置傳輸來自所述客戶機(jī)的與所述服務(wù)器建立傳輸層連接的請求,所述第一中間裝置修改所述請求以向所述第二中間裝置指示執(zhí)行安全套接字層(SSL)加速。
3.根據(jù)權(quán)利要求I所述的方法,其中步驟(b)還包括由所述第一中間裝置向所述第二中間裝置傳輸識別用于客戶機(jī)側(cè)SSL代理的SSL配置的消息。
4.根據(jù)權(quán)利要求3所述的方法,其中步驟(b)還包括由所述第二中間裝置使用從所述第一中間裝置接收的所述SLL配置向所述客戶機(jī)傳輸服務(wù)器問候、服務(wù)器證書以及服務(wù)器問候結(jié)束消息。
5.根據(jù)權(quán)利要求3所述的方法,其中步驟(b)還包括由所述第一中間裝置向所述第二中間裝置傳輸執(zhí)行分離SSL代理的請求。
6.根據(jù)權(quán)利要求I所述的方法,還包括由所述第二中間裝置向所述第一中間裝置傳輸對加密操作的請求。
7.根據(jù)權(quán)利要求6所述的方法,還包括由所述第一中間裝置代表所述第二中間裝置執(zhí)行所請求的加密操作,并且向所述第二中間裝置傳送對所述請求的響應(yīng)。
8.根據(jù)權(quán)利要求I所述的方法,其中步驟(c)還包括由所述第一中間裝置使用在所述第一中間裝置上存儲的壓縮歷史對所接收的數(shù)據(jù)進(jìn)行壓縮。
9.根據(jù)權(quán)利要求I所述的方法,其中步驟(e)還包括由所述第二中間裝置使用在所述第二中間裝置上存儲的所述壓縮歷史來對所接收的數(shù)據(jù)進(jìn)行解壓縮。
10.根據(jù)權(quán)利要求I所述的方法,還包括由所述第一中間裝置和所述第二中間裝置從由所述第一中間裝置和所述第二中間裝置中的每一個所維護(hù)的預(yù)先建立的SSL會話池中識別所述第三SSL會話。
11.一種用于跨越在客戶機(jī)和服務(wù)器之間部署的中間裝置分離代理安全套接字層 (SSL)通信的系統(tǒng),所述系統(tǒng)包括用于由與服務(wù)器通信的第一中間裝置與服務(wù)器建立第一安全套接字層(SSL)會話的裝用于由與一個或多個客戶機(jī)通信的第二中間裝置使用從所述第一中間裝置接收的SSL 配置信息與客戶機(jī)建立第二安全套接字層(SSL)會話的裝置,所述第二中間裝置和所述第一中間裝置經(jīng)由第三SSL會話進(jìn)行通信;用于由所述第一中間裝置使用所述第一 SSL會話的第一會話密鑰對從所述服務(wù)器接收的加密的數(shù)據(jù)進(jìn)行解密的裝置;用于由所述第一中間裝置經(jīng)由所述第三SSL會話向所述第二中間裝置傳輸使用所述第三SSL會話的第三會話密鑰加密的所述數(shù)據(jù)的裝置;用于由所述第二中間裝置使用所述第三會話密鑰對經(jīng)由所述第三SSL會話加密的所述數(shù)據(jù)進(jìn)行解密的裝置;以及用于由所述第二中間裝置向所述客戶機(jī)傳輸使用所述第二 SSL會話的第二會話密鑰加密的所述數(shù)據(jù)的裝置。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),還包括用于由所述第二中間裝置向所述第一中間裝置傳輸來自所述客戶機(jī)的、與所述服務(wù)器建立傳輸層連接的請求的裝置,所述第一中間裝置修改所述請求以向第二中間裝置指示執(zhí)行安全套接字層(SSL)加速。
13.根據(jù)權(quán)利要求11所述的系統(tǒng),還包括用于由所述第一中間裝置向所述第二中間裝置傳輸識別用于客戶機(jī)側(cè)SSL代理的SSL配置的消息的裝置。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),還包括用于由所述第二中間裝置使用從所述第一中間裝置接收的所述SSL配置向客戶機(jī)傳輸服務(wù)器問候、服務(wù)器證書以及服務(wù)器問候結(jié)束消息的裝置。
15.根據(jù)權(quán)利要求13所述的系統(tǒng),還包括用于由所述第一中間裝置向所述第二中間裝置傳輸執(zhí)行分離SSL代理的請求的裝置。
16.根據(jù)權(quán)利要求11所述的系統(tǒng),還包括用于由所述第二中間裝置向所述第一中間裝置傳輸對加密操作的請求的裝置。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),還包括用于由所述第一中間裝置代表所述第二中間裝置執(zhí)行所請求的加密操作,并且向所述第二中間裝置傳送對所述請求的響應(yīng)的裝置。
18.根據(jù)權(quán)利要求11所述的系統(tǒng),還包括用于由所述第一中間裝置使用在所述第一中間裝置上存儲的壓縮歷史對所接收的數(shù)據(jù)進(jìn)行壓縮的裝置。
19.根據(jù)權(quán)利要求11所述的系統(tǒng),還包括用于由所述第二中間裝置使用在所述第二中間裝置上存儲的所述壓縮歷史對所接收的數(shù)據(jù)進(jìn)行解壓縮的裝置。
20.根據(jù)權(quán)利要求11所述的系統(tǒng),還包括用于由所述第一中間裝置和所述第二中間裝置從由所述第一中間裝置和所述第二中間裝置中的每一個所維護(hù)的預(yù)先建立的SSL會話池中識別所述第三SSL會話的裝置。
全文摘要
本發(fā)明涉及用于跨越在客戶機(jī)和服務(wù)器之間部署的中間裝置分離代理安全套接字層(SSL)通信的系統(tǒng)和方法。該方法包括由服務(wù)器側(cè)中間裝置與服務(wù)器建立SSL會話??蛻魴C(jī)側(cè)中間裝置可以使用從服務(wù)器側(cè)中間裝置接收的SSL配置信息與客戶機(jī)建立第二SSL會話。這兩個中間裝置可以經(jīng)由第三SSL會話進(jìn)行通信。服務(wù)器側(cè)中間裝置可以使用第一SSL會話的會話密鑰對從服務(wù)器接收的數(shù)據(jù)進(jìn)行解密。服務(wù)器側(cè)中間裝置可以經(jīng)由第三SSL會話向客戶機(jī)側(cè)中間裝置傳輸使用第三SSL會話的會話密鑰加密的數(shù)據(jù)。客戶機(jī)側(cè)中間裝置可以使用第三SSL會話的會話密鑰對該加密的數(shù)據(jù)對進(jìn)行解密??蛻魴C(jī)側(cè)中間裝置可以向客戶機(jī)傳輸使用第二SSL會話的會話密鑰加密的數(shù)據(jù)。
文檔編號H04L29/06GK102948131SQ201180030493
公開日2013年2月27日 申請日期2011年4月15日 優(yōu)先權(quán)日2010年4月21日
發(fā)明者M·奧夫斯安尼科夫 申請人:思杰系統(tǒng)有限公司