專利名稱::用于多核虛擬分組引擎裝置中的半虛擬化驅(qū)動(dòng)程序的系統(tǒng)和方法
技術(shù)領(lǐng)域:
:本申請(qǐng)總的涉及多核裝置中的數(shù)據(jù)通信網(wǎng)絡(luò)。本申請(qǐng)尤其涉及用于在運(yùn)行多個(gè)虛擬化分組引擎的多核裝置中提供半虛擬化(para-virtualized)驅(qū)動(dòng)程序的系統(tǒng)和方法。
背景技術(shù):
:在多核系統(tǒng)中,任一核可以執(zhí)行相同功能或不同功能。多核系統(tǒng)可部署接收側(cè)調(diào)節(jié)器(scaler),例如微軟的接收側(cè)調(diào)節(jié)技術(shù),該接收側(cè)調(diào)節(jié)器用于將從網(wǎng)絡(luò)接口卡接收的分組分發(fā)到任一核以進(jìn)行處理。該接收側(cè)調(diào)節(jié)器可能不知道在任何核上執(zhí)行的功能。當(dāng)接收側(cè)調(diào)節(jié)器從網(wǎng)絡(luò)接口卡接收網(wǎng)絡(luò)分組時(shí),其基于預(yù)定功能將該網(wǎng)絡(luò)分組轉(zhuǎn)發(fā)到核。該網(wǎng)絡(luò)分組可以是某一上下文中的事務(wù)的一部分或一系列的多個(gè)網(wǎng)絡(luò)分組的部分。由于接收側(cè)調(diào)節(jié)器的分發(fā)功能,這些網(wǎng)絡(luò)分組中的一些可能去往不同的核。此外,可以在每個(gè)核上運(yùn)行虛擬化環(huán)境。這些虛擬化環(huán)境可共享物理網(wǎng)絡(luò)接口卡。這可能導(dǎo)致在基于上下文或數(shù)據(jù)流來(lái)處理和協(xié)調(diào)跨核及虛擬化環(huán)境的網(wǎng)絡(luò)分組時(shí)出現(xiàn)問(wèn)題。
發(fā)明內(nèi)容多核系統(tǒng)可平衡該多核系統(tǒng)中一個(gè)或多個(gè)核上的網(wǎng)絡(luò)流量。這些多核系統(tǒng)可包括任意數(shù)量的核或處理器。在一些實(shí)施例中,多核系統(tǒng)根據(jù)流分布模型來(lái)分發(fā)網(wǎng)絡(luò)流量,該流分布模型例如是功能并行性,其中將多核系統(tǒng)的每個(gè)核分配給不同的功能,或者是數(shù)據(jù)并行性,其中將多核系統(tǒng)中的每個(gè)核分配給不同的裝置或模塊。在一些實(shí)例中,在一個(gè)或多個(gè)核上分發(fā)網(wǎng)絡(luò)流量需要從網(wǎng)絡(luò)接口卡獲得網(wǎng)絡(luò)流量并且將該網(wǎng)絡(luò)流量存儲(chǔ)在所選擇的核上。很多網(wǎng)絡(luò)接口卡包括發(fā)送和接收隊(duì)列,其中,可以在將數(shù)據(jù)分組穿過(guò)內(nèi)部系統(tǒng)進(jìn)行轉(zhuǎn)發(fā)之前或者將數(shù)據(jù)分組通過(guò)網(wǎng)絡(luò)發(fā)送出去之前,在該發(fā)送和接收隊(duì)列中存儲(chǔ)該最新接收的數(shù)據(jù)分組。通常,核不與特定的網(wǎng)絡(luò)接口卡相關(guān)聯(lián),且因而核沒(méi)有訪問(wèn)通常包含在網(wǎng)絡(luò)接口卡中的發(fā)送和接收隊(duì)列的權(quán)限。相反地,在一些實(shí)施例中,多核系統(tǒng)中的每個(gè)核共享公用網(wǎng)絡(luò)接口卡。在一些情況下,核可以運(yùn)行虛擬化環(huán)境,其中在管理程序上操作分組引擎。每個(gè)核可通過(guò)管理程序來(lái)運(yùn)行客戶操作系統(tǒng),稱作域。該客戶操作系統(tǒng)可具有不同的特權(quán)。一個(gè)核可能具有直接訪問(wèn)裝置的硬件和驅(qū)動(dòng)程序(例如物理NIC卡)以及與裝置的硬件和驅(qū)動(dòng)程序直接相接的特權(quán)。該核可直接訪問(wèn)核共享的硬件的公用網(wǎng)絡(luò)接口和虛擬化環(huán)境。其他核可能不具有這樣的特權(quán),并且經(jīng)由管理程序的接口以及通過(guò)與具有訪問(wèn)NIC的特權(quán)的核進(jìn)行通信來(lái)訪問(wèn)NIC的網(wǎng)絡(luò)流量。在一些方面,本解決方案針對(duì)設(shè)計(jì)和實(shí)現(xiàn)半虛擬化網(wǎng)絡(luò)驅(qū)動(dòng)程序,用于處理在多核系統(tǒng)的相應(yīng)核上運(yùn)行的多個(gè)虛擬化分組處理引擎之間的網(wǎng)絡(luò)通信。運(yùn)行虛擬化環(huán)境的第一域的第一核從多核裝置的NIC接收分組。第一核的第一域可建立與第二核的第二域的通知通道。第一域?qū)⑦@些分組通過(guò)由管理程序的共享存儲(chǔ)接口提供的RX環(huán)發(fā)送到第二域。第一域經(jīng)由通知通道向第二域發(fā)送通知。第二域在網(wǎng)絡(luò)I/O處理期間可以檢查讀取和寫(xiě)入描述符之間的區(qū)別?;谠搮^(qū)別,第二域可從RX環(huán)讀取分組。第二域?qū)?lái)自RX環(huán)的這些分組轉(zhuǎn)換為由分組處理弓I擎處理的形式。第二域的分組處理引擎可具有經(jīng)由物理NIC發(fā)送的網(wǎng)絡(luò)分組。第二域可將網(wǎng)絡(luò)分組轉(zhuǎn)換為用于發(fā)送到存儲(chǔ)緩沖區(qū)的形式。第二域?qū)⑦@些存儲(chǔ)緩沖區(qū)存儲(chǔ)到共享TX環(huán)。第二域還向第一域發(fā)送通知,指示分組存儲(chǔ)到共享的TX環(huán)。在網(wǎng)絡(luò)I/O操作期間,第一域基于對(duì)共享環(huán)的讀取和寫(xiě)入描述符之間的區(qū)別從TX共享環(huán)讀取?;谠搮^(qū)別,第一域從共享TX環(huán)讀取存儲(chǔ)緩沖區(qū),將分組轉(zhuǎn)換為用于分組處理引擎經(jīng)由物理NIC發(fā)送的形式。接著將這些分組由第一域經(jīng)由物理NIC進(jìn)行發(fā)送。在一個(gè)方面,本解決方案涉及用于在多核裝置的網(wǎng)絡(luò)接口硬件和由多核裝置的一個(gè)或多個(gè)核執(zhí)行的多個(gè)虛擬化分組處理器之間傳遞分組的方法。在多核裝置上執(zhí)行的第一虛擬化域可經(jīng)由多核裝置的網(wǎng)絡(luò)接口硬件接收分組。第一虛擬化域可包括具有直接訪問(wèn)網(wǎng)絡(luò)接口硬件的權(quán)限的特權(quán)域。系統(tǒng)可將分組傳遞到虛擬化分組處理器的隊(duì)列。該虛擬化分組處理器可來(lái)自于多個(gè)虛擬化分組處理器并且在多核裝置的核上的第二虛擬化域中執(zhí)行。第二虛擬化域可來(lái)自于多個(gè)虛擬化域,該多個(gè)虛擬化域沒(méi)有直接訪問(wèn)網(wǎng)絡(luò)接口硬件的權(quán)限。虛擬化分組處理器可確定隊(duì)列包括從隊(duì)列讀取的多個(gè)分組和寫(xiě)入隊(duì)列的多個(gè)分組之間的區(qū)別。虛擬化分組處理器可響應(yīng)于該確定處理來(lái)自隊(duì)列的分組。在一些實(shí)施例中,系統(tǒng)可以在多核裝置的用戶存儲(chǔ)空間中執(zhí)行虛擬化分組處理器。系統(tǒng)可在多核裝置的內(nèi)核存儲(chǔ)空間中建立可由第一虛擬化域和第二虛擬化域訪問(wèn)的隊(duì)列。系統(tǒng)可以為多個(gè)虛擬化分組處理器的每一個(gè)分配多核裝置的內(nèi)核存儲(chǔ)空間中的相應(yīng)的隊(duì)列。第一虛擬化域可以在將分組傳遞到虛擬化分組處理器的隊(duì)列之前,將該分組發(fā)送到駐留在多核裝置的內(nèi)核空間中的共享隊(duì)列中。虛擬化分組處理器可響應(yīng)于識(shí)別從隊(duì)列讀取的分組數(shù)量和寫(xiě)入隊(duì)列的分組數(shù)量之間的區(qū)別來(lái)生成系統(tǒng)調(diào)用或管理程序調(diào)用,從而將分組從隊(duì)列傳輸?shù)降诙摂M化域。在某些實(shí)施例中,系統(tǒng)將分組從隊(duì)列中的第一格式轉(zhuǎn)換為第二格式,用于由虛擬化分組處理器進(jìn)行處理。系統(tǒng)可將多個(gè)分組從隊(duì)列傳輸?shù)今v留在用戶存儲(chǔ)空間中的虛擬化分組處理器的接收隊(duì)列。系統(tǒng)可將分組從內(nèi)核存儲(chǔ)空間中的隊(duì)列傳遞到多核裝置的用戶存儲(chǔ)空間中的第二虛擬化域的接收隊(duì)列。在一些實(shí)施例中,系統(tǒng)可以在第一虛擬化域中執(zhí)行驅(qū)動(dòng)程序的第一部分,用于從網(wǎng)絡(luò)接口硬件接收分組;并且在第二虛擬化域中執(zhí)行驅(qū)動(dòng)程序的第二部分,用于從隊(duì)列接收分組。在一個(gè)方面,本解決方案涉及用于在多核裝置的網(wǎng)絡(luò)接口硬件和由多核裝置的一個(gè)或多個(gè)核執(zhí)行的多個(gè)虛擬化分組處理器之間傳遞分組的方法。在多核裝置的核上的第一虛擬化域中執(zhí)行的虛擬化分組處理器可將分組緩沖到第一虛擬化域的發(fā)送隊(duì)列。第一虛擬化域可來(lái)自于沒(méi)有直接訪問(wèn)多核裝置的網(wǎng)絡(luò)接口硬件的權(quán)限的多個(gè)虛擬化域。虛擬化分組處理器可確定發(fā)送隊(duì)列具有要發(fā)送的一個(gè)或多個(gè)分組。系統(tǒng)可響應(yīng)于該確定,將一個(gè)或多個(gè)分組從發(fā)送隊(duì)列發(fā)送到駐留在多核裝置的內(nèi)核存儲(chǔ)空間上的、可由第二虛擬化域訪問(wèn)的共享隊(duì)列。第二虛擬化域可包括具有直接訪問(wèn)網(wǎng)絡(luò)接口硬件的權(quán)限的特權(quán)域。第二虛擬化域可響應(yīng)于來(lái)自第一虛擬化域的通知訪問(wèn)共享隊(duì)列中的一個(gè)或多個(gè)分組,該一個(gè)或多個(gè)分組用于經(jīng)由網(wǎng)絡(luò)接口硬件發(fā)送到網(wǎng)絡(luò)。在一些實(shí)施例中,共享隊(duì)列可駐留在管理程序的內(nèi)核空間中,該管理程序提供第一和第二虛擬化域。系統(tǒng)可以在多核裝置的內(nèi)核空間中建立可由第一虛擬化域訪問(wèn)的共享隊(duì)列。虛擬化分組處理器可響應(yīng)于將一個(gè)或多個(gè)分組緩沖到發(fā)送隊(duì)列上來(lái)生成系統(tǒng)調(diào)用,以發(fā)起發(fā)送隊(duì)列上一個(gè)或多個(gè)分組到內(nèi)核存儲(chǔ)空間中的共享隊(duì)列的傳遞。在某些實(shí)施例中,虛擬化分組處理器可在內(nèi)核存儲(chǔ)空間中生成管理程序調(diào)用以發(fā)起發(fā)送隊(duì)列上的一個(gè)或多個(gè)分組到內(nèi)核存儲(chǔ)空間中的共享隊(duì)列的傳遞。系統(tǒng)可以在將分組緩沖到發(fā)送隊(duì)列之前,將分組從與虛擬化分組處理器關(guān)聯(lián)的第一格式轉(zhuǎn)換為第二格式。系統(tǒng)可在第一虛擬化域中執(zhí)行驅(qū)動(dòng)程序的第一部分,以將分組緩沖到發(fā)送隊(duì)列中,并且在第二虛擬化域中執(zhí)行驅(qū)動(dòng)程序的第二部分,以訪問(wèn)共享隊(duì)列中的分組。在附圖和下文的描述中詳細(xì)闡述本發(fā)明的各種實(shí)施例的細(xì)節(jié)。此處所述的方法和系統(tǒng)的前述和其它目的、方面、特征和優(yōu)點(diǎn)通過(guò)參考下述結(jié)合附圖的細(xì)節(jié)描述將會(huì)更加明顯并更易于理解,其中:圖1A是客戶機(jī)經(jīng)由設(shè)備訪問(wèn)服務(wù)器的網(wǎng)絡(luò)環(huán)境的實(shí)施例的框圖;圖1B是通過(guò)設(shè)備從服務(wù)器傳送計(jì)算環(huán)境到客戶機(jī)的環(huán)境的實(shí)施例的框圖;圖1C是經(jīng)由設(shè)備從服務(wù)器傳送計(jì)算環(huán)境到客戶機(jī)的環(huán)境的另一個(gè)實(shí)施例的框圖;圖1D是通過(guò)設(shè)備從服務(wù)器傳送計(jì)算環(huán)境到客戶機(jī)的環(huán)境的另一個(gè)實(shí)施例的框圖;圖1E-1H是計(jì)算裝置的實(shí)施例的框圖;圖2A是用于處理客戶機(jī)和服務(wù)器之間的通信的設(shè)備的實(shí)施例的框圖;圖2B是用于優(yōu)化、加速、負(fù)載平衡和路由客戶端和服務(wù)器之間的通信的設(shè)備的另一個(gè)實(shí)施例的框圖;圖3是用于經(jīng)由設(shè)備與服務(wù)器通信的客戶機(jī)的實(shí)施例的框圖;圖4A是虛擬化環(huán)境的實(shí)施例的框圖;圖4B是虛擬化環(huán)境的另一個(gè)實(shí)施例的框圖;圖4C是虛擬化設(shè)備的實(shí)施例的框圖;圖5A是在多核系統(tǒng)中實(shí)現(xiàn)并行的方法實(shí)施例的框圖;圖5B是使用多核系統(tǒng)的系統(tǒng)的實(shí)施例的框圖;圖5C是多核系統(tǒng)的一個(gè)方面的另一個(gè)實(shí)施例的框圖;圖6是多核系統(tǒng)的實(shí)施例的框圖;圖7A-7D是用于在多核系統(tǒng)中跨邏輯隊(duì)列分發(fā)數(shù)據(jù)分組的方法的實(shí)施例的流程圖8是用于基于哈??缍嗪讼到y(tǒng)分發(fā)數(shù)據(jù)分組的方法的實(shí)施例的流程圖;圖9是用于經(jīng)由核到核的信息傳送跨多核系統(tǒng)分發(fā)數(shù)據(jù)分組的方法的實(shí)施例的流程圖;圖10是用于發(fā)送存儲(chǔ)在多核系統(tǒng)中的核上的邏輯發(fā)送隊(duì)列中的數(shù)據(jù)分組的方法的實(shí)施例的流程圖;圖11是用于將數(shù)據(jù)分組分發(fā)到多核系統(tǒng)中的核上的邏輯接收隊(duì)列的方法的實(shí)施例的流程圖;圖12A是在系統(tǒng)的實(shí)施例中的半虛擬化驅(qū)動(dòng)程序的實(shí)施例的框圖;圖12B是在多核系統(tǒng)的實(shí)施例中的半虛擬化驅(qū)動(dòng)程序的實(shí)施例的框圖;圖12C是用于在多核裝置的網(wǎng)絡(luò)接口硬件和虛擬化分組處理器之間傳遞分組的方法的實(shí)施例的流程圖;以及圖12D是用于在多核裝置的網(wǎng)絡(luò)接口硬件和虛擬化分組處理器之間傳遞分組的方法的另一個(gè)實(shí)施例的流程圖。從下面結(jié)合附圖所提出的詳細(xì)描述,此處所述方法和系統(tǒng)的特征和優(yōu)點(diǎn)將更明顯,其中,相同的參考標(biāo)記在全文中表示相應(yīng)的元件。在附圖中,同樣的附圖標(biāo)記通常表示相同的、功能上相似的和/或結(jié)構(gòu)上相似的元素。具體實(shí)施例方式為了閱讀下文各種實(shí)施例的描述,下述對(duì)于說(shuō)明書(shū)的部分以及它們各自內(nèi)容的描述是有用的:-A部分描述有益于實(shí)施本文描述的實(shí)施例的網(wǎng)絡(luò)環(huán)境和計(jì)算環(huán)境;-B部分描述用于將計(jì)算環(huán)境傳送到遠(yuǎn)程用戶的系統(tǒng)和方法的實(shí)施例;-C部分描述用于加速客戶機(jī)和服務(wù)器間通信的系統(tǒng)和方法的實(shí)施例;-D部分描述用于對(duì)應(yīng)用傳送控制器進(jìn)行虛擬化的系統(tǒng)和方法的實(shí)施例?!狤部分描述用于提供多核架構(gòu)和環(huán)境的系統(tǒng)和方法的實(shí)施例;-F部分描述用于跨多核架構(gòu)和環(huán)境分發(fā)數(shù)據(jù)分組的系統(tǒng)和方法的實(shí)施例;以及-G部分描述用于半虛擬化驅(qū)動(dòng)程序的系統(tǒng)和方法的實(shí)施例。A.網(wǎng)絡(luò)和計(jì)算環(huán)塏在討論設(shè)備和/或客戶機(jī)的系統(tǒng)和方法的實(shí)施例的細(xì)節(jié)之前,討論可在其中部署這些實(shí)施例的網(wǎng)絡(luò)和計(jì)算環(huán)境是有幫助的。現(xiàn)在參見(jiàn)圖1A,描述了網(wǎng)絡(luò)環(huán)境的實(shí)施例。概括來(lái)講,網(wǎng)絡(luò)環(huán)境包括經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)104、104’(總的稱為網(wǎng)絡(luò)104)與一個(gè)或多個(gè)服務(wù)器106a—106η(同樣總的稱為服務(wù)器106,或遠(yuǎn)程機(jī)器106)通信的一個(gè)或多個(gè)客戶機(jī)102a-102η(同樣總的稱為本地機(jī)器102,或客戶機(jī)102)。在一些實(shí)施例中,客戶機(jī)102通過(guò)設(shè)備200與服務(wù)器106通信。雖然圖1A示出了在客戶機(jī)102和服務(wù)器106之間的網(wǎng)絡(luò)104和網(wǎng)絡(luò)104’,客戶機(jī)102和服務(wù)器106可以位于同一個(gè)的網(wǎng)絡(luò)104上。網(wǎng)絡(luò)104和104’可以是相同類型的網(wǎng)絡(luò)或不同類型的網(wǎng)絡(luò)。網(wǎng)絡(luò)104和/或104’可為局域網(wǎng)(LAN)例如公司內(nèi)網(wǎng),城域網(wǎng)(MAN),或者廣域網(wǎng)(WAN)例如因特網(wǎng)或萬(wàn)維網(wǎng)。在一個(gè)實(shí)施例中,網(wǎng)絡(luò)104可為專用網(wǎng)絡(luò)并且網(wǎng)絡(luò)104’可為公網(wǎng)。在一些實(shí)施例中,網(wǎng)絡(luò)104可為專用網(wǎng)并且網(wǎng)絡(luò)104’可為公網(wǎng)。在又一個(gè)實(shí)施例中,網(wǎng)絡(luò)104和104’可都為專用網(wǎng)。在一些實(shí)施例中,客戶機(jī)102可位于公司企業(yè)的分支機(jī)構(gòu)中,通過(guò)網(wǎng)絡(luò)104上的WAN連接與位于公司數(shù)據(jù)中心的服務(wù)器106通信。網(wǎng)絡(luò)104和/或104’可以是任何類型和/或形式的網(wǎng)絡(luò),并且可包括任何下述網(wǎng)絡(luò):點(diǎn)對(duì)點(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ú)線網(wǎng)絡(luò)和有線網(wǎng)絡(luò)。在一些實(shí)施例中,網(wǎng)絡(luò)104可以包括無(wú)線鏈路,諸如紅外信道或者衛(wèi)星頻帶。網(wǎng)絡(luò)104和/或104’的拓?fù)淇蔀榭偩€型、星型或環(huán)型網(wǎng)絡(luò)拓?fù)?。網(wǎng)絡(luò)104和/或104’以及網(wǎng)絡(luò)拓?fù)淇梢允菍?duì)于本領(lǐng)域普通技術(shù)人員所熟知的、可以支持此處描述的操作的任何這樣的網(wǎng)絡(luò)或網(wǎng)絡(luò)拓?fù)?。如圖1A所示,設(shè)備200被顯示在網(wǎng)絡(luò)104和104’之間,設(shè)備200也可被稱為接口單元200或者網(wǎng)關(guān)200。在一些實(shí)施例中,設(shè)備200可位于網(wǎng)絡(luò)104上。例如,公司的分支機(jī)構(gòu)可在分支機(jī)構(gòu)中部署設(shè)備200。在其他實(shí)施例中,設(shè)備200可以位于網(wǎng)絡(luò)104’上。例如,設(shè)備200可位于公司的數(shù)據(jù)中心。在又一個(gè)實(shí)施例中,多個(gè)設(shè)備200可在網(wǎng)絡(luò)104上部署。在一些實(shí)施例中,多個(gè)設(shè)備200可部署在網(wǎng)絡(luò)104’上。在一個(gè)實(shí)施例中,第一設(shè)備200與第二設(shè)備200’通信。在其他實(shí)施例中,設(shè)備200可為位于與客戶機(jī)102同一或不同網(wǎng)絡(luò)104、104’的任一客戶機(jī)102或服務(wù)器106的一部分。一個(gè)或多個(gè)設(shè)備200可位于客戶機(jī)102和服務(wù)器106之間的網(wǎng)絡(luò)或網(wǎng)絡(luò)通信路徑中的任一點(diǎn)。在一些實(shí)施例中,設(shè)備200包括由位于佛羅里達(dá)州Ft.Lauderdale的CitrixSystems公司制造的被稱為CitrixNetScaler設(shè)備的任何網(wǎng)絡(luò)設(shè)備。在其他實(shí)施例中,設(shè)備200包括由位于華盛頓州西雅圖的F5Networks公司制造的被稱為WebAccelerator和BigIP的任何一個(gè)產(chǎn)品實(shí)施例。在又一個(gè)實(shí)施例中,設(shè)備205包括由位于加利福尼亞州Sunnyvale的JuniperNetworks公司制造的DX加速設(shè)備平臺(tái)和/或諸如SA700、SA2000、SA4000和SA6000的SSLVPN系列設(shè)備中的任何一個(gè)。在又一個(gè)實(shí)施例中,設(shè)備200包括由位于加利福尼亞州SanJose的CiscoSystems公司制造的任何應(yīng)用加速和/或安全相關(guān)的設(shè)備和/或軟件,例如CiscoACE應(yīng)用控制引擎模塊服務(wù)(ApplicationControlEngineModuleservice)軟件和網(wǎng)絡(luò)模塊以及CiscoAVS系列應(yīng)用速度系統(tǒng)(ApplicationVelocitySystem)。在一個(gè)實(shí)施例中,系統(tǒng)可包括多個(gè)邏輯分組的服務(wù)器106。在這些實(shí)施例中,服務(wù)器的邏輯分組可以被稱為服務(wù)器群38。在其中一些實(shí)施例中,服務(wù)器106可為地理上分散的。在一些情況中,群38可以作為單個(gè)實(shí)體被管理。在其他實(shí)施例中,服務(wù)器群38包括多個(gè)服務(wù)器群38。在一個(gè)實(shí)施例中,服務(wù)器群代表一個(gè)或多個(gè)客戶機(jī)102執(zhí)行一個(gè)或多個(gè)應(yīng)用程序。在每個(gè)群38中的服務(wù)器106可為不同種類。一個(gè)或多個(gè)服務(wù)器106可根據(jù)一種類型的操作系統(tǒng)平臺(tái)(例如,由華盛頓州Redmond的Microsoft公司制造的WINDOWSNT)操作,而一個(gè)或多個(gè)其它服務(wù)器106可根據(jù)另一類型的操作系統(tǒng)平臺(tái)(例如,Unix或Linux)操作。每個(gè)群38的服務(wù)器106不需要與同一群38內(nèi)的另一個(gè)服務(wù)器106物理上接近。因此,被邏輯分組為群38的服務(wù)器106組可使用廣域網(wǎng)(WAN)連接或城域網(wǎng)(MAN)連接互聯(lián)。例如,群38可包括物理上位于不同大陸或大陸的不同區(qū)域、國(guó)家、州、城市、校園或房間的服務(wù)器106。如果使用局域網(wǎng)(LAN)連接或一些直連形式來(lái)連接服務(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ù)器工作的能力。在一個(gè)實(shí)施例中,服務(wù)器106可包括活動(dòng)目錄??蛻魴C(jī)102也可稱為客戶端節(jié)點(diǎn)或端點(diǎn)。在一些實(shí)施例中,客戶機(jī)102可以有作為客戶機(jī)節(jié)點(diǎn)尋求訪問(wèn)服務(wù)器上的應(yīng)用的能力,也可以有作為應(yīng)用服務(wù)器為其它客戶機(jī)102a-102n提供對(duì)寄載的應(yīng)用的訪問(wèn)的能力。在一些實(shí)施例中,客戶機(jī)102與服務(wù)器106通信。在一個(gè)實(shí)施例中,客戶機(jī)102與群38中的服務(wù)器106的其中一個(gè)直接通信。在又一個(gè)實(shí)施例中,客戶機(jī)102執(zhí)行程序鄰近應(yīng)用(programneighborhoodapplication)以與群38內(nèi)的服務(wù)器106通信。在又一個(gè)實(shí)施例中,服務(wù)器106提供主節(jié)點(diǎn)的功能。在一些實(shí)施例中,客戶機(jī)102通過(guò)網(wǎng)絡(luò)104與群38中的服務(wù)器106通信。通過(guò)網(wǎng)絡(luò)104,客戶機(jī)102例如可以請(qǐng)求執(zhí)行群38中的服務(wù)器106a-106n寄載的各種應(yīng)用,并接收應(yīng)用執(zhí)行結(jié)果的輸出進(jìn)行顯示。在一些實(shí)施例中,只有主節(jié)點(diǎn)提供識(shí)別和提供與寄載所請(qǐng)求的應(yīng)用的服務(wù)器106’相關(guān)的地址信息所需的功能。在一個(gè)實(shí)施例中,服務(wù)器106提供web服務(wù)器的功能。在又一個(gè)實(shí)施例中,服務(wù)器106a接收來(lái)自客戶機(jī)102的請(qǐng)求,將該請(qǐng)求轉(zhuǎn)發(fā)到第二服務(wù)器106b,并使用來(lái)自服務(wù)器106b對(duì)該請(qǐng)求的響應(yīng)來(lái)對(duì)客戶機(jī)102的請(qǐng)求進(jìn)行響應(yīng)。在又一個(gè)實(shí)施例中,服務(wù)器106獲得客戶機(jī)102可用的應(yīng)用的列舉以及與由該應(yīng)用的列舉所識(shí)別的應(yīng)用的服務(wù)器106相關(guān)的地址信息。在又一個(gè)實(shí)施例中,服務(wù)器106使用web接口將對(duì)請(qǐng)求的響應(yīng)提供給客戶機(jī)102。在一個(gè)實(shí)施例中,客戶機(jī)102直接與服務(wù)器106通信以訪問(wèn)所識(shí)別的應(yīng)用。在又一個(gè)實(shí)施例中,客戶機(jī)102接收由執(zhí)行服務(wù)器106上所識(shí)別的應(yīng)用而產(chǎn)生的諸如顯示數(shù)據(jù)的應(yīng)用輸出數(shù)據(jù)?,F(xiàn)參考圖1B,描述了部署多個(gè)設(shè)備200的網(wǎng)絡(luò)環(huán)境的實(shí)施例。第一設(shè)備200可以部署在第一網(wǎng)絡(luò)104上,而第二設(shè)備200’部署在第二網(wǎng)絡(luò)104’上。例如,公司可以在分支機(jī)構(gòu)部署第一設(shè)備200,而在數(shù)據(jù)中心部署第二設(shè)備200’。在又一個(gè)實(shí)施例中,第一設(shè)備200和第二設(shè)備200’被部署在同一個(gè)網(wǎng)絡(luò)104或網(wǎng)絡(luò)104上。例如,第一設(shè)備200可以被部署用于第一服務(wù)器群38,而第二設(shè)備200可以被部署用于第二服務(wù)器群38’。在另一個(gè)實(shí)例中,第一設(shè)備200可以被部署在第一分支機(jī)構(gòu),而第二設(shè)備200’被部署在第二分支機(jī)構(gòu)’。在一些實(shí)施例中,第一設(shè)備200和第二設(shè)備200’彼此協(xié)同或聯(lián)合工作,以加速客戶機(jī)和服務(wù)器之間的網(wǎng)絡(luò)流量或應(yīng)用和數(shù)據(jù)的傳送。現(xiàn)參考圖1C,描述了網(wǎng)絡(luò)環(huán)境的又一個(gè)實(shí)施例,在該網(wǎng)絡(luò)環(huán)境中,將設(shè)備200和一個(gè)或多個(gè)其它類型的設(shè)備部署在一起,例如,部署在一個(gè)或多個(gè)WAN優(yōu)化設(shè)備205,205’之間。例如,第一WAN優(yōu)化設(shè)備205顯示在網(wǎng)絡(luò)104和104’之間,而第二WAN優(yōu)化設(shè)備205’可以部署在設(shè)備200和一個(gè)或多個(gè)服務(wù)器106之間。例如,公司可以在分支機(jī)構(gòu)部署第一WAN優(yōu)化設(shè)備205,而在數(shù)據(jù)中心部署第二WAN優(yōu)化設(shè)備205’。在一些實(shí)施例中,設(shè)備205可以位于網(wǎng)絡(luò)104’上。在其他實(shí)施例中,設(shè)備205’可以位于網(wǎng)絡(luò)104上。在一些實(shí)施例中,設(shè)備205’可以位于網(wǎng)絡(luò)104’或網(wǎng)絡(luò)104〃上。在一個(gè)實(shí)施例中,設(shè)備205和205’在同一個(gè)網(wǎng)絡(luò)上。在又一個(gè)實(shí)施例中,設(shè)備205和205’在不同的網(wǎng)絡(luò)上。在另一個(gè)實(shí)例中,第一WAN優(yōu)化設(shè)備205可以被部署用于第一服務(wù)器群38,而第二WAN優(yōu)化設(shè)備205’可以被部署用于第二服務(wù)器群38’。在一個(gè)實(shí)施例中,設(shè)備205是用于加速、優(yōu)化或者以其他方式改善任何類型和形式的網(wǎng)絡(luò)流量(例如去往和/或來(lái)自WAN連接的流量)的性能、操作或服務(wù)質(zhì)量的裝置。在一些實(shí)施例中,設(shè)備205是一個(gè)性能增強(qiáng)代理。在其他實(shí)施例中,設(shè)備205是任何類型和形式的WAN優(yōu)化或加速裝置,有時(shí)也被稱為WAN優(yōu)化控制器。在一個(gè)實(shí)施例中,設(shè)備205是由位于佛羅里達(dá)州Ft.Lauderdale的CitrixSystems公司出品的被稱為WANScaler的產(chǎn)品實(shí)施例中的任何一種。在其他實(shí)施例中,設(shè)備205包括由位于華盛頓州Seattle的F5Networks公司出品的被稱為BIG-1P鏈路控制器和WANjet的產(chǎn)品實(shí)施例中的任何一種。在又一個(gè)實(shí)施例中,設(shè)備205包括由位于加利福尼亞州Sunnyvale的JuniperNetfforks公司出品的WX和WXCWAN加速裝置平臺(tái)中的任何一種。在一些實(shí)施例中,設(shè)備205包括由加利福尼亞州SanFrancisco的RiverbedTechnology公司出品的虹蹲(steelhead)系列WAN優(yōu)化設(shè)備中的任何一種。在其他實(shí)施例中,設(shè)備205包括由位于新澤西州Roseland的ExpandNetworks公司出品的WAN相關(guān)裝置中的任何一種。在一個(gè)實(shí)施例中,設(shè)備205包括由位于加利福尼亞州Cupertino的Packeteer公司出品的任何一種WAN相關(guān)設(shè)備,例如由Packeteer提供的PacketShaper、iShared和SkyX產(chǎn)品實(shí)施例。在又一個(gè)實(shí)施例中,設(shè)備205包括由位于加利福尼亞州SanJose的CiscoSystems公司出品的任何WAN相關(guān)設(shè)備和/或軟件,例如Cisco廣域網(wǎng)應(yīng)用服務(wù)軟件和網(wǎng)絡(luò)模塊以及廣域網(wǎng)引擎設(shè)備。在一個(gè)實(shí)施例中,設(shè)備205為分支機(jī)構(gòu)或遠(yuǎn)程辦公室提供應(yīng)用和數(shù)據(jù)加速服務(wù)。在一個(gè)實(shí)施例中,設(shè)備205包括廣域文件服務(wù)(WAFS)的優(yōu)化。在又一個(gè)實(shí)施例中,設(shè)備205加速文件的傳送,例如經(jīng)由通用互聯(lián)網(wǎng)文件系統(tǒng)(CIFS)協(xié)議。在其他實(shí)施例中,設(shè)備205在存儲(chǔ)器和/或存儲(chǔ)裝置中提供高速緩存來(lái)加速應(yīng)用和數(shù)據(jù)的傳送。在一個(gè)實(shí)施例中,設(shè)備205在任何級(jí)別的網(wǎng)絡(luò)堆?;蛟谌魏蔚膮f(xié)議或網(wǎng)絡(luò)層中提供網(wǎng)絡(luò)流量的壓縮。在又一個(gè)實(shí)施例中,設(shè)備205提供傳輸層協(xié)議優(yōu)化、流量控制、性能增強(qiáng)或修改和/或管理,以加速WAN連接上的應(yīng)用和數(shù)據(jù)的傳送。例如,在一個(gè)實(shí)施例中,設(shè)備205提供傳輸控制協(xié)議(TCP)優(yōu)化。在其他實(shí)施例中,設(shè)備205提供對(duì)于任何會(huì)話或應(yīng)用層協(xié)議的優(yōu)化、流量控制、性能增強(qiáng)或修改和/或管理。在又一個(gè)實(shí)施例中,設(shè)備205將任何類型和形式的數(shù)據(jù)或信息編碼成網(wǎng)絡(luò)分組的定制的或標(biāo)準(zhǔn)的TCP和/或IP的報(bào)頭字段或可選字段,以將其存在、功能或能力通告給另一個(gè)設(shè)備205’。在又一個(gè)實(shí)施例中,設(shè)備205’可以使用在TCP和/或IP報(bào)頭字段或選項(xiàng)中編碼的數(shù)據(jù)來(lái)與另一個(gè)設(shè)備205’進(jìn)行通信。例如,設(shè)備可以使用TCP選項(xiàng)或IP報(bào)頭字段或選項(xiàng)來(lái)傳達(dá)在執(zhí)行諸如WAN加速的功能時(shí)或者為了彼此聯(lián)合工作而由設(shè)備205,205’所使用的一個(gè)或多個(gè)參數(shù)。在一些實(shí)施例中,設(shè)備200保存在設(shè)備205和205’之間傳達(dá)的TCP和/或IP報(bào)頭和/或可選字段中編碼的任何信息。例如,設(shè)備200可以終止經(jīng)過(guò)設(shè)備200的傳輸層連接,例如經(jīng)過(guò)設(shè)備205和205’的在客戶機(jī)和服務(wù)器之間的一個(gè)傳輸層連接。在一個(gè)實(shí)施例中,設(shè)備200識(shí)別并保存由第一設(shè)備205通過(guò)第一傳輸層連接發(fā)送的傳輸層分組中的任何編碼信息,并經(jīng)由第二傳輸層連接來(lái)將具有編碼信息的傳輸層分組傳達(dá)到第二設(shè)備205’。現(xiàn)參考圖1D,描述了用于傳送和/或操作客戶機(jī)102上的計(jì)算環(huán)境的網(wǎng)絡(luò)環(huán)境。在一些實(shí)施例中,服務(wù)器106包括用于向一個(gè)或多個(gè)客戶機(jī)102傳送計(jì)算環(huán)境或應(yīng)用和/或數(shù)據(jù)文件的應(yīng)用傳送系統(tǒng)190。總的來(lái)說(shuō),客戶機(jī)10通過(guò)網(wǎng)絡(luò)104、104’和設(shè)備200與服務(wù)器106通信。例如,客戶機(jī)102可駐留在公司的遠(yuǎn)程辦公室里,例如分支機(jī)構(gòu),并且服務(wù)器106可駐留在公司數(shù)據(jù)中心??蛻魴C(jī)102包括客戶機(jī)代理120以及計(jì)算環(huán)境15。計(jì)算環(huán)境15可執(zhí)行或操作用于訪問(wèn)、處理或使用數(shù)據(jù)文件的應(yīng)用??山?jīng)由設(shè)備200和/或服務(wù)器106傳送計(jì)算環(huán)境15、應(yīng)用和/或數(shù)據(jù)文件。在一些實(shí)施例中,設(shè)備200加速計(jì)算環(huán)境15或者其任何部分到客戶機(jī)102的傳送。在一個(gè)實(shí)施例中,設(shè)備200通過(guò)應(yīng)用傳送系統(tǒng)190加速計(jì)算環(huán)境15的傳送。例如,可使用此處描述的實(shí)施例來(lái)加速?gòu)墓局醒霐?shù)據(jù)中心到遠(yuǎn)程用戶位置(例如公司的分支機(jī)構(gòu))的流應(yīng)用(streamingapplication)及該應(yīng)用可處理的數(shù)據(jù)文件的傳送。在又一個(gè)實(shí)施例中,設(shè)備200加速客戶機(jī)102和服務(wù)器106之間的傳輸層流量。設(shè)備200可以提供用于加速?gòu)姆?wù)器106到客戶機(jī)102的任何傳輸層有效載荷的加速技術(shù),例如:1)傳輸層連接池,2)傳輸層連接多路復(fù)用,3)傳輸控制協(xié)議緩沖,4)壓縮和5)高速緩存。在一些實(shí)施例中,設(shè)備200響應(yīng)于來(lái)自客戶機(jī)102的請(qǐng)求提供服務(wù)器106的負(fù)載平衡。在其他實(shí)施例中,設(shè)備200充當(dāng)代理或者訪問(wèn)服務(wù)器來(lái)提供對(duì)一個(gè)或者多個(gè)服務(wù)器106的訪問(wèn)。在又一個(gè)實(shí)施例中,設(shè)備200提供從客戶機(jī)102的第一網(wǎng)絡(luò)104到服務(wù)器106的第二網(wǎng)絡(luò)104’的安全虛擬專用網(wǎng)絡(luò)連接,諸如SSLVPN連接。在又一些實(shí)施例中,設(shè)備200提供客戶機(jī)102和服務(wù)器106之間的連接和通信的應(yīng)用防火墻安全、控制和管理。在一些實(shí)施例中,基于多個(gè)執(zhí)行方法并且基于通過(guò)策略引擎195所應(yīng)用的任一驗(yàn)證和授權(quán)策略,應(yīng)用傳送管理系統(tǒng)190提供將計(jì)算環(huán)境傳送到遠(yuǎn)程的或者另外的用戶的桌面的應(yīng)用傳送技術(shù)。使用這些技術(shù),遠(yuǎn)程用戶可以從任何網(wǎng)絡(luò)連接裝置100獲取計(jì)算環(huán)境并且訪問(wèn)服務(wù)器所存儲(chǔ)的應(yīng)用和數(shù)據(jù)文件。在一個(gè)實(shí)施例中,應(yīng)用傳送系統(tǒng)190可駐留在服務(wù)器106上或在其上執(zhí)行。在又一個(gè)實(shí)施例中,應(yīng)用傳送系統(tǒng)190可駐留在多個(gè)服務(wù)器106a-106n上或在其上執(zhí)行。在一些實(shí)施例中,應(yīng)用傳送系統(tǒng)190可在服務(wù)器群38內(nèi)執(zhí)行。在一個(gè)實(shí)施例中,執(zhí)行應(yīng)用傳送系統(tǒng)190的服務(wù)器106也可存儲(chǔ)或提供應(yīng)用和數(shù)據(jù)文件。在又一個(gè)實(shí)施例中,一個(gè)或多個(gè)服務(wù)器106的第一組可執(zhí)行應(yīng)用傳送系統(tǒng)190,而不同的服務(wù)器106η可存儲(chǔ)或提供應(yīng)用和數(shù)據(jù)文件。在一些實(shí)施例中,應(yīng)用傳送系統(tǒng)190、應(yīng)用和數(shù)據(jù)文件中的每一個(gè)可駐留或位于不同的服務(wù)器。在又一個(gè)實(shí)施例中,應(yīng)用傳送系統(tǒng)190的任何部分可駐留、執(zhí)行、或被存儲(chǔ)于或分發(fā)到設(shè)備200或多個(gè)設(shè)備??蛻魴C(jī)102可包括用于執(zhí)行使用或處理數(shù)據(jù)文件的應(yīng)用的計(jì)算環(huán)境15??蛻魴C(jī)102可通過(guò)網(wǎng)絡(luò)104、104’和設(shè)備200請(qǐng)求來(lái)自服務(wù)器106的應(yīng)用和數(shù)據(jù)文件。在一個(gè)實(shí)施例中,設(shè)備200可以將來(lái)自客戶機(jī)102的請(qǐng)求轉(zhuǎn)發(fā)到服務(wù)器106。例如,客戶機(jī)102可能不具有本地存儲(chǔ)或者本地可訪問(wèn)的應(yīng)用和數(shù)據(jù)文件。響應(yīng)于請(qǐng)求,應(yīng)用傳送系統(tǒng)190和/或服務(wù)器106可以傳送應(yīng)用和數(shù)據(jù)文件到客戶機(jī)102。例如,在一個(gè)實(shí)施例中,服務(wù)器106可以把應(yīng)用作為應(yīng)用流來(lái)傳輸,以在客戶機(jī)102上的計(jì)算環(huán)境15中操作。在一些實(shí)施例中,應(yīng)用傳送系統(tǒng)190包括CitrixSystems有限公司的CitrixAccessSuite的任一部分(例如MetaFrame或CitrixPresentationServer),和/或微軟公司開(kāi)發(fā)的MicrosoftWindows終端服務(wù)中的任何一個(gè)。在一個(gè)實(shí)施例中,應(yīng)用傳送系統(tǒng)190可以通過(guò)遠(yuǎn)程顯示協(xié)議或者以其它方式通過(guò)基于遠(yuǎn)程計(jì)算或者基于服務(wù)器計(jì)算來(lái)傳送一個(gè)或者多個(gè)應(yīng)用到客戶機(jī)102或者用戶。在又一個(gè)實(shí)施例中,應(yīng)用傳送系統(tǒng)190可以通過(guò)應(yīng)用流來(lái)傳送一個(gè)或者多個(gè)應(yīng)用到客戶機(jī)或者用戶。在一個(gè)實(shí)施例中,應(yīng)用傳送系統(tǒng)190包括策略引擎195,其用于控制和管理對(duì)應(yīng)用的訪問(wèn)、應(yīng)用執(zhí)行方法的選擇以及應(yīng)用的傳送。在一些實(shí)施例中,策略引擎195確定用戶或者客戶機(jī)102可以訪問(wèn)的一個(gè)或者多個(gè)應(yīng)用。在又一個(gè)實(shí)施例中,策略弓I擎195確定應(yīng)用應(yīng)該如何被傳送到用戶或者客戶機(jī)102,例如執(zhí)行方法。在一些實(shí)施例中,應(yīng)用傳送系統(tǒng)190提供多個(gè)傳送技術(shù),從中選擇應(yīng)用執(zhí)行的方法,例如基于服務(wù)器的計(jì)算、本地流式傳輸或傳送應(yīng)用給客戶機(jī)120以用于本地執(zhí)行。在一個(gè)實(shí)施例中,客戶機(jī)102請(qǐng)求應(yīng)用程序的執(zhí)行并且包括服務(wù)器106的應(yīng)用傳送系統(tǒng)190選擇執(zhí)行應(yīng)用程序的方法。在一些實(shí)施例中,服務(wù)器106從客戶機(jī)102接收證書(shū)。在又一個(gè)實(shí)施例中,服務(wù)器106從客戶機(jī)102接收對(duì)于可用應(yīng)用的列舉的請(qǐng)求。在一個(gè)實(shí)施例中,響應(yīng)該請(qǐng)求或者證書(shū)的接收,應(yīng)用傳送系統(tǒng)190列舉對(duì)于客戶機(jī)102可用的多個(gè)應(yīng)用程序。應(yīng)用傳送系統(tǒng)190接收?qǐng)?zhí)行所列舉的應(yīng)用的請(qǐng)求。應(yīng)用傳送系統(tǒng)190選擇預(yù)定數(shù)量的方法之一來(lái)執(zhí)行所列舉的應(yīng)用,例如響應(yīng)策略引擎的策略。應(yīng)用傳送系統(tǒng)190可以選擇執(zhí)行應(yīng)用的方法,使得客戶機(jī)102接收通過(guò)執(zhí)行服務(wù)器106上的應(yīng)用程序所產(chǎn)生的應(yīng)用輸出數(shù)據(jù)。應(yīng)用傳送系統(tǒng)190可以選擇執(zhí)行應(yīng)用的方法,使得本地機(jī)器10在檢索包括應(yīng)用的多個(gè)應(yīng)用文件之后本地執(zhí)行應(yīng)用程序。在又一個(gè)實(shí)施例中,應(yīng)用傳送系統(tǒng)190可以選擇執(zhí)行應(yīng)用的方法,以通過(guò)網(wǎng)絡(luò)104流式傳輸應(yīng)用到客戶機(jī)102??蛻魴C(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)用。在一個(gè)實(shí)施例中,服務(wù)器106可以使用任何瘦-客戶端或遠(yuǎn)程顯示協(xié)議來(lái)顯示輸出到客戶機(jī)102,所述瘦_客戶端或遠(yuǎn)程顯示協(xié)議例如由位于佛羅里達(dá)州Ft.Lauderdale的CitrixSystems公司出品的獨(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)行一個(gè)或多個(gè)應(yīng)用,例如提供瘦客戶端計(jì)算或遠(yuǎn)程顯示表示應(yīng)用的應(yīng)用。在一個(gè)實(shí)施例中,服務(wù)器106或服務(wù)器群38作為一個(gè)應(yīng)用來(lái)執(zhí)行CitrixSystems有限公司的CitrixAccessSuite的任一部分(例如MetaFrame或CitrixPresentationServer),和/或微軟公司開(kāi)發(fā)的MicrosoftWindows終端服務(wù)中的任何一個(gè)。在一個(gè)實(shí)施例中,該應(yīng)用是位于佛羅里達(dá)州FortLauderdale的CitrixSystems有限公司開(kāi)發(fā)的ICA客戶機(jī)。在其他實(shí)施例中,該應(yīng)用包括由位于華盛頓州Redmond的Microsoft公司開(kāi)發(fā)的遠(yuǎn)程桌面(RDP)客戶機(jī)。另外,服務(wù)器106可以運(yùn)行一個(gè)應(yīng)用,例如,其可以是提供電子郵件服務(wù)的應(yīng)用服務(wù)器,例如由位于華盛頓州Redmond的Microsoft公司制造的MicrosoftExchange,web或Internet服務(wù)器,或者桌面共享服務(wù)器,或者協(xié)作服務(wù)器。在一些實(shí)施例中,任一應(yīng)用可以包括任一類型的所寄載的服務(wù)或產(chǎn)品,例如位于加利福尼亞州SantaBarbara的CitrixOnlineDivision公司提供的GoToMeeting,位于加利福尼亞州SantaClara的WebEx有限公司提供的WebEx,或者位于華盛頓州Redmond的Microsoft公司提供的MicrosoftOfficeLiveMeeting。仍參考圖1D,網(wǎng)絡(luò)環(huán)境的一個(gè)實(shí)施例可以包括監(jiān)控服務(wù)器106A。監(jiān)控服務(wù)器106A可以包括任何類型和形式的性能監(jiān)控服務(wù)198。性能監(jiān)控服務(wù)198可以包括監(jiān)控、測(cè)量和/或管理軟件和/或硬件,包括數(shù)據(jù)收集、集合、分析、管理和報(bào)告。在一個(gè)實(shí)施例中,性能監(jiān)控服務(wù)198包括一個(gè)或多個(gè)監(jiān)控代理197。監(jiān)控代理197包括用于在諸如客戶機(jī)102、服務(wù)器106或設(shè)備200和205的裝置上執(zhí)行監(jiān)控、測(cè)量和數(shù)據(jù)收集活動(dòng)的任何軟件、硬件或其組合。在一些實(shí)施例中,監(jiān)控代理197包括諸如VisualBasic腳本或Javascript任何類型和形式的腳本。在一個(gè)實(shí)施例中,監(jiān)控代理197相對(duì)于裝置的任何應(yīng)用和/或用戶透明地執(zhí)行。在一些實(shí)施例中,監(jiān)控代理197相對(duì)于應(yīng)用或客戶機(jī)不顯眼地被安裝和操作。在又一個(gè)實(shí)施例中,監(jiān)控代理197的安裝和操作不需要用于該應(yīng)用或裝置的任何設(shè)備。在一些實(shí)施例中,監(jiān)控代理197以預(yù)定頻率監(jiān)控、測(cè)量和收集數(shù)據(jù)。在其他實(shí)施例中,監(jiān)控代理197基于檢測(cè)到任何類型和形式的事件來(lái)監(jiān)控、測(cè)量和收集數(shù)據(jù)。例如,監(jiān)控代理197可以在檢測(cè)到對(duì)web頁(yè)面的請(qǐng)求或收到HTTP響應(yīng)時(shí)收集數(shù)據(jù)。在另一個(gè)實(shí)例中,監(jiān)控代理197可以在檢測(cè)到諸如鼠標(biāo)點(diǎn)擊的任一用戶輸入事件時(shí)收集數(shù)據(jù)。監(jiān)控代理197可以報(bào)告或提供任何所監(jiān)控、測(cè)量或收集的數(shù)據(jù)給監(jiān)控服務(wù)198。在一個(gè)實(shí)施例中,監(jiān)控代理197根據(jù)時(shí)間安排或預(yù)定頻率來(lái)發(fā)送信息給監(jiān)控服務(wù)198。在又一個(gè)實(shí)施例中,監(jiān)控代理197在檢測(cè)到事件時(shí)發(fā)送信息給監(jiān)控服務(wù)198。在一些實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197對(duì)諸如客戶機(jī)、服務(wù)器、服務(wù)器群、設(shè)備200、設(shè)備205或網(wǎng)絡(luò)連接的任何網(wǎng)絡(luò)資源或網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)元件的進(jìn)行監(jiān)控和性能測(cè)量。在一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197執(zhí)行諸如TCP或UDP連接的任何傳輸層連接的監(jiān)控和性能測(cè)量。在又一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量網(wǎng)絡(luò)等待時(shí)間。在又一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量帶寬利用。在其他實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量終端用戶響應(yīng)時(shí)間。在一些實(shí)施例中,監(jiān)控服務(wù)198執(zhí)行應(yīng)用的監(jiān)控和性能測(cè)量。在又一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197執(zhí)行到應(yīng)用的任何會(huì)話或連接的監(jiān)控和性能測(cè)量。在一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量瀏覽器的性能。在又一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量基于HTTP的事務(wù)的性能。在一些實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量IP電話(VoIP)應(yīng)用或會(huì)話的性能。在其他實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量諸如ICA客戶機(jī)或RDP客戶機(jī)的遠(yuǎn)程顯示協(xié)議應(yīng)用的性能。在又一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量任何類型和形式的流媒體的性能。在進(jìn)一步的實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量所寄載的應(yīng)用或軟件即服務(wù)(Software-As-A-Service,SaaS)傳送模型的性能。在一些實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197執(zhí)行與應(yīng)用相關(guān)的一個(gè)或多個(gè)事務(wù)、請(qǐng)求或響應(yīng)的監(jiān)控和性能測(cè)量。在其他實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量應(yīng)用層堆棧的任何部分,例如任何.NET或J2EE調(diào)用。在一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量數(shù)據(jù)庫(kù)或SQL事務(wù)。在又一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量任何方法、函數(shù)或應(yīng)用編程接口(API)調(diào)用。在一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197對(duì)經(jīng)由諸如設(shè)備200和/或設(shè)備205的一個(gè)或多個(gè)設(shè)備從服務(wù)器到客戶機(jī)的應(yīng)用和/或數(shù)據(jù)的傳送進(jìn)行監(jiān)控和性能測(cè)量。在一些實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量虛擬化應(yīng)用的傳送的性能。在其他實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量流式應(yīng)用的傳送的性能。在又一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量傳送桌面應(yīng)用到客戶機(jī)和/或在客戶機(jī)上執(zhí)行桌面應(yīng)用的性能。在又一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控和測(cè)量客戶機(jī)/服務(wù)器應(yīng)用的性能。在一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197被設(shè)計(jì)和構(gòu)建成為應(yīng)用傳送系統(tǒng)190提供應(yīng)用性能管理。例如,監(jiān)控服務(wù)198和/或監(jiān)控代理197可以監(jiān)控、測(cè)量和管理經(jīng)由Citrix表示服務(wù)器(CitrixPresentationServer)傳送應(yīng)用的性能。在該實(shí)例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控單獨(dú)的ICA會(huì)話。監(jiān)控服務(wù)198和/或監(jiān)控代理197可以測(cè)量總的以及每次的會(huì)話系統(tǒng)資源使用,以及應(yīng)用和連網(wǎng)性能。監(jiān)控服務(wù)198和/或監(jiān)控代理197可以對(duì)于給定用戶和/或用戶會(huì)話來(lái)標(biāo)識(shí)有效服務(wù)器(activeserver).在一些實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197監(jiān)控在應(yīng)用傳送系統(tǒng)190和應(yīng)用和/或數(shù)據(jù)庫(kù)服務(wù)器之間的后端連接。監(jiān)控服務(wù)198和/或監(jiān)控代理197可以測(cè)量每個(gè)用戶會(huì)話或ICA會(huì)話的網(wǎng)絡(luò)等待時(shí)間、延遲和容量。在一些實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197測(cè)量和監(jiān)控對(duì)于應(yīng)用傳送系統(tǒng)190的諸如總的存儲(chǔ)器使用、每個(gè)用戶會(huì)話和/或每個(gè)進(jìn)程的存儲(chǔ)器使用。在其他實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197測(cè)量和監(jiān)控諸如總的CPU使用、每個(gè)用戶會(huì)話和/或每個(gè)進(jìn)程的應(yīng)用傳送系統(tǒng)190的CPU使用。在又一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197測(cè)量和監(jiān)控登錄到諸如Citrix表示服務(wù)器的應(yīng)用、服務(wù)器或應(yīng)用傳送系統(tǒng)所需的時(shí)間。在一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197測(cè)量和監(jiān)控用戶登錄應(yīng)用、月艮務(wù)器或應(yīng)用傳送系統(tǒng)190的持續(xù)時(shí)間。在一些實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197測(cè)量和監(jiān)控應(yīng)用、服務(wù)器或應(yīng)用傳送系統(tǒng)會(huì)話的有效和無(wú)效的會(huì)話計(jì)數(shù)。在又一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197測(cè)量和監(jiān)控用戶會(huì)話等待時(shí)間。在另外的實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197測(cè)量和監(jiān)控任何類型和形式的服務(wù)器指標(biāo)。在一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197測(cè)量和監(jiān)控與系統(tǒng)內(nèi)存、CPU使用和盤(pán)存儲(chǔ)器有關(guān)的指標(biāo)。在又一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197測(cè)量和監(jiān)控和頁(yè)錯(cuò)誤有關(guān)的指標(biāo),諸如每秒頁(yè)錯(cuò)誤。在其他實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197測(cè)量和監(jiān)控往返時(shí)間的指標(biāo)。在又一個(gè)實(shí)施例中,監(jiān)控服務(wù)198和/或監(jiān)控代理197測(cè)量和監(jiān)控與應(yīng)用崩潰、錯(cuò)誤和/或中止相關(guān)的指標(biāo)。在一些實(shí)施例中,監(jiān)控服務(wù)198和監(jiān)控代理198包括由位于佛羅里達(dá)州Ft.Lauderdale的CitrixSystems公司出品的被稱為EdgeSight的任何一種產(chǎn)品實(shí)施例。在又一個(gè)實(shí)施例中,性能監(jiān)控服務(wù)198和/或監(jiān)控代理198包括由位于加利福尼亞州PaloAlto的Symphoniq公司出品的被稱為T(mén)rueView產(chǎn)品套件的產(chǎn)品實(shí)施例的任一部分。在一個(gè)實(shí)施例中,性能監(jiān)控服務(wù)198和/或監(jiān)控代理198包括由位于加利福尼亞州SanFrancisco的TeaLeaf技術(shù)公司出品的被稱為T(mén)eaLeafCX產(chǎn)品套件的產(chǎn)品實(shí)施例的任何部分。在其他實(shí)施例中,性能監(jiān)控服務(wù)198和/或監(jiān)控代理198包括由位于德克薩斯州Houston的BMC軟件公司出品的諸如BMC性能管理器和巡邏產(chǎn)品(BMCPerformanceManagerandPatrolproducts)的商業(yè)服務(wù)管理產(chǎn)品的任何部分??蛻魴C(jī)102、服務(wù)器106和設(shè)備200可以被部署為和/或執(zhí)行在任何類型和形式的計(jì)算裝置上,諸如能夠在任何類型和形式的網(wǎng)絡(luò)上通信并執(zhí)行此處描述的操作的計(jì)算機(jī)、網(wǎng)絡(luò)裝置或者設(shè)備。圖1E和IF描述了可用于實(shí)施客戶機(jī)102、服務(wù)器106或設(shè)備200的實(shí)施例的計(jì)算裝置100的框圖。如圖1E和IF所示,每個(gè)計(jì)算裝置100包括中央處理單元101和主存儲(chǔ)器單元122。如圖1E所示,計(jì)算裝置100可以包括可視顯示裝置124、鍵盤(pán)126和/或諸如鼠標(biāo)的指示裝置127。每個(gè)計(jì)算裝置100也可包括其它可選元件,例如一個(gè)或多個(gè)輸入/輸出裝置130a-130b(總的使用附圖標(biāo)記130表示),以及與中央處理單元101通信的高速緩存存儲(chǔ)器140。中央處理單元101是響應(yīng)并處理從主存儲(chǔ)器單元122取出的指令的任何邏輯電路。在許多實(shí)施例中,中央處理單元由微處理器單元提供,例如:由加利福尼亞州MountainView的Intel公司制造的微處理器單元;由伊利諾伊州Schaumburg的Motorola公司制造的微處理器單元;由加利福尼亞州SantaClara的Transmeta公司制造的微處理器單元;由紐約州WhitePlains的InternationalBusinessMachines公司制造的RS/6000處理器;或者由加利福尼亞州Sunnyvale的AdvancedMicroDevices公司制造的微處理器單元。計(jì)算裝置100可以基于這些處理器中的任何一種,或者能夠如此處所述方式運(yùn)行的任何其它處理器。主存儲(chǔ)器單元122可以是能夠存儲(chǔ)數(shù)據(jù)并允許微處理器101直接訪問(wèn)任何存儲(chǔ)位置的一個(gè)或多個(gè)存儲(chǔ)器芯片,例如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、突發(fā)SRAM或同步突發(fā)SRAM(BSRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器DRAM、快速頁(yè)模式DRAM(FPMDRAM)、增強(qiáng)型DRAM(EDRAM)、擴(kuò)展數(shù)據(jù)輸出RAM(EDORAM)、擴(kuò)展數(shù)據(jù)輸出DRAM(EDODRAM)、突發(fā)式擴(kuò)展數(shù)據(jù)輸出DRAM(BED0DRAM)、增強(qiáng)型DRAM(EDRAM)、同步DRAM(SDRAM),JEDECSRAM、PC100SDRAM、雙數(shù)據(jù)速率SDRAM(DDRSDRAM)、增強(qiáng)型SRAM(ESDRAM)、同步鏈路DRAM(SLDRAM)、直接內(nèi)存總線DRAM(DRDRAM)或鐵電RAM(FRAM)0主存儲(chǔ)器122可以基于上述存儲(chǔ)芯片的任何一種,或者能夠如此處所述方式運(yùn)行的任何其它可用存儲(chǔ)芯片。在圖1E中所示的實(shí)施例中,處理器101通過(guò)系統(tǒng)總線150(在下面進(jìn)行更詳細(xì)的描述)與主存儲(chǔ)器122進(jìn)行通信。圖1E描述了在其中處理器通過(guò)存儲(chǔ)器端口103直接與主存儲(chǔ)器122通信的計(jì)算裝置100的實(shí)施例。例如,在圖1F中,主存儲(chǔ)器122可以是DRDRAM。圖1F描述了在其中主處理器101通過(guò)第二總線與高速緩存存儲(chǔ)器140直接通信的實(shí)施例,第二總線有時(shí)也稱為后端總線。其他實(shí)施例中,主處理器101使用系統(tǒng)總線150和高速緩存存儲(chǔ)器140通信。高速緩存存儲(chǔ)器140通常有比主存儲(chǔ)器122更快的響應(yīng)時(shí)間,并且通常由SRAM、BSRAM或EDRAM提供。在圖1F中所示的實(shí)施例中,處理器101通過(guò)本地系統(tǒng)總線150與多個(gè)1/0裝置130進(jìn)行通信??梢允褂酶鞣N不同的總線將中央處理單元101連接到任何1/0裝置130,所述總線包括VESAVL總線、ISA總線、EISA總線、微通道體系結(jié)構(gòu)(MCA)總線、PCI總線、PC1-X總線、PC1-Express總線或NuBus。對(duì)于1/0裝置是視頻顯示器124的實(shí)施例,處理器101可以使用高級(jí)圖形端口(AGP)與顯示器124通信。圖1F說(shuō)明了主處理器101通過(guò)超傳輸(HyperTransport)、快速1/0或者InfiniBand直接與1/0裝置130通信的計(jì)算機(jī)100的一個(gè)實(shí)施例。圖1F還描述了在其中混合本地總線和直接通信的實(shí)施例:處理器101使用本地互連總線與I/O裝置130b進(jìn)行通信,同時(shí)直接與I/O裝置130a進(jìn)行通信。計(jì)算裝置100可以支持任何適當(dāng)?shù)陌惭b裝置116,例如用于接納諸如3.5英寸、5.25英寸磁盤(pán)或ZIP磁盤(pán)這樣的軟盤(pán)的軟盤(pán)驅(qū)動(dòng)器、⑶-ROM驅(qū)動(dòng)器、⑶-R/RW驅(qū)動(dòng)器、DVD-ROM驅(qū)動(dòng)器、各種格式的磁帶驅(qū)動(dòng)器、USB裝置、硬盤(pán)驅(qū)動(dòng)器或適于安裝像任何客戶機(jī)代理120或其部分的軟件和程序的任何其它裝置。計(jì)算裝置100還可以包括存儲(chǔ)裝置128,諸如一個(gè)或者多個(gè)硬盤(pán)驅(qū)動(dòng)器或者獨(dú)立磁盤(pán)冗余陣列,用于存儲(chǔ)操作系統(tǒng)和其它相關(guān)軟件,以及用于存儲(chǔ)諸如涉及客戶機(jī)代理120的任何程序的應(yīng)用軟件程序?;蛘?,可以使用安裝裝置116的任何一種作為存儲(chǔ)裝置128。此外,操作系統(tǒng)和軟件可從例如可引導(dǎo)⑶的可引導(dǎo)介質(zhì)運(yùn)行,諸如KNOPPIX,—種用于GNU/Linux的可引導(dǎo)⑶,該可引導(dǎo)⑶可自knoppix.net作為GNU/Linux—個(gè)分發(fā)版獲得。此外,計(jì)算裝置100可以包括通過(guò)多種連接接口到局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)或因特網(wǎng)的網(wǎng)絡(luò)接口118,所述多種連接包括但不限于標(biāo)準(zhǔn)電話線路、LAN或WAN鏈路(例如802.ll,Tl,T3、56kb、X.25)、寬帶連接(如ISDN、幀中繼、ATM)、無(wú)線連接、或上述任何或所有連接的一些組合。網(wǎng)絡(luò)接口118可以包括內(nèi)置網(wǎng)絡(luò)適配器、網(wǎng)絡(luò)接口卡、PCMCIA網(wǎng)絡(luò)卡、卡總線網(wǎng)絡(luò)適配器、無(wú)線網(wǎng)絡(luò)適配器、USB網(wǎng)絡(luò)適配器、調(diào)制解調(diào)器或適用于將計(jì)算裝置100接口到能夠通信并執(zhí)行這里所說(shuō)明的操作的任何類型的網(wǎng)絡(luò)的任何其它設(shè)備。計(jì)算裝置100中可以包括各種I/O裝置130a-130n。輸入裝置包括鍵盤(pán)、鼠標(biāo)、觸控板、軌跡球、麥克風(fēng)和繪圖板。輸出裝置包括視頻顯示器、揚(yáng)聲器、噴墨打印機(jī)、激光打印機(jī)和熱升華打印機(jī)。如圖1E所示,I/O裝置130可以由I/O控制器123控制。I/O控制器可以控制一個(gè)或多個(gè)I/O裝置,例如鍵盤(pán)126和指示裝置127(如鼠標(biāo)或光筆)。此外,I/O裝置還可以為計(jì)算裝置100提供存儲(chǔ)裝置128和/或安裝介質(zhì)116。在其他實(shí)施例中,計(jì)算裝置100可以提供USB連接以接納手持USB存儲(chǔ)裝置,例如由位于美國(guó)加利福尼亞州LosAlamitos的TwintechIndustry有限公司生產(chǎn)的USB閃存驅(qū)動(dòng)驅(qū)動(dòng)系列裝置。在一些實(shí)施例中,計(jì)算裝置100可以包括多個(gè)顯示裝置124a_124n或與其相連,這些顯示裝置各自可以是相同或不同的類型和/或形式。因而,任何一種I/O裝置130a-130n和/或I/O控制器123可以包括任一類型和/或形式的適當(dāng)?shù)挠布④浖蛴布蛙浖慕M合,以支持、允許或提供通過(guò)計(jì)算裝置100連接和使用多個(gè)顯示裝置124a-124n。例如,計(jì)算裝置100可以包括任何類型和/或形式的視頻適配器、視頻卡、驅(qū)動(dòng)器和/或庫(kù),以與顯示裝置124a-124n接口、通信、連接或以其他方式使用顯示裝置。在一個(gè)實(shí)施例中,視頻適配器可以包括多個(gè)連接器以與多個(gè)顯示裝置124a-124n接口。在其他實(shí)施例中,計(jì)算裝置100可以包括多個(gè)視頻適配器,每個(gè)視頻適配器與顯示裝置124a-124n中的一個(gè)或多個(gè)連接。在一些實(shí)施例中,計(jì)算裝置100的操作系統(tǒng)的任一部分都可以被配置用于使用多個(gè)顯示器124a-124n。在其他實(shí)施例中,顯示裝置124a_124n中的一個(gè)或多個(gè)可以由一個(gè)或多個(gè)其它計(jì)算裝置提供,諸如例如通過(guò)網(wǎng)絡(luò)與計(jì)算裝置100連接的計(jì)算裝置IOOa和100b。這些實(shí)施例可以包括被設(shè)計(jì)和構(gòu)造為將另一個(gè)計(jì)算機(jī)的顯示裝置用作計(jì)算裝置100的第二顯示裝置124a的任一類型的軟件。本領(lǐng)域的普通技術(shù)人員應(yīng)認(rèn)識(shí)和理解可以將計(jì)算裝置100配置成具有多個(gè)顯示裝置124a-124n的各種方法和實(shí)施例。在另外的實(shí)施例中,I/O裝置130可以是系統(tǒng)總線150和外部通信總線之間的橋170,所述外部通信總線例如USB總線、Apple桌面總線、RS-232串行連接、SCSI總線、FireWire總線、Fireffire800總線、以太網(wǎng)總線、AppleTalk總線、千兆位以太網(wǎng)總線、異步傳輸模式總線、HIPPI總線、超級(jí)HIPPI總線、SerialPlus總線、SCI/LAMP總線、光纖信道總線或串行SCSI總線。圖1E和IF中描述的那類計(jì)算裝置100通常在控制任務(wù)的調(diào)度和對(duì)系統(tǒng)資源的訪問(wèn)的操作系統(tǒng)的控制下操作。計(jì)算裝置100可以運(yùn)行任何操作系統(tǒng),如MicrosoftWindows操作系統(tǒng),不同發(fā)行版本的Unix和Linux操作系統(tǒng),用于Macintosh計(jì)算機(jī)的任何版本的MACOS,任何嵌入式操作系統(tǒng),任何實(shí)時(shí)操作系統(tǒng),任何開(kāi)源操作系統(tǒng),任何專有操作系統(tǒng),任何用于移動(dòng)計(jì)算裝置的操作系統(tǒng),或者任何其它能夠在計(jì)算裝置上運(yùn)行并完成這里所述操作的操作系統(tǒng)。典型的操作系統(tǒng)包括:WIND0WS3.X、WIND0WS95、WIND0WS98、WIND0WS2000,WINDOWSΝΤ3.51、WINDOWSΝΤ4.0、WINDOWSCE和WINDOWSXP,所有這些均由位于華盛頓州Redmond的微軟公司出品;由位于加利福尼亞州Cupertino的蘋(píng)果計(jì)算機(jī)出品的MacOS;由位于紐約州Armonk的國(guó)際商業(yè)機(jī)器公司出品的OS/2;以及由位于猶他州SaltLakeCity的Caldera公司發(fā)布的可免費(fèi)使用的Linux操作系統(tǒng)或者任何類型和/或形式的Unix操作系統(tǒng),以及其它。在其他的實(shí)施例中,計(jì)算裝置100可以有符合該裝置的不同的處理器、操作系統(tǒng)和輸入設(shè)備。例如,在一個(gè)實(shí)施例中,計(jì)算機(jī)100是由Palm公司出品的Treol80、270、1060、600或650智能電話。在該實(shí)施例中,Treo智能電話在PalmOS操作系統(tǒng)的控制下操作,并包括指示筆輸入裝置以及五向?qū)Ш窖b置。此外,計(jì)算裝置100可以是任何工作站、桌面計(jì)算機(jī)、膝上型或筆記本計(jì)算機(jī)、服務(wù)器、手持計(jì)算機(jī)、移動(dòng)電話、任何其它計(jì)算機(jī)、或能夠通信并有足夠的處理器能力和存儲(chǔ)容量以執(zhí)行此處所述的操作的其它形式的計(jì)算或者電信裝置。如圖1G所示,計(jì)算裝置100可以包括多個(gè)處理器,可以提供用于對(duì)不只一個(gè)數(shù)據(jù)片同時(shí)執(zhí)行多個(gè)指令或者同時(shí)執(zhí)行一個(gè)指令的功能。在一些實(shí)施例中,計(jì)算裝置100可包括具有一個(gè)或多個(gè)核的并行處理器。在這些實(shí)施例的一個(gè)中,計(jì)算裝置100是共享內(nèi)存并行設(shè)備,具有多個(gè)處理器和/或多個(gè)處理器核,將所有可用內(nèi)存作為一個(gè)全局地址空間進(jìn)行訪問(wèn)。在這些實(shí)施例的又一個(gè)中,計(jì)算裝置100是分布式存儲(chǔ)器并行設(shè)備,具有多個(gè)處理器,每個(gè)處理器訪問(wèn)本地存儲(chǔ)器。在這些實(shí)施例的又一個(gè)中,計(jì)算裝置100既有共享的存儲(chǔ)器又有僅由特定處理器或處理器子集訪問(wèn)的存儲(chǔ)器。在這些實(shí)施例的又一個(gè)中,如多核微處理器的計(jì)算裝置100將兩個(gè)或多個(gè)獨(dú)立處理器組合在一個(gè)封裝中,通常在一個(gè)集成電路(IC)中。在這些實(shí)施例的又一個(gè)中,計(jì)算裝置100包括具有單元寬帶引擎(CELLBROADBANDENGINE)架構(gòu)的芯片,并包括高能處理器單元以及多個(gè)協(xié)同處理單元,高能處理器單元和多個(gè)協(xié)同處理單元通過(guò)內(nèi)部高速總線連接在一起,可以將內(nèi)部高速總線稱為單元互連總線。在一些實(shí)施例中,處理器提供用于對(duì)多個(gè)數(shù)據(jù)片同時(shí)執(zhí)行單個(gè)指令(SMD)的功能。其他實(shí)施例中,處理器提供用于對(duì)多個(gè)數(shù)據(jù)片同時(shí)執(zhí)行多個(gè)指令(MMD)的功能。又一個(gè)實(shí)施例中,處理器可以在單個(gè)裝置中使用SMD和MMD核的任意組合。在一些實(shí)施例中,計(jì)算裝置100可包括圖像處理單元。圖1H所示的在這些實(shí)施例的一個(gè)中,計(jì)算裝置100包括至少一個(gè)中央處理單元101和至少一個(gè)圖像處理單元。在這些實(shí)施例的又一個(gè)中,計(jì)算裝置100包括至少一個(gè)并行處理單元和至少一個(gè)圖像處理單元。在這些實(shí)施例的又一個(gè)中,計(jì)算裝置100包括任意類型的多個(gè)處理單元,多個(gè)處理單元中的一個(gè)包括圖像處理單元。一些實(shí)施例中,第一計(jì)算裝置IOOa代表客戶計(jì)算裝置IOOb的用戶執(zhí)行應(yīng)用。又一個(gè)實(shí)施例中,計(jì)算裝置100執(zhí)行虛擬機(jī),其提供執(zhí)行會(huì)話,在該會(huì)話中,代表客戶計(jì)算裝置IOOb的用戶執(zhí)行應(yīng)用。在這些實(shí)施例的一個(gè)中,執(zhí)行會(huì)話是寄載的桌面會(huì)話。在這些實(shí)施例的又一個(gè)中,計(jì)算裝置100執(zhí)行終端服務(wù)會(huì)話。終端服務(wù)會(huì)話可以提供寄載的桌面環(huán)境。在這些實(shí)施例的又一個(gè)中,執(zhí)行會(huì)話提供對(duì)計(jì)算環(huán)境的訪問(wèn),該計(jì)算環(huán)境可包括以下的一個(gè)或多個(gè):應(yīng)用、多個(gè)應(yīng)用、桌面應(yīng)用以及可執(zhí)行一個(gè)或多個(gè)應(yīng)用的桌面會(huì)話。B.設(shè)各架構(gòu)圖2A示出設(shè)備200的一個(gè)示例實(shí)施例。提供圖2A的設(shè)備200架構(gòu)僅用于示例,并不意于作為限制性的架構(gòu)。如圖2所示,設(shè)備200包括硬件層206和被分為用戶空間202和內(nèi)核空間204的軟件層。硬件層206提供硬件元件,在內(nèi)核空間204和用戶空間202中的程序和服務(wù)在該硬件元件上被執(zhí)行。硬件層206也提供結(jié)構(gòu)和元件,就設(shè)備200而言,這些結(jié)構(gòu)和元件允許在內(nèi)核空間204和用戶空間202內(nèi)的程序和服務(wù)既在內(nèi)部進(jìn)行數(shù)據(jù)通信又與外部進(jìn)行數(shù)據(jù)通信。如圖2所示,硬件層206包括用于執(zhí)行軟件程序和服務(wù)的處理單元262,用于存儲(chǔ)軟件和數(shù)據(jù)的存儲(chǔ)器264,用于通過(guò)網(wǎng)絡(luò)傳輸和接收數(shù)據(jù)的網(wǎng)絡(luò)端口266,以及用于執(zhí)行與安全套接字協(xié)議層相關(guān)的功能處理通過(guò)網(wǎng)絡(luò)傳輸和接收的數(shù)據(jù)的加密處理器260。在一些實(shí)施例中,中央處理單元262可在單獨(dú)的處理器中執(zhí)行加密處理器260的功能。另外,硬件層206可包括用于每個(gè)處理單元262和加密處理器260的多處理器。處理器262可以包括以上結(jié)合圖1E和IF所述的任一處理器101。例如,在一個(gè)實(shí)施例中,設(shè)備200包括第一處理器262和第二處理器262’。在其他實(shí)施例中,處理器262或者262’包括多核處理器。雖然示出的設(shè)備200的硬件層206通常帶有加密處理器260,但是處理器260可為執(zhí)行涉及任何加密協(xié)議的功能的處理器,例如安全套接字協(xié)議層(SSL)或者傳輸層安全(TLS)協(xié)議。在一些實(shí)施例中,處理器260可為通用處理器(GPP),并且在進(jìn)一步的實(shí)施例中,可為用于執(zhí)行任何安全相關(guān)協(xié)議處理的可執(zhí)行指令。雖然圖2中設(shè)備200的硬件層206包括了某些元件,但是設(shè)備200的硬件部分或組件可包括計(jì)算裝置的任何類型和形式的元件、硬件或軟件,例如此處結(jié)合圖1E和IF示出和討論的計(jì)算裝置100。在一些實(shí)施例中,設(shè)備200可包括服務(wù)器、網(wǎng)關(guān)、路由器、開(kāi)關(guān)、橋接器或其它類型的計(jì)算或網(wǎng)絡(luò)設(shè)備,并且擁有與此相關(guān)的任何硬件和/或軟件元件。設(shè)備200的操作系統(tǒng)分配、管理或另外分離可用的系統(tǒng)存儲(chǔ)器到內(nèi)核空間204和用戶空間204。在示例的軟件架構(gòu)200中,操作系統(tǒng)可以是任何類型和/或形式的Unix操作系統(tǒng),盡管本發(fā)明并未這樣限制。這樣,設(shè)備200可以運(yùn)行任何操作系統(tǒng),如任何版本的MicrosoftWindows操作系統(tǒng)、不同版本的Unix和Linux操作系統(tǒng)、用于Macintosh計(jì)算機(jī)的任何版本的Mac0S_、任何的嵌入式操作系統(tǒng)、任何的網(wǎng)絡(luò)操作系統(tǒng)、任何的實(shí)時(shí)操作系統(tǒng)、任何的開(kāi)放源操作系統(tǒng)、任何的專用操作系統(tǒng)、用于移動(dòng)計(jì)算裝置或網(wǎng)絡(luò)裝置的任何操作系統(tǒng)、或者能夠運(yùn)行在設(shè)備200上并執(zhí)行此處所描述的操作的任何其它操作系統(tǒng)。保留內(nèi)核空間204用于運(yùn)行內(nèi)核230,內(nèi)核230包括任何設(shè)備驅(qū)動(dòng)器,內(nèi)核擴(kuò)展或其他內(nèi)核相關(guān)軟件。就像本領(lǐng)域技術(shù)人員所知的,內(nèi)核230是操作系統(tǒng)的核心,并提供對(duì)資源以及設(shè)備104的相關(guān)硬件元件的訪問(wèn)、控制和管理。根據(jù)設(shè)備200的實(shí)施例,內(nèi)核空間204也包括與高速緩存管理器232協(xié)同工作的多個(gè)網(wǎng)絡(luò)服務(wù)或進(jìn)程,高速緩存管理器232有時(shí)也稱為集成的高速緩存,其益處此處將進(jìn)一步詳細(xì)描述。另外,內(nèi)核230的實(shí)施例將依賴于通過(guò)設(shè)備200安裝、配置或其他使用的操作系統(tǒng)的實(shí)施例。在一個(gè)實(shí)施例中,設(shè)備200包括一個(gè)網(wǎng)絡(luò)堆棧267,例如基于TCP/IP的堆棧,用于與客戶機(jī)102和/或服務(wù)器106通信。在一個(gè)實(shí)施例中,使用網(wǎng)絡(luò)堆棧267與第一網(wǎng)絡(luò)(例如網(wǎng)絡(luò)108)以及第二網(wǎng)絡(luò)110通信。在一些實(shí)施例中,設(shè)備200終止第一傳輸層連接,例如客戶機(jī)102的TCP連接,并建立客戶機(jī)102使用的到服務(wù)器106的第二傳輸層連接,例如,終止在設(shè)備200和服務(wù)器106的第二傳輸層連接。可通過(guò)單獨(dú)的網(wǎng)絡(luò)堆棧267建立第一和第二傳輸層連接。在其他實(shí)施例中,設(shè)備200可包括多個(gè)網(wǎng)絡(luò)堆棧,例如267或267’,并且在一個(gè)網(wǎng)絡(luò)堆棧267可建立或終止第一傳輸層連接,在第二網(wǎng)絡(luò)堆棧267’上可建立或者終止第二傳輸層連接。例如,一個(gè)網(wǎng)絡(luò)堆??捎糜谠诘谝痪W(wǎng)絡(luò)上接收和傳輸網(wǎng)絡(luò)分組,并且另一個(gè)網(wǎng)絡(luò)堆棧用于在第二網(wǎng)絡(luò)上接收和傳輸網(wǎng)絡(luò)分組。在一個(gè)實(shí)施例中,網(wǎng)絡(luò)堆棧267包括用于為一個(gè)或多個(gè)網(wǎng)絡(luò)分組進(jìn)行排隊(duì)的緩沖器243,其中網(wǎng)絡(luò)分組由設(shè)備200傳輸。如圖2A所示,內(nèi)核空間204包括高速緩存管理器232、高速層2_7集成分組引擎240、加密引擎234、策略引擎236以及多協(xié)議壓縮邏輯238。在內(nèi)核空間204或內(nèi)核模式而不是用戶空間202中運(yùn)行這些組件或進(jìn)程232、240、234、236和238提高這些組件中的每個(gè)單獨(dú)的和結(jié)合的性能。內(nèi)核操作意味著這些組件或進(jìn)程232、240、234、236和238在設(shè)備200的操作系統(tǒng)的核地址空間中運(yùn)行。例如,在內(nèi)核模式中運(yùn)行加密引擎234通過(guò)移動(dòng)加密和解密操作到內(nèi)核可改進(jìn)加密性能,從而可減少在內(nèi)核模式中的存儲(chǔ)空間或內(nèi)核線程與在用戶模式中的存儲(chǔ)空間或線程之間的傳輸?shù)臄?shù)量。例如,在內(nèi)核模式獲得的數(shù)據(jù)可能不需要傳輸或拷貝到運(yùn)行在用戶模式的進(jìn)程或線程,例如從內(nèi)核級(jí)數(shù)據(jù)結(jié)構(gòu)到用戶級(jí)數(shù)據(jù)結(jié)構(gòu)。在另一個(gè)方面,也可減少內(nèi)核模式和用戶模式之間的上下文切換的數(shù)量。另外,在任何組件或進(jìn)程232、240、235、236和238間的同步和通信在內(nèi)核空間204中可被執(zhí)行的更有效率。在一些實(shí)施例中,組件232、240、234、236和238的任何部分可在內(nèi)核空間204中運(yùn)行或操作,而這些組件232、240、234、236和238的其它部分可在用戶空間202中運(yùn)行或操作。在一個(gè)實(shí)施例中,設(shè)備200使用內(nèi)核級(jí)數(shù)據(jù)結(jié)構(gòu)來(lái)提供對(duì)一個(gè)或多個(gè)網(wǎng)絡(luò)分組的任何部分的訪問(wèn),例如,包括來(lái)自客戶機(jī)102的請(qǐng)求或者來(lái)自服務(wù)器106的響應(yīng)的網(wǎng)絡(luò)分組。在一些實(shí)施例中,可以由分組引擎240通過(guò)到網(wǎng)絡(luò)堆棧267的傳輸層驅(qū)動(dòng)器接口或過(guò)濾器獲得內(nèi)核級(jí)數(shù)據(jù)結(jié)構(gòu)。內(nèi)核級(jí)數(shù)據(jù)結(jié)構(gòu)可包括通過(guò)與網(wǎng)絡(luò)堆棧267相關(guān)的內(nèi)核空間204可訪問(wèn)的任何接口和/或數(shù)據(jù)、由網(wǎng)絡(luò)堆棧267接收或發(fā)送的網(wǎng)絡(luò)流量或分組。在其他實(shí)施例中,任何組件或進(jìn)程232、240、234、236和238可使用內(nèi)核級(jí)數(shù)據(jù)結(jié)構(gòu)來(lái)執(zhí)行組件或進(jìn)程的需要的操作。在一個(gè)實(shí)例中,當(dāng)使用內(nèi)核級(jí)數(shù)據(jù)結(jié)構(gòu)時(shí),組件232、240、234、236和238在內(nèi)核模式204中運(yùn)行,而在又一個(gè)實(shí)施例中,當(dāng)使用內(nèi)核級(jí)數(shù)據(jù)結(jié)構(gòu)時(shí),組件232、240、234、236和238在用戶模式中運(yùn)行。在一些實(shí)施例中,內(nèi)核級(jí)數(shù)據(jù)結(jié)構(gòu)可被拷貝或傳遞到第二內(nèi)核級(jí)數(shù)據(jù)結(jié)構(gòu),或任何期望的用戶級(jí)數(shù)據(jù)結(jié)構(gòu)。高速緩存管理器232可包括軟件、硬件或軟件和硬件的任何組合,以提供對(duì)任何類型和形式的內(nèi)容的高速緩存訪問(wèn)、控制和管理,例如對(duì)象或由源服務(wù)器106提供服務(wù)的動(dòng)態(tài)產(chǎn)生的對(duì)象。由高速緩存管理器232處理和存儲(chǔ)的數(shù)據(jù)、對(duì)象或內(nèi)容可包括任何格式(例如標(biāo)記語(yǔ)言)的數(shù)據(jù),或者通過(guò)任何協(xié)議的通信的任何類型的數(shù)據(jù)。在一些實(shí)施例中,高速緩存管理器232復(fù)制存儲(chǔ)在其他地方的原始數(shù)據(jù)或先前計(jì)算、產(chǎn)生或傳輸?shù)臄?shù)據(jù),其中相對(duì)于讀高速緩存存儲(chǔ)器元件,需要更長(zhǎng)的訪問(wèn)時(shí)間以取得、計(jì)算或以其他方式得到原始數(shù)據(jù)。一旦數(shù)據(jù)被存儲(chǔ)在高速緩存存儲(chǔ)元件中,通過(guò)訪問(wèn)高速緩存的副本而不是重新獲得或重新計(jì)算原始數(shù)據(jù)即可進(jìn)行后續(xù)操作,因此而減少了訪問(wèn)時(shí)間。在一些實(shí)施例中,高速緩存元件可以包括設(shè)備200的存儲(chǔ)器264中的數(shù)據(jù)對(duì)象。在其他實(shí)施例中,高速緩存存儲(chǔ)元件可包括有比存儲(chǔ)器264更快的存取時(shí)間的存儲(chǔ)器。在又一個(gè)實(shí)施例中,高速緩存元件可以包括設(shè)備200的任一類型和形式的存儲(chǔ)元件,諸如硬盤(pán)的一部分。在一些實(shí)施例中,處理單元262可提供被高速緩存管理器232使用的高速緩存存儲(chǔ)器。在又一個(gè)實(shí)施例中,高速緩存管理器232可使用存儲(chǔ)器、存儲(chǔ)區(qū)或處理單元的任何部分和組合來(lái)高速緩存數(shù)據(jù)、對(duì)象或其它內(nèi)容。另外,高速緩存管理器232包括用于執(zhí)行此處描述的設(shè)備200的技術(shù)的任一實(shí)施例的任何邏輯、功能、規(guī)則或操作。例如,高速緩存管理器232包括基于無(wú)效時(shí)間周期的終止,或者從客戶機(jī)102或服務(wù)器106接收無(wú)效命令使對(duì)象無(wú)效的邏輯或功能。在一些實(shí)施例中,高速緩存管理器232可作為在內(nèi)核空間204中執(zhí)行的程序、服務(wù)、進(jìn)程或任務(wù)而操作,并且在其他實(shí)施例中,在用戶空間202中執(zhí)行。在一個(gè)實(shí)施例中,高速緩存管理器232的第一部分在用戶空間202中執(zhí)行,而第二部分在內(nèi)核空間204中執(zhí)行。在一些實(shí)施例中,高速緩存管理器232可包括任何類型的通用處理器(GPP),或任何其他類型的集成電路,例如現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA),可編程邏輯設(shè)備(PLD),或者專用集成電路(ASIC)。策略引擎236可包括例如智能統(tǒng)計(jì)引擎或其它可編程應(yīng)用。在一個(gè)實(shí)施例中,策略引擎236提供配置機(jī)制以允許用戶識(shí)別、指定、定義或配置高速緩存策略。策略引擎236,在一些實(shí)施例中,也訪問(wèn)存儲(chǔ)器以支持?jǐn)?shù)據(jù)結(jié)構(gòu),例如備份表或hash表,以啟用用戶選擇的高速緩存策略決定。在其他實(shí)施例中,除了對(duì)安全、網(wǎng)絡(luò)流量、網(wǎng)絡(luò)訪問(wèn)、壓縮或其它任何由設(shè)備200執(zhí)行的功能或操作的訪問(wèn)、控制和管理之外,策略引擎236可包括任何邏輯、規(guī)貝U、功能或操作以確定和提供對(duì)設(shè)備200所高速緩存的對(duì)象、數(shù)據(jù)、或內(nèi)容的訪問(wèn)、控制和管理。特定高速緩存策略的其他實(shí)施例此處進(jìn)一步描述。加密引擎234包括用于操控諸如SSL或TLS的任何安全相關(guān)協(xié)議或其中涉及的任何功能的處理的任何邏輯、商業(yè)規(guī)則、功能或操作。例如,加密引擎234加密并解密通過(guò)設(shè)備200傳輸?shù)木W(wǎng)絡(luò)分組,或其任何部分。加密引擎234也可代表客戶機(jī)102a-102n、服務(wù)器106a-106n或設(shè)備200來(lái)設(shè)置或建立SSL或TLS連接。因此,加密引擎234提供SSL處理的卸載和加速。在一個(gè)實(shí)施例中,加密引擎234使用隧道協(xié)議來(lái)提供在客戶機(jī)102a-102n和服務(wù)器106a-106n間的虛擬專用網(wǎng)絡(luò)。在一些實(shí)施例中,加密引擎234與加密處理器260通信。在其他實(shí)施例中,加密引擎234包括運(yùn)行在加密處理器260上的可執(zhí)行指令。多協(xié)議壓縮引擎238包括用于壓縮一個(gè)或多個(gè)網(wǎng)絡(luò)分組協(xié)議(例如被設(shè)備200的網(wǎng)絡(luò)堆棧267使用的任何協(xié)議)的任何邏輯、商業(yè)規(guī)則、功能或操作。在一個(gè)實(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)、無(wú)線應(yīng)用協(xié)議(WAP)、移動(dòng)IP協(xié)議以及互聯(lián)網(wǎng)協(xié)議電話(VoIP)協(xié)議。在其他實(shí)施例中,多協(xié)議壓縮引擎238提供基于超文本標(biāo)記語(yǔ)言(HTML)的協(xié)議的壓縮,并且在一些實(shí)施例中,提供任何標(biāo)記語(yǔ)言的壓縮,例如可擴(kuò)展標(biāo)記語(yǔ)言(XML)。在一個(gè)實(shí)施例中,多協(xié)議壓縮引擎238提供任何高性能協(xié)議的壓縮,例如設(shè)計(jì)用于設(shè)備200到設(shè)備200通信的任何協(xié)議。在又一個(gè)實(shí)施例中,多協(xié)議壓縮引擎238使用修改的傳輸控制協(xié)議來(lái)壓縮任何通信的任何載荷或任何通信,例如事務(wù)TCP(T/TCP)、帶有選擇確認(rèn)的TCP(TCP-SACK)、帶有大窗口的TCP(TCP-LW)、例如TCP-Vegas協(xié)議的擁塞預(yù)報(bào)協(xié)議以及TCP欺騙協(xié)議(TCPspoofingprotocol)0同樣的,多協(xié)議壓縮引擎238為用戶加速經(jīng)由桌面客戶機(jī)乃至移動(dòng)客戶機(jī)訪問(wèn)應(yīng)用的性能,所述桌面客戶機(jī)例如MicosoftOutlook和非web瘦客戶機(jī),諸如由像Oracle、SAP和Siebel的通用企業(yè)應(yīng)用所啟動(dòng)的任何客戶機(jī),所述移動(dòng)客戶機(jī)例如掌上電腦。在一些實(shí)施例中,通過(guò)在內(nèi)核模式204內(nèi)部執(zhí)行并與訪問(wèn)網(wǎng)絡(luò)堆棧267的分組處理引擎240集成,多協(xié)議壓縮引擎238可以壓縮TCP/IP協(xié)議攜帶的任何協(xié)議,例如任何應(yīng)用層協(xié)議。高速層2-7集成分組引擎240,通常也稱為分組處理引擎,或分組引擎,負(fù)責(zé)設(shè)備200通過(guò)網(wǎng)絡(luò)端口266接收和發(fā)送的分組的內(nèi)核級(jí)處理的管理。高速層2-7集成分組引擎240可包括用于在例如接收網(wǎng)絡(luò)分組和傳輸網(wǎng)絡(luò)分組的處理期間排隊(duì)一個(gè)或多個(gè)網(wǎng)絡(luò)分組的緩沖器。另外,高速層2-7集成分組引擎240與一個(gè)或多個(gè)網(wǎng)絡(luò)堆棧267通信以通過(guò)網(wǎng)絡(luò)端口266發(fā)送和接收網(wǎng)絡(luò)分組。高速層2-7集成分組引擎240與加密引擎234、高速緩存管理器232、策略引擎236和多協(xié)議壓縮邏輯238協(xié)同工作。更具體地,配置加密引擎234以執(zhí)行分組的SSL處理,配置策略引擎236以執(zhí)行涉及流量管理的功能,例如請(qǐng)求級(jí)內(nèi)容切換以及請(qǐng)求級(jí)高速緩存重定向,并配置多協(xié)議壓縮邏輯238以執(zhí)行涉及數(shù)據(jù)壓縮和解壓縮的功能。高速層2-7集成分組引擎240包括分組處理定時(shí)器242。在一個(gè)實(shí)施例中,分組處理定時(shí)器242提供一個(gè)或多個(gè)時(shí)間間隔以觸發(fā)輸入處理,例如,接收或者輸出(即傳輸)網(wǎng)絡(luò)分組。在一些實(shí)施例中,高速層2-7集成分組引擎240響應(yīng)于定時(shí)器242處理網(wǎng)絡(luò)分組。分組處理定時(shí)器242向分組引擎240提供任何類型和形式的信號(hào)以通知、觸發(fā)或傳輸時(shí)間相關(guān)的事件、間隔或發(fā)生。在許多實(shí)施例中,分組處理定時(shí)器242以毫秒級(jí)操作,例如100ms、50ms、或25ms。例如,在一些實(shí)例中,分組處理定時(shí)器242提供時(shí)間間隔或者以其它方式使得由高速層2-7集成分組引擎240以IOms時(shí)間間隔處理網(wǎng)絡(luò)分組,而在其他實(shí)施例中,使高速層2-7集成分組引擎240以5ms時(shí)間間隔處理網(wǎng)絡(luò)分組,并且在進(jìn)一步的實(shí)施例中,短至IJ3、2或Ims時(shí)間間隔。高速層2-7集成分組引擎240在操作期間可與加密引擎234、高速緩存管理器232、策略引擎236以及多協(xié)議壓縮引擎238連接、集成或通信。因此,響應(yīng)于分組處理定時(shí)器242和/或分組引擎240,可執(zhí)行加密引擎234、高速緩存管理器232、策略引擎236以及多協(xié)議壓縮引擎238的任何邏輯、功能或操作。因此,在由分組處理定時(shí)器242提供的時(shí)間間隔粒度,可執(zhí)行加密引擎234、高速緩存管理器232、策略引擎236以及多協(xié)議壓縮引擎238的任何邏輯、功能或操作,例如,時(shí)間間隔少于或等于10ms。例如,在一個(gè)實(shí)施例中,高速緩存管理器232可響應(yīng)于高速層2-7集成分組引擎240和/或分組處理定時(shí)器242來(lái)執(zhí)行任何高速緩存的對(duì)象的終止。在又一個(gè)實(shí)施例中,高速緩存的對(duì)象的終止或無(wú)效時(shí)間被設(shè)定為與分組處理定時(shí)器242的時(shí)間間隔相同的粒度級(jí),例如每10ms。與內(nèi)核空間204不同,用戶空間202是被用戶模式應(yīng)用或在用戶模式運(yùn)行的程序所使用的操作系統(tǒng)的存儲(chǔ)區(qū)域或部分。用戶模式應(yīng)用不能直接訪問(wèn)內(nèi)核空間204而使用服務(wù)調(diào)用以訪問(wèn)內(nèi)核服務(wù)。如圖2所示,設(shè)備200的用戶空間202包括圖形用戶接口(⑶I)210、命令行接口(CLI)212、殼服務(wù)(shellservice)214、健康監(jiān)控程序216以及守護(hù)(daemon)服務(wù)218。⑶1210和CLI212提供系統(tǒng)管理員或其他用戶可與之交互并控制設(shè)備200操作的裝置,例如通過(guò)設(shè)備200的操作系統(tǒng)。⑶1210和CLI212可包括運(yùn)行在用戶空間202或內(nèi)核框架204中的代碼。GUI210可以是任何類型或形式的圖形用戶接口,可以通過(guò)文本、圖形或其他形式由任何類型的程序或應(yīng)用(如瀏覽器)來(lái)呈現(xiàn)。CLI212可為任何類型和形式的命令行或基于文本的接口,例如通過(guò)操作系統(tǒng)提供的命令行。例如,CLI212可包括殼,該殼是使用戶與操作系統(tǒng)相互作用的工具。在一些實(shí)施例中,可通過(guò)bash、csh、tcsh或者ksh類型的殼提供CLI212。殼服務(wù)214包括程序、服務(wù)、任務(wù)、進(jìn)程或可執(zhí)行指令以支持由用戶通過(guò)⑶1210和/或CLI212的與設(shè)備200或者操作系統(tǒng)的交互健康監(jiān)控程序216用于監(jiān)控、檢查、報(bào)告并確保網(wǎng)絡(luò)系統(tǒng)正常運(yùn)行,以及用戶正通過(guò)網(wǎng)絡(luò)接收請(qǐng)求的內(nèi)容。健康監(jiān)控程序216包括一個(gè)或多個(gè)程序、服務(wù)、任務(wù)、進(jìn)程或可執(zhí)行指令,為監(jiān)控設(shè)備200的任何行為提供邏輯、規(guī)則、功能或操作。在一些實(shí)施例中,健康監(jiān)控程序216攔截并檢查通過(guò)設(shè)備200傳遞的任何網(wǎng)絡(luò)流量。在其他實(shí)施例中,健康監(jiān)控程序216通過(guò)任何合適的方法和/或機(jī)制與一個(gè)或多個(gè)下述設(shè)備連接:加密引擎234,高速緩存管理器232,策略引擎236,多協(xié)議壓縮邏輯238,分組引擎240,守護(hù)服務(wù)218以及殼服務(wù)214。因此,健康監(jiān)控程序216可調(diào)用任何應(yīng)用編程接口(API)以確定設(shè)備200的任何部分的狀態(tài)、情況或健康。例如,健康監(jiān)控程序216可周期性地查驗(yàn)(ping)或發(fā)送狀態(tài)查詢以檢查程序、進(jìn)程、服務(wù)或任務(wù)是否活動(dòng)并當(dāng)前正在運(yùn)行。在又一個(gè)實(shí)施例中,健康監(jiān)控程序216可檢查由任何程序、進(jìn)程、服務(wù)或任務(wù)提供的任何狀態(tài)、錯(cuò)誤或歷史日志以確定設(shè)備200任何部分的任何狀況、狀態(tài)或錯(cuò)誤。守護(hù)服務(wù)218是連續(xù)運(yùn)行或在背景中運(yùn)行的程序,并且處理設(shè)備200接收的周期性服務(wù)請(qǐng)求。在一些實(shí)施例中,守護(hù)服務(wù)可向其他程序或進(jìn)程(例如合適的另一個(gè)守護(hù)服務(wù)218)轉(zhuǎn)發(fā)請(qǐng)求。如本領(lǐng)域技術(shù)人員所公知的,守護(hù)服務(wù)218可無(wú)人監(jiān)護(hù)的運(yùn)行,以執(zhí)行連續(xù)的或周期性的系統(tǒng)范圍功能,例如網(wǎng)絡(luò)控制,或者執(zhí)行任何需要的任務(wù)。在一些實(shí)施例中,一個(gè)或多個(gè)守護(hù)服務(wù)218運(yùn)行在用戶空間202中,而在其他實(shí)施例中,一個(gè)或多個(gè)守護(hù)服務(wù)218運(yùn)行在內(nèi)核空間?,F(xiàn)參考圖2B,描述了設(shè)備200的又一個(gè)實(shí)施例。總的來(lái)說(shuō),設(shè)備200提供下列服務(wù)、功能或操作中的一個(gè)或多個(gè):用于一個(gè)或多個(gè)客戶機(jī)102以及一個(gè)或多個(gè)服務(wù)器106之間的通信的SSLVPN連通280、交換/負(fù)載平衡284、域名服務(wù)解析286、加速288和應(yīng)用防火墻290。服務(wù)器106的每一個(gè)可以提供一個(gè)或者多個(gè)網(wǎng)絡(luò)相關(guān)服務(wù)270a-270n(稱為服務(wù)270)。例如,服務(wù)器106可以提供http服務(wù)270。設(shè)備200包括一個(gè)或者多個(gè)虛擬服務(wù)器或者虛擬互聯(lián)網(wǎng)協(xié)議服務(wù)器,稱為VSerVer275、vS275、VIP服務(wù)器或者僅是VIP275a_275n(此處也稱為vServer275)。vServer275根據(jù)設(shè)備200的配置和操作來(lái)接收、攔截或者以其它方式處理客戶機(jī)102和服務(wù)器106之間的通信。vServer275可以包括軟件、硬件或者軟件和硬件的任何組合。vServer275可包括在設(shè)備200中的用戶模式202、內(nèi)核模式204或者其任何組合中運(yùn)行的任何類型和形式的程序、服務(wù)、任務(wù)、進(jìn)程或者可執(zhí)行指令。vServer275包括任何邏輯、功能、規(guī)則或者操作,以執(zhí)行此處所述技術(shù)的任何實(shí)施例,諸如SSLVPN280、轉(zhuǎn)換/負(fù)載平衡284、域名服務(wù)解析286、加速288和應(yīng)用防火墻290。在一些實(shí)施例中,vServer275建立到服務(wù)器106的服務(wù)270的連接。服務(wù)275可以包括能夠連接到設(shè)備200、客戶機(jī)102或者vServer275并與之通信的任何程序、應(yīng)用、進(jìn)程、任務(wù)或者可執(zhí)行指令集。例如,服務(wù)275可以包括web服務(wù)器、http服務(wù)器、ftp、電子郵件或者數(shù)據(jù)庫(kù)服務(wù)器。在一些實(shí)施例中,服務(wù)270是守護(hù)進(jìn)程或者網(wǎng)絡(luò)驅(qū)動(dòng)器,用于監(jiān)聽(tīng)、接收和/或發(fā)送應(yīng)用的通信,諸如電子郵件、數(shù)據(jù)庫(kù)或者企業(yè)應(yīng)用。在一些實(shí)施例中,服務(wù)270可以在特定的IP地址、或者IP地址和端口上通信。在一些實(shí)施例中,vServer275應(yīng)用策略引擎236的一個(gè)或者多個(gè)策略到客戶機(jī)102和服務(wù)器106之間的網(wǎng)絡(luò)通信。在一個(gè)實(shí)施例中,該策略與VSerVer275相關(guān)。在又一個(gè)實(shí)施例中,該策略基于用戶或者用戶組。在又一個(gè)實(shí)施例中,策略為通用的并且應(yīng)用到一個(gè)或者多個(gè)vServer275a-275n,和通過(guò)設(shè)備200通信的任何用戶或者用戶組。在一些實(shí)施例中,策略引擎的策略具有基于通信的任何內(nèi)容應(yīng)用該策略的條件,通信的內(nèi)容諸如互聯(lián)網(wǎng)協(xié)議地址、端口、協(xié)議類型、分組中的頭部或者字段、或者通信的上下文,諸如用戶、用戶組、VSerVer275、傳輸層連接、和/或客戶機(jī)102或者服務(wù)器106的標(biāo)識(shí)或者屬性。在其他實(shí)施例中,設(shè)備200與策略引擎236通信或接口,以便確定遠(yuǎn)程用戶或遠(yuǎn)程客戶機(jī)102的驗(yàn)證和/或授權(quán),以訪問(wèn)來(lái)自服務(wù)器106的計(jì)算環(huán)境15、應(yīng)用和/或數(shù)據(jù)文件。在又一個(gè)實(shí)施例中,設(shè)備200與策略引擎236通信或交互,以便確定遠(yuǎn)程用戶或遠(yuǎn)程客戶機(jī)102的驗(yàn)證和/或授權(quán),使得應(yīng)用傳送系統(tǒng)190傳送一個(gè)或多個(gè)計(jì)算環(huán)境15、應(yīng)用和/或數(shù)據(jù)文件。在又一個(gè)實(shí)施例中,設(shè)備200基于策略引擎236對(duì)遠(yuǎn)程用戶或遠(yuǎn)程客戶機(jī)102的驗(yàn)證和/或授權(quán)建立VPN或SSLVPN連接。一個(gè)實(shí)施例中,設(shè)備200基于策略引擎236的策略控制網(wǎng)絡(luò)流量以及通信會(huì)話。例如,基于策略引擎236,設(shè)備200可控制對(duì)計(jì)算環(huán)境15、應(yīng)用或數(shù)據(jù)文件的訪問(wèn)。在一些實(shí)施例中,vServer275與客戶機(jī)102經(jīng)客戶機(jī)代理120建立傳輸層連接,諸如TCP或者UDP連接。在一個(gè)實(shí)施例中,vServer275監(jiān)聽(tīng)和接收來(lái)自客戶機(jī)102的通信。在其他實(shí)施例中,vServer275與客戶機(jī)服務(wù)器106建立傳輸層連接,諸如TCP或者UDP連接。在一個(gè)實(shí)施例中,vServer275建立到運(yùn)行在服務(wù)器106上的服務(wù)器270的互聯(lián)網(wǎng)協(xié)議地址和端口的傳輸層連接。在又一個(gè)實(shí)施例中,vServer275將到客戶機(jī)102的第一傳輸層連接與到服務(wù)器106的第二傳輸層連接相關(guān)聯(lián)。在一些實(shí)施例中,VSerVer275建立到服務(wù)器106的傳輸層連接池并經(jīng)由所述池化(pooled)的傳輸層連接多路復(fù)用客戶機(jī)的請(qǐng)求。在一些實(shí)施例中,設(shè)備200提供客戶機(jī)102和服務(wù)器106之間的SSLVPN連接280。例如,第一網(wǎng)絡(luò)102上的客戶機(jī)102請(qǐng)求建立到第二網(wǎng)絡(luò)104’上的服務(wù)器106的連接。在一些實(shí)施例中,第二網(wǎng)絡(luò)104’是不能從第一網(wǎng)絡(luò)104路由的。在其他實(shí)施例中,客戶機(jī)102位于公用網(wǎng)絡(luò)104上,并且服務(wù)器106位于專用網(wǎng)絡(luò)104’上,例如企業(yè)網(wǎng)。在一個(gè)實(shí)施例中,客戶機(jī)代理120攔截第一網(wǎng)絡(luò)104上的客戶機(jī)102的通信,加密該通信,并且經(jīng)第一傳輸層連接發(fā)送該通信到設(shè)備200。設(shè)備200將第一網(wǎng)絡(luò)104上的第一傳輸層連接與到第二網(wǎng)絡(luò)104上的服務(wù)器106的第二傳輸層連接相關(guān)聯(lián)。設(shè)備200接收來(lái)自客戶機(jī)代理102的所攔截的通信,解密該通信,并且經(jīng)第二傳輸層連接發(fā)送該通信到第二網(wǎng)絡(luò)104上的服務(wù)器106。第二傳輸層連接可以是池化的傳輸層連接。同樣的,設(shè)備200為兩個(gè)網(wǎng)絡(luò)104、104’之間的客戶機(jī)102提供端到端安全傳輸層連接。在一個(gè)實(shí)施例中,設(shè)備200寄載虛擬專用網(wǎng)絡(luò)104上的客戶機(jī)102的內(nèi)部網(wǎng)互聯(lián)網(wǎng)協(xié)議或者IntranetIP282地址。客戶機(jī)102具有本地網(wǎng)絡(luò)標(biāo)識(shí)符,諸如第一網(wǎng)絡(luò)104上的互聯(lián)網(wǎng)協(xié)議(IP)地址和/或主機(jī)名稱。當(dāng)經(jīng)設(shè)備200連接到第二網(wǎng)絡(luò)104’時(shí),設(shè)備200在第二網(wǎng)絡(luò)104’上為客戶機(jī)102建立、分配或者以其它方式提供IntranetIP,其是諸如IP地址和/或主機(jī)名稱的網(wǎng)絡(luò)標(biāo)識(shí)符。使用為客戶機(jī)的所建立的IntranetIP282,設(shè)備200在第二或?qū)S镁W(wǎng)104’上監(jiān)聽(tīng)并接收指向該客戶機(jī)102的任何通信。在一個(gè)實(shí)施例中,設(shè)備200在第二專用網(wǎng)絡(luò)104上用作或者代表客戶機(jī)102。例如,在又一個(gè)實(shí)施例中,vServer275監(jiān)聽(tīng)和響應(yīng)到客戶機(jī)102的IntranetIP282的通信。在一些實(shí)施例中,如果第二網(wǎng)絡(luò)104’上的計(jì)算裝置100發(fā)送請(qǐng)求,設(shè)備200如同客戶機(jī)102—樣來(lái)處理該請(qǐng)求。例如,設(shè)備200可以響應(yīng)對(duì)客戶機(jī)IntranetIP282的查驗(yàn)。在又一個(gè)實(shí)施例中,設(shè)備可以與請(qǐng)求和客戶機(jī)IntranetIP282連接的第二網(wǎng)絡(luò)104上的計(jì)算裝置100建立連接,諸如TCP或者UDP連接。在一些實(shí)施例中,設(shè)備200為客戶機(jī)102和服務(wù)器106之間的通信提供下列一個(gè)或多個(gè)加速技術(shù)288:1)壓縮;2)解壓縮;3)傳輸控制協(xié)議池;4)傳輸控制協(xié)議多路復(fù)用;5)傳輸控制協(xié)議緩沖;以及6)高速緩存。在一個(gè)實(shí)施例中,設(shè)備200通過(guò)開(kāi)啟與每一服務(wù)器106的一個(gè)或者多個(gè)傳輸層連接并且維持這些連接以允許由客戶機(jī)經(jīng)因特網(wǎng)的重復(fù)數(shù)據(jù)訪問(wèn),來(lái)為服務(wù)器106緩解由重復(fù)開(kāi)啟和關(guān)閉到客戶機(jī)102的傳輸層連接所造成的大量處理負(fù)載。該技術(shù)此處稱為“連接池”。在一些實(shí)施例中,為了經(jīng)池化的傳輸層連接無(wú)縫拼接從客戶機(jī)102到服務(wù)器106的通信,設(shè)備200通過(guò)在傳輸層協(xié)議級(jí)修改序列號(hào)和確認(rèn)號(hào)來(lái)轉(zhuǎn)換或多路復(fù)用通信。這被稱為“連接多路復(fù)用”。在一些實(shí)施例中,不需要應(yīng)用層協(xié)議相互作用。例如,在到來(lái)分組(即,自客戶機(jī)102接收的分組)的情況中,所述分組的源網(wǎng)絡(luò)地址被改變?yōu)樵O(shè)備200的輸出端口的網(wǎng)絡(luò)地址,而目的網(wǎng)絡(luò)地址被改為目的服務(wù)器的網(wǎng)絡(luò)地址。在發(fā)出分組(即,自服務(wù)器106接收的一個(gè)分組)的情況中,源網(wǎng)絡(luò)地址被從服務(wù)器106的網(wǎng)絡(luò)地址改變?yōu)樵O(shè)備200的輸出端口的網(wǎng)絡(luò)地址,而目的地址被從設(shè)備200的網(wǎng)絡(luò)地址改變?yōu)檎?qǐng)求的客戶機(jī)102的網(wǎng)絡(luò)地址。分組的序列號(hào)和確認(rèn)號(hào)也被轉(zhuǎn)換為到客戶機(jī)102的設(shè)備200的傳輸層連接上的客戶機(jī)102所期待的序列號(hào)和確認(rèn)。在一些實(shí)施例中,傳輸層協(xié)議的分組校驗(yàn)和被重新計(jì)算以計(jì)及這些轉(zhuǎn)換。在又一個(gè)實(shí)施例中,設(shè)備200為客戶機(jī)102和服務(wù)器106之間的通信提供交換或負(fù)載平衡功能284。在一些實(shí)施例中,設(shè)備200根據(jù)層4或應(yīng)用層請(qǐng)求數(shù)據(jù)來(lái)分布流量并將客戶機(jī)請(qǐng)求定向到服務(wù)器106。在一個(gè)實(shí)施例中,盡管網(wǎng)絡(luò)分組的網(wǎng)絡(luò)層或者層2識(shí)別目的服務(wù)器106,但設(shè)備200通過(guò)承載為傳輸層分組的有效載荷的數(shù)據(jù)和應(yīng)用信息來(lái)確定服務(wù)器106以便分發(fā)網(wǎng)絡(luò)分組。在一個(gè)實(shí)施例中,設(shè)備200的健康監(jiān)控程序216監(jiān)控服務(wù)器的健康來(lái)確定分發(fā)客戶機(jī)請(qǐng)求到哪個(gè)服務(wù)器106。在一些實(shí)施例中,如果設(shè)備200探測(cè)到某個(gè)服務(wù)器106不可用或者具有超過(guò)預(yù)定閾值的負(fù)載,設(shè)備200可以將客戶機(jī)請(qǐng)求指向或者分發(fā)到另一個(gè)服務(wù)器106。在一些實(shí)施例中,設(shè)備200用作域名服務(wù)(DNS)解析器或者以其它方式為來(lái)自客戶機(jī)102的DNS請(qǐng)求提供解析。在一些實(shí)施例中,設(shè)備攔截由客戶機(jī)102發(fā)送的DNS請(qǐng)求。在一個(gè)實(shí)施例中,設(shè)備200以設(shè)備200的IP地址或其所寄載的IP地址來(lái)響應(yīng)客戶機(jī)的DNS請(qǐng)求。在此實(shí)施例中,客戶機(jī)102把用于域名的網(wǎng)絡(luò)通信發(fā)送到設(shè)備200。在又一個(gè)實(shí)施例中,設(shè)備200以第二設(shè)備200’的或其所寄載的IP地址來(lái)響應(yīng)客戶機(jī)的DNS請(qǐng)求。在一些實(shí)施例中,設(shè)備200使用由設(shè)備200確定的服務(wù)器106的IP地址來(lái)響應(yīng)客戶機(jī)的DNS請(qǐng)求。在又一個(gè)實(shí)施例中,設(shè)備200為客戶機(jī)102和服務(wù)器106之間的通信提供應(yīng)用防火墻功能290。在一個(gè)實(shí)施例中,策略引擎236提供用于探測(cè)和阻斷非法請(qǐng)求的規(guī)則。在一些實(shí)施例中,應(yīng)用防火墻290防御拒絕服務(wù)(DoS)攻擊。在其他實(shí)施例中,設(shè)備檢查所攔截的請(qǐng)求的內(nèi)容,以識(shí)別和阻斷基于應(yīng)用的攻擊。在一些實(shí)施例中,規(guī)則/策略引擎236包括用于提供對(duì)多個(gè)種類和類型的基于web或因特網(wǎng)的脆弱點(diǎn)的保護(hù)的一個(gè)或多個(gè)應(yīng)用防火墻或安全控制策略,例如下列的一個(gè)或多個(gè)脆弱點(diǎn):1)緩沖區(qū)泄出,2)CG1-BIN參數(shù)操縱,3)表單/隱藏字段操縱,4)強(qiáng)制瀏覽,5)C00kie或會(huì)話中毒,6)被破壞的訪問(wèn)控制列表(ACLs)或弱密碼,7)跨站腳本處理(XSS),8)命令注入,9)SQL注入,10)錯(cuò)誤觸發(fā)敏感信息泄露,11)對(duì)加密的不安全使用,12)服務(wù)器錯(cuò)誤配置,13)后門(mén)和調(diào)試選項(xiàng),14)網(wǎng)站涂改,15)平臺(tái)或操作系統(tǒng)弱點(diǎn),和16)零天攻擊。在一個(gè)實(shí)施例中,對(duì)下列情況的一種或多種,應(yīng)用防火墻290以檢查或分析網(wǎng)絡(luò)通信的形式來(lái)提供HTML格式字段的保護(hù):1)返回所需的字段,2)不允許附加字段,3)只讀和隱藏字段強(qiáng)制(enforcement),4)下拉列表和單選按鈕字段的一致,以及5)格式字段最大長(zhǎng)度強(qiáng)制。在一些實(shí)施例中,應(yīng)用防火墻290確保cookie不被修改。在其他實(shí)施例中,應(yīng)用防火墻290通過(guò)執(zhí)行合法的URL來(lái)防御強(qiáng)制瀏覽。在其他實(shí)施例中,應(yīng)用防火墻290保護(hù)在網(wǎng)絡(luò)通信中包含的任何機(jī)密信息。應(yīng)用防火墻290可以根據(jù)引擎236的規(guī)則或策略來(lái)檢查或分析任一網(wǎng)絡(luò)通信以識(shí)別在網(wǎng)絡(luò)分組的任一字段中的任一機(jī)密信息。在一些實(shí)施例中,應(yīng)用防火墻290在網(wǎng)絡(luò)通信中識(shí)別信用卡號(hào)、口令、社會(huì)保險(xiǎn)號(hào)、姓名、病人代碼、聯(lián)系信息和年齡的一次或多次出現(xiàn)。網(wǎng)絡(luò)通信的編碼部分可以包括這些出現(xiàn)或機(jī)密信息?;谶@些出現(xiàn),在一個(gè)實(shí)施例中,應(yīng)用防火墻290可以對(duì)網(wǎng)絡(luò)通信采取策略行動(dòng),諸如阻止發(fā)送網(wǎng)絡(luò)通信。在又一個(gè)實(shí)施例中,應(yīng)用防火墻290可以重寫(xiě)、移動(dòng)或者以其它方式掩蓋該所識(shí)別的出現(xiàn)或者機(jī)密信息。仍參考圖2B,設(shè)備200可以包括如上面結(jié)合圖1D所討論的性能監(jiān)控代理197。在一個(gè)實(shí)施例中,設(shè)備200從如圖1D中所描述的監(jiān)控服務(wù)198或監(jiān)控服務(wù)器106中接收監(jiān)控代理197。在一些實(shí)施例中,設(shè)備200在諸如磁盤(pán)的存儲(chǔ)裝置中保存監(jiān)控代理197,以用于傳送給與設(shè)備200通信的任何客戶機(jī)或服務(wù)器。例如,在一個(gè)實(shí)施例中,設(shè)備200在接收到建立傳輸層連接的請(qǐng)求時(shí)發(fā)送監(jiān)控代理197給客戶機(jī)。在其他實(shí)施例中,設(shè)備200在建立與客戶機(jī)102的傳輸層連接時(shí)發(fā)送監(jiān)控代理197。在又一個(gè)實(shí)施例中,設(shè)備200在攔截或檢測(cè)對(duì)web頁(yè)面的請(qǐng)求時(shí)發(fā)送監(jiān)控代理197給客戶機(jī)。在又一個(gè)實(shí)施例中,設(shè)備200響應(yīng)于監(jiān)控服務(wù)器198的請(qǐng)求來(lái)發(fā)送監(jiān)控代理197到客戶機(jī)或服務(wù)器。在一個(gè)實(shí)施例中,設(shè)備200發(fā)送監(jiān)控代理197到第二設(shè)備200’或設(shè)備205。在其他實(shí)施例中,設(shè)備200執(zhí)行監(jiān)控代理197。在一個(gè)實(shí)施例中,監(jiān)控代理197測(cè)量和監(jiān)控在設(shè)備200上執(zhí)行的任何應(yīng)用、程序、進(jìn)程、服務(wù)、任務(wù)或線程的性能。例如,監(jiān)控代理197可以監(jiān)控和測(cè)量vServers275A-275N的性能與操作。在又一個(gè)實(shí)施例中,監(jiān)控代理197測(cè)量和監(jiān)控設(shè)備200的任何傳輸層連接的性能。在一些實(shí)施例中,監(jiān)控代理197測(cè)量和監(jiān)控通過(guò)設(shè)備200的任何用戶會(huì)話的性能。在一個(gè)實(shí)施例中,監(jiān)控代理197測(cè)量和監(jiān)控通過(guò)設(shè)備200的諸如SSLVPN會(huì)話的任何虛擬專用網(wǎng)連接和/或會(huì)話的性能。在進(jìn)一步的實(shí)施例中,監(jiān)控代理197測(cè)量和監(jiān)控設(shè)備200的內(nèi)存、CPU和磁盤(pán)使用以及性能。在又一個(gè)實(shí)施例中,監(jiān)控代理197測(cè)量和監(jiān)控諸如SSL卸載、連接池和多路復(fù)用、高速緩存以及壓縮的由設(shè)備200執(zhí)行的任何加速技術(shù)288的性能。在一些實(shí)施例中,監(jiān)控代理197測(cè)量和監(jiān)控由設(shè)備200執(zhí)行的任一負(fù)載平衡和/或內(nèi)容交換284的性能。在其他實(shí)施例中,監(jiān)控代理197測(cè)量和監(jiān)控由設(shè)備200執(zhí)行的應(yīng)用防火墻290保護(hù)和處理的性能。C.客戶機(jī)代理現(xiàn)參考圖3,描述客戶機(jī)代理120的實(shí)施例??蛻魴C(jī)102包括客戶機(jī)代理120,用于經(jīng)由網(wǎng)絡(luò)104與設(shè)備200和/或服務(wù)器106來(lái)建立和交換通信??偟膩?lái)說(shuō),客戶機(jī)102在計(jì)算裝置100上操作,該計(jì)算裝置100擁有帶有內(nèi)核模式302以及用戶模式303的操作系統(tǒng),以及帶有一個(gè)或多個(gè)層310a-310b的網(wǎng)絡(luò)堆棧310??蛻魴C(jī)102可以已經(jīng)安裝和/或執(zhí)行一個(gè)或多個(gè)應(yīng)用。在一些實(shí)施例中,一個(gè)或多個(gè)應(yīng)用可通過(guò)網(wǎng)絡(luò)堆棧310與網(wǎng)絡(luò)104通信。所述應(yīng)用之一,諸如web瀏覽器,也可包括第一程序322。例如,可在一些實(shí)施例中使用第一程序322來(lái)安裝和/或執(zhí)行客戶機(jī)代理120,或其中任何部分??蛻魴C(jī)代理120包括攔截機(jī)制或者攔截器350,用于從網(wǎng)絡(luò)堆棧310攔截來(lái)自一個(gè)或者多個(gè)應(yīng)用的網(wǎng)絡(luò)通信??蛻魴C(jī)102的網(wǎng)絡(luò)堆棧310可包括任何類型和形式的軟件、或硬件或其組合,用于提供與網(wǎng)絡(luò)的連接和通信。在一個(gè)實(shí)施例中,網(wǎng)絡(luò)堆棧310包括用于網(wǎng)絡(luò)協(xié)議組的軟件實(shí)現(xiàn)。網(wǎng)絡(luò)堆棧310可包括一個(gè)或多個(gè)網(wǎng)絡(luò)層,例如為本領(lǐng)域技術(shù)人員所公認(rèn)和了解的開(kāi)放式系統(tǒng)互聯(lián)(OSI)通信模型的任何網(wǎng)絡(luò)層。這樣,網(wǎng)絡(luò)堆棧310可包括用于任何以下OSI模型層的任何類型和形式的協(xié)議:1)物理鏈路層;2)數(shù)據(jù)鏈路層;3)網(wǎng)絡(luò)層;4)傳輸層;5)會(huì)話層);6)表示層,以及7)應(yīng)用層。在一個(gè)實(shí)施例中,網(wǎng)絡(luò)堆棧310可包括在因特網(wǎng)協(xié)議(IP)的網(wǎng)絡(luò)層協(xié)議上的傳輸控制協(xié)議(TCP),通常稱為T(mén)CP/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ò)堆棧310包括任何類型和形式的無(wú)線協(xié)議,例如IEEE802.11和/或移動(dòng)因特網(wǎng)協(xié)議??紤]基于TCP/IP的網(wǎng)絡(luò),可使用任何基于TCP/IP的協(xié)議,包括消息應(yīng)用編程接口(MAPI)(email)、文件傳輸協(xié)議(FTP)、超文本傳輸協(xié)議(HTTP)、通用因特網(wǎng)文件系統(tǒng)(CIFS)協(xié)議(文件傳輸)、獨(dú)立計(jì)算架構(gòu)(ICA)協(xié)議、遠(yuǎn)程桌面協(xié)議(RDP)、無(wú)線應(yīng)用協(xié)議(WAP)、移動(dòng)IP協(xié)議,以及互聯(lián)網(wǎng)協(xié)議電話(VoIP)協(xié)議。在又一個(gè)實(shí)施例中,網(wǎng)絡(luò)堆棧310包括任何類型和形式的傳輸控制協(xié)議,諸如修改的傳輸控制協(xié)議,例如事務(wù)TCP(T/TCP),帶有選擇確認(rèn)的TCP(TCP-SACK),帶有大窗口的TCP(TCP-Lff),例如TCP-Vegas協(xié)議的擁塞預(yù)測(cè)協(xié)議,以及TCP欺騙協(xié)議。在其他實(shí)施例中,網(wǎng)絡(luò)堆棧310可使用諸如基于IP的UDP的任何類型和形式的用戶數(shù)據(jù)報(bào)協(xié)議(UDP),例如用于語(yǔ)音通信或?qū)崟r(shí)數(shù)據(jù)通信。另外,網(wǎng)絡(luò)堆棧310可包括支持一個(gè)或多個(gè)層的一個(gè)或多個(gè)網(wǎng)絡(luò)驅(qū)動(dòng)器,例如TCP驅(qū)動(dòng)器或網(wǎng)絡(luò)層驅(qū)動(dòng)器。網(wǎng)絡(luò)層驅(qū)動(dòng)器可作為計(jì)算裝置100的操作系統(tǒng)的一部分或者作為計(jì)算裝置100的任何網(wǎng)絡(luò)接口卡或其它網(wǎng)絡(luò)訪問(wèn)組件的一部分被包括。在一些實(shí)施例中,網(wǎng)絡(luò)堆棧310的任何網(wǎng)絡(luò)驅(qū)動(dòng)器可被定制、修改或調(diào)整以提供網(wǎng)絡(luò)堆棧310的定制或修改部分,用來(lái)支持此處描述的任何技術(shù)。在其他實(shí)施例中,設(shè)計(jì)并構(gòu)建加速程序302以與網(wǎng)絡(luò)堆棧310協(xié)同操作或工作,上述網(wǎng)絡(luò)堆棧310由客戶機(jī)102的操作系統(tǒng)安裝或以其它方式提供。網(wǎng)絡(luò)堆棧310包括任何類型和形式的接口,用于接收、獲得、提供或以其它方式訪問(wèn)涉及客戶機(jī)102的網(wǎng)絡(luò)通信的任何信息和數(shù)據(jù)。在一個(gè)實(shí)施例中,與網(wǎng)絡(luò)堆棧310的接口包括應(yīng)用編程接口(API)。接口也可包括任何函數(shù)調(diào)用、鉤子或過(guò)濾機(jī)制,事件或回調(diào)機(jī)制、或任何類型的接口技術(shù)。網(wǎng)絡(luò)堆棧310通過(guò)接口可接收或提供與網(wǎng)絡(luò)堆棧310的功能或操作相關(guān)的任何類型和形式的數(shù)據(jù)結(jié)構(gòu),例如對(duì)象。例如,數(shù)據(jù)結(jié)構(gòu)可以包括與網(wǎng)絡(luò)分組相關(guān)的信息和數(shù)據(jù)或者一個(gè)或多個(gè)網(wǎng)絡(luò)分組。在一些實(shí)施例中,數(shù)據(jù)結(jié)構(gòu)包括在網(wǎng)絡(luò)堆棧310的協(xié)議層處理的網(wǎng)絡(luò)分組的一部分,例如傳輸層的網(wǎng)絡(luò)分組。在一些實(shí)施例中,數(shù)據(jù)結(jié)構(gòu)325包括內(nèi)核級(jí)別數(shù)據(jù)結(jié)構(gòu),而在其他實(shí)施例中,數(shù)據(jù)結(jié)構(gòu)325包括用戶模式數(shù)據(jù)結(jié)構(gòu)。內(nèi)核級(jí)數(shù)據(jù)結(jié)構(gòu)可以包括獲得的或與在內(nèi)核模式302中操作的網(wǎng)絡(luò)堆棧310的一部分相關(guān)的數(shù)據(jù)結(jié)構(gòu)、或者運(yùn)行在內(nèi)核模式302中的網(wǎng)絡(luò)驅(qū)動(dòng)程序或其它軟件、或者由運(yùn)行或操作在操作系統(tǒng)的內(nèi)核模式的服務(wù)、進(jìn)程、任務(wù)、線程或其它可執(zhí)行指令獲得或收到的任何數(shù)據(jù)結(jié)構(gòu)。此外,網(wǎng)絡(luò)堆棧310的一些部分可在內(nèi)核模式302執(zhí)行或操作,例如,數(shù)據(jù)鏈路或網(wǎng)絡(luò)層,而其他部分在用戶模式303執(zhí)行或操作,例如網(wǎng)絡(luò)堆棧310的應(yīng)用層。例如,網(wǎng)絡(luò)堆棧的第一部分310a可以給應(yīng)用提供對(duì)網(wǎng)絡(luò)堆棧310的用戶模式訪問(wèn),而網(wǎng)絡(luò)堆棧310的第二部分310a提供對(duì)網(wǎng)絡(luò)的訪問(wèn)。在一些實(shí)施例中,網(wǎng)絡(luò)堆棧的第一部分310a可包括網(wǎng)絡(luò)堆棧310的一個(gè)或多個(gè)更上層,例如層5-7的任何層。在其他實(shí)施例中,網(wǎng)絡(luò)堆棧310的第二部分310b包括一個(gè)或多個(gè)較低的層,例如層1-4的任何層。網(wǎng)絡(luò)堆棧310的每個(gè)第一部分310a和第二部分310b可包括網(wǎng)絡(luò)堆棧310的任何部分,位于任何一個(gè)或多個(gè)網(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可以包括軟件、硬件、或者軟件和硬件的任何組合。在一個(gè)實(shí)施例中,攔截器350在網(wǎng)絡(luò)堆棧310的任一點(diǎn)攔截網(wǎng)絡(luò)通信,并且重定向或者發(fā)送網(wǎng)絡(luò)通信到由攔截器350或者客戶機(jī)代理120所期望的、管理的或者控制的目的地。例如,攔截器350可以攔截第一網(wǎng)絡(luò)的網(wǎng)絡(luò)堆棧310的網(wǎng)絡(luò)通信并且發(fā)送該網(wǎng)絡(luò)通信到設(shè)備200,用于在第二網(wǎng)絡(luò)104上發(fā)送。在一些實(shí)施例中,攔截器350包括含有諸如被構(gòu)建和設(shè)計(jì)來(lái)與網(wǎng)絡(luò)堆棧310對(duì)接并一同工作的網(wǎng)絡(luò)驅(qū)動(dòng)器的驅(qū)動(dòng)器的任一類型的攔截器350。在一些實(shí)施例中,客戶機(jī)代理120和/或攔截器350操作在網(wǎng)絡(luò)堆棧310的一個(gè)或者多個(gè)層,諸如在傳輸層。在一個(gè)實(shí)施例中,攔截器350包括過(guò)濾器驅(qū)動(dòng)器、鉤子機(jī)制、或者連接到網(wǎng)絡(luò)堆棧的傳輸層的任一形式和類型的合適網(wǎng)絡(luò)驅(qū)動(dòng)器接口,諸如通過(guò)傳輸驅(qū)動(dòng)器接口(TDI)。在一些實(shí)施例中,攔截器350連接到諸如傳輸層的第一協(xié)議層和諸如傳輸協(xié)議層之上的任何層的另一個(gè)協(xié)議層,例如,應(yīng)用協(xié)議層。在一個(gè)實(shí)施例中,攔截器350可以包括遵守網(wǎng)絡(luò)驅(qū)動(dòng)器接口規(guī)范(NDIS)的驅(qū)動(dòng)器,或者NDIS驅(qū)動(dòng)器。在又一個(gè)實(shí)施例中,攔截器350可以包括微型過(guò)濾器或者微端口驅(qū)動(dòng)器。在一個(gè)實(shí)施例中,攔截器350或其部分在內(nèi)核模式202中操作。在又一個(gè)實(shí)施例中,攔截器350或其部分在用戶模式203中操作。在一些實(shí)施例中,攔截器350的一部分在內(nèi)核模式202中操作,而攔截器350的另一部分在用戶模式203中操作。在其他實(shí)施例中,客戶機(jī)代理120在用戶模式203操作,但通過(guò)攔截器350連接到內(nèi)核模式驅(qū)動(dòng)器、進(jìn)程、服務(wù)、任務(wù)或者操作系統(tǒng)的部分,諸如以獲取內(nèi)核級(jí)數(shù)據(jù)結(jié)構(gòu)225。在其他實(shí)施例中,攔截器350為用戶模式應(yīng)用或者程序,諸如應(yīng)用。在一個(gè)實(shí)施例中,攔截器350攔截任何的傳輸層連接請(qǐng)求。在這些實(shí)施例中,攔截器350執(zhí)行傳輸層應(yīng)用編程接口(API)調(diào)用以設(shè)置目的地信息,諸如到期望位置的目的地IP地址和/或端口用于定位。以此方式,攔截器350攔截并重定向傳輸層連接到由攔截器350或客戶機(jī)代理120控制或管理的IP地址和端口。在一個(gè)實(shí)施例中,攔截器350把連接的目的地信息設(shè)置為客戶機(jī)代理120監(jiān)聽(tīng)的客戶機(jī)102的本地IP地址和端口。例如,客戶機(jī)代理120可以包括為重定向的傳輸層通信監(jiān)聽(tīng)本地IP地址和端口的代理服務(wù)。在一些實(shí)施例中,客戶機(jī)代理120隨后將重定向的傳輸層通信傳送到設(shè)備200。在一些實(shí)施例中,攔截器350攔截域名服務(wù)(DNS)請(qǐng)求。在一個(gè)實(shí)施例中,客戶機(jī)代理120和/或攔截器350解析DNS請(qǐng)求。在又一個(gè)實(shí)施例中,攔截器發(fā)送所攔截的DNS請(qǐng)求到設(shè)備200以進(jìn)行DNS解析。在一個(gè)實(shí)施例中,設(shè)備200解析DNS請(qǐng)求并且將DNS響應(yīng)傳送到客戶機(jī)代理120。在一些實(shí)施例中,設(shè)備200經(jīng)另一個(gè)設(shè)備200’或者DNS服務(wù)器106來(lái)解析DNS請(qǐng)求。在又一個(gè)實(shí)施例中,客戶機(jī)代理120可以包括兩個(gè)代理120和120’。在一個(gè)實(shí)施例中,第一代理120可以包括在網(wǎng)絡(luò)堆棧310的網(wǎng)絡(luò)層操作的攔截器350。在一些實(shí)施例中,第一代理120攔截網(wǎng)絡(luò)層請(qǐng)求,諸如因特網(wǎng)控制消息協(xié)議(ICMP)請(qǐng)求(例如,查驗(yàn)和跟蹤路由)。在其他實(shí)施例中,第二代理120’可以在傳輸層操作并且攔截傳輸層通信。在一些實(shí)施例中,第一代理120在網(wǎng)絡(luò)堆棧210的一層攔截通信并且與第二代理120’連接或者將所攔截的通信傳送到第二代理120’??蛻魴C(jī)代理120和/或攔截器350可以以對(duì)網(wǎng)絡(luò)堆棧310的任何其它協(xié)議層透明的方式在協(xié)議層操作或與之對(duì)接。例如,在一個(gè)實(shí)施例中,攔截器350可以以對(duì)諸如網(wǎng)絡(luò)層的傳輸層之下的任何協(xié)議層和諸如會(huì)話、表示或應(yīng)用層協(xié)議的傳輸層之上的任何協(xié)議層透明的方式在網(wǎng)絡(luò)堆棧310的傳輸層操作或與之對(duì)接。這允許網(wǎng)絡(luò)堆棧310的其它協(xié)議層如所期望的進(jìn)行操作并無(wú)需修改以使用攔截器350。這樣,客戶機(jī)代理120和/或攔截器350可以與傳輸層連接以安全、優(yōu)化、加速、路由或者負(fù)載平衡經(jīng)由傳輸層承載的任一協(xié)議提供的任一通信,諸如TCP/IP上的任一應(yīng)用層協(xié)議。此外,客戶機(jī)代理120和/或攔截器可以以對(duì)任何應(yīng)用、客戶機(jī)102的用戶和與客戶機(jī)102通信的諸如服務(wù)器的任何其它計(jì)算裝置透明的方式在網(wǎng)絡(luò)堆棧310上操作或與之對(duì)接。客戶機(jī)代理120和/或攔截器350可以以無(wú)需修改應(yīng)用的方式被安裝和/或執(zhí)行在客戶機(jī)102上。在一些實(shí)施例中,客戶機(jī)102的用戶或者與客戶機(jī)102通信的計(jì)算裝置未意識(shí)到客戶機(jī)代理120和/或攔截器350的存在、執(zhí)行或者操作。同樣,在一些實(shí)施例中,相對(duì)于應(yīng)用、客戶機(jī)102的用戶、諸如服務(wù)器的另一個(gè)計(jì)算裝置、或者在由攔截器350連接的協(xié)議層之上和/或之下的任何協(xié)議層透明地來(lái)安裝、執(zhí)行和/或操作客戶機(jī)代理120和/或攔截器350??蛻魴C(jī)代理120包括加速程序302、流客戶機(jī)306、收集代理304和/或監(jiān)控代理197。在一個(gè)實(shí)施例中,客戶機(jī)代理120包括由佛羅里達(dá)州FortLauderdale的CitrixSystemsInc.開(kāi)發(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包括加速程序302,用于加速客戶機(jī)102和服務(wù)器106之間的通信。在又一個(gè)實(shí)施例中,客戶機(jī)代理120包括收集代理304,用于執(zhí)行端點(diǎn)檢測(cè)/掃描并且用于為設(shè)備200和/或服務(wù)器106收集端點(diǎn)信息。在一些實(shí)施例中,加速程序302包括用于執(zhí)行一個(gè)或多個(gè)加速技術(shù)的客戶機(jī)側(cè)加速程序,以加速、增強(qiáng)或者以其他方式改善客戶機(jī)與服務(wù)器106的通信和/或?qū)Ψ?wù)器106的訪問(wèn),諸如訪問(wèn)由服務(wù)器106提供的應(yīng)用。加速程序302的可執(zhí)行指令的邏輯、函數(shù)和/或操作可以執(zhí)行一個(gè)或多個(gè)下列加速技術(shù):1)多協(xié)議壓縮,2)傳輸控制協(xié)議池,3)傳輸控制協(xié)議多路復(fù)用,4)傳輸控制協(xié)議緩沖,以及5)通過(guò)高速緩存管理器的高速緩存。另外,加速程序302可執(zhí)行由客戶機(jī)102接收和/或發(fā)送的任何通信的加密和/或解密。在一些實(shí)施例中,加速程序302以集成的方式或者格式執(zhí)行一個(gè)或者多個(gè)加速技術(shù)。另外,加速程序302可以對(duì)作為傳輸層協(xié)議的網(wǎng)絡(luò)分組的有效載荷所承載的任一協(xié)議或者多協(xié)議執(zhí)行壓縮。流客戶機(jī)306包括應(yīng)用、程序、進(jìn)程、服務(wù)、任務(wù)或者可執(zhí)行指令,所述應(yīng)用、程序、進(jìn)程、服務(wù)、任務(wù)或者可執(zhí)行指令用于接收和執(zhí)行從服務(wù)器106所流式傳輸?shù)膽?yīng)用。服務(wù)器106可以流式傳輸一個(gè)或者多個(gè)應(yīng)用數(shù)據(jù)文件到流客戶機(jī)306,用于播放、執(zhí)行或者以其它方式引起客戶機(jī)102上的應(yīng)用被執(zhí)行。在一些實(shí)施例中,服務(wù)器106發(fā)送一組壓縮或者打包的應(yīng)用數(shù)據(jù)文件到流客戶機(jī)306。在一些實(shí)施例中,多個(gè)應(yīng)用文件被壓縮并存儲(chǔ)在文件服務(wù)器上檔案文件中,例如CAB、ZIP、SIT、TAR、JAR或其它檔案文件。在一個(gè)實(shí)施例中,服務(wù)器106解壓縮、解包或者解檔應(yīng)用文件并且將該文件發(fā)送到客戶機(jī)102。在又一個(gè)實(shí)施例中,客戶機(jī)102解壓縮、解包或者解檔應(yīng)用文件。流客戶機(jī)306動(dòng)態(tài)安裝應(yīng)用或其部分,并且執(zhí)行該應(yīng)用。在一個(gè)實(shí)施例中,流客戶機(jī)306可以為可執(zhí)行程序。在一些實(shí)施例中,流客戶機(jī)306可以能夠啟動(dòng)另一個(gè)可執(zhí)行程序。收集代理304包括應(yīng)用、程序、進(jìn)程、服務(wù)、任務(wù)或者可執(zhí)行指令,用于識(shí)別、獲取和/或收集關(guān)于客戶機(jī)102的信息。在一些實(shí)施例中,設(shè)備200發(fā)送收集代理304到客戶機(jī)102或者客戶機(jī)代理120??梢愿鶕?jù)設(shè)備的策略引擎236的一個(gè)或多個(gè)策略來(lái)配置收集代理304。在其他實(shí)施例中,收集代理304發(fā)送在客戶機(jī)102上收集的信息到設(shè)備200。在一個(gè)實(shí)施例中,設(shè)備200的策略引擎236使用所收集的信息來(lái)確定和提供到網(wǎng)絡(luò)104的客戶機(jī)連接的訪問(wèn)、驗(yàn)證和授權(quán)控制。在一個(gè)實(shí)施例中,收集代理304包括端點(diǎn)檢測(cè)和掃描機(jī)制,其識(shí)別并且確定客戶機(jī)的一個(gè)或者多個(gè)屬性或者特征。例如,收集代理304可以識(shí)別和確定任何一個(gè)或多個(gè)以下的客戶機(jī)側(cè)屬性:1)操作系統(tǒng)和/或操作系統(tǒng)的版本,2)操作系統(tǒng)的服務(wù)包,3)運(yùn)行的服務(wù),4)運(yùn)行的進(jìn)程,和5)文件。收集代理304還可以識(shí)別并確定客戶機(jī)上任何一個(gè)或多個(gè)以下軟件的存在或版本:1)防病毒軟件;2)個(gè)人防火墻軟件;3)防垃圾郵件軟件,和4)互聯(lián)網(wǎng)安全軟件。策略引擎236可以具有基于客戶機(jī)或客戶機(jī)側(cè)屬性的任何一個(gè)或多個(gè)屬性或特性的一個(gè)或多個(gè)策略。在一些實(shí)施例中,客戶機(jī)代理120包括如結(jié)合圖1D和2B所討論的監(jiān)控代理197。監(jiān)控代理197可以是諸如VisualBasic或Java腳本的任何類型和形式的腳本。在一個(gè)實(shí)施例中,監(jiān)控代理197監(jiān)控和測(cè)量客戶機(jī)代理120的任何部分的性能。例如,在一些實(shí)施例中,監(jiān)控代理197監(jiān)控和測(cè)量加速程序302的性能。在又一個(gè)實(shí)施例中,監(jiān)控代理197監(jiān)控和測(cè)量流客戶機(jī)306的性能。在其他實(shí)施例中,監(jiān)控代理197監(jiān)控和測(cè)量收集代理304的性能。在又一個(gè)實(shí)施例中,監(jiān)控代理197監(jiān)控和測(cè)量攔截器350的性能。在一些實(shí)施例中,監(jiān)控代理197監(jiān)控和測(cè)量客戶機(jī)102的諸如存儲(chǔ)器、CPU和磁盤(pán)的任何資源。監(jiān)控代理197可以監(jiān)控和測(cè)量客戶機(jī)的任何應(yīng)用的性能。在一個(gè)實(shí)施例中,監(jiān)控代理197監(jiān)控和測(cè)量客戶機(jī)102上的瀏覽器的性能。在一些實(shí)施例中,監(jiān)控代理197監(jiān)控和測(cè)量經(jīng)由客戶機(jī)代理120傳送的任何應(yīng)用的性能。在其他實(shí)施例中,監(jiān)控代理197測(cè)量和監(jiān)控應(yīng)用的最終用戶響應(yīng)時(shí)間,例如基于web的響應(yīng)時(shí)間或HTTP響應(yīng)時(shí)間。監(jiān)控代理197可以監(jiān)控和測(cè)量ICA或RDP客戶機(jī)的性能。在又一個(gè)實(shí)施例中,監(jiān)控代理197測(cè)量和監(jiān)控用戶會(huì)話或應(yīng)用會(huì)話的指標(biāo)。在一些實(shí)施例中,監(jiān)控代理197測(cè)量和監(jiān)控ICA或RDP會(huì)話。在一個(gè)實(shí)施例中,監(jiān)控代理197測(cè)量和監(jiān)控設(shè)備200在加速傳送應(yīng)用和/或數(shù)據(jù)到客戶機(jī)102的過(guò)程中的性能。在一些實(shí)施例中,仍參考圖3,第一程序322可以用于自動(dòng)地、靜默地、透明地或者以其它方式安裝和/或執(zhí)行客戶機(jī)代理120或其部分,諸如攔截器350。在一個(gè)實(shí)施例中,第一程序322包括插件組件,例如ActiveX控件或Java控件或腳本,其加載到應(yīng)用并由應(yīng)用執(zhí)行。例如,第一程序包括由web瀏覽器應(yīng)用載入和運(yùn)行的ActiveX控件,例如在存儲(chǔ)器空間或應(yīng)用的上下文中。在又一個(gè)實(shí)施例中,第一程序322包括可執(zhí)行指令組,該可執(zhí)行指令組被例如瀏覽器的應(yīng)用載入并執(zhí)行。在一個(gè)實(shí)施例中,第一程序322包括被設(shè)計(jì)和構(gòu)造的程序以安裝客戶機(jī)代理120。在一些實(shí)施例中,第一程序322通過(guò)網(wǎng)絡(luò)從另一個(gè)計(jì)算裝置獲得、下載、或接收客戶機(jī)代理120。在又一個(gè)實(shí)施例中,第一程序322是用于在客戶機(jī)102的操作系統(tǒng)上安裝如網(wǎng)絡(luò)驅(qū)動(dòng)的程序的安裝程序或即插即用管理器。P.用于提供虛擬化應(yīng)用傳送控制器的系統(tǒng)和方法現(xiàn)參考圖4A,該框圖描述虛擬化環(huán)境400的一個(gè)實(shí)施例??傮w而言,計(jì)算裝置100包括管理程序?qū)?、虛擬化層和硬件層。管理程序?qū)影ü芾沓绦?01(也稱為虛擬化管理器),其通過(guò)在虛擬化層中執(zhí)行的至少一個(gè)虛擬機(jī)來(lái)分配和管理對(duì)硬件層中的多個(gè)物理資源(例如處理器421和盤(pán)428)的訪問(wèn)。虛擬化層包括至少一個(gè)操作系統(tǒng)410和分配給至少一個(gè)操作系統(tǒng)410的多個(gè)虛擬資源。虛擬資源可包括而不限于多個(gè)虛擬處理器432a、432b、432c(總稱為432)和虛擬盤(pán)442a、442b、442c(總稱為442),以及如虛擬存儲(chǔ)器和虛擬網(wǎng)絡(luò)接口的虛擬資源??蓪⒍鄠€(gè)虛擬資源和操作系統(tǒng)稱為虛擬機(jī)406。虛擬機(jī)406可包括控制操作系統(tǒng)405,該控制操作系統(tǒng)405與管理程序401通信,并用于執(zhí)行應(yīng)用以管理并配置計(jì)算裝置100上的其他虛擬機(jī)。具體而言,管理程序401可以以模擬可訪問(wèn)物理設(shè)備的操作系統(tǒng)的任何方式向操作系統(tǒng)提供虛擬資源。管理程序401可以向任何數(shù)量的客戶操作系統(tǒng)410a、410b(總稱為410)提供虛擬資源。一些實(shí)施例中,計(jì)算裝置100執(zhí)行一種或多種管理程序。這些實(shí)施例中,管理程序可用于模擬虛擬硬件、劃分物理硬件、虛擬化物理硬件并執(zhí)行提供對(duì)計(jì)算環(huán)境的訪問(wèn)的虛擬機(jī)。管理程序可包括由位于美國(guó)加州的PaloAlto的VMWare制造的這些程序;XEN管理程序(一種開(kāi)源產(chǎn)品,其開(kāi)發(fā)由開(kāi)源Xen.0rg協(xié)會(huì)監(jiān)管);由微軟公司提供的HyperV>VirtualServer或虛擬PC管理程序,或其他。一些實(shí)施例中,計(jì)算裝置100執(zhí)行創(chuàng)建客戶操作系統(tǒng)可在其上執(zhí)行虛擬機(jī)平臺(tái)的管理程序,該計(jì)算裝置100被稱為宿主服務(wù)器。在這些實(shí)施例的一個(gè)中,例如,計(jì)算裝置100是由位于美國(guó)佛羅里達(dá)州FortLauderdale的CitrixSystems有限公司提供的XENSERVER。一些實(shí)施例中,管理程序401在計(jì)算裝置上執(zhí)行的操作系統(tǒng)之內(nèi)執(zhí)行。在這些實(shí)施例的一個(gè)中,執(zhí)行操作系統(tǒng)和管理程序401的計(jì)算裝置可被視為具有宿主操作系統(tǒng)(執(zhí)行在計(jì)算裝置上的操作系統(tǒng)),和客戶操作系統(tǒng)(在由管理程序401提供的計(jì)算資源分區(qū)內(nèi)執(zhí)行的操作系統(tǒng))。其他實(shí)施例中,管理程序401和計(jì)算裝置上的硬件直接交互而不是在宿主操作系統(tǒng)上執(zhí)行。在這些實(shí)施例的一個(gè)中,管理程序401可被視為在“裸金屬(baremetal)”上執(zhí)行,所述“裸金屬”指包括計(jì)算裝置的硬件。一些實(shí)施例中,管理程序401可以產(chǎn)生操作系統(tǒng)410在其中執(zhí)行的虛擬機(jī)406a_c(總稱為406)。在這些實(shí)施例的一個(gè)中,管理程序401加載虛擬機(jī)映像以創(chuàng)建虛擬機(jī)406。在這些實(shí)施例的又一個(gè)中,管理程序401在虛擬機(jī)406內(nèi)執(zhí)行操作系統(tǒng)410。仍在這些實(shí)施例的又一個(gè)中,虛擬機(jī)406執(zhí)行操作系統(tǒng)410。一些實(shí)施例中,管理程序401控制在計(jì)算裝置100上執(zhí)行的虛擬機(jī)406的處理器調(diào)度和內(nèi)存劃分。在這些實(shí)施例的一個(gè)中,管理程序401控制至少一個(gè)虛擬機(jī)406的執(zhí)行。在這些實(shí)施例的又一個(gè)中,管理程序401向至少一個(gè)虛擬機(jī)406呈現(xiàn)由計(jì)算裝置100提供的至少一個(gè)硬件資源的抽象。其他實(shí)施例中,管理程序401控制是否以及如何將物理處理器能力呈現(xiàn)給虛擬機(jī)406。控制操作系統(tǒng)405可以執(zhí)行用于管理和配置客戶操作系統(tǒng)的至少一個(gè)應(yīng)用。一個(gè)實(shí)施例中,控制操作系統(tǒng)405可以執(zhí)行管理應(yīng)用,如包括如下用戶接口的應(yīng)用,該用戶接口為管理員提供對(duì)用于管理虛擬機(jī)執(zhí)行的功能的訪問(wèn),這些功能包括用于執(zhí)行虛擬機(jī)、中止虛擬機(jī)執(zhí)行或者識(shí)別要分配給虛擬機(jī)的物理資源類型的功能。又一個(gè)實(shí)施例中,管理程序401在由管理程序401創(chuàng)建的虛擬機(jī)406內(nèi)執(zhí)行控制操作系統(tǒng)405。又一個(gè)實(shí)施例中,控制操作系統(tǒng)405在被授權(quán)直接訪問(wèn)計(jì)算裝置100上的物理資源的虛擬機(jī)406上執(zhí)行。一些實(shí)施例中,計(jì)算裝置IOOa上的控制操作系統(tǒng)405a可以通過(guò)管理程序401a和管理程序401b之間的通信與計(jì)算裝置IOOb上的控制操作系統(tǒng)405b交換數(shù)據(jù)。這樣,一個(gè)或多個(gè)計(jì)算裝置100可以和一個(gè)或多個(gè)其他計(jì)算裝置100交換有關(guān)處理器或資源池中可用的其他物理資源的數(shù)據(jù)。在這些實(shí)施例的一個(gè)中,這種功能允許管理程序管理分布在多個(gè)物理計(jì)算裝置上的資源池。在這些實(shí)施例的又一個(gè)中,多個(gè)管理程序管理在一個(gè)計(jì)算裝置100上執(zhí)行的一個(gè)或多個(gè)客戶操作系統(tǒng)。一個(gè)實(shí)施例中,控制操作系統(tǒng)405在被授權(quán)與至少一個(gè)客戶操作系統(tǒng)410交互的虛擬機(jī)406上執(zhí)行。又一個(gè)實(shí)施例中,客戶操作系統(tǒng)410通過(guò)管理程序401和控制操作系統(tǒng)405通信,以請(qǐng)求訪問(wèn)盤(pán)或網(wǎng)絡(luò)。仍在又一個(gè)實(shí)施例中,客戶操作系統(tǒng)410和控制操作系統(tǒng)405可通過(guò)由管理程序401建立的通信信道通信,例如,通過(guò)由管理程序401提供的多個(gè)共享存儲(chǔ)器頁(yè)面。一些實(shí)施例中,控制操作系統(tǒng)405包括用于直接與由計(jì)算裝置100提供的網(wǎng)絡(luò)硬件通信的網(wǎng)絡(luò)后端驅(qū)動(dòng)器。在這些實(shí)施例的一個(gè)中,網(wǎng)絡(luò)后端驅(qū)動(dòng)器處理來(lái)自至少一個(gè)客戶操作系統(tǒng)110的至少一個(gè)虛擬機(jī)請(qǐng)求。其他實(shí)施例中,控制操作系統(tǒng)405包括用于與計(jì)算裝置100上的存儲(chǔ)元件通信的塊后端驅(qū)動(dòng)器。在這些實(shí)施例的一個(gè)中,塊后端驅(qū)動(dòng)器基于從客戶操作系統(tǒng)410接收的至少一個(gè)請(qǐng)求從存儲(chǔ)元件讀寫(xiě)數(shù)據(jù)。一個(gè)實(shí)施例,控制操作系統(tǒng)405包括工具堆棧404。其他實(shí)施例中,工具堆棧404提供如下功能:和管理程序401交互、和其他控制操作系統(tǒng)405(例如位于第二計(jì)算裝置IOOb上)通信,或者管理計(jì)算裝置100上的虛擬機(jī)406b、406c。又一個(gè)實(shí)施例中,工具堆棧404包括自定義應(yīng)用,其用于向虛擬機(jī)群的管理員提供改進(jìn)的管理功能。一些實(shí)施例中,工具堆棧404和控制操作系統(tǒng)405中的至少一個(gè)包括管理API,其提供用于遠(yuǎn)程配置并控制計(jì)算裝置100上運(yùn)行的虛擬機(jī)406的接口。其他實(shí)施例中,控制操作系統(tǒng)405通過(guò)工具堆棧404和管理程序401通信。一個(gè)實(shí)施例中,管理程序401在由管理程序401創(chuàng)建的虛擬機(jī)406內(nèi)執(zhí)行客戶操作系統(tǒng)410。又一個(gè)實(shí)施例中,客戶操作系統(tǒng)410為計(jì)算裝置100的用戶提供對(duì)計(jì)算環(huán)境中的資源的訪問(wèn)。又一個(gè)實(shí)施例中,資源包括程序、應(yīng)用、文檔、文件、多個(gè)應(yīng)用、多個(gè)文件、可執(zhí)行程序文件、桌面環(huán)境、計(jì)算環(huán)境或?qū)τ?jì)算裝置100的用戶可用的其他資源。又一個(gè)實(shí)施例中,可通過(guò)多個(gè)訪問(wèn)方法將資源傳送給計(jì)算裝置100,這些方法包括但不限于:常規(guī)的直接在計(jì)算裝置100上安裝、通過(guò)應(yīng)用流的方法傳送給計(jì)算裝置100、將由在第二計(jì)算裝置100’上執(zhí)行資源產(chǎn)生的并通過(guò)表示層協(xié)議傳送給計(jì)算裝置100的輸出數(shù)據(jù)傳送給計(jì)算裝置100、將通過(guò)在第二計(jì)算裝置100’上執(zhí)行的虛擬機(jī)執(zhí)行資源所產(chǎn)生的輸出數(shù)據(jù)傳送給計(jì)算裝置100、或者從連接到計(jì)算裝置100的移動(dòng)存儲(chǔ)裝置(例如USB設(shè)備)執(zhí)行或者通過(guò)在計(jì)算裝置100上執(zhí)行的虛擬機(jī)執(zhí)行并且產(chǎn)生輸出數(shù)據(jù)。一些實(shí)施例中,計(jì)算裝置100將執(zhí)行資源所產(chǎn)生的輸出數(shù)據(jù)傳輸給另一個(gè)計(jì)算裝置100’。一個(gè)實(shí)施例中,客戶操作系統(tǒng)410和該客戶操作系統(tǒng)410在其上執(zhí)行的虛擬機(jī)結(jié)合形成完全虛擬化虛擬機(jī),該完全虛擬化虛擬機(jī)并不知道自己是虛擬機(jī),這樣的機(jī)器可稱為“DomainUHVM(硬件虛擬機(jī))虛擬機(jī)”。又一個(gè)實(shí)施例中,完全虛擬化機(jī)包括模擬基本輸入/輸出系統(tǒng)(BIOS)的軟件以便在完全虛擬化機(jī)中執(zhí)行操作系統(tǒng)。在又一個(gè)實(shí)施例中,完全虛擬化機(jī)可包括驅(qū)動(dòng)器,其通過(guò)和管理程序401通信提供功能。這樣的實(shí)施例中,驅(qū)動(dòng)器可意識(shí)到自己在虛擬化環(huán)境中執(zhí)行。又一個(gè)實(shí)施例中,客戶操作系統(tǒng)410和該客戶操作系統(tǒng)410在其上執(zhí)行的虛擬機(jī)結(jié)合形成超虛擬化(paravirtualized)虛擬機(jī),該超虛擬化虛擬機(jī)意識(shí)到自己是虛擬機(jī),這樣的機(jī)器可稱為“DomainUPV虛擬機(jī)”。又一個(gè)實(shí)施例中,超虛擬化機(jī)包括完全虛擬化機(jī)不包括的額外驅(qū)動(dòng)器。又一個(gè)實(shí)施例中,超虛擬化機(jī)包括如上所述的被包含在控制操作系統(tǒng)405中的網(wǎng)絡(luò)后端驅(qū)動(dòng)器和塊后端驅(qū)動(dòng)器?,F(xiàn)參考圖4B,框圖描述了系統(tǒng)中的多個(gè)聯(lián)網(wǎng)計(jì)算裝置的一個(gè)實(shí)施例,其中,至少一個(gè)物理主機(jī)執(zhí)行虛擬機(jī)。總體而言,系統(tǒng)包括管理組件404和管理程序401。系統(tǒng)包括多個(gè)計(jì)算裝置100、多個(gè)虛擬機(jī)406、多個(gè)管理程序401、多個(gè)管理組件(又稱為工具堆棧404或者管理組件404)以及物理資源421、428。多個(gè)物理機(jī)器100的每一個(gè)可被提供為如上結(jié)合圖1E-1H和圖4A描述的計(jì)算裝置100。具體而言,物理盤(pán)428由計(jì)算裝置100提供,存儲(chǔ)至少一部分虛擬盤(pán)442。一些實(shí)施例中,虛擬盤(pán)442和多個(gè)物理盤(pán)428相關(guān)聯(lián)。在這些實(shí)施例的一個(gè)中,一個(gè)或多個(gè)計(jì)算裝置100可以與一個(gè)或多個(gè)其他計(jì)算裝置100交換有關(guān)處理器或資源池中可用的其他物理資源的數(shù)據(jù),允許管理程序管理分布在多個(gè)物理計(jì)算裝置上的資源池。一些實(shí)施例中,將虛擬機(jī)406在其上執(zhí)行的計(jì)算裝置100稱為物理主機(jī)100或主機(jī)100。管理程序在計(jì)算裝置100上的處理器上執(zhí)行。管理程序?qū)?duì)物理盤(pán)的訪問(wèn)量分配給虛擬盤(pán)。一個(gè)實(shí)施例中,管理程序401分配物理盤(pán)上的空間量。又一個(gè)實(shí)施例中,管理程序401分配物理盤(pán)上的多個(gè)頁(yè)面。一些實(shí)施例中,管理程序提供虛擬盤(pán)442作為初始化和執(zhí)行虛擬機(jī)450進(jìn)程的一部分。一個(gè)實(shí)施例中,將管理組件404a稱為池管理組件404a。又一個(gè)實(shí)施例中,可以稱為控制管理系統(tǒng)405a的管理操作系統(tǒng)405a包括管理組件。一些實(shí)施例中,將管理組件稱為工具堆棧。在這些實(shí)施例的一個(gè)中,管理組件是上文結(jié)合圖4A描述的工具堆棧404。其他實(shí)施例中,管理組件404提供用戶接口,用于從如管理員的用戶接收要供應(yīng)和/或執(zhí)行的虛擬機(jī)406的標(biāo)識(shí)。仍在其他實(shí)施例中,管理組件404提供用戶接口,用于從如管理員的用戶接收將虛擬機(jī)406b從一個(gè)物理機(jī)器100遷移到另一物理機(jī)器的請(qǐng)求。在進(jìn)一步的實(shí)施例中,管理組件404a識(shí)別在其上執(zhí)行所請(qǐng)求的虛擬機(jī)406d的計(jì)算裝置IOOb并指示所識(shí)別的計(jì)算裝置IOOb上的管理程序401b執(zhí)行所識(shí)別的虛擬機(jī),這樣,可將管理組件稱為池管理組件?,F(xiàn)參考圖4C,描述了虛擬應(yīng)用傳送控制器或虛擬設(shè)備450的實(shí)施例。總體而言,上文結(jié)合圖2A和2B描述的設(shè)備200的任何功能和/或?qū)嵤├?例如應(yīng)用傳送控制器)可以部署在上文結(jié)合圖4A和4B描述的虛擬化環(huán)境的任何實(shí)施例中。應(yīng)用傳送控制器的功能不是以設(shè)備200的形式部署,而是將該功能部署在諸如客戶機(jī)102、服務(wù)器106或設(shè)備200的任何計(jì)算裝置100上的虛擬化環(huán)境400中。現(xiàn)在參考圖4C,描述了在服務(wù)器106的管理程序401上操作的虛擬設(shè)備450的實(shí)施例的框圖。如圖2A和2B的設(shè)備200—樣,虛擬機(jī)450可以提供可用性、性能、卸載和安全的功能。對(duì)于可用性,虛擬設(shè)備可以執(zhí)行網(wǎng)絡(luò)第4層和第7層之間的負(fù)載平衡并執(zhí)行智能服務(wù)健康監(jiān)控。對(duì)于通過(guò)網(wǎng)絡(luò)流量加速實(shí)現(xiàn)的性能增加,虛擬設(shè)備可以執(zhí)行緩存和壓縮。對(duì)于任何服務(wù)器的卸載處理,虛擬設(shè)備可以執(zhí)行連接復(fù)用和連接池和/或SSL處理。對(duì)于安全,虛擬設(shè)備可以執(zhí)行設(shè)備200的任何應(yīng)用防火墻功能和SSLVPN功能。結(jié)合附圖2A描述的設(shè)備200的任何模塊可以虛擬化設(shè)備傳送控制器450的形式被打包、組合、設(shè)計(jì)或構(gòu)造,虛擬化設(shè)備傳送控制器450可部署成在諸如流行的服務(wù)器這樣的任何服務(wù)器上的虛擬化環(huán)境300或非虛擬化環(huán)境中執(zhí)行的軟件模塊或組件。例如,可以安裝在計(jì)算裝置上的安裝包的形式提供虛擬設(shè)備。參考圖2A,可以將高速緩存管理器232、策略引擎236、壓縮238、加密引擎234、分組引擎240、⑶I210、CLI212、殼服務(wù)214中的任一個(gè)設(shè)計(jì)和構(gòu)成在計(jì)算裝置和/或虛擬化環(huán)境300的任何操作系統(tǒng)上運(yùn)行的組件或模塊。虛擬化設(shè)備400不使用設(shè)備200的加密處理器260、處理器262、存儲(chǔ)器264和網(wǎng)絡(luò)堆棧267,而是可使用虛擬化環(huán)境400提供的任何這些資源或者服務(wù)器106上以其他方式可用的這些資源。仍參考圖4C,簡(jiǎn)言之,任何一個(gè)或多個(gè)vServer275A-275N可以操作或執(zhí)行在任意類型的計(jì)算裝置100(如服務(wù)器106)的虛擬化環(huán)境400中。結(jié)合附圖2B描述的設(shè)備200的任何模塊和功能可以設(shè)計(jì)和構(gòu)造成在服務(wù)器的虛擬化或非虛擬化環(huán)境中操作??梢詫Server275、SSLVPN280、內(nèi)網(wǎng)UP282、交換裝置284、DNS286、加速裝置288、APPFW280和監(jiān)控代理中的任一個(gè)打包、組合、設(shè)計(jì)或構(gòu)造成應(yīng)用傳送控制器450的形式,應(yīng)用傳送控制器450可部署成在裝置和/或虛擬化環(huán)境400中執(zhí)行的一個(gè)或多個(gè)軟件模塊或組件。—些實(shí)施例中,服務(wù)器可以在虛擬化環(huán)境中執(zhí)行多個(gè)虛擬機(jī)406a_406b,每個(gè)虛擬機(jī)運(yùn)行虛擬應(yīng)用傳送控制器450的相同或不同實(shí)施例。一些實(shí)施例中,服務(wù)器可以在多核處理系統(tǒng)的一個(gè)核上執(zhí)行一個(gè)或多個(gè)虛擬機(jī)上的一個(gè)或多個(gè)虛擬設(shè)備450。一些實(shí)施例中,服務(wù)器可以在多處理器裝置的每個(gè)處理器上執(zhí)行一個(gè)或多個(gè)虛擬機(jī)上的一個(gè)或多個(gè)虛擬設(shè)備450。B.提供多核架構(gòu)的系統(tǒng)和方法根據(jù)摩爾定律,每?jī)赡昙呻娐飞峡砂惭b的晶體管的數(shù)量會(huì)基本翻倍。然而,CPU速度增加會(huì)達(dá)到一個(gè)穩(wěn)定的水平(plateaus),例如,2005年以來(lái),CPU速度在約3.5_4GHz的范圍內(nèi)。一些情況下,CPU制造商可能不依靠CPU速度增加來(lái)獲得額外的性能。一些CPU制造商會(huì)給處理器增加附加核以提供額外的性能。依靠CPU獲得性能改善的如軟件和網(wǎng)絡(luò)供應(yīng)商的產(chǎn)品可以通過(guò)利用這些多核CPU來(lái)改進(jìn)他們的性能??梢灾匦略O(shè)計(jì)和/或編寫(xiě)為單CPU設(shè)計(jì)和構(gòu)造的軟件以利用多線程、并行架構(gòu)或多核架構(gòu)。一些實(shí)施例中,稱為nCore或多核技術(shù)的設(shè)備200的多核架構(gòu)允許設(shè)備打破單核性能障礙并利用多核CPU的能力。前文結(jié)合圖2A描述的架構(gòu)中,運(yùn)行單個(gè)網(wǎng)絡(luò)或分組引擎。nCore技術(shù)和架構(gòu)的多核允許同時(shí)和/或并行地運(yùn)行多個(gè)分組引擎。通過(guò)在每個(gè)核上運(yùn)行分組引擎,設(shè)備架構(gòu)利用附加核的處理能力。一些實(shí)施例中,這提供了高達(dá)七倍的性能改善和擴(kuò)展性。圖5A示出根據(jù)一類并行機(jī)制或并行計(jì)算方案(如功能并行機(jī)制、數(shù)據(jù)并行機(jī)制或基于流的數(shù)據(jù)并行機(jī)制)在一個(gè)或多個(gè)處理器核上分布的工作、任務(wù)、負(fù)載或網(wǎng)絡(luò)流量的一些實(shí)施例??傮w而言,圖5A示出如具有η個(gè)核的設(shè)備200’的多核系統(tǒng)的實(shí)施例,η個(gè)核編號(hào)為I到N。一個(gè)實(shí)施例中,工作、負(fù)載或網(wǎng)絡(luò)流量可以分布在第一核505Α、第二核505Β、第三核505C、第四核50、第五核505Ε、第六核505F、第七核505G等上,這樣,分布位于所有η個(gè)核505Ν(此后統(tǒng)稱為核505)或η個(gè)核中的兩個(gè)或多個(gè)上??梢杂卸鄠€(gè)VIP275,每個(gè)運(yùn)行在多個(gè)核中的相應(yīng)的核上。可以有多個(gè)分組引擎240,每個(gè)運(yùn)行在多個(gè)核的相應(yīng)的核。所使用任何方法可產(chǎn)生多個(gè)核中任一核上的不同的、變化的或類似的工作負(fù)載或性能級(jí)別515。對(duì)于功能并行方法,每個(gè)核運(yùn)行由分組引擎、VIP275或設(shè)備200提供的多個(gè)功能的不同功能。在數(shù)據(jù)并行方法中,數(shù)據(jù)可基于接收數(shù)據(jù)的網(wǎng)絡(luò)接口卡(NIC)或VIP275并行或分布在核上。又一個(gè)數(shù)據(jù)并行方法中,可通過(guò)將數(shù)據(jù)流分布在每個(gè)核上而將處理分布在核上。圖5A的進(jìn)一步的細(xì)節(jié)中,一些實(shí)施例中,可以根據(jù)功能并行機(jī)制500將負(fù)載、工作或網(wǎng)絡(luò)流量在多個(gè)核505間分布。功能并行機(jī)制可基于執(zhí)行一個(gè)或多個(gè)相應(yīng)功能的每個(gè)核。一些實(shí)施例中,第一核可執(zhí)行第一功能,同時(shí)第二核執(zhí)行第二功能。功能并行方法中,根據(jù)功能性將多核系統(tǒng)要執(zhí)行的功能劃分并分布到每個(gè)核。一些實(shí)施例中,可將功能并行機(jī)制稱為任務(wù)并行機(jī)制,并且可在每個(gè)處理器或核對(duì)同一數(shù)據(jù)或不同數(shù)據(jù)執(zhí)行不同進(jìn)程或功能時(shí)實(shí)現(xiàn)。核或處理器可執(zhí)行相同或不同的代碼。一些情況下,不同的執(zhí)行線程或代碼可在工作時(shí)相互通信??梢赃M(jìn)行通信以將數(shù)據(jù)作為工作流的一部分從一個(gè)線程傳遞給下一線程。一些實(shí)施例中,根據(jù)功能并行機(jī)制500將工作分布在核505上,可以包括根據(jù)特定功能分布網(wǎng)絡(luò)流量,所述特定功能例如為網(wǎng)絡(luò)輸入/輸出管理(NWI/O)510A、安全套接層(SSL)加密和解密510B和傳輸控制協(xié)議(TCP)功能510C。這會(huì)產(chǎn)生基于所使用的功能量或功能級(jí)別的工作、性能或者計(jì)算負(fù)載515。一些實(shí)施例中,根據(jù)數(shù)據(jù)并行機(jī)制540將工作分布在核505上可包括基于與特定的硬件或軟件組件相關(guān)聯(lián)的分布數(shù)據(jù)來(lái)分布工作量515。一些實(shí)施例中,根據(jù)基于流的數(shù)據(jù)并行機(jī)制520將工作分布在核505上可包括基于上下文或流來(lái)分布數(shù)據(jù),從而使得每個(gè)核上的工作量515A-N可以類似、基本相等或者相對(duì)平均分布。在功能并行方法的情況下,可以配置每個(gè)核來(lái)運(yùn)行由設(shè)備的分組引擎或VIP提供的多個(gè)功能中的一個(gè)或多個(gè)功能。例如,核I可執(zhí)行設(shè)備200’的網(wǎng)絡(luò)I/O處理,同時(shí)核2執(zhí)行設(shè)備的TCP連接管理。類似地,核3可執(zhí)行SSL卸載,同時(shí)核4可執(zhí)行第7層或應(yīng)用層處理和流量管理。每個(gè)核可執(zhí)行相同或不同的功能。每個(gè)核可執(zhí)行不只一個(gè)功能。任一核可運(yùn)行結(jié)合附圖2A和2B識(shí)別和/或描述的功能或其一部分。該方法中,核上的工作可以粗粒度或細(xì)粒度方式按功能劃分。一些情況下,如圖5A所示,按功能劃分會(huì)使得不同核運(yùn)行在不同的性能或負(fù)載級(jí)別515。在功能并行方法的情況下,可以配置每個(gè)核來(lái)運(yùn)行由設(shè)備的分組引擎提供的多個(gè)功能中的一個(gè)或多個(gè)功能。例如,核I可執(zhí)行設(shè)備200’的網(wǎng)絡(luò)I/O處理,同時(shí)核2執(zhí)行設(shè)備的TCP連接管理。類似地,核3可執(zhí)行SSL卸載,同時(shí)核4可執(zhí)行第7層或應(yīng)用層處理和流量管理。每個(gè)核可執(zhí)行相同或不同的功能。每個(gè)核可執(zhí)行不只一個(gè)功能。任何核可運(yùn)行結(jié)合附圖2A和2B識(shí)別和/或描述的功能或其一部分。該方法中,核上的工作可以粗粒度或細(xì)粒度方式按功能劃分。一些情況下,如圖5A所示,按功能劃分會(huì)使得不同核運(yùn)行在不同的性能或負(fù)載級(jí)別??梢杂萌魏谓Y(jié)構(gòu)或方案來(lái)分布功能或任務(wù)。例如,圖5B示出用于處理與網(wǎng)絡(luò)I/O功能510A相關(guān)聯(lián)的應(yīng)用和進(jìn)程的第一核Corel505A。一些實(shí)施例中,與網(wǎng)絡(luò)I/O相關(guān)聯(lián)的網(wǎng)絡(luò)流量可以和特定的端口號(hào)相關(guān)聯(lián)。因而,將具有與NWI/0510A相關(guān)聯(lián)的端口目的地的發(fā)出和到來(lái)的分組導(dǎo)引給Corel505A,該Corel505A專用于處理與NWI/O端口相關(guān)聯(lián)的所有網(wǎng)絡(luò)流量。類似的,Core2505B專用于處理與SSL處理相關(guān)聯(lián)的功能,Core450ro可專用于處理所有TCP級(jí)處理和功能。雖然圖5A示出如網(wǎng)絡(luò)I/0、SSL和TCP的功能,也可將其他功能分配給核。這些其他功能可包括此處描述的任一或多個(gè)功能或操作。例如,結(jié)合圖2A和2B描述的任何功能可基于功能基礎(chǔ)分布在核上。一些情況下,第一VIP275A可運(yùn)行在第一核上,同時(shí),具有不同配置的第二VIP275B可運(yùn)行在第二核上。一些實(shí)施例中,每個(gè)核505可處理特定功能,這樣每個(gè)核505可處理與該特定功能相關(guān)聯(lián)的處理。例如,Core2505B可處理SSL卸載,同時(shí)Core450ro可處理應(yīng)用層處理和流量管理。其他實(shí)施例中,可根據(jù)任何類型或形式的數(shù)據(jù)并行機(jī)制540將工作、負(fù)載或網(wǎng)絡(luò)流量分布在核505上。一些實(shí)施例中,可由每個(gè)核對(duì)分布式數(shù)據(jù)的不同片執(zhí)行相同任務(wù)或功能來(lái)實(shí)現(xiàn)多核系統(tǒng)中的數(shù)據(jù)并行機(jī)制。一些實(shí)施例中,單個(gè)執(zhí)行線程或代碼控制對(duì)所有數(shù)據(jù)片的操作。其他實(shí)施例中,不同線程或指令控制操作,但是可執(zhí)行相同代碼。一些實(shí)施例中,從分組引擎、vServer(VIP)275A-C、網(wǎng)絡(luò)接口卡(NIC)542D-E和/或設(shè)備200上包括的或者與設(shè)備200相關(guān)聯(lián)的任何其他網(wǎng)絡(luò)硬件或軟件的角度實(shí)現(xiàn)數(shù)據(jù)并行機(jī)制。例如,每個(gè)核可運(yùn)行同樣的分組引擎或VIP代碼或配置但是在不同的分布式數(shù)據(jù)集上進(jìn)行操作。每個(gè)網(wǎng)絡(luò)硬件或軟件結(jié)構(gòu)可接收不同的、變化的或者基本相同量的數(shù)據(jù),因而可以具有變化的、不同的或相對(duì)相同量的負(fù)載515。在數(shù)據(jù)并行方法的情況下,可以基于VIP、NIC和/或VIP或NIC的數(shù)據(jù)流來(lái)劃分和分布工作。在這些的方法的一個(gè)中,可通過(guò)使每個(gè)VIP在分布的數(shù)據(jù)集上工作來(lái)將多核系統(tǒng)的工作劃分或者分布在VIP中。例如,可配置每個(gè)核運(yùn)行一個(gè)或多個(gè)VIP。網(wǎng)絡(luò)流量可分布在處理流量的每個(gè)VIP的核上。在這些方法的又一個(gè)中,可基于哪個(gè)NIC接收網(wǎng)絡(luò)流量來(lái)將設(shè)備的工作劃分或分布在核上。例如,第一NIC的網(wǎng)絡(luò)流量可被分布到第一核,同時(shí)第二NIC的網(wǎng)絡(luò)流量可被分布給第二核。一些情況下,核可處理來(lái)自多個(gè)NIC的數(shù)據(jù)。雖然圖5A示出了與單個(gè)核505相關(guān)聯(lián)的單個(gè)vServer,正如VIP1275A、VIP2275B和VIP3275C的情況。但是,一些實(shí)施例中,單個(gè)vServer可以與一個(gè)或者多個(gè)核505相關(guān)聯(lián)。相反,一個(gè)或多個(gè)vServer可以與單個(gè)核505相關(guān)聯(lián)。將vServer與核505關(guān)聯(lián)可包括該核505處理與該特定vServer關(guān)聯(lián)的所有功能。一些實(shí)施例中,每個(gè)核執(zhí)行具有相同代碼和配置的VIP。其他實(shí)施例中,每個(gè)核執(zhí)行具有相同代碼但配置不同的VIP。一些實(shí)施例中,每個(gè)核執(zhí)行具有不同代碼和相同或不同配置的VIP。和vServer類似,NIC也可以和特定的核505關(guān)聯(lián)。許多實(shí)施例中,NIC可以連接到一個(gè)或多個(gè)核505,這樣,當(dāng)NIC接收或傳輸數(shù)據(jù)分組時(shí),特定的核505處理涉及接收和傳輸數(shù)據(jù)分組的處理。一個(gè)實(shí)施例中,單個(gè)NIC可以與單個(gè)核505相關(guān)聯(lián),正如NIC1542D和NIC2542E的情況。其他實(shí)施例中,一個(gè)或多個(gè)NIC可以與單個(gè)核505相關(guān)聯(lián)。但其他實(shí)施例中,單個(gè)NIC可以與一個(gè)或者多個(gè)核505相關(guān)聯(lián)。這些實(shí)施例中,負(fù)載可以分布在一個(gè)或多個(gè)核505上,使得每個(gè)核505基本上處理類似的負(fù)載量。與NIC關(guān)聯(lián)的核505可以處理與該特定NIC關(guān)聯(lián)的所有功能和/或數(shù)據(jù)。雖然根據(jù)VIP或NIC的數(shù)據(jù)將工作分布在核上具有某種程度的獨(dú)立性,但是,一些實(shí)施例中,這會(huì)造成如圖5A的變化負(fù)載515所示的核的不平衡的使用。一些實(shí)施例中,可根據(jù)任何類型或形式的數(shù)據(jù)流將負(fù)載、工作或網(wǎng)絡(luò)流量分布在核505上。在這些方法的又一個(gè)中,可基于數(shù)據(jù)流將工作劃分或分布在多個(gè)核上。例如,客戶機(jī)或服務(wù)器之間的經(jīng)過(guò)設(shè)備的網(wǎng)絡(luò)流量可以被分布到多個(gè)核中的一個(gè)核并且由其處理。一些情況下,最初建立會(huì)話或連接的核可以是該會(huì)話或連接的網(wǎng)絡(luò)流量所分布的核。一些實(shí)施例中,數(shù)據(jù)流基于網(wǎng)絡(luò)流量的任何單元或部分,如事務(wù)、請(qǐng)求/響應(yīng)通信或來(lái)自客戶機(jī)上的應(yīng)用的流量。這樣,一些實(shí)施例中,客戶機(jī)和服務(wù)器之間的經(jīng)過(guò)設(shè)備200’的數(shù)據(jù)流可以比其他方式分布的更均衡。在基于流的數(shù)據(jù)并行機(jī)制520中,數(shù)據(jù)分布和任何類型的數(shù)據(jù)流相關(guān),例如請(qǐng)求/響應(yīng)對(duì)、事務(wù)、會(huì)話、連接或應(yīng)用通信。例如,客戶機(jī)或服務(wù)器之間的經(jīng)過(guò)設(shè)備的網(wǎng)絡(luò)流量可以被分布到多個(gè)核中的一個(gè)核并且由其處理。一些情況下,最初建立會(huì)話或連接的核可以是該會(huì)話或連接的網(wǎng)絡(luò)流量所分布的核。數(shù)據(jù)流的分布可以使得每個(gè)核505運(yùn)行基本相等或相對(duì)均勻分布的負(fù)載量、數(shù)據(jù)量或網(wǎng)絡(luò)流量。一些實(shí)施例中,數(shù)據(jù)流基于網(wǎng)絡(luò)流量的任何單元或部分,如事務(wù)、請(qǐng)求/響應(yīng)通信或源自客戶機(jī)上的應(yīng)用的流量。這樣,一些實(shí)施例中,客戶機(jī)和服務(wù)器之間的經(jīng)過(guò)設(shè)備200’的數(shù)據(jù)流可以比其他方式分布的更均衡。一個(gè)實(shí)施例中,可以基于事務(wù)或一系列事務(wù)分布數(shù)據(jù)量。一些實(shí)施例中,該事務(wù)可以是客戶機(jī)和服務(wù)器之間的,其特征可以是IP地址或其他分組標(biāo)識(shí)符。例如,核1505A可專用于特定客戶機(jī)和特定服務(wù)器之間的事務(wù),因此,核1505A上的負(fù)載515A可包括與特定客戶機(jī)和服務(wù)器之間的事務(wù)相關(guān)聯(lián)的網(wǎng)絡(luò)流量??赏ㄟ^(guò)將源自特定客戶機(jī)或服務(wù)器的所有數(shù)據(jù)分組路由到核1505A來(lái)將網(wǎng)絡(luò)流量分配給核1505A。雖然可部分地基于事務(wù)將工作或負(fù)載分布到核,但是,其他實(shí)施例中,可基于每個(gè)分組的基礎(chǔ)分配負(fù)載或工作。這些實(shí)施例中,設(shè)備200可攔截?cái)?shù)據(jù)分組并將數(shù)據(jù)分組分配給負(fù)載量最小的核505。例如,由于核I上的負(fù)載515A小于其他核505B-N上的負(fù)載515B-N,所以設(shè)備200可將第一到來(lái)的數(shù)據(jù)分組分配給核1505A。將第一數(shù)據(jù)分組分配給核1505A后,核1505A上的負(fù)載量515A與處理第一數(shù)據(jù)分組所需的處理資源量成比例增加。設(shè)備200攔截到第二數(shù)據(jù)分組時(shí),設(shè)備200會(huì)將負(fù)載分配給核4505D,這是由于核450具有第二少的負(fù)載量。一些實(shí)施例中,將數(shù)據(jù)分組分配給負(fù)載量最小的核可確保分布到每個(gè)核505的負(fù)載515A-N保持基本相等。其他實(shí)施例中,將一部分網(wǎng)絡(luò)流量分配給特定核505的情況下,可以每單元為基礎(chǔ)分配負(fù)載。上述示例說(shuō)明以每分組為基礎(chǔ)進(jìn)行負(fù)載平衡。其他實(shí)施例中,可以基于分組數(shù)目分配負(fù)載,例如,將每10個(gè)、100個(gè)或1000個(gè)分組分配給流量最少的核505。分配給核505的分組數(shù)量可以是由應(yīng)用、用戶或管理員確定的數(shù)目,而且可以為大于零的任何數(shù)。仍在其他實(shí)施例中,基于時(shí)間指標(biāo)分配負(fù)載,使得在預(yù)定時(shí)間段將分組分布到特定核505。這些實(shí)施例中,可以在5毫秒內(nèi)或者由用戶、程序、系統(tǒng)、管理器或其他方式確定的任何時(shí)間段將分組分布到特定核505。預(yù)定時(shí)間段過(guò)去后,在預(yù)定時(shí)間段內(nèi)將時(shí)間分組傳輸給不同的核505。用于將工作、負(fù)載或網(wǎng)絡(luò)流量分布在一個(gè)或多個(gè)核505上的基于流的數(shù)據(jù)并行方法可包括上述實(shí)施例的任意組合。這些方法可以由設(shè)備200的任何部分執(zhí)行,由在核505上執(zhí)行的應(yīng)用或者一組可執(zhí)行指令執(zhí)行,例如分組引擎,或者由在與設(shè)備200通信的計(jì)算裝置上執(zhí)行的任何應(yīng)用、程序或代理執(zhí)行。圖5A所示的功能和數(shù)據(jù)并行機(jī)制計(jì)算方案可以任何方式組合,以產(chǎn)生混合并行機(jī)制或分布式處理方案,其包括功能并行機(jī)制500、數(shù)據(jù)并行機(jī)制540、基于流的數(shù)據(jù)并行機(jī)制520或者其任何部分。一些情況下,多核系統(tǒng)可使用任何類型或形式的負(fù)載平衡方案來(lái)將負(fù)載分布在一個(gè)或多個(gè)核505上。負(fù)載平衡方案可以和任何功能和數(shù)據(jù)平行方案或其組合結(jié)合使用。圖5B示出多核系統(tǒng)545的實(shí)施例,該系統(tǒng)可以是任何類型或形式的一個(gè)或多個(gè)系統(tǒng)、設(shè)備、裝置或組件。一些實(shí)施例中,該系統(tǒng)545可被包括在具有一個(gè)或多個(gè)處理核505A-N的設(shè)備200內(nèi)。系統(tǒng)545還可包括與存儲(chǔ)器總線556通信的一個(gè)或多個(gè)分組引擎(PE)或分組處理引擎(PPE)548A-N。存儲(chǔ)器總線可用于與一個(gè)或多個(gè)處理核505A-N通信。系統(tǒng)545還可包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口卡(NIC)552和流分布器550,流分布器還可與一個(gè)或多個(gè)處理核505A-N通信。流分布器550可包括接收側(cè)調(diào)整器(ReceiverSideScaler-RSS)或接收側(cè)調(diào)整(ReceiverSideScaling-RSS)模塊560。進(jìn)一步參考圖5B,具體而言,一個(gè)實(shí)施例中,分組引擎548A-N可包括此處所述的設(shè)備200的任何部分,例如圖2A和2B所述設(shè)備的任何部分。一些實(shí)施例中,分組引擎548A-N可包括任何下列的元件:分組引擎240、網(wǎng)絡(luò)堆棧267、高速緩存管理器232、策略引擎236、壓縮引擎238、加密引擎234、⑶I210、CLI212、殼服務(wù)214、監(jiān)控程序216以及能夠從數(shù)據(jù)總線556或一個(gè)或多個(gè)核505A-N中的任一個(gè)接收數(shù)據(jù)分組的其他任何軟件和硬件元件。一些實(shí)施例中,分組引擎548A-N可包括一個(gè)或多個(gè)vServer275A-N或其任何部分。其他實(shí)施例中,分組引擎548A-N可提供以下功能的任意組合:SSLVPN280、內(nèi)部網(wǎng)IP282、交換284、DNS286、分組加速288、APPFW280、如由監(jiān)控代理197提供的監(jiān)控、和作為T(mén)CP堆棧關(guān)聯(lián)的功能、負(fù)載平衡、SSL卸載和處理、內(nèi)容交換、策略評(píng)估、高速緩存、壓縮、編碼、解壓縮、解碼、應(yīng)用防火墻功能、XML處理和加速以及SSLVPN連接。一些實(shí)施例中,分組引擎548A-N可以與特定服務(wù)器、用戶、客戶或網(wǎng)絡(luò)關(guān)聯(lián)。分組引擎548與特定實(shí)體關(guān)聯(lián)時(shí),分組引擎548可處理與該實(shí)體關(guān)聯(lián)的數(shù)據(jù)分組。例如,如果分組引擎548與第一用戶關(guān)聯(lián),那么該分組引擎548將對(duì)由第一用戶產(chǎn)生的分組或者目的地址與第一用戶關(guān)聯(lián)的分組進(jìn)行處理和操作。類似地,分組引擎548可選擇不與特定實(shí)體關(guān)聯(lián),使得分組引擎548可對(duì)不是由該實(shí)體產(chǎn)生的或目的是該實(shí)體的任何數(shù)據(jù)分組進(jìn)行處理和以其他方式進(jìn)行操作。一些實(shí)例中,可將分組引擎548A-N配置為執(zhí)行圖5A所示的任何功能和/或數(shù)據(jù)并行方案。這些實(shí)例中,分組引擎548A-N可將功能或數(shù)據(jù)分布在多個(gè)核505A-N上,從而使得分布是根據(jù)并行機(jī)制或分布方案的。一些實(shí)施例中,單個(gè)分組引擎548A-N執(zhí)行負(fù)載平衡方案,其他實(shí)施例中,一個(gè)或多個(gè)分組引擎548A-N執(zhí)行負(fù)載平衡方案。一個(gè)實(shí)施例中,每個(gè)核505A-N可以與特定分組引擎548關(guān)聯(lián),使得可以由分組引擎執(zhí)行負(fù)載平衡。在該實(shí)施例中,負(fù)載平衡可要求與核505關(guān)聯(lián)的每個(gè)分組引擎548A-N和與核關(guān)聯(lián)的其他分組引擎通信,使得分組引擎548A-N可共同決定將負(fù)載分布在何處。該過(guò)程的一個(gè)實(shí)施例可包括從每個(gè)分組引擎接收對(duì)于負(fù)載的投票的仲裁器。仲裁器可部分地基于引擎投票的持續(xù)時(shí)間將負(fù)載分配給每個(gè)分組引擎548A-N,一些情況下,還可基于與在引擎關(guān)聯(lián)的核505上的當(dāng)前負(fù)載量相關(guān)聯(lián)的優(yōu)先級(jí)值來(lái)將負(fù)載分配給每個(gè)分組引擎548A-N。核上運(yùn)行的任何分組引擎可以運(yùn)行于用戶模式、內(nèi)核模式或其任意組合。一些實(shí)施例中,分組引擎作為在用戶空間或應(yīng)用空間中運(yùn)行的應(yīng)用或程序來(lái)操作。這些實(shí)施例中,分組引擎可使用任何類型或形式的接口來(lái)訪問(wèn)內(nèi)核提供的任何功能。一些實(shí)施例中,分組引擎操作于內(nèi)核模式中或作為內(nèi)核的一部分來(lái)操作。一些實(shí)施例中,分組引擎的第一部分操作于用戶模式中,分組引擎的第二部分操作于內(nèi)核模式中。一些實(shí)施例中,第一核上的第一分組引擎執(zhí)行于內(nèi)核模式中,同時(shí),第二核上的第二分組引擎執(zhí)行于用戶模式中。一些實(shí)施例中,分組引擎或其任何部分對(duì)NIC或其任何驅(qū)動(dòng)器進(jìn)行操作或者與其聯(lián)合操作。一些實(shí)施例中,存儲(chǔ)器總線556可以是任何類型或形式的存儲(chǔ)器或計(jì)算機(jī)總線。雖然在圖5B中描述了單個(gè)存儲(chǔ)器總線556,但是系統(tǒng)545可包括任意數(shù)量的存儲(chǔ)器總線556。一個(gè)實(shí)施例中,每個(gè)分組引擎548可以和一個(gè)或者多個(gè)單獨(dú)的存儲(chǔ)器總線556相關(guān)聯(lián)。一些實(shí)施例中,NIC552可以是此處所述的任何網(wǎng)絡(luò)接口卡或機(jī)制。NIC552可具有任意數(shù)量的端口。NIC可設(shè)計(jì)并構(gòu)造成連接到任何類型和形式的網(wǎng)絡(luò)104。雖然示出單個(gè)NIC552,但是,系統(tǒng)545可包括任意數(shù)量的NIC552。一些實(shí)施例中,每個(gè)核505A-N可以與一個(gè)或多個(gè)單個(gè)NIC552關(guān)聯(lián)。因而,每個(gè)核505可以與專用于特定核505的單個(gè)NIC552關(guān)聯(lián)。核505A-N可包括此處所述的任何處理器。此外,可根據(jù)此處所述的任何核505配置來(lái)配置核505A-N。另外,核505A-N可具有此處所述的任何核505功能。雖然圖5B示出七個(gè)核505A-G,但是系統(tǒng)545可包括任意數(shù)量的核505。具體而言,系統(tǒng)545可包括N個(gè)核,其中N是大于零的整數(shù)。核可具有或使用被分配或指派用于該核的存儲(chǔ)器??蓪⒋鎯?chǔ)器視為該核的專有或本地存儲(chǔ)器并且僅有該核可訪問(wèn)該存儲(chǔ)器。核可具有或使用共享的或指派給多個(gè)核的存儲(chǔ)器。該存儲(chǔ)器可被視為由不只一個(gè)核可訪問(wèn)的公共或共享存儲(chǔ)器。核可使用專有或公共存儲(chǔ)器的任何組合。通過(guò)每個(gè)核的單獨(dú)的地址空間,消除了使用同一地址空間的情況下的一些協(xié)調(diào)級(jí)別。利用單獨(dú)的地址空間,核可以對(duì)核自己的地址空間中的信息和數(shù)據(jù)進(jìn)行工作,而不用擔(dān)心與其他核沖突。每個(gè)分組引擎可以具有用于TCP和/或SSL連接的單獨(dú)存儲(chǔ)器池。仍參考圖5B,上文結(jié)合圖5A描述的核505的任何功能和/或?qū)嵤├梢圆渴鹪谏衔慕Y(jié)合圖4A和4B描述的虛擬化環(huán)境的任何實(shí)施例中。不是以物理處理器505的形式部署核505的功能,而是將這些功能部署在諸如客戶機(jī)102、服務(wù)器106或設(shè)備200的任何計(jì)算裝置100的虛擬化環(huán)境400內(nèi)。其他實(shí)施例中,不是以設(shè)備或一個(gè)裝置的形式部署核505的功能,而是將該功能部署在任何布置的多個(gè)裝置上。例如,一個(gè)裝置可包括兩個(gè)或多個(gè)核,另一個(gè)裝置可包括兩個(gè)或多個(gè)核。例如,多核系統(tǒng)可包括計(jì)算裝置的集群、服務(wù)器群或計(jì)算裝置的網(wǎng)絡(luò)。一些實(shí)施例中,不是以核的形式部署核505的功能,而是將該功能部署在多個(gè)處理器上,例如部署多個(gè)單核處理器上。一個(gè)實(shí)施例中,核505可以為任何形式或類型的處理器。一些實(shí)施例中,核的功能可以基本類似此處所述的任何處理器或中央處理單元。一些實(shí)施例中,核505可包括此處所述的任何處理器的任何部分。雖然圖5A示出7個(gè)核,但是,設(shè)備200內(nèi)可以有任意N個(gè)核,其中N是大于I的整數(shù)。一些實(shí)施例中,核505可以安裝在公用設(shè)備200內(nèi),其他實(shí)施例中,核505可以安裝在彼此通信連接的一個(gè)或多個(gè)設(shè)備200內(nèi)。一些實(shí)施例中,核505包括圖形處理軟件,而其他實(shí)施例中,核505提供通用處理能力。核505可彼此物理靠近地安裝和/或可彼此通信連接??梢杂靡晕锢矸绞胶?或通信方式耦合到核的任何類型和形式的總線或子系統(tǒng)連接核,用于向核、從核和/或在核之間傳輸數(shù)據(jù)。盡管每個(gè)核505可包括用于與其他核通信的軟件,一些實(shí)施例中,核管理器(未不出)可有助于每個(gè)核505之間的通信。一些實(shí)施例中,內(nèi)核可提供核管理。核可以使用各種接口機(jī)制彼此接口或通信。一些實(shí)施例中,可以使用核到核的消息傳送來(lái)在核之間通信,比如,第一核通過(guò)連接到核的總線或子系統(tǒng)向第二核發(fā)送消息或數(shù)據(jù)。一些實(shí)施例中,核可通過(guò)任何種類或形式的共享存儲(chǔ)器接口通信。一個(gè)實(shí)施例中,可以存在在所有核中共享的一個(gè)或多個(gè)存儲(chǔ)器單元。一些實(shí)施例中,每個(gè)核可以具有和每個(gè)其他核共享的單獨(dú)存儲(chǔ)器單元。例如,第一核可具有與第二核的第一共享存儲(chǔ)器,以及與第三核的第二共享存儲(chǔ)器。一些實(shí)施例中,核可通過(guò)任何類型的編程或API(如通過(guò)內(nèi)核的函數(shù)調(diào)用)來(lái)通信。一些實(shí)施例中,操作系統(tǒng)可識(shí)別并支持多核裝置,并提供用于核間通信的接口和API。流分布器550可以是任何應(yīng)用、程序、庫(kù)、腳本、任務(wù)、服務(wù)、進(jìn)程或在任何類型或形式的硬件上執(zhí)行的任何類型和形式的可執(zhí)行指令。一些實(shí)施例中,流分布器550可以是用于執(zhí)行此處所述任何操作和功能的任何電路設(shè)計(jì)或結(jié)構(gòu)。一些實(shí)施例中,流分布器分布、轉(zhuǎn)發(fā)、路由、控制和/或管理多個(gè)核505上的數(shù)據(jù)和/或在核上運(yùn)行的分組引擎或VIP的分布。一些實(shí)施例中,可將流分布器550稱為接口主裝置(interfacemaster)。一個(gè)實(shí)施例中,流分布器550包括在設(shè)備200的核或處理器上執(zhí)行的一組可執(zhí)行指令。又一個(gè)實(shí)施例中,流分布器550包括在與設(shè)備200通信的計(jì)算機(jī)器上執(zhí)行的一組可執(zhí)行指令。一些實(shí)施例中,流分布器550包括在如固件的NIC上執(zhí)行的一組可執(zhí)行指令。其他實(shí)施例,流分布器550包括用于將數(shù)據(jù)分組分布在核或處理器上的軟件和硬件的任何組合。一個(gè)實(shí)施例中,流分布器550在至少一個(gè)核505A-N上執(zhí)行,而在其他實(shí)施例中,分配給每個(gè)核505A-N的單獨(dú)的流分布器550在相關(guān)聯(lián)的核505A-N上執(zhí)行。流分布器可使用任何類型和形式的統(tǒng)計(jì)或概率算法或決策來(lái)平衡多個(gè)核上的流。可以將如NIC的設(shè)備硬件或內(nèi)核設(shè)計(jì)或構(gòu)造成支持NIC和/或核上的順序操作。系統(tǒng)545包括一個(gè)或多個(gè)流分布器550的實(shí)施例中,每個(gè)流分布器550可以與處理器505或分組引擎548關(guān)聯(lián)。流分布器550可包括允許每個(gè)流分布器550和在系統(tǒng)545內(nèi)執(zhí)行的其他流分布器550通信的接口機(jī)制。一個(gè)實(shí)例中,一個(gè)或多個(gè)流分布器550可通過(guò)彼此通信確定如何平衡負(fù)載。該過(guò)程的操作可以基本與上述過(guò)程類似,即將投票提交給仲裁器,然后仲裁器確定哪個(gè)流分布器550應(yīng)該接收負(fù)載。其他實(shí)施例中,第一流分布器550’可識(shí)別所關(guān)聯(lián)的核上的負(fù)載并基于任何下列標(biāo)準(zhǔn)確定是否將第一數(shù)據(jù)分組轉(zhuǎn)發(fā)到所關(guān)聯(lián)的核:所關(guān)聯(lián)的核上的負(fù)載大于預(yù)定閾值;所關(guān)聯(lián)的核上的負(fù)載小于預(yù)定閾值;所關(guān)聯(lián)的核上的負(fù)載小于其他核上的負(fù)載;或者可以用于部分基于處理器上的負(fù)載量來(lái)確定將數(shù)據(jù)分組轉(zhuǎn)發(fā)到何處的任何其他指標(biāo)。流分布器550可以根據(jù)如此處所述的分布、計(jì)算或負(fù)載平衡方法而將網(wǎng)絡(luò)流量分布在核505上。一個(gè)實(shí)施例中,流分布器可基于功能并行機(jī)制分布方案550、數(shù)據(jù)并行機(jī)制負(fù)載分布方案540、基于流的數(shù)據(jù)并行機(jī)制分布方案520或這些分布方案的任意組合或用于將負(fù)載分布在多個(gè)處理器上的任何負(fù)載平衡方案來(lái)分布網(wǎng)絡(luò)流量。因而,流分布器550可通過(guò)接收數(shù)據(jù)分組并根據(jù)操作的負(fù)載平衡或分布方案將數(shù)據(jù)分組分布在處理器上而充當(dāng)負(fù)載分布器。一個(gè)實(shí)施例中,流分布器550可包括用于確定如何相應(yīng)地分布分組、工作或負(fù)載的一個(gè)或多個(gè)操作、函數(shù)或邏輯。又一個(gè)實(shí)施例中,流分布器550可包括可識(shí)別與數(shù)據(jù)分組關(guān)聯(lián)的源地址和目的地址并相應(yīng)地分布分組的一個(gè)或多個(gè)子操作、函數(shù)或邏輯。一些實(shí)施例中,流分布器550可包括接收側(cè)調(diào)整(RSS)網(wǎng)絡(luò)驅(qū)動(dòng)器模塊560或?qū)?shù)據(jù)分組分布在一個(gè)或多個(gè)核505上的任何類型和形式的可執(zhí)行指令。RSS模塊560可以包括硬件和軟件的任意組合。一些實(shí)施例中,RSS模塊560和流分布器550協(xié)同工作以將數(shù)據(jù)分組分布在核505A-N或多處理器網(wǎng)絡(luò)中的多個(gè)處理器上。一些實(shí)施例中,RSS模塊560可在NIC552中執(zhí)行,其他實(shí)施例中,可在核505的任何一個(gè)上執(zhí)行。一些實(shí)施例中,RSS模塊560使用微軟接收側(cè)調(diào)整(RSS)方法。一個(gè)實(shí)施例中,RSS是微軟可擴(kuò)展網(wǎng)絡(luò)主動(dòng)技術(shù)(MicrosoftScalableNetworkinginitiativetechnology),其使得系統(tǒng)中的多個(gè)處理器上的接收處理是平衡的,同時(shí)保持?jǐn)?shù)據(jù)的順序傳送。RSS可使用任何類型或形式的哈希方案來(lái)確定用于處理網(wǎng)絡(luò)分組的核或處理器。RSS模塊560可應(yīng)用任何類型或形式的哈希函數(shù),如Toeplitz哈希函數(shù)。哈希函數(shù)可應(yīng)用到哈希類型值或者任何值序列。哈希函數(shù)可以是任意安全級(jí)別的安全哈希或者是以其他方式加密。哈希函數(shù)可使用哈希關(guān)鍵字(hashkey)ο關(guān)鍵字的大小取決于哈希函數(shù)。對(duì)于Toeplitz哈希,用于IPv6的哈希關(guān)鍵字大小為40字節(jié),用于IPv4的哈希關(guān)鍵字大小為16字節(jié)??梢曰谌魏我粋€(gè)或多個(gè)標(biāo)準(zhǔn)或設(shè)計(jì)目標(biāo)設(shè)計(jì)或構(gòu)造哈希函數(shù)。一些實(shí)施例中,可使用為不同的哈希輸入和不同哈希類型提供均勻分布的哈希結(jié)果的哈希函數(shù),所述不同哈希輸入和不同哈希類型包括TCP/IPv4、TCP/IPv6、IPv4和IPv6頭部。一些實(shí)施例中,可使用存在少量桶時(shí)(例如2個(gè)或4個(gè))提供均勻分布的哈希結(jié)果的哈希函數(shù)。一些實(shí)施例中,可使用存在大量桶時(shí)(例如64個(gè)桶)提供隨機(jī)分布的哈希結(jié)果的哈希函數(shù)。在一些實(shí)施例中,基于計(jì)算或資源使用水平來(lái)確定哈希函數(shù)。在一些實(shí)施例中,基于在硬件中實(shí)現(xiàn)哈希的難易度來(lái)確定哈希函數(shù)。在一些實(shí)施例中,基于用惡意的遠(yuǎn)程主機(jī)發(fā)送將全部哈希到同一桶中的分組的難易度來(lái)確定哈希函數(shù)。RSS可從任意類型和形式的輸入來(lái)產(chǎn)生哈希,例如值序列。該值序列可包括網(wǎng)絡(luò)分組的任何部分,如網(wǎng)絡(luò)分組的任何頭部、域或載荷或其一部分。一些實(shí)施例中,可將哈希輸入稱為哈希類型,哈希輸入可包括與網(wǎng)絡(luò)分組或數(shù)據(jù)流關(guān)聯(lián)的任何信息元組,例如下面的類型:包括至少兩個(gè)IP地址和兩個(gè)端口的四元組、包括任意四組值的四元組、六元組、二元組和/或任何其他數(shù)字或值序列。以下是可由RSS使用的哈希類型示例:-源TCP端口、源IP版本4(IPv4)地址、目的TCP端口和目的IPv4地址的四元組。-源TCP端口、源IP版本6(IPv6)地址、目的TCP端口和目的IPv6地址的四元組。-源IPv4地址和目的IPv4地址的二元組。-源IPv6地址和目的IPv6地址的二元組。-源IPv6地址和目的IPv6地址的二元組,包括對(duì)解析IPv6擴(kuò)展頭部的支持。哈希結(jié)果或其任何部分可用于識(shí)別用于分布網(wǎng)絡(luò)分組的核或?qū)嶓w,如分組引擎或Vipo一些實(shí)施例中,可向哈希結(jié)果應(yīng)用一個(gè)或者多個(gè)哈希位或掩碼。哈希位或掩碼可以是任何位數(shù)或字節(jié)數(shù)。NIC可支持任意位,例如7位。網(wǎng)絡(luò)堆??稍诔跏蓟瘯r(shí)設(shè)定要使用的實(shí)際位數(shù)。位數(shù)介于I和7之間,包括端值??赏ㄟ^(guò)任意類型和形式的表用哈希結(jié)果來(lái)識(shí)別核或?qū)嶓w,例如通過(guò)桶表(buckettable)或間接表(indirectiontable)。一些實(shí)施例中,用哈希結(jié)果的位數(shù)來(lái)索引表。哈希掩碼的范圍可有效地限定間接表的大小。哈希結(jié)果的任何部分或哈希結(jié)果自身可用于索引間接表。表中的值可標(biāo)識(shí)任何核或處理器,例如通過(guò)核或處理器標(biāo)識(shí)符來(lái)標(biāo)識(shí)。一些實(shí)施例中,表中標(biāo)識(shí)多核系統(tǒng)的所有核。其他實(shí)施例中,表中標(biāo)識(shí)多核系統(tǒng)的一部分核。間接表可包括任意多個(gè)桶,例如2到128個(gè)桶,可以用哈希掩碼索引這些桶。每個(gè)桶可包括標(biāo)識(shí)核或處理器的索引值范圍。一些實(shí)施例中,流控制器和/或RSS模塊可通過(guò)改變間接表來(lái)重新平衡網(wǎng)絡(luò)負(fù)載。一些實(shí)施例中,多核系統(tǒng)575不包括RSS驅(qū)動(dòng)器或RSS模塊560。在這些實(shí)施例的一些中,軟件操控模塊(未不出)或系統(tǒng)內(nèi)RSS模塊的軟件實(shí)施例可以和流分布器550共同操作或者作為流分布器550的一部分操作,以將分組引導(dǎo)到多核系統(tǒng)575中的核505。一些實(shí)施例中,流分布器550在設(shè)備200上的任何模塊或程序中執(zhí)行,或者在多核系統(tǒng)575中包括的任何一個(gè)核505和任一裝置或組件上執(zhí)行。一些實(shí)施例中,流分布器550’可在第一核505A上執(zhí)行,而在其他實(shí)施例中,流分布器550”可在NIC552上執(zhí)行。其他實(shí)施例中,流分布器550’的實(shí)例可在多核系統(tǒng)575中包括的每個(gè)核505上執(zhí)行。該實(shí)施例中,流分布器550’的每個(gè)實(shí)例可和流分布器550’的其他實(shí)例通信以在核505之間來(lái)回轉(zhuǎn)發(fā)分組。存在這樣的狀況,其中,對(duì)請(qǐng)求分組的響應(yīng)不是由同一核處理的,即第一核處理請(qǐng)求,而第二核處理響應(yīng)。這些情況下,流分布器550’的實(shí)例可以攔截分組并將分組轉(zhuǎn)發(fā)到期望的或正確的核505,即流分布器550’可將響應(yīng)轉(zhuǎn)發(fā)到第一核。流分布器550’的多個(gè)實(shí)例可以在任意數(shù)量的核505或核505的任何組合上執(zhí)行。流分布器可以響應(yīng)于任一個(gè)或多個(gè)規(guī)則或策略而操作。規(guī)則可識(shí)別接收網(wǎng)絡(luò)分組、數(shù)據(jù)或數(shù)據(jù)流的核或分組處理引擎。規(guī)則可識(shí)別和網(wǎng)絡(luò)分組有關(guān)的任何類型和形式的元組信息,例如源和目的IP地址以及源和目的端口的四元組。基于所接收的匹配規(guī)則所指定的元組的分組,流分布器可將分組轉(zhuǎn)發(fā)到核或分組引擎。一些實(shí)施例中,通過(guò)共享存儲(chǔ)器和/或核到核的消息傳輸將分組轉(zhuǎn)發(fā)到核。雖然圖5B不出了在多核系統(tǒng)575中執(zhí)行的流分布器550,但是,一些實(shí)施例中,流分布器550可執(zhí)行在位于遠(yuǎn)離多核系統(tǒng)575的計(jì)算裝置或設(shè)備上。這樣的實(shí)施例中,流分布器550可以和多核系統(tǒng)575通信以接收數(shù)據(jù)分組并將分組分布在一個(gè)或多個(gè)核505上。一個(gè)實(shí)施例中,流分布器550接收以設(shè)備200為目的地的數(shù)據(jù)分組,向所接收的數(shù)據(jù)分組應(yīng)用分布方案并將數(shù)據(jù)分組分布到多核系統(tǒng)575的一個(gè)或多個(gè)核505。一個(gè)實(shí)施例中,流分布器550可以被包括在路由器或其他設(shè)備中,這樣路由器可以通過(guò)改變與每個(gè)分組關(guān)聯(lián)的元數(shù)據(jù)而以特定核505為目的地,從而每個(gè)分組以多核系統(tǒng)575的子節(jié)點(diǎn)為目的地。這樣的實(shí)施例中,可用CISCO的vn-tag機(jī)制來(lái)改變或標(biāo)記具有適當(dāng)元數(shù)據(jù)的每個(gè)分組。圖5C示出包括一個(gè)或多個(gè)處理核505A-N的多核系統(tǒng)575的實(shí)施例。簡(jiǎn)言之,核505中的一個(gè)可被指定為控制核505A并可用作其他核505的控制平面570。其他核可以是次級(jí)核,其工作于數(shù)據(jù)平面,而控制核提供控制平面。核505A-N共享全局高速緩存580??刂坪颂峁┛刂破矫?,多核系統(tǒng)中的其他核形成或提供數(shù)據(jù)平面。這些核對(duì)網(wǎng)絡(luò)流量執(zhí)行數(shù)據(jù)處理功能,而控制核提供對(duì)多核系統(tǒng)的初始化、配置和控制。仍參考圖5C,具體而言,核505A-N以及控制核505A可以是此處所述的任何處理器。此外,核505A-N和控制核505A可以是能在圖5C所述系統(tǒng)中工作的任何處理器。另外,核505A-N可以是此處所述的任何核或核組??刂坪丝梢允桥c其他核不同類型的核或處理器。一些實(shí)施例中,控制核可操作不同的分組引擎或者具有與其他核的分組引擎配置不同的分組引擎。每個(gè)核的存儲(chǔ)器的任何部分可以被分配給或者用作核共享的全局高速緩存。簡(jiǎn)而言之,每個(gè)核的每個(gè)存儲(chǔ)器的預(yù)定百分比或預(yù)定量可用作全局高速緩存。例如,每個(gè)核的每個(gè)存儲(chǔ)器的50%可用作或分配給共享全局高速緩存。也就是說(shuō),所示實(shí)施例中,除了控制平面核或核I以外的每個(gè)核的2GB可用于形成28GB的共享全局高速緩存。例如通過(guò)配置服務(wù)而配置控制平面可確定用于共享全局高速緩存的存儲(chǔ)量(theamountofmemory)。一些實(shí)施例中,每個(gè)核可提供不同的存儲(chǔ)量供全局高速緩存使用。其他實(shí)施例中,任一核可以不提供任何存儲(chǔ)器或不使用全局高速緩存。一些實(shí)施例中,任何核也可具有未分配給全局共享存儲(chǔ)器的存儲(chǔ)器中的本地高速緩存。每個(gè)核可將網(wǎng)絡(luò)流量的任意部分存儲(chǔ)在全局共享高速緩存中。每個(gè)核可檢查高速緩存來(lái)查找要在請(qǐng)求或響應(yīng)中使用的任何內(nèi)容。任何核可從全局共享高速緩存獲得內(nèi)容以在數(shù)據(jù)流、請(qǐng)求或響應(yīng)中使用。全局高速緩存580可以是任意類型或形式的存儲(chǔ)器或存儲(chǔ)元件,例如此處所述的任何存儲(chǔ)器或存儲(chǔ)元件。一些實(shí)施例中,核505可訪問(wèn)預(yù)定的存儲(chǔ)量(即32GB或者與系統(tǒng)575相當(dāng)?shù)娜魏纹渌鎯?chǔ)量)。全局高速緩存580可以從預(yù)定的存儲(chǔ)量分配而來(lái),同時(shí),其余的可用存儲(chǔ)器可在核505之間分配。其他實(shí)施例中,每個(gè)核505可具有預(yù)定的存儲(chǔ)量。全局高速緩存580可包括分配給每個(gè)核505的存儲(chǔ)量。該存儲(chǔ)量可以字節(jié)為單位來(lái)測(cè)量,或者可用分配給每個(gè)核505的存儲(chǔ)器百分比來(lái)測(cè)量。因而,全局高速緩存580可包括來(lái)自與每個(gè)核505關(guān)聯(lián)的存儲(chǔ)器的IGB存儲(chǔ)器,或者可包括和每個(gè)核505關(guān)聯(lián)的存儲(chǔ)器的20%或一半。一些實(shí)施例,只有一部分核505提供存儲(chǔ)器給全局高速緩存580,而在其他實(shí)施例,全局高速緩存580可包括未分配給核505的存儲(chǔ)器。每個(gè)核505可使用全局高速緩存580來(lái)存儲(chǔ)網(wǎng)絡(luò)流量或緩存數(shù)據(jù)。一些實(shí)施例中,核的分組引擎使用全局高速緩存來(lái)緩存并使用由多個(gè)分組引擎所存儲(chǔ)的數(shù)據(jù)。例如,圖2A的高速緩存管理器和圖2B的高速緩存功能可使用全局高速緩存來(lái)共享數(shù)據(jù)以用于加速。例如,每個(gè)分組引擎可在全局高速緩存中存儲(chǔ)例如HTML數(shù)據(jù)的響應(yīng)。操作于核上的任何高速緩存管理器可訪問(wèn)全局高速緩存來(lái)將高速緩存響應(yīng)提供給客戶請(qǐng)求。一些實(shí)施例中,核505可使用全局高速緩存580來(lái)存儲(chǔ)端口分配表,其可用于部分基于端口確定數(shù)據(jù)流。其他實(shí)施例中,核505可使用全局高速緩存580來(lái)存儲(chǔ)地址查詢表或任何其他表或列表,流分布器可使用這些表來(lái)確定將到來(lái)的數(shù)據(jù)分組和發(fā)出的數(shù)據(jù)分組導(dǎo)向何處。一些實(shí)施例中,核505可以讀寫(xiě)高速緩存580,而其他實(shí)施例中,核505僅從高速緩存讀或者僅向高速緩存寫(xiě)。核可使用全局高速緩存來(lái)執(zhí)行核到核通信??梢詫⑷指咚倬彺?80劃分成各個(gè)存儲(chǔ)器部分,其中每個(gè)部分可專用于特定核505。一個(gè)實(shí)施例中,控制核505A可接收大量的可用高速緩存,而其他核505可接收對(duì)全局高速緩存580的變化的訪問(wèn)量。一些實(shí)施例中,系統(tǒng)575可包括控制核505A。雖然圖5C將核1505A示為控制核,但是,控制核可以是設(shè)備200或多核系統(tǒng)中的任何一個(gè)核。此外,雖然僅描述了單個(gè)控制核,但是,系統(tǒng)575可包括一個(gè)或多個(gè)控制核,每個(gè)控制核對(duì)系統(tǒng)有某種程度的控制。一些實(shí)施例中,一個(gè)或多個(gè)控制核可以各自控制系統(tǒng)575的特定方面。例如,一個(gè)核可控制決定使用哪種分布方案,而另一個(gè)核可確定全局高速緩存580的大小。多核系統(tǒng)的控制平面可以是將一個(gè)核指定并配置成專用的管理核或者作為主核??刂破矫婧丝蓪?duì)多核系統(tǒng)中的多個(gè)核的操作和功能提供控制、管理和協(xié)調(diào)??刂破矫婧丝蓪?duì)多核系統(tǒng)中的多個(gè)核上存儲(chǔ)器系統(tǒng)的分配和使用提供控制、管理和協(xié)調(diào),這包括初始化和配置存儲(chǔ)器系統(tǒng)。一些實(shí)施例中,控制平面包括流分布器,用于基于數(shù)據(jù)流控制數(shù)據(jù)流到核的分配以及網(wǎng)絡(luò)分組到核的分配。一些實(shí)施例中,控制平面核運(yùn)行分組引擎,其他實(shí)施例中,控制平面核專用于系統(tǒng)的其他核的控制和管理??刂坪?05A可對(duì)其他核505進(jìn)行某種級(jí)別的控制,例如,確定將多少存儲(chǔ)器分配給每個(gè)核505,或者確定應(yīng)該指派哪個(gè)核來(lái)處理特定功能或硬件/軟件實(shí)體。一些實(shí)施例中,控制核505A可以對(duì)控制平面570中的這些核505進(jìn)行控制。因而,控制平面570之外可存在不受控制核505A控制的處理器。確定控制平面570的邊界可包括由控制核505A或系統(tǒng)575中執(zhí)行的代理維護(hù)由控制核505A控制的核的列表??刂坪?05A可控制以下的任一個(gè):核初始化、確定核何時(shí)不可用、一個(gè)核出故障時(shí)將負(fù)載重新分配給其他核505、決定實(shí)現(xiàn)哪個(gè)分布方案、決定哪個(gè)核應(yīng)該接收網(wǎng)絡(luò)流量、決定應(yīng)該給每個(gè)核分配多少高速緩存、確定是否將特定功能或元件分布到特定核、確定是否允許核彼此通信、確定全局高速緩存580的大小以及對(duì)系統(tǒng)575內(nèi)的核的功能、配置或操作的任何其他確定。F.用于跨多核架構(gòu)和系統(tǒng)分發(fā)數(shù)據(jù)分組的系統(tǒng)和方法圖6描述多核系統(tǒng)545的一個(gè)實(shí)施例。在大多數(shù)實(shí)施例中,系統(tǒng)545可能包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口卡(NIC)552,該網(wǎng)絡(luò)接口卡可以執(zhí)行或包括RSS模塊560。NIC552可與一個(gè)或多個(gè)核505通信,其中每個(gè)核可執(zhí)行分組引擎548和/或流分布器550。在一些實(shí)施例中,NIC552可存儲(chǔ)一個(gè)或多個(gè)端口分配表604,并且可以包括一個(gè)或多個(gè)端口632以及一個(gè)或多個(gè)互聯(lián)網(wǎng)協(xié)議(IP)地址630。仍參考圖6且具體而言,在一個(gè)實(shí)施例中,多核系統(tǒng)545可以是本文描述的任何多核系統(tǒng)545。特別地,多核系統(tǒng)545可以是圖5B-5C中描述的任何多核系統(tǒng)545。多核系統(tǒng)545可以在設(shè)備200、客戶機(jī)、服務(wù)器或執(zhí)行本文描述的多核系統(tǒng)545的任何其他計(jì)算裝置上執(zhí)行。盡管圖6中描述的多核系統(tǒng)545包括多個(gè)核505和一個(gè)NIC552,在一些實(shí)施例中,多核系統(tǒng)545可包括附加裝置并且可以執(zhí)行附加程序、客戶機(jī)和模塊。在一個(gè)實(shí)施例中,多核系統(tǒng)545可包括NIC552,諸如本文描述的任何NIC。盡管圖6所示的多核系統(tǒng)545描述了具有單個(gè)NIC552的多核系統(tǒng)545,但在一些實(shí)施例中,多核系統(tǒng)545可具有一個(gè)或多個(gè)NIC552。這些NIC552可以是同樣類型的NIC552,而且在其他實(shí)施例中可以是不同類型的NIC552。NIC552可與多核系統(tǒng)545中的一個(gè)或多個(gè)處理核505通信。例如,NIC552可與第一核505A、第二核505B、第三核505C、第四核50、第五核505E、第六核505F、第七核505G以及第任意“N”核505N中的每一個(gè)通信,其中“N”是大于零的整數(shù)。在其他實(shí)施例中,NIC552可與單個(gè)核505或多個(gè)核505的子集通信。例如,NIC552可與第一核505A,或者核I到4505A-50通信。在其中多核系統(tǒng)545內(nèi)包括多個(gè)NIC552的實(shí)施例中,每個(gè)NIC552可與一個(gè)或多個(gè)核505通信。例如,第一NIC552可與核I到4505A-50通信,而第二NIC552可與核5到7505E-505G通信。在其中多核系統(tǒng)545內(nèi)包括多個(gè)NIC552的其他實(shí)施例中,一個(gè)或多個(gè)NIC552可與核505通信,而其他NIC552可執(zhí)行可選擇的功能、與多核系統(tǒng)545內(nèi)的其他系統(tǒng)或裝置通信,或者可以起冗余NIC552的作用,其中當(dāng)主要NIC552故障時(shí)將該冗余NIC552用作備份。在一些實(shí)施例中,NIC552執(zhí)行RSS模塊560,例如本文中描述的任何RSS模塊560。RSS模塊560對(duì)值的元組或序列應(yīng)用哈希函數(shù),該值的元組或序列包括下列的任意組合:客戶機(jī)IP地址、客戶機(jī)端口、目的IP地址、目的端口,或者與數(shù)據(jù)分組的源或目的關(guān)聯(lián)的任何其他值。在一些實(shí)施例中,對(duì)元組應(yīng)用哈希函數(shù)得到的值識(shí)別多核系統(tǒng)545內(nèi)的核505。RSS模塊560可使用哈希函數(shù)的這種性質(zhì)在多核系統(tǒng)545內(nèi)跨核505分發(fā)分組。通過(guò)跨多核系統(tǒng)545的核505來(lái)分發(fā)分組,RSS模塊560可以用與基于流的數(shù)據(jù)并行大體類似的方法,跨核505均衡地分發(fā)網(wǎng)絡(luò)流量。多核系統(tǒng)545內(nèi)的核505可以是本文描述的任意核505。在一個(gè)實(shí)施例中,多核系統(tǒng)545可包括任意“N”個(gè)核,其中“N”是大于零的整數(shù)。在其他實(shí)施例中,多核系統(tǒng)545可包括八個(gè)核。核505可專用于處理執(zhí)行某些功能的程序或服務(wù),并且在一些實(shí)施例中,可專用于處理由某些裝置或程序模塊接收或發(fā)送的數(shù)據(jù)分組。在一些實(shí)施例中,每個(gè)核505可執(zhí)行下列中的任何一個(gè):分組引擎548,諸如本文描述的任何分組引擎548;或者流分布器550,諸如本文描述的任何流分布器550。在其他實(shí)施例中,每個(gè)核505在關(guān)聯(lián)的數(shù)據(jù)倉(cāng)庫(kù)中存儲(chǔ)下列中的任何一個(gè):端口分配表格、核505的端口列表,或核505的IP地址列表。在一個(gè)實(shí)施例中,每個(gè)核505執(zhí)行分組引擎548A-N,如本文描述的任何vServer(虛擬服務(wù)器)。每個(gè)核505中可包括一個(gè)分組引擎548A-N,且分組引擎548A-N可統(tǒng)稱為分組引擎548。在一些實(shí)施例中,分組引擎548根據(jù)由每個(gè)分組引擎548執(zhí)行的流分布規(guī)則來(lái)更改或修改數(shù)據(jù)分組的元組。在一個(gè)實(shí)施例中,分組引擎548將該分組引擎548接收的數(shù)據(jù)分組的元組中的客戶機(jī)IP地址替換為核505的IP地址630A-B,其中分組引擎548在該核505上執(zhí)行。在另一個(gè)實(shí)施例中,分組引擎548將該分組引擎548接收的數(shù)據(jù)分組的元組中的客戶機(jī)端口替換為從核505的多個(gè)端口632A-B中選擇的端口632A-B,其中分組引擎548在該核505上執(zhí)行。在其他實(shí)施例中,分組引擎548維護(hù)數(shù)據(jù)分組的所有方面,包括該數(shù)據(jù)分組的元組的內(nèi)容。在一些實(shí)施例中,分組引擎548與一個(gè)或多個(gè)服務(wù)器106通信,從而向服務(wù)器106轉(zhuǎn)發(fā)所接收的去往那些服務(wù)器106的數(shù)據(jù)分組。類似地,在一些實(shí)施例中,分組引擎548與一個(gè)或多個(gè)客戶機(jī)102通信,以便向客戶機(jī)102轉(zhuǎn)發(fā)所接收的去往那些客戶機(jī)102的數(shù)據(jù)分組。在一些實(shí)施例中,每個(gè)核505訪問(wèn)分配到每個(gè)核505的存儲(chǔ)倉(cāng)庫(kù)或?qū)Χ嗪讼到y(tǒng)545中所有核505可用的共享存儲(chǔ)倉(cāng)庫(kù)。在一個(gè)實(shí)施例中,端口分配604A-N存儲(chǔ)在存儲(chǔ)倉(cāng)庫(kù)中,該存儲(chǔ)倉(cāng)庫(kù)是共享的或者被分配給特定的核505。單個(gè)核505可具有一個(gè)或多個(gè)端口分配表604A-N(總的稱為端口分配表604),其中每個(gè)端口分配表604列舉在特定核505A上可用和不可用的端口。在一個(gè)實(shí)施例中,核505可具有一個(gè)端口分配表604,而在其他實(shí)施例中,核505可具有64或256個(gè)端口分配表604。例如,核1505A上的端口分配表A604A可存儲(chǔ)表示核1505A上每個(gè)端口632A-B的狀態(tài)的條目。每個(gè)端口632A-B的狀態(tài)可包括下列特征中的任何特征:端口是打開(kāi)還是關(guān)閉的、端口是否已被分配(即,端口是可用的不可用的)、端口是否在預(yù)先分配的范圍內(nèi),以及端口的任何其他相關(guān)特征。因而,如果核1505A上的分組引擎A548A想要確定特定端口是否是打開(kāi)的和/或可用的,則分組引擎A548A可查詢端口分配表A604A來(lái)確定期望端口是否是打開(kāi)的和/或可用的。在其中核505具有多個(gè)端口分配表604的實(shí)例中,每個(gè)端口分配表可與值或其他唯一標(biāo)識(shí)符相關(guān)聯(lián)。在一個(gè)實(shí)施例中,每個(gè)端口分配表604具有標(biāo)識(shí)值(identifyingvalue),其中可通過(guò)對(duì)數(shù)據(jù)分組的元組的部分應(yīng)用哈希函數(shù)來(lái)確定該標(biāo)識(shí)值。因而,分組引擎548或流分布器550可以對(duì)客戶機(jī)IP地址、客戶機(jī)端口、目的IP地址和/或目的端口的任意組合應(yīng)用本文描述的任何哈希,以確定數(shù)據(jù)分組的唯一值。該唯一值還識(shí)別核505上的端口分配表604。例如,如果核2505B上的分組引擎548B想要為所接收的數(shù)據(jù)分組分配端口,則分組引擎548B首先對(duì)在該數(shù)據(jù)分組中標(biāo)識(shí)的客戶機(jī)IP地址和目的IP地址應(yīng)用哈希?;谠摴5慕Y(jié)果,分組引擎548B從核2505B上的一個(gè)或多個(gè)端口分配表604中選擇端口分配表604,以及基于對(duì)所選的端口分配表604的檢查(review)來(lái)選擇端口632C-D。在一些實(shí)施例中,可由分組引擎548、流分布器550或者其他程序、服務(wù)或裝置,基于對(duì)核505的端口632做出的改變或者基于將端口632分配給數(shù)據(jù)分組或事務(wù)來(lái)動(dòng)態(tài)地更改端口分配表604。在一個(gè)實(shí)施例中,當(dāng)把一部分端口分配給核505中的特定端口分配表604或分配給特定核505時(shí),更新端口分配表604以體現(xiàn)該分配。該更新可以是更新受影響的端口632的條目以體現(xiàn)該分配,或者是更新受影響的端口632以便將該部分端口632中的端口632列舉為打開(kāi)的以及將所有其他端口632列舉為關(guān)閉的。在其他實(shí)施例中,一旦將端口分配給數(shù)據(jù)分組或兩個(gè)計(jì)算機(jī)器之間的事務(wù),則更新端口分配表604以通過(guò)將被分配的端口列舉為關(guān)閉的或不可用的來(lái)體現(xiàn)該分配,并且在一些情況下通過(guò)標(biāo)識(shí)該數(shù)據(jù)分組或事務(wù)來(lái)體現(xiàn)該分配。在一些實(shí)施例中,每個(gè)核505可具有一個(gè)或多個(gè)端口632(總的稱為端口632)。盡管圖6將每個(gè)核505描述為具有兩個(gè)端口632,但每個(gè)核505可具有多個(gè)端口632,即數(shù)百個(gè)且在一些情況下具有數(shù)千個(gè)或數(shù)百萬(wàn)個(gè)端口632。在大部分實(shí)施例中,由唯一值或唯一編號(hào)來(lái)標(biāo)識(shí)端口632。向端口632分配數(shù)據(jù)分組或事務(wù)可包括更新數(shù)據(jù)分組或事務(wù)的多個(gè)數(shù)據(jù)分組的頭部以體現(xiàn)與分配的端口632關(guān)聯(lián)的唯一值或編號(hào)。在多個(gè)實(shí)施例中,在每個(gè)核505上的端口分配表604內(nèi)跟蹤端口632。當(dāng)每個(gè)核505具有其自己的端口632集合時(shí),每個(gè)核上與每個(gè)端口632關(guān)聯(lián)的值或編號(hào)可重復(fù)。例如,核3505C可具有端口I到3000,而核5505E也可以具有端口I到3000。核3505C和核5505E中每個(gè)端口的唯一性來(lái)自于如下事實(shí):核3505C的端口與特定于核3505C的一個(gè)或多個(gè)IP地址相關(guān)聯(lián),并且核5505E的端口與特定于核5505E的一個(gè)或多個(gè)IP地址相關(guān)聯(lián)。類似地,在多數(shù)實(shí)施例中,每個(gè)核505具有一個(gè)或多個(gè)IP地址630A-B。盡管圖6將每個(gè)核505描述為具有兩個(gè)IP地址630(總的稱為IP地址630),但每個(gè)核505可具有任意“N”個(gè)IP地址630,其中“N”是大于零的整數(shù)。在一些實(shí)施例中,管理員、應(yīng)用或者在多核系統(tǒng)545中執(zhí)行的其他服務(wù)或程序預(yù)先分配核505的IP地址630。在其他實(shí)施例中,為每個(gè)核505分配一組IP地址630或IP地址630的范圍。在其他實(shí)施例中,為每個(gè)核505分配相同的IP地址。在大多數(shù)實(shí)施例中,該IP地址630是多核系統(tǒng)545的IP地址。在一個(gè)實(shí)施例中,第一核505可執(zhí)行流分布器550。該流分布器550可以是本文描述的任何流分布器550。盡管圖6描述了其中流分布器550在第一核505上執(zhí)行的多核系統(tǒng)545,但每個(gè)核505可執(zhí)行特定于該核505的流分布器550的實(shí)例。在其中流分布器550在單個(gè)核505上執(zhí)行的實(shí)例中,該核可以被認(rèn)為是控制核。在其中多核系統(tǒng)545包括RSS模塊560的一些實(shí)施例中,系統(tǒng)545可能不包括流分布器550??捎杀疚拿枋龅娜魏尾⑿杏?jì)算方案來(lái)完成數(shù)據(jù)分組、網(wǎng)絡(luò)流量或者請(qǐng)求和響應(yīng)的分發(fā)。在一個(gè)實(shí)施例中,可基于對(duì)稱流分布來(lái)分發(fā)網(wǎng)絡(luò)流量。可以為由多核系統(tǒng)545接收的每個(gè)數(shù)據(jù)分組使用Toeplitz哈?;蛉魏慰杀裙?lái)確定目標(biāo)核,從而實(shí)現(xiàn)對(duì)稱流分布。在一些實(shí)施例中,對(duì)稱流分布哈?;蛘邔?duì)稱哈希分布(SHD)與RSS模塊560使用的哈希大體相同。通過(guò)輸入字節(jié)流(例如值的元組或者序列)以及向在RSS模塊560內(nèi)部的RSS驅(qū)動(dòng)程序提供能夠用于哈希計(jì)算的密鑰來(lái)進(jìn)行哈希操作。因而,當(dāng)向哈希函數(shù)輸入“N”字節(jié)的數(shù)組時(shí),可將字節(jié)流標(biāo)識(shí)為input[O]input[I]input[2]…input[N-1],其中最左邊的字節(jié)是input[O]且最左邊的位是input[O]的最高有效位,并且其中最右邊的字節(jié)是input[N_l]且最右邊的位是input[N-1]的最低有效位。在一些實(shí)施例中,該哈??筛鶕?jù)以下關(guān)系操作:Forallinputsuptothevalue〃N〃,calculatethefollowing:foreachbit〃B〃ininput[]fromlefttoright,if〃B〃isequaltoonethen("Result"'=(leftmost32bitsofK))andshiftKleftlbitposition,thenreturn〃Result.〃在一些實(shí)施例中,根據(jù)下列等式或關(guān)系通過(guò)XOR操作分布該哈希:Hash(AxorB)=Hash(A)xorHash(B)。在其他實(shí)施例中,可通過(guò)任何邏輯操作分布該hash,諸如:NAND、NOR、OR、AND或本文中描述的方法和系統(tǒng)中可使用的任何其他邏輯操作。向該哈希輸入的值的元組或序列可以是任意下列值的連接:客戶機(jī)IP地址、源IP地址、目的IP地址、本地IP地址、虛擬IP地址、分配的IP地址、設(shè)備IP地址、客戶機(jī)端口、源端口、目的端口、本地端口、虛擬端口、分配的端口、設(shè)備端口,或任何其他IP地址或端口。在一些實(shí)施例中,維護(hù)元組的順序,使得該元組是客戶機(jī)IP地址、客戶機(jī)端口、目的IP地址和目的端口的連接。該元組可包括兩個(gè)、四個(gè)、六個(gè)或任何數(shù)量的值。另外,元組可包括任何類型的值,即數(shù)字、二元、三元、字母或者字母數(shù)字。下文包括了在不同的互聯(lián)網(wǎng)協(xié)議版本中以及在使用TCP或UDP時(shí)如何應(yīng)用哈希的示例。這些示例旨在對(duì)應(yīng)用哈希進(jìn)行說(shuō)明而并不用于限制范圍。示例1-1PV4:TCP/UDP在本示例中,元組包括下列值的連接:源地址、目的地址、源端口和目的端口。因而,可由以下關(guān)系來(lái)表征該元組或輸入字符串:INPUT[12]=@12-15,@16-19,@20-21,@22-23。條目@n-m標(biāo)識(shí)字節(jié)范圍,即n=12,m=15,@12-15。由下式表征對(duì)該輸入字符串應(yīng)用哈希:HashResult=ComputeHash(Input,12)示例2-1PV4:其他在本實(shí)施中,元組包括下列值的連接:源地址和目的地址。因而,可由以下關(guān)系來(lái)表征該元組或輸入字符串=INPUT[8]=@12-15,@16-19。條目@n_m標(biāo)識(shí)字節(jié)范圍,即n=12,m=15,@12-15。由下式表征對(duì)該輸入字符串應(yīng)用哈希:HashResult=ComputeHash(Input,8)示例3-1PV6:TCP/UDP在本實(shí)施中,元組包括下列值的連接:源地址、目的地址、源端口和目的端口。因而,可由以下關(guān)系來(lái)表征該元組或輸入字符串:INPUT[36]=@8-23,@24-39,@40-41,@42-43。條目@n-m標(biāo)識(shí)字節(jié)范圍,即n=8,m=23,@8-23。由下式表征對(duì)該輸入字符串應(yīng)用哈希:HashResult=ComputeHash(Input,36)示例4-1PV6:其他在本實(shí)施中,元組包括下列值的連接:源地址和目的地址。因而,可由以下關(guān)系來(lái)表征該元組或輸入字符串=INPUT[32]=@8-23,@24-39。條目@n_m標(biāo)識(shí)字節(jié)范圍,即n=8,m=23,§8-23。由下式表征對(duì)該輸入字符串應(yīng)用哈希:HashResult=ComputeHash(Input,32)在一些實(shí)施例中,當(dāng)多核系統(tǒng)545攔截或以其他方式處理沒(méi)有使用互聯(lián)網(wǎng)協(xié)議的數(shù)據(jù)分組和/或網(wǎng)絡(luò)流量時(shí),不計(jì)算哈希。在該實(shí)施例中,可將非IP分組或流量路由到默認(rèn)核505。該核505可專用于處理非IP分組或者可為該非IP網(wǎng)絡(luò)流量的操作或處理分配一定數(shù)量的資源。圖7A-7D示出的框圖描述了用于將數(shù)據(jù)分組分發(fā)到核505上的邏輯隊(duì)列和NIC552上的發(fā)送/接收隊(duì)列的多核系統(tǒng)545的實(shí)施例。多核系統(tǒng)545中包括一個(gè)或多個(gè)處理核505A-505N(總的稱為核505),其執(zhí)行一個(gè)或多個(gè)分組引擎548A-548N(總的稱為分組引擎548)。在一些方面,每個(gè)分組引擎包括至少一個(gè)邏輯接收隊(duì)列604和至少一個(gè)邏輯發(fā)送隊(duì)列602。多核系統(tǒng)545內(nèi)包括流分布器550和網(wǎng)絡(luò)接口卡(NIC)552。在一些實(shí)施例中,流分布器550可包括接口模塊612,而NIC552可包括RSS模塊560以及至少一個(gè)接收隊(duì)列622和至少一個(gè)發(fā)送隊(duì)列620。仍參考圖7A-7D,在一些實(shí)施例中,多核系統(tǒng)545可以是本文描述的任何多核系統(tǒng)545。因而,可在設(shè)備200或計(jì)算機(jī)器上建立該多核系統(tǒng)545。在一些實(shí)施例中,可在設(shè)備200上執(zhí)行多核系統(tǒng)545的部分,而在計(jì)算機(jī)器上執(zhí)行該多核系統(tǒng)545的其他部分。在一些實(shí)施例中,可將多核系統(tǒng)545的執(zhí)行分散到一個(gè)或多個(gè)設(shè)備200和/或一個(gè)或多個(gè)計(jì)算機(jī)器。包含在多核系統(tǒng)545中的核505可以是本文描述的任何核505。每個(gè)核505可經(jīng)由任何類型的核間通信系統(tǒng)與多核系統(tǒng)545中的其他核505通信。核505可通過(guò)在多核系統(tǒng)545的網(wǎng)絡(luò)上發(fā)送數(shù)據(jù)分組,或通過(guò)將數(shù)據(jù)復(fù)制到全局高速緩存或存儲(chǔ)裝置內(nèi)并向其他核傳送下載指令來(lái)進(jìn)行通信。多核系統(tǒng)545中可包括任意“N”個(gè)核505,其中“N”是大于零的整數(shù)。更進(jìn)一步,核505可以是任何處理器和本文描述的任何處理器。在一些實(shí)施例中,每個(gè)核505是同一類型的核且同一大小,然而在其他實(shí)施例中,包含在多核系統(tǒng)545中的核505之間的核的類型以及核的大小不同??稍诿總€(gè)核505上執(zhí)行一個(gè)或多個(gè)分組引擎548。在一些實(shí)施例中,每個(gè)核505執(zhí)行至少一個(gè)分組引擎548,而在其他實(shí)施例中,部分核505執(zhí)行至少一個(gè)分組引擎548。分組引擎548可以是本文描述的任何分組引擎548。分組引擎548可用于向由該分組引擎548接收的數(shù)據(jù)分組的元組應(yīng)用上文描述的任何哈希。在一些實(shí)施例中,分組引擎548可管理來(lái)自核505的數(shù)據(jù)分組的發(fā)送,并且接收發(fā)送或分發(fā)到核505的數(shù)據(jù)分組。在一個(gè)實(shí)施例中,每個(gè)分組引擎548可包括至少一個(gè)邏輯接收隊(duì)列604和至少一個(gè)邏輯發(fā)送隊(duì)列602。在一些實(shí)施例中,邏輯接收隊(duì)列604可以是存儲(chǔ)數(shù)據(jù)分組或通信數(shù)據(jù)的任何存儲(chǔ)倉(cāng)庫(kù)或存儲(chǔ)元素。在一些實(shí)例中,邏輯接收隊(duì)列604可以是數(shù)組、列表、矩陣或用于順序存儲(chǔ)信息的其他數(shù)據(jù)結(jié)構(gòu)。在一個(gè)實(shí)施例中,邏輯接收隊(duì)列604是存儲(chǔ)指向存儲(chǔ)元素中存儲(chǔ)的數(shù)據(jù)分組的指針或存儲(chǔ)數(shù)據(jù)分組的表或數(shù)據(jù)庫(kù)。在大多數(shù)實(shí)施例中,邏輯接收隊(duì)列604存儲(chǔ)由分組引擎548接收的數(shù)據(jù)分組??砂凑障冗M(jìn)先出順序或后進(jìn)先出順序?qū)⑺邮盏臄?shù)據(jù)分組存儲(chǔ)在邏輯接收隊(duì)列604中。盡管在大多數(shù)實(shí)施例中,邏輯接收隊(duì)列604包括存儲(chǔ)倉(cāng)庫(kù)或存儲(chǔ)元素,但在其他實(shí)施例中,該邏輯接收隊(duì)列604可包括客戶機(jī)或模塊,其中該客戶機(jī)或模塊接收數(shù)據(jù)分組,并且根據(jù)下列任何標(biāo)準(zhǔn)在邏輯接收隊(duì)列604存儲(chǔ)元素中調(diào)整該數(shù)據(jù)分組:數(shù)據(jù)分組的類型、何時(shí)接收該數(shù)據(jù)分組、數(shù)據(jù)分組的源IP地址或端口、數(shù)據(jù)分組的目的IP地址或端口、數(shù)據(jù)分組的大小,或用于在邏輯接收隊(duì)列604中整理數(shù)據(jù)分組的任何其他標(biāo)準(zhǔn)。在一些實(shí)施例中,每當(dāng)將數(shù)據(jù)分組寫(xiě)入或復(fù)制到邏輯接收隊(duì)列604中時(shí),并且每當(dāng)從邏輯接收隊(duì)列604中排出或獲取數(shù)據(jù)分組時(shí),更新表中的條目。邏輯接收隊(duì)列604可從分組引擎548或從在核505上執(zhí)行的任何其他通信模塊接收數(shù)據(jù)分組。在一些實(shí)施例中,分組引擎548將從系統(tǒng)545接收的所有數(shù)據(jù)分組寫(xiě)入邏輯接收隊(duì)列604。在其他實(shí)施例中,每個(gè)核505或分組引擎548還包括邏輯NIC(未示出),該邏輯NIC接收發(fā)送到核505的數(shù)據(jù)分組并且在邏輯接收隊(duì)列604中進(jìn)一步存儲(chǔ)那些數(shù)據(jù)分組。在該實(shí)施例中,邏輯NIC內(nèi)可包括邏輯接收隊(duì)列604。類似地,在一些實(shí)施例中,分組引擎548內(nèi)可包括邏輯NIC。在一些實(shí)施例中,邏輯發(fā)送隊(duì)列602可以是存儲(chǔ)數(shù)據(jù)分組或通信數(shù)據(jù)的任何存儲(chǔ)倉(cāng)庫(kù)或存儲(chǔ)元素。在一些實(shí)施例中,邏輯發(fā)送隊(duì)列602可以是數(shù)組、列表、矩陣或用于順序存儲(chǔ)信息的其他數(shù)據(jù)結(jié)構(gòu)。在一個(gè)實(shí)施例中,邏輯發(fā)送隊(duì)列602是存儲(chǔ)指向存儲(chǔ)元素中存儲(chǔ)的數(shù)據(jù)分組的指針或存儲(chǔ)數(shù)據(jù)分組的表或數(shù)據(jù)庫(kù)。在大多數(shù)實(shí)施例中,邏輯發(fā)送隊(duì)列602存儲(chǔ)由分組引擎548或核505發(fā)送的數(shù)據(jù)分組。可根據(jù)先進(jìn)先出順序或后進(jìn)先出順序在邏輯發(fā)送隊(duì)列602中存儲(chǔ)發(fā)送的數(shù)據(jù)分組。盡管在大多數(shù)實(shí)施例中,該邏輯發(fā)送隊(duì)列602包括存儲(chǔ)倉(cāng)庫(kù)或存儲(chǔ)元素,但在其他實(shí)施例中,該邏輯發(fā)送隊(duì)列602可包括客戶機(jī)或模塊,該客戶機(jī)或模塊接收發(fā)送的數(shù)據(jù)分組并且根據(jù)以下任何規(guī)則在邏輯發(fā)送隊(duì)列602存儲(chǔ)元素中調(diào)整該數(shù)據(jù)分組:數(shù)據(jù)分組的類型、何時(shí)接收該數(shù)據(jù)分組、數(shù)據(jù)分組的源IP地址或端口、數(shù)據(jù)分組的目的IP地址或端口、數(shù)據(jù)分組的大小,或用于在邏輯發(fā)送隊(duì)列602中整理數(shù)據(jù)分組的任何其他標(biāo)準(zhǔn)。在一些實(shí)施例中,每當(dāng)將數(shù)據(jù)分組寫(xiě)入或復(fù)制到邏輯發(fā)送隊(duì)列602中時(shí),并且每當(dāng)從邏輯發(fā)送隊(duì)列602中排出或獲取數(shù)據(jù)分組時(shí),更新表中的條目。邏輯發(fā)送隊(duì)列602可從分組引擎548或從在核505上執(zhí)行的任何其他通信模塊接收數(shù)據(jù)分組。在一些實(shí)施例中,分組引擎548將從核505或從核505上執(zhí)行的應(yīng)用接收的所有數(shù)據(jù)分組寫(xiě)入邏輯發(fā)送隊(duì)列602。在其他實(shí)施例中,每個(gè)核505或分組引擎548還包括邏輯NIC(未示出),該邏輯NIC接收由核505和/或分組引擎548生成或修改的、由分組引擎548或核505發(fā)送到目的地的數(shù)據(jù)分組并且在邏輯發(fā)送隊(duì)列602中存儲(chǔ)那些數(shù)據(jù)分組。在該實(shí)施例中,邏輯NIC內(nèi)可包括邏輯發(fā)送隊(duì)列602。類似地,在一些實(shí)施例中,分組引擎548內(nèi)可包括邏輯NIC。多核系統(tǒng)545中還可以包括流分布器550,在一些實(shí)施例中該流分布器可以是任何流分布程序、模塊或?qū)ο蟆T谝恍?shí)施例中,流分布器550可以是本文描述的任何流分布器。在大多數(shù)情況下,流分布器接收由多核系統(tǒng)545接收的網(wǎng)絡(luò)流量并且在多核系統(tǒng)545中的核505之間分發(fā)該網(wǎng)絡(luò)流量。分發(fā)網(wǎng)絡(luò)流量可包括從數(shù)據(jù)分組提取信息,其中可連接該信息以形成字符串或元組。向該元組應(yīng)用上述任何哈希的結(jié)果可以識(shí)別多核系統(tǒng)545中的核505。基于向元組應(yīng)用哈希,流分布器550在多核系統(tǒng)545中的核505之間分發(fā)數(shù)據(jù)分組。在一些實(shí)施例中,流分布器550可包括接口模塊612,該接口模塊612與每個(gè)分組引擎548內(nèi)的邏輯接收隊(duì)列604和邏輯發(fā)送隊(duì)列602相接口。接口模塊612還可以與NIC552上的發(fā)送隊(duì)列620和接收隊(duì)列622相接口。當(dāng)NIC552接收數(shù)據(jù)分組時(shí),可將該數(shù)據(jù)分組存儲(chǔ)在NIC接收隊(duì)列622中。接口模塊612依次排出NIC接收隊(duì)列622并且將所接收的數(shù)據(jù)分組分發(fā)到每個(gè)核的分組引擎548中的邏輯接收隊(duì)列612。因而,在一些實(shí)施例中,接口模塊612與流分布器550協(xié)同操作,從而從NIC接收隊(duì)列622和邏輯發(fā)送隊(duì)列602中獲取、排出或以其他方式拖出信息,并且將信息寫(xiě)入或以其他方式存儲(chǔ)到邏輯接收隊(duì)列604和NIC發(fā)送隊(duì)列620中。所存儲(chǔ)和獲取的信息可包括數(shù)據(jù)分組以及存儲(chǔ)在發(fā)送或接收隊(duì)列中的任何其他信息。盡管圖7A-7D描述了包括接口模塊612的流分布器550,但在一些實(shí)施例中,流分布器550不包括接口模塊612。而是,由流分布器550執(zhí)行接口模塊612的上述功能。因而,流分布器550從NIC接收隊(duì)列622和邏輯發(fā)送隊(duì)列602獲取、排出或以其他方式拖出信息,并且將信息寫(xiě)入或以其他方式存儲(chǔ)到邏輯接收隊(duì)列604和NIC發(fā)送隊(duì)列620中。多核系統(tǒng)545中還可以包括NIC552。在大多數(shù)實(shí)施例中,NIC552可以是任何網(wǎng)絡(luò)接口卡或者還可以是本文描述的任何NIC。盡管圖7A-7D描述了具有單個(gè)NIC552的多核系統(tǒng)545,但在一些實(shí)施例中,多核系統(tǒng)545包括多個(gè)NIC。在一些實(shí)施例中,每個(gè)NIC552可包括發(fā)送隊(duì)列620和接收隊(duì)列622。在一些實(shí)施例中,發(fā)送隊(duì)列620可從多核系統(tǒng)545接收數(shù)據(jù)分組并且通過(guò)網(wǎng)絡(luò)將那些數(shù)據(jù)分組發(fā)送到目的地。在其他實(shí)施例中,發(fā)送隊(duì)列620可與流分布器550、RSS模塊650、接口模塊612或多核系統(tǒng)545中的任何其他核通信模塊直接通信,來(lái)接收由多核系統(tǒng)545生成、修改或處理的數(shù)據(jù)分組。在一些實(shí)施例中,接收隊(duì)列622可接收來(lái)自通過(guò)網(wǎng)絡(luò)發(fā)送信息到多核系統(tǒng)545的遠(yuǎn)程計(jì)算機(jī)器和/或設(shè)備的數(shù)據(jù)分組。在一些實(shí)施例中,當(dāng)NIC552接收來(lái)自連接到多核系統(tǒng)545的網(wǎng)絡(luò)的網(wǎng)絡(luò)流量或數(shù)據(jù)分組時(shí),將所接收的數(shù)據(jù)分組存儲(chǔ)到NIC接收隊(duì)列622中。可通過(guò)流分布器550、RSS模塊560和接口模塊612訪問(wèn)或排出該接收隊(duì)列622。在一些實(shí)施例中,NIC552還包括RSS模塊560。該RSS模塊560可以是任何RSS模塊560并且還可以是本文描述的任何RSS模塊560。在一些實(shí)施例中,RSS模塊560與流分布器550的操作大體相似,這是因?yàn)镽SS模塊560基于應(yīng)用到每個(gè)數(shù)據(jù)分組元組的哈希在多核系統(tǒng)545中的核505之間分發(fā)數(shù)據(jù)分組。該哈??梢允巧鲜鋈魏喂#夜5慕Y(jié)果識(shí)別多核系統(tǒng)545中的至少一個(gè)核。盡管圖7A-7D示出的多核系統(tǒng)545包括具有RSS模塊560的NIC552和流分布器550,但在一些實(shí)施例中,多核系統(tǒng)545可僅包括流分布器550。在這些實(shí)施例中,流分布器550根據(jù)哈希的應(yīng)用來(lái)處理分發(fā)數(shù)據(jù)分組。在其他實(shí)施例中,多核系統(tǒng)545可僅包括具有RSS模塊560的NIC552。在這些實(shí)施例中,RSS模塊560根據(jù)哈希的應(yīng)用來(lái)處理分發(fā)數(shù)據(jù)分組。在一些實(shí)施例中,每個(gè)邏輯發(fā)送隊(duì)列602和邏輯接收隊(duì)列603可具有緩沖區(qū)(未示出),該緩沖區(qū)存儲(chǔ)值,該值可包含校驗(yàn)和卸載(checksumoffload)、分組引擎548的物理地址以及類似信息,每個(gè)邏輯隊(duì)列可在該緩沖區(qū)中進(jìn)行操作。這些值可稱為地址、描述符或偽描述符,并且在大多數(shù)實(shí)施例中可存儲(chǔ)在與每個(gè)邏輯隊(duì)列關(guān)聯(lián)的緩沖區(qū)中。因而,第一邏輯發(fā)送隊(duì)列可與存儲(chǔ)關(guān)于分組引擎548的描述符的緩沖區(qū)關(guān)聯(lián),其中該第一邏輯發(fā)送隊(duì)列在該分組引擎548內(nèi)執(zhí)行,并且在一些情況下,第一邏輯發(fā)送隊(duì)列可與存儲(chǔ)關(guān)于核505的描述符的緩沖區(qū)關(guān)聯(lián),其中該第一邏輯發(fā)送隊(duì)列在該核505上執(zhí)行。這些描述符可由接口模塊612用于配置NIC552。在其他實(shí)施例中,可為每個(gè)分組引擎548提供對(duì)緩沖區(qū)(未示出)的讀和寫(xiě)訪問(wèn)權(quán)限,其中該緩沖區(qū)對(duì)多核系統(tǒng)545中的每個(gè)組件和模塊可用。在一些實(shí)施例中,每個(gè)分組引擎548可寫(xiě)入信息,該信息可由接口模塊612訪問(wèn)并且用于配置NIC552。該信息可包括校驗(yàn)和卸載、分組弓I擎的物理地址和其他類似信息。仍參考圖7A且具體而言,在一個(gè)實(shí)施例中,NIC552中可包括流分布器550。在這些實(shí)施例中,每個(gè)核與NIC552直接通信。在一些實(shí)例中,流分布器550通過(guò)中繼從核505到NIC552中的模塊的通信,來(lái)促成核505和NIC552之間的通信。在其他實(shí)例中,在核505上執(zhí)行的分組引擎548與NIC552、流分布器550或RSS模塊560直接通信。進(jìn)一步參考圖7B且具體而言,在一些實(shí)施例中,流分布器550可包含在單個(gè)核505上而不是包含在NIC552中。該核505可以是第一核505,或者在一些實(shí)施例中是多核系統(tǒng)505中的控制核。當(dāng)流分布器550包含在第一核505中時(shí),流分布器可與多核系統(tǒng)545中的任何核505,以及NIC552和RSS模塊560相接口。進(jìn)一步參考圖7C且具體而言,在一些實(shí)施例中,多核系統(tǒng)545中的每個(gè)核505上可包括單獨(dú)的流分布器550A-550N或流分布器550A-550N的實(shí)例。在該實(shí)施例中,每個(gè)流分布器550A-550N可與在該特定核505中的分組引擎548相交互,以及與NIC552和RSS模塊560相交互。進(jìn)一步參考圖7D且具體而言,在一些實(shí)施例中,流分布器可包括在多核系統(tǒng)545中的內(nèi)核610中。該內(nèi)核610可以是任何操作系統(tǒng)內(nèi)核。此外,流分布器550可與每個(gè)核505和每個(gè)分組引擎548通信,以及同NIC552和RSS模塊560通信。圖8中描述的是用于在多核系統(tǒng)545中的核505之間分發(fā)數(shù)據(jù)分組的方法800的一個(gè)實(shí)施例。在一個(gè)實(shí)施例中,多核系統(tǒng)545接收數(shù)據(jù)分組(步驟802)并且流分布器550或RRS模塊560識(shí)別該數(shù)據(jù)分組的元組(步驟804)。在識(shí)別該元組之后,將上文描述的哈希應(yīng)用到所識(shí)別的元組(步驟806)以生成結(jié)果值。在大部分實(shí)施例中,該結(jié)果值識(shí)別多核系統(tǒng)545中的核505。RSS模塊560或流分布器550將數(shù)據(jù)分組發(fā)送到由結(jié)果哈希值識(shí)別的核505(步驟808)。在一些實(shí)施例中,所選核505上的分組引擎548接收該數(shù)據(jù)分組并且選擇所選核505的IP地址和端口(步驟810)。接著,分組引擎548可確定所選IP地址、所選端口和元組的部分的哈希是否生成識(shí)別所選核505的值。當(dāng)確定由應(yīng)用到上述元組的哈希所生成的值識(shí)別所選核505時(shí),分組引擎548用所選IP地址和端口修改該元組(步驟814)。一旦修改元組,在所選核505上執(zhí)行的分組引擎548或其他模塊將修改的數(shù)據(jù)分組轉(zhuǎn)發(fā)到遠(yuǎn)程計(jì)算機(jī)器(816)。進(jìn)一步參考圖8且具體而言,在一個(gè)實(shí)施例中,多核系統(tǒng)545中的NIC552接收通過(guò)網(wǎng)絡(luò)104發(fā)送到該多核系統(tǒng)545的一個(gè)或多個(gè)數(shù)據(jù)分組(步驟802)。在一個(gè)實(shí)施例中,流分布器從NIC552獲得數(shù)據(jù)分組。在其他實(shí)施例中,RSS模塊560、分組引擎548或者其他分布模塊或程序從NIC552排出或以任何方式獲得數(shù)據(jù)分組。流分布器可從NIC552上的接收隊(duì)列排出或獲取數(shù)據(jù)分組?!┝鞣植计?50接收數(shù)據(jù)分組,流分布器或分布模塊可識(shí)別該數(shù)據(jù)分組的元組(步驟804)。在一些實(shí)施例中,該元組可包括下列值的任何組合:客戶機(jī)IP地址、目的IP地址、客戶機(jī)端口、目的端口,或者任何其他IP地址、端口或其他源或目的標(biāo)識(shí)值。在一些實(shí)施例中,客戶機(jī)IP地址可以是源IP地址。類似地,在一些實(shí)施例中客戶機(jī)端口可以是源端口。在一些實(shí)施例中,識(shí)別數(shù)據(jù)分組的元組可包括通過(guò)連接上文中提到的任意值來(lái)創(chuàng)建字符串,從而生成元組。在一些實(shí)施例中,該元組是字符串或者是值的數(shù)組。在一些實(shí)施例中,通過(guò)對(duì)所識(shí)別的元組應(yīng)用上述哈希來(lái)計(jì)算哈?;蚬V?步驟806)。該哈希值可稱作下列任一名稱:哈希、哈希值、結(jié)果值、結(jié)果或值??捎闪鞣植计?50或在多核系統(tǒng)545內(nèi)執(zhí)行的任何其他分布模塊來(lái)應(yīng)用該哈希。在應(yīng)用哈希后,可做出確定,該確定關(guān)于結(jié)果值是否識(shí)別多核系統(tǒng)545中的核505。當(dāng)哈希結(jié)果識(shí)別特定核505時(shí),由流分布器550或由任何其他流分布模塊將該數(shù)據(jù)分組轉(zhuǎn)發(fā)到所識(shí)別的核505(步驟808)。在一些實(shí)施例中,該哈希結(jié)果可能不能識(shí)別多核系統(tǒng)545中的核505。在這些實(shí)施例中,可將數(shù)據(jù)分組轉(zhuǎn)發(fā)到多核系統(tǒng)545中的默認(rèn)核505。在其他實(shí)施例中,數(shù)據(jù)分組可能不具有關(guān)聯(lián)的元組。在那些實(shí)施例中,可將數(shù)據(jù)分組轉(zhuǎn)發(fā)到多核系統(tǒng)545中的默認(rèn)核505。在將數(shù)據(jù)分組轉(zhuǎn)發(fā)到所識(shí)別的核505時(shí),在所識(shí)別的核505上執(zhí)行的分組引擎548或者其他模塊或引擎可接收轉(zhuǎn)發(fā)的數(shù)據(jù)分組。在一些實(shí)施例中,在所識(shí)別的核505上執(zhí)行的通信模塊接收該數(shù)據(jù)分組并且將該數(shù)據(jù)分組轉(zhuǎn)發(fā)到所識(shí)別的核505上的分組引擎548。一旦分組引擎548接收該轉(zhuǎn)發(fā)的分組,該分組引擎548可選擇該核505的IP地址和該核的端口(步驟810)。在一些實(shí)施例中,該IP地址可以是多核系統(tǒng)545的IP地址或設(shè)備200的IP地址。在其他實(shí)施例中,該IP地址可以是核505的IP地址。核505可具有一個(gè)或多個(gè)IP地址,因此在一些實(shí)施例中,分組引擎548可基于確定IP地址連同所選端口和第一元組的部分是否識(shí)別所識(shí)別的核505,來(lái)選擇IP地址。選擇核505的端口可包括搜索與所選核505關(guān)聯(lián)的端口以識(shí)別一個(gè)端口,其中當(dāng)?shù)谝辉M包括該端口時(shí),該端口識(shí)別所選核505。在一些實(shí)施例中,分組引擎548可循環(huán)訪問(wèn)核505的每個(gè)IP地址及核505的每個(gè)端口來(lái)確定IP地址/端口的組合,其中該IP地址/端口的組合識(shí)別所選核505。例如,所選核505可以是具有包括客戶機(jī)IP地址、客戶機(jī)端口、目的IP地址和目的端口的元組的第一核505。分組引擎548可修改該元組使其包括所選IP地址、所選端口、目的IP地址和目的端口。在永久修改數(shù)據(jù)分組之前,分組引擎548首先向所修改的元組應(yīng)用上述哈希(步驟812)。如果結(jié)果哈希值識(shí)別第一核505,那么分組引擎548永久修改數(shù)據(jù)分組,將客戶機(jī)IP地址替換或改變?yōu)樗xIP地址,并且將客戶機(jī)端口替換或改變?yōu)樗x端口。如果結(jié)果哈希值不識(shí)別第一核505,那么分組引擎548改變所選IP地址和所選端口中的一個(gè)或全部,并且再次應(yīng)用哈希。在應(yīng)用上述哈希(步驟812)核實(shí)所選IP地址和所選端口(當(dāng)結(jié)合了目的IP地址和目的端口時(shí))識(shí)別所選核505之后,分組引擎然后可修改數(shù)據(jù)分組使得元組包括:所選IP地址、目的IP地址、所選端口和目的端口(814)。在該實(shí)施例中,元組中不再包含客戶機(jī)IP地址和客戶機(jī)端口。相反,這些值已經(jīng)由所選IP地址和所選端口代替。在多個(gè)實(shí)施例中,在修改了數(shù)據(jù)分組和元組后,分組引擎548將更新的數(shù)據(jù)分組和元組發(fā)送到遠(yuǎn)程計(jì)算裝置(步驟816)。在一些實(shí)施例中,該遠(yuǎn)程計(jì)算裝置可以是客戶機(jī)、服務(wù)器或者遠(yuǎn)離多核系統(tǒng)545的另一計(jì)算機(jī)器或設(shè)備。在其他實(shí)施例中,分組引擎548可將修改的數(shù)據(jù)分組發(fā)送到中間裝置,該中間裝置將數(shù)據(jù)分組轉(zhuǎn)發(fā)到目的位置。在一些實(shí)施例中,由目的IP地址和/或目的端口標(biāo)識(shí)該目的位置。圖9描述了用于在多核系統(tǒng)545中的核505之間分發(fā)網(wǎng)絡(luò)流量的方法900的實(shí)施例。圖9中描述的方法900描述了核505上的分組引擎如何處理所接收的數(shù)據(jù)分組。分組引擎548接收分配的數(shù)據(jù)分組(步驟902)并且選擇核505的IP地址,其中分組引擎548在該核505上執(zhí)行(步驟904)。分組引擎548還從核505上的多個(gè)端口或從核505的多個(gè)端口中選擇端口(步驟906)。一旦選擇了IP地址和端口,分組引擎548接著確定所選IP地址和所選端口連同目的IP地址和目的端口的哈希是否會(huì)識(shí)別當(dāng)前核505。特別地,分組引擎548確定所選端口是否會(huì)識(shí)別當(dāng)前核505(步驟908)。當(dāng)確定所選端口將不會(huì)識(shí)別當(dāng)前核505時(shí),分組引擎548從與核505關(guān)聯(lián)的端口中選擇下一個(gè)端口(步驟906)。當(dāng)確定所選端口會(huì)識(shí)別當(dāng)前核505時(shí),分組引擎548下一步確定所選端口是否打開(kāi)或以其他方式可用(步驟910)。當(dāng)確定所選端口未打開(kāi),則分組引擎548從與核505關(guān)聯(lián)的端口中選擇下一端口(步驟906)。當(dāng)確定所選端口是打開(kāi)的或以其他方式可用,則分組引擎548用所選IP地址和所選端口修改數(shù)據(jù)分組(步驟912)并且將數(shù)據(jù)分組及其修改的元組轉(zhuǎn)發(fā)到遠(yuǎn)程計(jì)算機(jī)器(步驟914)。仍參考圖9且具體而言,在一個(gè)實(shí)施例中,可由在核505上執(zhí)行的分組引擎548來(lái)執(zhí)行方法900。在另一個(gè)實(shí)施例中,可由在核505上執(zhí)行的流分布器550或流分布器的實(shí)例來(lái)執(zhí)行方法900。在其他實(shí)施例中,可由能夠在核505上執(zhí)行的任何流分布模塊或代理來(lái)執(zhí)行方法900。盡管圖9關(guān)注的是在特定核505上處理可部分修改的數(shù)據(jù)分組,但在一些實(shí)施例中,可由多核系統(tǒng)545中的控制核來(lái)處理對(duì)該數(shù)據(jù)分組的修改。用于執(zhí)行圖9描述的方法900的步驟的分組引擎548可在特定核505上執(zhí)行。在大多數(shù)實(shí)施例中,有在圖8中描述的方法800提前選擇該核505。因此在大多數(shù)實(shí)例中,基于向數(shù)據(jù)分組的元組應(yīng)用上述哈希,由分組引擎548接收的數(shù)據(jù)分組已經(jīng)被分配到核505。在大部分情況下,該元組至少包括客戶機(jī)IP地址、目的IP地址、客戶機(jī)端口和目的端口。在一些實(shí)施例中,該元組可以是上文中描述的任何元組且可以包括任何數(shù)量的源或目的標(biāo)識(shí)值。在其他實(shí)施例中,客戶機(jī)IP地址可以是源IP地址,該源IP地址標(biāo)識(shí)該數(shù)據(jù)分組來(lái)自的機(jī)器。類似地,客戶機(jī)端口可以是源端口。在一個(gè)實(shí)施例中,在多核系統(tǒng)545中的特定核505上執(zhí)行的分組引擎548接收分配給特定核505的數(shù)據(jù)分組(步驟902)。分組引擎548可直接接收數(shù)據(jù)分組,或者在一些實(shí)施例中,在核505上執(zhí)行的通信模塊可接收和發(fā)送該數(shù)據(jù)分組。在其他實(shí)施例中,在核505上執(zhí)行的虛擬NIC(未示出)可接收和發(fā)送數(shù)據(jù)分組。在一些實(shí)施例中,接收數(shù)據(jù)分組還可以包括從核505上的邏輯接收隊(duì)列排出數(shù)據(jù)分組。邏輯接收隊(duì)列可存儲(chǔ)發(fā)送到核505的數(shù)據(jù)分組。分組引擎548可通過(guò)根據(jù)先進(jìn)先出訪問(wèn)方法從該接收隊(duì)列中排出或以其他方式獲取數(shù)據(jù)分組來(lái)訪問(wèn)邏輯接收隊(duì)列中的數(shù)據(jù)分組。另一種可能的訪問(wèn)方法可以是先進(jìn)后出。當(dāng)分組引擎548獲得數(shù)據(jù)分組,在一些實(shí)施例中,該分組引擎548可確定是否可以修改該數(shù)據(jù)分組。在確定可修改數(shù)據(jù)分組的哪些部分后,分組引擎548可修改該數(shù)據(jù)分組。在一些實(shí)施例中,可將多核系統(tǒng)545配置為指不在多核系統(tǒng)545內(nèi)執(zhí)行的分組引擎548僅修改數(shù)據(jù)分組的某些部分。在一些實(shí)施例中,分組引擎548可從與核505關(guān)聯(lián)的一個(gè)或多個(gè)IP地址中選擇核505的IP地址(步驟904)。核505可具有多個(gè)IP地址,且在一些實(shí)施例中可具有IP地址范圍。在其他實(shí)施例中,核505可具有單個(gè)IP地址。盡管在一些實(shí)施例中,分組引擎548選擇核505的IP地址,但在其他實(shí)施例中,分組引擎548可選擇多核系統(tǒng)545的IP地址或多核系統(tǒng)545中的設(shè)備200的IP地址。一旦選擇了IP地址,分組引擎548可接著從核505的多個(gè)端口中選擇端口(步驟906)。核505可具有一個(gè)或多個(gè)端口,且在一些實(shí)施例中可在端口分配表中存儲(chǔ)多核系統(tǒng)545的每個(gè)端口505的列表。選擇端口可包括逐個(gè)循環(huán)列舉了核505的每個(gè)端口的端口分配表的條目并且選擇端口號(hào)??苫诙丝谔?hào)或基于在端口分配表中列舉端口的順序來(lái)按數(shù)字順序逐個(gè)循環(huán)端口。在其他實(shí)施例中,分組弓I擎548可通過(guò)逐個(gè)循環(huán)對(duì)應(yīng)于核505上可能端口號(hào)的數(shù)字或值的范圍來(lái)選擇端口。在一些實(shí)施例中,分組引擎548可選擇第一端口(步驟906)并且接著確定該端口是否是正確的端口(步驟908)以及該端口是否可用或打開(kāi)(步驟910)。如果所選的第一端口不是正確的端口或者不可用或沒(méi)打開(kāi),則分組引擎548可選擇下一端口,即核505的第二端口,并且再次確定該端口是否是正確的端口(步驟908)以及該端口是否可用或打開(kāi)(步驟910)。在大多數(shù)實(shí)施例中,分組引擎548逐個(gè)循環(huán)所有可能的端口直到分組引擎548識(shí)別既是正確的又是打開(kāi)的端口。一旦分組引擎548選擇了端口,該分組引擎首先通過(guò)確定所選端口是否會(huì)產(chǎn)生響應(yīng)分組返回所選核來(lái)確定所選端口是否是正確的端口(步驟908)??赏ㄟ^(guò)向元組應(yīng)用上述哈希來(lái)做出該確定,該元組包含下列值的連接:所選IP地址、目的地址、所選端口和目的端口。向該元組應(yīng)用上述哈希生成結(jié)果哈希值,該結(jié)果哈希值識(shí)別或不識(shí)別核505,其中分組引擎548當(dāng)前正在該核505上執(zhí)行。可通過(guò)分組引擎548或在核505上執(zhí)行的流分布器550的實(shí)例來(lái)執(zhí)行對(duì)元組值進(jìn)行連接以生成元組。類似地,可通過(guò)分組引擎548或流分布器的實(shí)例來(lái)執(zhí)行向元組應(yīng)用哈希。當(dāng)結(jié)果哈希值識(shí)別當(dāng)前或所選核505,則所選端口是正確的端口,因?yàn)槠鋵a(chǎn)生響應(yīng)分組返回給當(dāng)前核505。當(dāng)結(jié)果哈希值不識(shí)別當(dāng)前或所選核505,則所選端口不是正確的端口,因?yàn)槠洳粫?huì)產(chǎn)生響應(yīng)分組返回給當(dāng)前核505。在這種情況下,分組引擎548將選擇另一端口(步驟906)并且重復(fù)確定該端口是否是正確的端口的過(guò)程(步驟910)。當(dāng)確定所選端口是正確的端口(步驟908),接著做出關(guān)于該端口是否可用或打開(kāi)的確定(912)。在大多數(shù)實(shí)施例中,當(dāng)下列任何一個(gè)為真(true)時(shí)端口是打開(kāi)的或可用的:該端口沒(méi)有被使用,或者該端口可使用。相反,當(dāng)下列任何一個(gè)為真時(shí),端口沒(méi)打開(kāi)或不可用:已將該端口分配給另一事務(wù)、服務(wù)或數(shù)據(jù)分組,或者網(wǎng)絡(luò)管理員或多核系統(tǒng)545已將該端口關(guān)閉。端口是否可用或打開(kāi)是一個(gè)特征,在很多實(shí)施例中由端口分配表來(lái)跟蹤該特征。端口分配表可以是上述任何端口分配表并且可以存儲(chǔ)在上文描述的可存儲(chǔ)端口表的任何位置中。在一些實(shí)施例中,在分組弓I擎548確定端口是正確的端口后,分組引擎548可通過(guò)查詢端口分配表關(guān)于特定端口的細(xì)節(jié)、屬性或特征來(lái)確定該端口可用。當(dāng)響應(yīng)指示端口是打開(kāi)的且還沒(méi)有將該端口分配給任何其他數(shù)據(jù)分組、事務(wù)或服務(wù)器時(shí),分組引擎548接著用所選IP地址和所選端口修改元組。然而,當(dāng)響應(yīng)指示端口是不可用的或沒(méi)有打開(kāi),分組引擎548選擇另一端口(步驟906)并且重復(fù)確認(rèn)該端口是否是正確的端口(步驟908)以及該端口是否打開(kāi)且可用(910)的過(guò)程。當(dāng)分組引擎548選擇正確的、打開(kāi)的和可用端口時(shí),分組引擎548接著更新數(shù)據(jù)分組并且因此更新該數(shù)據(jù)分組的元組使其包括所選IP地址和所選端口(步驟912)。修改或更新元組可包括作出導(dǎo)致該元組包括下列內(nèi)容所需的任何修改:所選IP地址、目的IP地址、所選端口和目的端口。因此,可由所選IP地址和所選端口代替客戶機(jī)IP地址和客戶機(jī)端口信息。在修改數(shù)據(jù)分組之后,分組引擎548可將修改的數(shù)據(jù)分組發(fā)送到遠(yuǎn)程計(jì)算機(jī)器(步驟914)。將修改的數(shù)據(jù)分組發(fā)送到遠(yuǎn)程計(jì)算機(jī)器可包括將修改的數(shù)據(jù)分組發(fā)送到由目的IP地址和/或目的端口識(shí)別的客戶機(jī)、服務(wù)器、設(shè)備或計(jì)算機(jī)器。在一些實(shí)施例中,在將數(shù)據(jù)分組發(fā)送到其目標(biāo)計(jì)算機(jī)器或設(shè)備之前,將該修改的數(shù)據(jù)分組發(fā)送到代理服務(wù)器或設(shè)備。在其他實(shí)施例中,在將修改的數(shù)據(jù)分組發(fā)送到其目的計(jì)算機(jī)器或設(shè)備之前,將該修改的數(shù)據(jù)分組存儲(chǔ)到多核系統(tǒng)545內(nèi)的存儲(chǔ)元素中。在一些實(shí)施例中,存儲(chǔ)元素可以是全局高速緩存或由多核系統(tǒng)545中的所有核和裝置共享的其他存儲(chǔ)元素。在其他實(shí)施例中,該存儲(chǔ)元素可以是當(dāng)前核505可訪問(wèn)的高速緩存或其他存儲(chǔ)倉(cāng)庫(kù)。盡管圖8和9描述了其中用由特定核505上的分組引擎548選擇的IP地址和端口來(lái)修改或替換客戶機(jī)IP地址和客戶機(jī)端口的方法,但圖1OA描述了其中維護(hù)客戶機(jī)IP地址和客戶機(jī)端口的一個(gè)系統(tǒng)。在一些系統(tǒng)中,服務(wù)器群的所有者或網(wǎng)絡(luò)(其中多核系統(tǒng)545在該網(wǎng)絡(luò)中執(zhí)行)的管理者可要求每個(gè)數(shù)據(jù)分組保留其原始的源IP地址和源端口。管理員可因?yàn)楦鞣N原因而想要這樣做,那些原因中的一些可能包括出于安全的目的、為了行銷(xiāo)的目的、為了跟蹤網(wǎng)絡(luò)訪問(wèn)、為限制網(wǎng)絡(luò)訪問(wèn)或處于任何其他原因。通過(guò)允許每個(gè)數(shù)據(jù)分組保留其源IP地址或源端口,可跟蹤和控制每個(gè)數(shù)據(jù)分組。例如,知道數(shù)據(jù)分組的來(lái)源可允許系統(tǒng)阻止特定IP地址或域訪問(wèn)網(wǎng)絡(luò)。類似地,知道數(shù)據(jù)分組的來(lái)源可允許系統(tǒng)跟蹤訪問(wèn)網(wǎng)絡(luò)或域的用戶的地理位置。在大多數(shù)情況下,知道源IP地址和源端口允許系統(tǒng)識(shí)別分組起源的位置,并且不管系統(tǒng)是否處理該特定數(shù)據(jù)分組允許系統(tǒng)進(jìn)一步控制該特定數(shù)據(jù)分組。圖10描述了用于從邏輯發(fā)送隊(duì)列獲得數(shù)據(jù)分組且將該數(shù)據(jù)分組轉(zhuǎn)發(fā)到NIC552上的邏輯發(fā)送隊(duì)列的方法1000的一個(gè)實(shí)施例。盡管將方法1000描述為由接口模塊612來(lái)執(zhí)行,但方法1000還可以由RSS模塊560或流分布器550來(lái)執(zhí)行。從第一核上的第一邏輯發(fā)送隊(duì)列獲得第一數(shù)據(jù)分組(步驟1002)且從第二核上的第二邏輯發(fā)送隊(duì)列獲得第二數(shù)據(jù)分組(步驟1004)。接口模塊612可將第一數(shù)據(jù)分組存儲(chǔ)在NIC發(fā)送隊(duì)列620中(步驟1006),之后NIC552可通過(guò)網(wǎng)絡(luò)將第一數(shù)據(jù)分組從多核系統(tǒng)545發(fā)送出去(步驟1008)。接著,接口模塊612可將第二數(shù)據(jù)分組存儲(chǔ)在NIC發(fā)送隊(duì)列620中(步驟1010),之后NIC552可通過(guò)網(wǎng)絡(luò)將第二數(shù)據(jù)分組從多核系統(tǒng)545發(fā)送出去(步驟1012)。仍參考圖10且具體而言,在一個(gè)實(shí)施例中,接口模塊612可從第一核的第一邏輯隊(duì)列中獲得第一數(shù)據(jù)分組(步驟1002),并且可從第二核的第二邏輯隊(duì)列獲得第二數(shù)據(jù)分組(步驟1004)。從核505上的邏輯發(fā)送隊(duì)列獲得數(shù)據(jù)分組可包括關(guān)于數(shù)據(jù)輪詢每個(gè)邏輯發(fā)送隊(duì)列。在一個(gè)實(shí)施例中,接口模塊612在預(yù)定時(shí)間段內(nèi)以循環(huán)的方式輪詢每個(gè)邏輯隊(duì)列。例如,接口模塊612每毫秒可通過(guò)確定與第一邏輯發(fā)送隊(duì)列關(guān)聯(lián)的存儲(chǔ)倉(cāng)庫(kù)或緩沖區(qū)是否為空來(lái)輪詢第一邏輯發(fā)送隊(duì)列。在一些實(shí)施例中,做出該確定可包括將第一邏輯發(fā)送隊(duì)列的內(nèi)容復(fù)制到臨時(shí)緩沖區(qū),并且確定該緩沖區(qū)的元素是否等于空。在其他實(shí)施例中,接口模塊612可搜索第一邏輯發(fā)送隊(duì)列的數(shù)組或緩沖區(qū)以確定該緩沖區(qū)是否為空。當(dāng)接口模塊612確定第一邏輯隊(duì)列具有數(shù)據(jù)時(shí),接口模塊612下載所存儲(chǔ)的數(shù)據(jù)分組并且將它們轉(zhuǎn)發(fā)到NIC發(fā)送隊(duì)列620(步驟1006),之后將它們發(fā)送到數(shù)據(jù)分組中的目的地址。在接口模塊612從第一邏輯隊(duì)列下載數(shù)據(jù)分組后,和/或當(dāng)接口模塊12確定第一邏輯隊(duì)列為空時(shí),該接口模塊612移到第二邏輯發(fā)送隊(duì)列并且重復(fù)上述過(guò)程。在一些實(shí)施例中,循環(huán)輪詢邏輯發(fā)送隊(duì)列。在其他實(shí)施例中,分批循環(huán)輪詢邏輯發(fā)送隊(duì)列。在其他實(shí)施例中,根據(jù)下列標(biāo)準(zhǔn)集合中任何一個(gè)指定的順序來(lái)輪詢邏輯發(fā)送隊(duì)列:與每個(gè)核或邏輯發(fā)送隊(duì)列關(guān)聯(lián)的優(yōu)先級(jí)、最后一次從邏輯發(fā)送隊(duì)列排出數(shù)據(jù)分組后持續(xù)的時(shí)間、與存儲(chǔ)邏輯發(fā)送隊(duì)列的核關(guān)聯(lián)的函數(shù)、與每個(gè)核505關(guān)聯(lián)的活動(dòng)級(jí)別、指示最有可能存儲(chǔ)數(shù)據(jù)分組的邏輯發(fā)送隊(duì)列的概率分布、當(dāng)數(shù)據(jù)分組存儲(chǔ)在邏輯發(fā)送隊(duì)列中時(shí)由分組引擎提交的投票(vote)、在該邏輯發(fā)送隊(duì)列中可以采用先進(jìn)先出或后進(jìn)先出的方式處理投票,或者由管理員、用戶、程序或系統(tǒng)指示的任意順序。盡管方法1000描述了獲得第一和第二數(shù)據(jù)分組,但方法100可包括獲得任何數(shù)量的數(shù)據(jù)分組。而且,方法1000可一次獲得任何數(shù)量的數(shù)據(jù)分組。在一個(gè)實(shí)施例中,接口模塊612可排出整個(gè)邏輯發(fā)送隊(duì)列,而在其他實(shí)施例中,接口模塊612可排出預(yù)定量的數(shù)據(jù)或預(yù)定數(shù)量的數(shù)據(jù)分組。更進(jìn)一步,在一些實(shí)施例中,接口模塊612可在預(yù)定時(shí)段排出邏輯發(fā)送隊(duì)列。一旦從邏輯發(fā)送隊(duì)列獲得數(shù)據(jù)分組,將該數(shù)據(jù)分組存儲(chǔ)到NIC發(fā)送隊(duì)列620中(步驟1006、1010)。在NIC發(fā)送隊(duì)列620中存儲(chǔ)數(shù)據(jù)分組可包括將該數(shù)據(jù)分組寫(xiě)入與NIC發(fā)送隊(duì)列620對(duì)應(yīng)的在NIC552中的存儲(chǔ)元素。NIC發(fā)送隊(duì)列620可包括下列中的任何一個(gè):存儲(chǔ)元素、緩沖區(qū)、數(shù)組、列表、高速緩存,或任何其他存儲(chǔ)倉(cāng)庫(kù)。因此,在將數(shù)據(jù)分組存儲(chǔ)到NIC發(fā)送隊(duì)列620中時(shí),接口模塊612將數(shù)據(jù)分組存儲(chǔ)到與NIC發(fā)送隊(duì)列620關(guān)聯(lián)的存儲(chǔ)倉(cāng)庫(kù)中。在一些實(shí)施例中,將數(shù)據(jù)分組存儲(chǔ)到NIC發(fā)送隊(duì)列620中還可以包括在將一個(gè)或多個(gè)數(shù)據(jù)分組存儲(chǔ)到NIC發(fā)送隊(duì)列620中之前,下載與分組引擎關(guān)聯(lián)的配置信息,并且使用該配置信息配置NIC552。獲得或以其他方式下載配置信息可包括從與邏輯發(fā)送隊(duì)列(從該邏輯發(fā)送隊(duì)列獲得數(shù)據(jù)分組)關(guān)聯(lián)的緩沖區(qū)中排出配置信息。在其他實(shí)施例中,獲得配置信息可包括從接口模塊612和每個(gè)分組引擎548可訪問(wèn)的公用緩沖區(qū)中復(fù)制配置信息。配置信息可包括校驗(yàn)和卸載、分組引擎的物理地址和任何其他這樣的信息。當(dāng)接口模塊612獲得配置信息時(shí),接口模塊612可在將數(shù)據(jù)分組復(fù)制到NIC發(fā)送隊(duì)列620中之前配置NIC552。配置信息可根據(jù)分組引擎的不同而不同,因而每當(dāng)接口模塊612從新核505復(fù)制信息時(shí)該接口模塊612重新配置NIC552。例如,接口模塊612可獲得與第一邏輯發(fā)送隊(duì)列關(guān)聯(lián)的配置信息,使用該信息配置NIC并且接著將第一數(shù)據(jù)分組存儲(chǔ)到NIC發(fā)送隊(duì)列620中(步驟1006)。類似地,接口模塊612可獲得與第二邏輯發(fā)送隊(duì)列關(guān)聯(lián)的配置信息,使用該信息配置NIC,并且接著將第二數(shù)據(jù)分組存儲(chǔ)到NIC發(fā)送隊(duì)列620中(步驟1010)。在配置完NIC552且將數(shù)據(jù)分組存儲(chǔ)到發(fā)送隊(duì)列620中之后,NIC552可將該數(shù)據(jù)分組發(fā)送到目的地(步驟1008、1012)。NIC552可從數(shù)據(jù)分組頭部或從與該數(shù)據(jù)分組關(guān)聯(lián)的元數(shù)據(jù)獲得目的地址或位置。一旦獲得該信息,NIC552可將數(shù)據(jù)分組通過(guò)網(wǎng)絡(luò)從多核系統(tǒng)545發(fā)送出去。圖11描述了用于將由多核系統(tǒng)545接收的數(shù)據(jù)分組分發(fā)到多核系統(tǒng)545中的邏輯接收隊(duì)列602的方法1100的實(shí)施例。NIC552可接收第一數(shù)據(jù)分組和第二數(shù)據(jù)分組(步驟1102)并且將兩個(gè)數(shù)據(jù)分組存儲(chǔ)在NIC接收隊(duì)列622中(步驟1104)。在將數(shù)據(jù)分組存儲(chǔ)到NIC接收隊(duì)列622之后,由接口模塊612獲得這些數(shù)據(jù)分組,該接口模塊對(duì)每個(gè)數(shù)據(jù)分組的元組應(yīng)用哈希(步驟1106、步驟1110)。應(yīng)用該哈希的結(jié)果識(shí)別多核系統(tǒng)545中的核505,即第一數(shù)據(jù)分組的元組的哈希識(shí)別第一核(步驟1106),而第二數(shù)據(jù)分組的元組的哈希識(shí)別第二核(步驟1110)。一旦識(shí)別了核,將數(shù)據(jù)分組存儲(chǔ)到那些核各自的邏輯接收隊(duì)列中,即,將第一數(shù)據(jù)分組存儲(chǔ)到第一核的第一邏輯接收隊(duì)列中(步驟1108),并且將第二數(shù)據(jù)分組存儲(chǔ)到第二核的第二邏輯接收隊(duì)列中(步驟1112)。仍參考圖11且具體而言,在一個(gè)實(shí)施例中,NIC接收第一數(shù)據(jù)分組和第二數(shù)據(jù)分組(步驟1102)并且將它們存儲(chǔ)在NIC接收隊(duì)列622中(步驟1104)。將第一和第二數(shù)據(jù)分組存儲(chǔ)到NIC接收隊(duì)列622中可包括將數(shù)據(jù)分組寫(xiě)入與NIC接收隊(duì)列622對(duì)應(yīng)的在NIC552中的存儲(chǔ)元素。NIC發(fā)送隊(duì)列622可包括下列的任何一個(gè):存儲(chǔ)元素、緩沖區(qū)、數(shù)組、列表、高速緩存或任何其他數(shù)據(jù)倉(cāng)庫(kù)。因此,在將數(shù)據(jù)分組存儲(chǔ)到NIC接收隊(duì)列622中時(shí),可將該數(shù)據(jù)分組存儲(chǔ)到與該NIC接收隊(duì)列622關(guān)聯(lián)的存儲(chǔ)倉(cāng)庫(kù)中。一旦將數(shù)據(jù)分組存儲(chǔ)到NIC接收隊(duì)列622中,接口模塊612可從NIC接收隊(duì)列622中排出數(shù)據(jù)分組。在其他實(shí)施例中,下列模塊或?qū)ο蟮娜魏我粋€(gè)可從接收隊(duì)列622中排出存儲(chǔ)的數(shù)據(jù)分組:流分布器550、RSS模塊560,或者任何分組引擎548。接口模塊612可定期地排出接收隊(duì)列622,或者可以在接收模塊612確定接收隊(duì)列622包含數(shù)據(jù)分組時(shí)排出接收隊(duì)列622。在一些實(shí)施例中,當(dāng)將第一數(shù)據(jù)分組寫(xiě)入NIC接收隊(duì)列622時(shí),可設(shè)置標(biāo)志指示接收隊(duì)列622包含未分配的數(shù)據(jù)分組。在其他實(shí)施例中,接口模塊612可持續(xù)地排出接收隊(duì)列622。在其他實(shí)施例中,當(dāng)NIC522接收數(shù)據(jù)分組且將它們存儲(chǔ)到NIC接收隊(duì)列622中時(shí),NIC552上的模塊可將接收的數(shù)據(jù)分組發(fā)送到接口模塊612。在一個(gè)實(shí)施例中,接口模塊612可一次從NIC接收隊(duì)列622獲得數(shù)據(jù)分組。在其他實(shí)施例中,接口模塊612可排出預(yù)定數(shù)量的數(shù)據(jù)分組、預(yù)定量的數(shù)據(jù)或者可以在預(yù)定長(zhǎng)度的時(shí)間內(nèi)持續(xù)從NIC接收隊(duì)列622排出數(shù)據(jù)分組。在其他實(shí)施例中,接口模塊612可排出對(duì)應(yīng)于公用元組的所有數(shù)據(jù)分組、等待預(yù)定時(shí)間段,并且排出對(duì)應(yīng)于第二公用元組的第二組數(shù)據(jù)分組。一旦接口模塊612從NIC接收隊(duì)列622獲得數(shù)據(jù)分組,接口模塊612、流分布器550或RSS模塊560可向第一數(shù)據(jù)分組的元組應(yīng)用上述任何哈希(步驟1106)并且向第二數(shù)據(jù)分組的元組應(yīng)用上述任何哈希(步驟1110)。該元組可以是上述任何元組并且在一些實(shí)施例中可包括:源IP地址、目的IP地址、源端口和目的端口。向第一數(shù)據(jù)分組的元組應(yīng)用哈希的結(jié)果可識(shí)別第一核(步驟1106)。類似地,向第二數(shù)據(jù)分組的元組應(yīng)用哈希的結(jié)果可識(shí)別第二核(步驟1110)。一旦核被識(shí)別,接口模塊612可將每個(gè)數(shù)據(jù)分組存儲(chǔ)在它們各自的邏輯隊(duì)列中??蓪⒌谝粩?shù)據(jù)分組存儲(chǔ)在第一核上的第一邏輯接收隊(duì)列中(步驟1108),而將第二數(shù)據(jù)分組存儲(chǔ)在第二核上的第二邏輯接收隊(duì)列中(步驟1112)。將數(shù)據(jù)分組存儲(chǔ)在邏輯接收隊(duì)列中可包括將數(shù)據(jù)分組數(shù)據(jù)復(fù)制、存儲(chǔ)到或以其他方式寫(xiě)入緩沖區(qū)、高速緩存、數(shù)組、列表或包括邏輯接收隊(duì)列的其他存儲(chǔ)倉(cāng)庫(kù)。G.用于半虛擬化NIC驅(qū)動(dòng)程序的系統(tǒng)和方法現(xiàn)參考圖12A和12B,描述了用于提供或?qū)崿F(xiàn)半虛擬化驅(qū)動(dòng)程序的系統(tǒng)和方法。如上文至少結(jié)合圖4A-4C所描述的,可在虛擬環(huán)境中運(yùn)行分組引擎或應(yīng)用傳送控制器的實(shí)施例,例如圖4C的虛擬化環(huán)境400中的虛擬化ADC450。在虛擬化環(huán)境中運(yùn)行的分組引擎或ADC可稱作VPX。此外,鑒于圖5A-5C的多核系統(tǒng)的實(shí)施例,可在多個(gè)核上運(yùn)行任何虛擬化環(huán)境。該環(huán)境可稱作多核或nCoreVPX0在上文中結(jié)合圖7_11描述了在這種多核系統(tǒng)中管理和處理網(wǎng)絡(luò)通信的實(shí)施例。參考圖12A,描述了在裝置的處理器或核上運(yùn)行的VPX的實(shí)施例。在一些實(shí)施例中,可在管理程序上運(yùn)行VPX,該管理程序例如是Xen管理程序,該管理程序使用半虛擬化NIC驅(qū)動(dòng)程序來(lái)接收和發(fā)送分組。在一些實(shí)施例中,將半虛擬化驅(qū)動(dòng)程序設(shè)計(jì)和構(gòu)造成支持多核VPX環(huán)境。在某些實(shí)施例中,驅(qū)動(dòng)程序的一部分在核上執(zhí)行的虛擬化域中運(yùn)行,且驅(qū)動(dòng)程序的另一部分在另一核上執(zhí)行的另一虛擬化域中運(yùn)行。在其他實(shí)施例中,多個(gè)驅(qū)動(dòng)程序的其中之一可在一個(gè)核上執(zhí)行的虛擬化域中運(yùn)行,而另一驅(qū)動(dòng)程序在另一核上執(zhí)行的另一虛擬化域中運(yùn)行。該驅(qū)動(dòng)程序或驅(qū)動(dòng)程序的部分可直接或間接地進(jìn)行交互操作從而促成分組的接收和/或發(fā)送。簡(jiǎn)要而言,管理程序可以在裝置的處理器上運(yùn)行,例如在本文描述的任何單個(gè)處理器設(shè)備上運(yùn)行。管理程序可提供一個(gè)或多個(gè)客戶操作系統(tǒng),稱作域或虛擬化域。第一域(諸如稱作DomO的域O)可提供特權(quán)域,該特權(quán)域可直接訪問(wèn)硬件(例如,網(wǎng)絡(luò)接口硬件,如NIC)。DomU可以是具有較少特權(quán)的客戶域。在DomU域上運(yùn)行的VPX可提供分組處理引擎(例如,應(yīng)用)。通常在硬件裝置(例如NIC或GPU)上執(zhí)行非虛擬化平臺(tái)上的I/O操作。軟件堆??墒褂么鎯?chǔ)器映射I/o(MMIO)機(jī)制的某種形式與硬件裝置相接口,其中,處理器可發(fā)出讀和寫(xiě)特定存儲(chǔ)器或端口地址范圍的指令。該軟件堆??砂ㄔ谄脚_(tái)的OS中執(zhí)行的驅(qū)動(dòng)程序。讀取和寫(xiě)入的值可對(duì)應(yīng)于硬件裝置中的直接功能。DomO可提供或寄載具有訪問(wèn)真實(shí)NIC驅(qū)動(dòng)程序的權(quán)限的TCP/IP堆棧。該TCP/IP堆棧可提供路由和橋接功能。DomU可提供或寄載具有TCP/IP堆棧的應(yīng)用,例如本文描述的分組處理引擎(PPE)的任何實(shí)施例??蛇x擇半虛擬化驅(qū)動(dòng)程序用于代替與硬件對(duì)應(yīng)的原始或真實(shí)裝置驅(qū)動(dòng)程序來(lái)運(yùn)行。在一些實(shí)施例中,半虛擬化驅(qū)動(dòng)程序377是裝置驅(qū)動(dòng)程序的修改版本。例如,由于半虛擬化,半虛擬化驅(qū)動(dòng)程序可在比標(biāo)準(zhǔn)硬件/軟件接口更高的抽象層與域O(例如DomO)實(shí)體直接交互。例如,域O實(shí)體可披露特定于I/O類型的API,用于發(fā)送和接收分組。在客戶OS上執(zhí)行的半虛擬化驅(qū)動(dòng)程序可接著使用該I/O接口而不是與硬件裝置接口直接交互。DomO和DomU可使用或支持分離裝置驅(qū)動(dòng)程序模式。該驅(qū)動(dòng)程序(例如半虛擬化驅(qū)動(dòng)程序)的部分(如驅(qū)動(dòng)程序的前端和另一部分,如驅(qū)動(dòng)程序的后端),可在不同的域中彼此隔離,并且可通由管理程序提供的機(jī)制進(jìn)行通信。DomO可操作分離驅(qū)動(dòng)程序的一部分而DomU操作該驅(qū)動(dòng)程序的另一部分。在一些實(shí)施例中,每個(gè)域或Dom運(yùn)行相同的驅(qū)動(dòng)程序或相同類型的驅(qū)動(dòng)程序。分離驅(qū)動(dòng)程序可經(jīng)由共享存儲(chǔ)器接口或由管理程序提供的其他機(jī)制進(jìn)行通信。該驅(qū)動(dòng)程序可包括本文描述的分組引擎或其任何組件的任何實(shí)施例。在一些實(shí)施例中,一個(gè)機(jī)制可包括在由管理程序提供的共享存儲(chǔ)分段的頂部建立的I/O環(huán)或隊(duì)列。圖12A描述了在DomU中執(zhí)行或運(yùn)行的VPXPPE接收和發(fā)送的流、RX/TX、通信的實(shí)施例。DomU可與DomO通信以進(jìn)行分組傳輸。DomU可與DomO共享RX和/或TX環(huán)??山?jīng)由管理程序通過(guò)管理程序調(diào)用產(chǎn)生域間通信。在驅(qū)動(dòng)程序的初始化期間,DomU可以用來(lái)自存儲(chǔ)器緩沖區(qū)(有時(shí)稱作mbuf)的數(shù)據(jù)填充RX環(huán)。DomU可建立與DomO的通知通道。域可以使用該通知通道來(lái)指示共享RX和TX環(huán)上分組的接收和/或發(fā)送。在分組接收(RX)的進(jìn)一步的細(xì)節(jié)中,可由DomO從一個(gè)或多個(gè)物理NIC接收分組。DomO可將這些分組經(jīng)由共享RX環(huán)發(fā)送到DomU。環(huán)有時(shí)稱作隊(duì)列、緩沖區(qū)、高速緩存或其他存儲(chǔ)結(jié)構(gòu)??蔀榄h(huán)或隊(duì)列分配一定量的存儲(chǔ)器并且該環(huán)或隊(duì)列可包括用于保持信息或分組的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)。DomO可向DomU發(fā)送通知,指示分組在共享環(huán)上。環(huán)可包括任何緩沖、存儲(chǔ)或運(yùn)輸結(jié)構(gòu)和/或機(jī)制,例如隊(duì)列。DomU可獲得該通知。在一些實(shí)施例中,DomU可能對(duì)該通知不采取任何行動(dòng)并且可能簡(jiǎn)單地回復(fù)(例如,響應(yīng)或通知)。在DomU的netI/O循環(huán)(例如netio循環(huán))期間,DomU可經(jīng)由分離驅(qū)動(dòng)程序輪詢RX環(huán),以檢查任何分組的接收。該檢查可基于檢測(cè)讀取和寫(xiě)入描述符的區(qū)別。例如,可將分配、使用或處理的讀取描述符的數(shù)量與分配、使用或處理的寫(xiě)入描述符的數(shù)量作比較。在一些實(shí)施例中,DomU檢測(cè)從RX環(huán)讀取的分組數(shù)量與向RX環(huán)上寫(xiě)入的分組數(shù)量之間是否存在區(qū)別。如果該區(qū)別顯示存在一些分組,DomU可經(jīng)由分離驅(qū)動(dòng)程序模式從RX環(huán)中讀取一些或全部分組。接著,DomU可將這些分組從存儲(chǔ)器緩沖區(qū)(例如,mbuf數(shù)據(jù)結(jié)構(gòu))轉(zhuǎn)換為分組引擎數(shù)據(jù)結(jié)構(gòu),有時(shí)稱作nsb。DomU可將該nsb移到堆棧用于處理。DomU還可以經(jīng)由分離驅(qū)動(dòng)程序模式,用新的mbuf填充該RX環(huán)。在分組發(fā)送的進(jìn)一步的細(xì)節(jié)中,分組處理引擎可向驅(qū)動(dòng)程序發(fā)送或移交nsb。該驅(qū)動(dòng)程序接著可以將這些nsb轉(zhuǎn)換為mbuf并且將該mbuf通過(guò)共享TX環(huán)發(fā)送到DomO。DomU還可以向DomO發(fā)送通知,指示在共享環(huán)上存在(例如,新的或未讀取的)分組。DomO可以在其netio(例如,網(wǎng)、網(wǎng)絡(luò)或網(wǎng)絡(luò)接口輸入/輸出)循環(huán)中通過(guò)調(diào)用函數(shù)(例如,tX_piOC函數(shù)或例程)來(lái)回收或獲得發(fā)送的mbuf?,F(xiàn)參考圖12B,描述多核環(huán)境中VPX的RX/TX通信。多個(gè)分組引擎中的每一個(gè)可在對(duì)應(yīng)的域(例如DomUl-N)中運(yùn)行。在一些實(shí)施例中,多個(gè)PPE可在一個(gè)或多個(gè)域中執(zhí)行??山?jīng)由超級(jí)調(diào)用或管理程序系統(tǒng)API調(diào)用來(lái)產(chǎn)生DomU和DomO之間的交互,其中僅能在內(nèi)核存儲(chǔ)空間中進(jìn)行超級(jí)調(diào)用或管理程序系統(tǒng)API調(diào)用。在一些實(shí)施例中,以與圖12A所說(shuō)明的大體相同的方式產(chǎn)生DomU和DomO之間的分組傳輸。在進(jìn)一步的細(xì)節(jié)中,可由DomO從物理NIC接收分組,該分組可經(jīng)由共享RX環(huán)發(fā)送到DomU。DomO還可以向DomU發(fā)送通知,指示該分組在共享環(huán)上。DomU可例如在內(nèi)核空間中接收該通知。通知處理器可在到來(lái)的分組上計(jì)算RSS哈希并且可將這些mbuf放到在內(nèi)核空間中維護(hù)的對(duì)應(yīng)的PPE環(huán)上。在netio循環(huán)期間,PPE可輪詢RX環(huán)來(lái)檢查任何分組的接收。該檢查可基于共享的讀取和寫(xiě)入描述符之間的區(qū)別。如果該區(qū)別顯示存在一些分組,PPE可做出系統(tǒng)調(diào)用從該RX環(huán)中抽出或獲得分組。在做出系統(tǒng)調(diào)用前,PPE可分配多個(gè)nsb(例如,讀取索引-寫(xiě)入索引)并且可將mbuf復(fù)制到內(nèi)核存儲(chǔ)空間中的nsb中。PPE還可以用新的mbuf填充RX環(huán)。每個(gè)PPE可在內(nèi)核存儲(chǔ)空間中具有其自己的隊(duì)列并且可獨(dú)立訪問(wèn)該隊(duì)列而不需要應(yīng)用鎖(例如,用于拒絕訪問(wèn))。PPE可在用戶存儲(chǔ)空間中維護(hù)的TX環(huán)內(nèi)積累所發(fā)送的nsb用于發(fā)送。在PPE的netio循環(huán)期間,如果TX環(huán)中存在nsb,則PPE可做出系統(tǒng)調(diào)用以向DomO發(fā)送這些分組中的一些或全部。在內(nèi)核空間中,可將這些nsb轉(zhuǎn)換為mbuf并且將其通過(guò)共享TX環(huán)發(fā)送到DomO。PPE/domU還可以向DomO發(fā)送通知,指示共享環(huán)上存在分組。在一些實(shí)施例中,在同一個(gè)系統(tǒng)調(diào)用中完成RX和TX。圖12C描述了用于在多核裝置的網(wǎng)絡(luò)接口硬件和由多核裝置的一個(gè)或多個(gè)核執(zhí)行的多個(gè)虛擬化分組處理器之間傳遞分組的方法的一個(gè)實(shí)施例。在多核裝置上執(zhí)行的第一虛擬化域可經(jīng)由多核裝置的網(wǎng)絡(luò)接口硬件(例如NIC)來(lái)接收分組(步驟1201)。該第一虛擬化域可包括具有直接訪問(wèn)網(wǎng)絡(luò)接口硬件的權(quán)限的特權(quán)域。系統(tǒng)可將分組傳遞到虛擬化分組處理器的隊(duì)列(步驟1203)。該虛擬化分組處理器可來(lái)自多個(gè)虛擬化分組處理器并且在多核裝置的核上的第二虛擬化域中執(zhí)行。該第二虛擬化域可來(lái)自不具有直接訪問(wèn)網(wǎng)絡(luò)接口硬件的權(quán)限的多個(gè)虛擬化域。虛擬化分組處理器可確定該隊(duì)列包括從該隊(duì)列中讀取的多個(gè)分組和向該隊(duì)列中寫(xiě)入的多個(gè)分組之間的區(qū)別(步驟1205)。該虛擬化分組處理器可響應(yīng)于該確定來(lái)處理來(lái)自該隊(duì)列的分組(步驟1207)。仍參考圖12C且具體而言,在多核裝置上執(zhí)行的第一虛擬化域可經(jīng)由多核裝置的網(wǎng)絡(luò)接口硬件接收分組(步驟1201)。該虛擬化域(例如,第一虛擬化域)可包括具有直接訪問(wèn)網(wǎng)絡(luò)接口硬件的權(quán)限的特權(quán)域。有時(shí)將該虛擬化域一般性地稱作DomO、域O實(shí)體、控制域或控制虛擬機(jī)。該虛擬化域可包括或執(zhí)行控制程序和/或驅(qū)動(dòng)程序用來(lái)訪問(wèn)網(wǎng)絡(luò)接口硬件(例如網(wǎng)絡(luò)接口卡)。在一些實(shí)施例中,虛擬化域執(zhí)行一個(gè)或多個(gè)半虛擬化驅(qū)動(dòng)程序或其部分。虛擬化域可執(zhí)行多核裝置的用戶存儲(chǔ)空間中的一個(gè)或多個(gè)驅(qū)動(dòng)程序。虛擬化域可支持或使用分離驅(qū)動(dòng)程序模型用于傳遞和/或處理分組。在這些實(shí)施例中,虛擬化域可執(zhí)行與網(wǎng)絡(luò)接口硬件(例如經(jīng)由TCP/IP堆棧)交互的分離驅(qū)動(dòng)程序。分離驅(qū)動(dòng)程序可攔截、接收、重定向和/或傳遞由網(wǎng)絡(luò)接口硬件接收的分組。在一些實(shí)施例中,分離驅(qū)動(dòng)程序在TCP/IP協(xié)議棧層攔截或接收分組。部分因?yàn)樵摲蛛x驅(qū)動(dòng)程序,虛擬化域可具有對(duì)網(wǎng)絡(luò)接口硬件的特權(quán)訪問(wèn)。在某些實(shí)施例中,虛擬化域中的分離驅(qū)動(dòng)程序被配置為具有對(duì)網(wǎng)絡(luò)接口硬件和/或TCP/IP堆棧的訪問(wèn)權(quán)限,用來(lái)運(yùn)輸所接收的分組。虛擬化域,或任何域O實(shí)體(例如管理程序或控制程序)可建立和/或配置分離驅(qū)動(dòng)程序,以及在一個(gè)或多個(gè)其他虛擬化域(例如DomU)中的一個(gè)或多個(gè)其他分離驅(qū)動(dòng)程序。分離驅(qū)動(dòng)程序的集合可具有余函數(shù),且在一些情況下,每個(gè)分離驅(qū)動(dòng)程序可包括裝置驅(qū)動(dòng)程序的部分或特性。在某些實(shí)施例中,可將兩個(gè)或更多分離驅(qū)動(dòng)程序的集合共同稱作單個(gè)驅(qū)動(dòng)程序。系統(tǒng)可將分組傳遞到虛擬化分組處理器的隊(duì)列(步驟1203)。分離驅(qū)動(dòng)程序可將分組傳遞到內(nèi)核空間,用于將其轉(zhuǎn)發(fā)到在另一虛擬化域中執(zhí)行的虛擬化分組處理器。因而虛擬化分組處理器可能來(lái)自于多個(gè)虛擬化分組處理器。該虛擬化分組處理器可在多核裝置的另一核上的另一(如第二)虛擬化域中執(zhí)行。在一些實(shí)施例中,虛擬化域(例如,DomU或第二虛擬化域)在多核裝置的用戶存儲(chǔ)空間中執(zhí)行該虛擬化分組處理器。在其他實(shí)施例中,虛擬化域可以在內(nèi)核空間或多核裝置的任何存儲(chǔ)空間中執(zhí)行該虛擬化分組處理器。有時(shí)可將虛擬化分組處理器稱作分組處理引擎、分組弓I擎或PPE。在一些實(shí)施例中,虛擬化域可能不具有直接訪問(wèn)網(wǎng)絡(luò)接口硬件的權(quán)限。例如,虛擬化域可能不具有對(duì)多核系統(tǒng)的網(wǎng)絡(luò)接口硬件的存儲(chǔ)器映射訪問(wèn)權(quán)限。該虛擬化域可來(lái)自于不具有直接訪問(wèn)網(wǎng)絡(luò)接口硬件的權(quán)限的多個(gè)虛擬化域。在一些實(shí)施例中,可將網(wǎng)絡(luò)接口硬件分配或指定到另一虛擬化域(例如DomU),并且該網(wǎng)絡(luò)接口硬件對(duì)當(dāng)前的虛擬化域可能不可用。在某些實(shí)施例中,阻止當(dāng)前虛擬化域用于直接的網(wǎng)絡(luò)輸入/輸出操作或者不將當(dāng)前虛擬化域配置用于直接的網(wǎng)絡(luò)輸入/輸出操作。該虛擬化域可執(zhí)行諸如分離驅(qū)動(dòng)程序的驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序不具有訪問(wèn)網(wǎng)絡(luò)接口硬件的權(quán)限。特權(quán)或第一虛擬化域(例如DomO)、其控制程序和/或其分離驅(qū)動(dòng)程序可將接收的分組指向或放入共享隊(duì)列。該虛擬化域可發(fā)出或生成功能調(diào)用、系統(tǒng)調(diào)用或管理程序調(diào)用來(lái)發(fā)起將所接收的分組從用戶存儲(chǔ)空間傳輸?shù)焦蚕黻?duì)列。該共享隊(duì)列可駐留在多核裝置的內(nèi)核空間中。特權(quán)虛擬化域可以在將分組傳遞到虛擬化分組處理器的隊(duì)列之前將該分組放入共享存儲(chǔ)空間中的共享隊(duì)列中。共享隊(duì)列可駐留在多核系統(tǒng)的共享存儲(chǔ)分段中。多核系統(tǒng)和/或域O實(shí)體可在多核裝置的內(nèi)核存儲(chǔ)空間中建立共享隊(duì)列和/或虛擬化分組處理器的隊(duì)列,其中該內(nèi)核存儲(chǔ)空間可由特權(quán)(例如第一)虛擬化域和非特權(quán)(例如第二)虛擬化域訪問(wèn)。多核系統(tǒng)和/或域O實(shí)體可為虛擬化分組處理器分配駐留在內(nèi)核空間中的RX隊(duì)列。在一些實(shí)施例中,多核系統(tǒng)和/或域O實(shí)體可為多個(gè)虛擬化分組處理器中的每一個(gè)分配多核裝置的內(nèi)核存儲(chǔ)空間中的對(duì)應(yīng)的、專用的隊(duì)列。該多核系統(tǒng)可包括接收側(cè)調(diào)節(jié)(RSS)模塊和/或流分布器用于重定向共享隊(duì)列上的分組,該RSS模塊和/或流分布器例如是上文中至少結(jié)合圖5A-C、6和7A-D描述的RSS模塊和/或流分布器的實(shí)施例。RSS模塊或流分布器可將共享隊(duì)列上的分組指向分配給DomU或虛擬化分組處理器的隊(duì)列。在某些實(shí)施例中,RSS模塊或流分布器將從DomO接收的分組直接分配到所分配的RX隊(duì)列。RSS模塊或流分布器可基于任何類型或形式的策略或規(guī)則將分組指向或分配到特定隊(duì)列,例如,如上文至少結(jié)合圖5A-C、6和7A-D描述的的策略或規(guī)則。例如,RSS模塊可確認(rèn)所接收的分組與由特定虛擬化分組處理器處理的多個(gè)分組相關(guān)聯(lián)。在一些實(shí)施例中,一旦將分組接收和/或放置到共享隊(duì)列上,DomO中的分離驅(qū)動(dòng)程序可生成和/或發(fā)送通知。分離驅(qū)動(dòng)程序可將該通知發(fā)送到RSS模塊、流分布器和/或虛擬化分組處理器。在某些實(shí)施例中,RSS模塊、流分布器和/或虛擬化分組處理器可接收或攔截該通知。例如,RSS模塊可包括通知處理器,該通知處理器計(jì)算或確定對(duì)所接收的分組的RSS哈希。基于該RSS哈希,RSS模塊將接收的分組指向或分配到分配給虛擬化分組處理器的對(duì)應(yīng)的隊(duì)列。在一些實(shí)施例中,分配的隊(duì)列包括用于制約或限制其訪問(wèn)對(duì)應(yīng)的虛擬化域和/或虛擬化分組處理器的鎖定機(jī)制。在其他實(shí)施例中,分配的隊(duì)列不包括,或者可能不要求鎖定機(jī)制。RSS模塊或流分布器可將接收的分組填充或存儲(chǔ)到隊(duì)列的可用mbuf數(shù)據(jù)結(jié)構(gòu)中。在一些實(shí)施例中,如果沒(méi)有可用的mbuf,或者如果隊(duì)列被填滿,則RSS模塊或流分布器可向?qū)?yīng)的虛擬化分組處理器發(fā)送通知。在某些實(shí)施例中,RSS模塊、流分布器和/或隊(duì)列可響應(yīng)于接收分組和/或?qū)⒎纸M存儲(chǔ)到隊(duì)列中來(lái)向?qū)?yīng)的虛擬化分組處理器發(fā)送通知。在一些實(shí)施例中,虛擬化分組處理器可能響應(yīng)于該通知發(fā)起或者不發(fā)起對(duì)隊(duì)列的讀取。虛擬化分組處理器可確定隊(duì)列包括在從該隊(duì)列中讀取的多個(gè)分組和寫(xiě)入該隊(duì)列的多個(gè)分組之間的區(qū)別(步驟1205)。虛擬化分組處理器可確定該隊(duì)列包括隊(duì)列的讀取指示器和寫(xiě)入指示器之間的區(qū)別。這種讀取指示器可標(biāo)識(shí)或指示最近何時(shí)讀取了該隊(duì)列(例如時(shí)間戳)和/或隊(duì)列讀取的程度(例如,最近讀取的條目的位置指示器或定位器、讀取或未讀取的分組數(shù)量,或者新/空的可用mbuf的數(shù)量)。寫(xiě)入指示器可標(biāo)識(shí)或指示最近何時(shí)寫(xiě)入了隊(duì)列(例如時(shí)間戳)和/或用接收的分組填充的隊(duì)列的程度(例如,最近寫(xiě)入的條目的位置指示器、填充的隊(duì)列位置數(shù)量,或者使用的或可用的mbuf的數(shù)量)。虛擬化分組處理器可比較讀取和寫(xiě)入指示器,或者可比較從隊(duì)列讀取的分組數(shù)量和寫(xiě)入隊(duì)列的分組數(shù)量。在一些實(shí)施例中,虛擬化分組處理器可確定不存在區(qū)別,因?yàn)樽詮淖詈笠淮巫x取后沒(méi)有接收新的分組。虛擬化分組處理器可接收通知,關(guān)于接收的分組被寫(xiě)入該隊(duì)列。在一些實(shí)施例中,該隊(duì)列可通知虛擬化分組處理器分組可用于讀取,和/或標(biāo)識(shí)要讀取的分組。在某些實(shí)施例中,虛擬化分組處理器可關(guān)于新的分組輪詢?cè)撽?duì)列。虛擬化分組處理器可關(guān)于可用mbuf的數(shù)量輪詢?cè)撽?duì)列,并且,如果可用mbuf的數(shù)量低于預(yù)定閾值則可從該隊(duì)列讀取。在一些實(shí)施例中,虛擬化分組處理器可在特定時(shí)間和/或時(shí)間間隔來(lái)輪詢隊(duì)列,以確定是否存在要讀取的新的分組。舉例說(shuō)明且在一個(gè)實(shí)施例中,虛擬化分組處理器可在虛擬化分組處理器的netio循環(huán)或例程中的預(yù)定點(diǎn)輪詢所分配的隊(duì)列。虛擬化分組處理器可經(jīng)由超級(jí)調(diào)用或系統(tǒng)調(diào)用來(lái)輪詢隊(duì)列或以其他方式與該隊(duì)列通信。在一些實(shí)施例中,系統(tǒng)調(diào)用被翻譯為內(nèi)核空間中的超級(jí)調(diào)用。管理程序可接收和/或處理翻譯的超級(jí)調(diào)用作為響應(yīng)。虛擬化分組處理器可響應(yīng)于確定來(lái)處理來(lái)自該隊(duì)列的分組(步驟1207)。虛擬化分組處理器或分離驅(qū)動(dòng)程序可經(jīng)由超級(jí)調(diào)用或系統(tǒng)調(diào)用發(fā)起讀取或者發(fā)起來(lái)自于該隊(duì)列的分組的傳輸。響應(yīng)于識(shí)別在從隊(duì)列讀取的分組數(shù)量和寫(xiě)入隊(duì)列的分組數(shù)量之間的區(qū)別,虛擬化分組處理器或分離驅(qū)動(dòng)程序可生成系統(tǒng)調(diào)用或管理程序調(diào)用,用于將分組從該隊(duì)列傳輸?shù)紻omU或第二虛擬化域。在一些實(shí)施例中,虛擬化分組處理器可將多個(gè)分組從隊(duì)列傳輸?shù)紻omU或第二虛擬化域,或者發(fā)起從隊(duì)列到DomU或第二虛擬化域的分組傳輸。分離驅(qū)動(dòng)程序或虛擬化分組處理器可將一個(gè)或多個(gè)分組傳輸?shù)教摂M化分組處理器的接收隊(duì)列或者發(fā)起到該接收隊(duì)列的一個(gè)或多個(gè)分組傳輸,其中該虛擬化分組處理器駐留在用戶存儲(chǔ)空間中。例如,響應(yīng)于生成的超級(jí)調(diào)用,管理程序可將分組從內(nèi)核存儲(chǔ)空間中的隊(duì)列傳遞到多核裝置的用戶存儲(chǔ)空間中的DomU的接收隊(duì)列。在一些實(shí)施例中,管理程序、分離驅(qū)動(dòng)程序和/或DomU可將分組從隊(duì)列中的第一格式轉(zhuǎn)換為第二格式,用于由虛擬化分組處理器處理。舉例說(shuō)明且不以任何方式進(jìn)行限制,分離驅(qū)動(dòng)程序可將分配的隊(duì)列中的一個(gè)或多個(gè)mbuf數(shù)據(jù)結(jié)構(gòu)傳輸或復(fù)制到DomU。分離驅(qū)動(dòng)程序可將分組信息從一個(gè)格式(例如mbuf格式)轉(zhuǎn)換、修改或翻譯為另一格式,其中虛擬化分組處理器可理解或處理該另一格式。例如在一個(gè)實(shí)施例中,分離驅(qū)動(dòng)器可將分組信息從mbuf格式轉(zhuǎn)換、修改或翻譯為nsb格式。在一些實(shí)施例中,分離驅(qū)動(dòng)程序和/或虛擬化分組處理器可向內(nèi)核空間分配多個(gè)nsb數(shù)據(jù)結(jié)構(gòu)(例如,對(duì)應(yīng)于隊(duì)列的“讀取索引-寫(xiě)入索引”)。分離驅(qū)動(dòng)器和/或虛擬化分組處理器可在發(fā)出系統(tǒng)調(diào)用以發(fā)起讀取之前分配該nsb數(shù)據(jù)結(jié)構(gòu)。在一些實(shí)施例中,分離驅(qū)動(dòng)程序和/或虛擬化分組處理器可將mbuf復(fù)制到內(nèi)核空間中的nsb中。分離驅(qū)動(dòng)程序和/或虛擬化分組處理器可將nsb緩沖到虛擬化分組處理器的RX隊(duì)列中。在一些實(shí)施例中,分組可包括或占有分配的隊(duì)列中的一個(gè)或多個(gè)mbuf(例如,mbuf數(shù)據(jù)結(jié)構(gòu)),并且可被翻譯為RX隊(duì)列中的一個(gè)或多個(gè)nsb(例如,nsb數(shù)據(jù)結(jié)構(gòu))。在一些實(shí)施例中,分離驅(qū)動(dòng)程序和/或管理程序可響應(yīng)于分組傳輸或讀取,將新的mbuf(例如,用于緩沖分組信息的存儲(chǔ)器或者任何其他數(shù)據(jù)結(jié)構(gòu)或容器)分配給所分配的隊(duì)列。分離驅(qū)動(dòng)程序和/或管理程序可響應(yīng)于讀取來(lái)搬出、釋放或重寫(xiě)分配的隊(duì)列中的現(xiàn)有數(shù)據(jù)結(jié)構(gòu)(例如mbuf)。分離驅(qū)動(dòng)程序可在RX隊(duì)列中分配存儲(chǔ)器或數(shù)據(jù)結(jié)構(gòu)(例如nsb)用于緩沖從內(nèi)核空間中的分配的隊(duì)列讀取或傳輸?shù)姆纸M。在一些實(shí)施例中,驅(qū)動(dòng)程序(例如半虛擬化驅(qū)動(dòng)程序)的第一部分在DomO(例如第一虛擬化域)中執(zhí)行,用于從網(wǎng)絡(luò)接口硬件接收分組和/或?qū)⒎纸M傳遞到內(nèi)核空間。該驅(qū)動(dòng)程序的第二部分可在DomU(例如第二虛擬化域)中執(zhí)行,用于接收來(lái)自分配的隊(duì)列的分組和/或格式化該分組以便由虛擬化分組處理器進(jìn)行處理。該驅(qū)動(dòng)程序的第一和第二部分可獨(dú)立地操作或以協(xié)作的方式操作(例如,經(jīng)由通知或消息彼此通信)。該驅(qū)動(dòng)程序的第一和/或第二部分可作為與內(nèi)核空間中的共享隊(duì)列和分配的隊(duì)列的相應(yīng)的接口。在一些實(shí)施例中,該驅(qū)動(dòng)程序的第一和第二部分的每一個(gè)包含一個(gè)或多個(gè)半虛擬化驅(qū)動(dòng)程序。圖12D中描述了用于在多核裝置的網(wǎng)絡(luò)接口硬件和由多核裝置的一個(gè)或多個(gè)核執(zhí)行的多個(gè)虛擬化分組處理器之間傳遞分組的方法的一個(gè)實(shí)施例。在多核裝置的核上的第一虛擬化域中執(zhí)行的虛擬化分組處理器可將分組緩沖到第一虛擬化域的發(fā)送隊(duì)列中(步驟1251)。第一虛擬化域(例如DomU)可來(lái)自于不具有直接訪問(wèn)多核裝置的網(wǎng)絡(luò)接口硬件的權(quán)限的多個(gè)虛擬化域。虛擬化分組處理器可確定發(fā)送隊(duì)列具有一個(gè)或多個(gè)分組要發(fā)送(步驟1253)。系統(tǒng)可響應(yīng)于該確定將一個(gè)或多個(gè)分組從發(fā)送隊(duì)列發(fā)送到共享隊(duì)列,其中該共享隊(duì)列駐留在可由另一虛擬化域(例如第二虛擬化域或DomO)訪問(wèn)的多核裝置的內(nèi)核存儲(chǔ)空間上(步驟1255)。第二虛擬化域可包括具有直接訪問(wèn)網(wǎng)絡(luò)接口硬件的權(quán)限的特權(quán)域。第二虛擬化域可響應(yīng)于來(lái)自DomU或第一虛擬化域的通知,訪問(wèn)共享隊(duì)列的一個(gè)或多個(gè)分組,其中該一個(gè)或多個(gè)分組用于經(jīng)由網(wǎng)絡(luò)接口硬件發(fā)送到網(wǎng)絡(luò)(步驟1257)。仍參考圖12D且具體而言,在多核裝置的核上的虛擬化域(例如DomU)中執(zhí)行的虛擬化分組處理器可將分組緩沖到第一虛擬化域的發(fā)送隊(duì)列中(步驟1251)。該虛擬化域可來(lái)自于不具有直接訪問(wèn)多核裝置的網(wǎng)絡(luò)接口硬件的權(quán)限的多個(gè)虛擬化域。虛擬化分組處理器可運(yùn)輸、生成或以其他方式提供分組,用于在網(wǎng)絡(luò)上發(fā)送(例如出站分組(outboundpacket))。虛擬化分組處理器可維護(hù)、操作用戶存儲(chǔ)空間中(例如DomU中)的TX隊(duì)列,和/或提供輸入到用戶存儲(chǔ)器空間中(例如DomU中)的TX隊(duì)列。在一些實(shí)施例中,虛擬化分組處理器管理或分配TX隊(duì)列中的存儲(chǔ)器用于緩沖出站分組或?qū)Τ稣痉纸M進(jìn)行排隊(duì)。虛擬化分組處理器可在一段時(shí)間內(nèi)和/或當(dāng)分組變得可用時(shí),(例如以nsb的形式)在TX隊(duì)列中積累出站分組或?qū)Τ稣痉纸M進(jìn)行排隊(duì)。虛擬化分組處理器可確定發(fā)送隊(duì)列具有要發(fā)送的一個(gè)或多個(gè)分組(步驟1253)。在一些實(shí)施例中,虛擬化分組處理器記錄其提供給TX隊(duì)列用于發(fā)送的出站分組。在某些實(shí)施例中,虛擬化分組處理器可能不記錄其提供到TX隊(duì)列用于發(fā)送的出站分組。在一些實(shí)施例中,虛擬化分組處理器包括半虛擬化驅(qū)動(dòng)程序或分離驅(qū)動(dòng)程序。在某些實(shí)施例中,在該虛擬化域(例如DomU)中執(zhí)行的半虛擬化驅(qū)動(dòng)程序或分離驅(qū)動(dòng)程序可以是獨(dú)立于虛擬化分組處理器的實(shí)體。虛擬化分組處理器和/或分離驅(qū)動(dòng)程序可確定發(fā)送隊(duì)列是否具有要發(fā)送的任何分組。虛擬化分組處理器和/或分離驅(qū)動(dòng)器可關(guān)于新的發(fā)送分組輪詢發(fā)送隊(duì)列。在一些實(shí)施例中,虛擬化分組處理器和/或分離驅(qū)動(dòng)程序可在預(yù)定時(shí)間期間或基于預(yù)定事件(例如,在netio循環(huán)期間)確定是否存在用于發(fā)送的分組。在一些實(shí)施例中,虛擬化分組處理器和/或分離驅(qū)動(dòng)程序可確定TX隊(duì)列中所填充或占據(jù)的部分已超過(guò)特定閾值。在其他實(shí)施例中,虛擬化分組處理器和/或分離驅(qū)動(dòng)程序可確定該TX隊(duì)列是滿的、分配的存儲(chǔ)器已用完,和/或沒(méi)有可用的數(shù)據(jù)結(jié)構(gòu)(例如fsb)來(lái)緩沖額外的用于發(fā)送的分組。虛擬化分組處理器和/或分離驅(qū)動(dòng)程序可基于該確定分配額外的存儲(chǔ)器或數(shù)據(jù)結(jié)構(gòu)和/或發(fā)起對(duì)一個(gè)或多個(gè)排隊(duì)的分組的發(fā)送。系統(tǒng)可響應(yīng)于該確定從發(fā)送隊(duì)列發(fā)送一個(gè)或多個(gè)分組到共享隊(duì)列,其中該共享隊(duì)列駐留在可由DomO(例如第二虛擬化域)訪問(wèn)的多核裝置的內(nèi)核存儲(chǔ)空間上(步驟1255)。DomO可包括具有直接訪問(wèn)網(wǎng)絡(luò)接口硬件的權(quán)限的特權(quán)域。管理程序可以在可由一個(gè)或多個(gè)虛擬化域(例如DomU或第一虛擬化域,以及DomO或第二虛擬化域)訪問(wèn)的多核裝置的內(nèi)核空間中建立共享隊(duì)列。在一些實(shí)施例中,共享隊(duì)列駐留在管理程序的內(nèi)核空間中,該管理程序提供或執(zhí)行第一和第二虛擬化域。在一些實(shí)施例中,將一個(gè)或多個(gè)分組從發(fā)送隊(duì)列發(fā)送到分配的或?qū)S玫腡X隊(duì)列,例如虛擬化分組處理器的分配的或?qū)S玫腡X隊(duì)列。管理程序可將分組從一個(gè)或多個(gè)專用的TX隊(duì)列(例如,內(nèi)核空間中的,一個(gè)或多個(gè)虛擬化分組處理器的TX隊(duì)列)插入或移動(dòng)到共享隊(duì)列上。虛擬化分組處理器和/或分離驅(qū)動(dòng)程序可響應(yīng)于確定發(fā)送隊(duì)列具有一個(gè)或多個(gè)要發(fā)送的分組來(lái)發(fā)出或生成系統(tǒng)調(diào)用。虛擬化分組處理器和/或分離驅(qū)動(dòng)程序可發(fā)出或生成系統(tǒng)調(diào)用作為netio循環(huán)或例程的部分。例如,響應(yīng)于在發(fā)送隊(duì)列上緩沖一個(gè)或多個(gè)分組,虛擬化分組處理器和/或分離驅(qū)動(dòng)程序可生成系統(tǒng)調(diào)用以發(fā)起將發(fā)送隊(duì)列上的一個(gè)或多個(gè)分組傳遞到內(nèi)核存儲(chǔ)空間中的共享隊(duì)列。虛擬化分組處理器和/或分離驅(qū)動(dòng)程序可在內(nèi)核存儲(chǔ)空間中生成或觸發(fā)管理程序調(diào)用以發(fā)起將發(fā)送隊(duì)列上的一個(gè)或多個(gè)分組傳遞到內(nèi)核存儲(chǔ)器空中的共享隊(duì)列。分離驅(qū)動(dòng)程序和/或管理程序可將系統(tǒng)調(diào)用轉(zhuǎn)換或翻譯為超級(jí)調(diào)用,用于在內(nèi)核空間中處理。可響應(yīng)于確定來(lái)生成系統(tǒng)調(diào)用和/或超級(jí)調(diào)用??身憫?yīng)于在發(fā)送隊(duì)列上緩沖一個(gè)或多個(gè)分組,來(lái)生成系統(tǒng)調(diào)用和/或超級(jí)調(diào)用。在一些實(shí)施例中,在將分組緩沖到發(fā)送隊(duì)列之前,管理程序、分離驅(qū)動(dòng)程序和/或DomU可將分組從與虛擬化分組處理器關(guān)聯(lián)的第一格式轉(zhuǎn)換為第二格式。管理程序、分離驅(qū)動(dòng)程序和/或DomU可將分組從用戶空間TX隊(duì)列中的第一格式轉(zhuǎn)換為用于內(nèi)核空間中的共享TX隊(duì)列的第二格式。舉例說(shuō)明且不以任何方式進(jìn)行限制,分離驅(qū)動(dòng)程序可將TX隊(duì)列中的一個(gè)或多個(gè)nsb數(shù)據(jù)結(jié)構(gòu)傳輸或復(fù)制到內(nèi)核空間。分離驅(qū)動(dòng)程序可將分組信息從一個(gè)格式(例如nsb格式)轉(zhuǎn)換、修改或翻譯為另一格式(例如msb格式),用于傳輸?shù)紻omO。在一些實(shí)施例中,分離驅(qū)動(dòng)程序和/或虛擬化分組處理器可響應(yīng)于到內(nèi)核空間的分組傳輸或發(fā)送為用戶空間TX隊(duì)列分配或釋放存儲(chǔ)器或任何其他數(shù)據(jù)結(jié)構(gòu)。在一些實(shí)施例中,分離驅(qū)動(dòng)程序和/或管理程序可為內(nèi)核空間中的共享TX隊(duì)列分配多個(gè)nsb數(shù)據(jù)結(jié)構(gòu)(例如,對(duì)應(yīng)于用戶空間TX隊(duì)列中的“讀取索引-寫(xiě)入索引”)。在某些實(shí)施例中,該分配可響應(yīng)于所生成的系統(tǒng)調(diào)用或超級(jí)調(diào)用而產(chǎn)生。分離驅(qū)動(dòng)程序和/或管理程序可以在發(fā)出系統(tǒng)調(diào)用來(lái)發(fā)起到內(nèi)核空間的發(fā)送之前,分配msb數(shù)據(jù)結(jié)構(gòu)。在一些實(shí)施例中,分離驅(qū)動(dòng)程序和/或管理程序可將nsb復(fù)制、轉(zhuǎn)換或翻譯為內(nèi)核空間中的mbuf。分離驅(qū)動(dòng)程序和/或管理程序可將mbuf緩沖、存儲(chǔ)到共享TX隊(duì)列中或在共享TX隊(duì)列中對(duì)mbuf進(jìn)行排隊(duì),用于由DomO訪問(wèn)。在一些實(shí)施例中,分組可包括用戶空間TX隊(duì)列中的一個(gè)或多個(gè)nsb(例如nsb數(shù)據(jù)結(jié)構(gòu)),并且該一個(gè)或多個(gè)nsb可被翻譯為共享TX隊(duì)列中的一個(gè)或多個(gè)mbuf(例如mbuf數(shù)據(jù)結(jié)構(gòu))。在一些實(shí)施例中,虛擬化分組處理器和/或分離驅(qū)動(dòng)程序可響應(yīng)于到內(nèi)核空間的分組傳輸來(lái)生成到DomO(例如到DomO的分離驅(qū)動(dòng)程序)的通知。該通知可指示DomO共享隊(duì)列中存在出站分組或者出站分組已被傳輸?shù)焦蚕黻?duì)列。在一些實(shí)施例中,將通知作為系統(tǒng)調(diào)用或超級(jí)調(diào)用的部分來(lái)生成和/或發(fā)送,或者響應(yīng)于系統(tǒng)調(diào)用或超級(jí)調(diào)用來(lái)生成和/或發(fā)送該通知。在某些實(shí)施例中,可在隊(duì)列之間和/或不同類型的存儲(chǔ)空間之間并行或大體同時(shí)傳輸接收的分組和出站分組。例如且在一個(gè)實(shí)施例中,可使用單個(gè)系統(tǒng)調(diào)用來(lái)處理或傳輸接收的分組和出站分組。DomO(例如,第二虛擬化域)可響應(yīng)于來(lái)自DomU(例如,第一虛擬化域)的通知訪問(wèn)共享隊(duì)列的一個(gè)或多個(gè)分組,該一個(gè)或多個(gè)分組用于經(jīng)由網(wǎng)絡(luò)接口硬件發(fā)送到網(wǎng)絡(luò)(步驟1257)。DomO的分離驅(qū)動(dòng)程序可響應(yīng)于netio循環(huán)事件、響應(yīng)于所接收的通知或者響應(yīng)于系統(tǒng)調(diào)用或超級(jí)調(diào)用,來(lái)訪問(wèn)來(lái)自共享TX隊(duì)列的一個(gè)或多個(gè)分組。在某些實(shí)施例中,分離驅(qū)動(dòng)程序可生成系統(tǒng)調(diào)用以發(fā)起從共享TX隊(duì)列到DomO的一個(gè)或多個(gè)分組的傳輸。分離驅(qū)動(dòng)程序可以事先將出站分組從一個(gè)格式(例如mbuf格式)轉(zhuǎn)換為另一格式,用于經(jīng)由網(wǎng)絡(luò)接口硬件發(fā)送出去。分離驅(qū)動(dòng)程序可維護(hù)DomO中的TX隊(duì)列用于緩沖出站分組。在某些實(shí)施例中,分離驅(qū)動(dòng)程序可指引出站分組通過(guò)堆棧(例如TCP/IP堆棧),用于經(jīng)由網(wǎng)絡(luò)接口硬件發(fā)送到網(wǎng)絡(luò)上。在某些實(shí)施例中,管理程序或分離驅(qū)動(dòng)程序之一可回收之前由發(fā)送的或接收的分組占用的存儲(chǔ)器或數(shù)據(jù)結(jié)構(gòu)(例如mbuf)。管理程序或分離驅(qū)動(dòng)程序之一可通過(guò)使用系統(tǒng)調(diào)用、超級(jí)調(diào)用或功能調(diào)用來(lái)觸發(fā)或發(fā)起回收。舉例說(shuō)明且在一個(gè)實(shí)施例中,可在netio循環(huán)中調(diào)用tX_PlX)C函數(shù)來(lái)回收或釋放之前被占用的存儲(chǔ)空間或數(shù)據(jù)結(jié)構(gòu)。例如,可將回收的存儲(chǔ)器或數(shù)據(jù)結(jié)構(gòu)重新分配為mbuf或nsb。在一些實(shí)施例中,驅(qū)動(dòng)程序的第一部分在DomU(例如,第一虛擬化域)中執(zhí)行,以便將來(lái)自虛擬化分組處理器的出站分組緩沖到用戶空間發(fā)送隊(duì)列中,和/或發(fā)起到內(nèi)核空間共享隊(duì)列的分組傳輸。驅(qū)動(dòng)程序的第二部分可以在DomO中(例如,在第二虛擬化域中)執(zhí)行,以訪問(wèn)來(lái)自共享隊(duì)列的分組。驅(qū)動(dòng)程序的第一和第二部分可獨(dú)立運(yùn)行或者以協(xié)作的方式(例如,經(jīng)由通知或消息彼此通信)運(yùn)行。驅(qū)動(dòng)程序的第一和/或第二部分可作為與內(nèi)核空間中的共享隊(duì)列和分配的隊(duì)列的相應(yīng)的接口。在一些實(shí)施例中,驅(qū)動(dòng)程序的第一和第二部分中的每一個(gè)包括一個(gè)或多個(gè)半虛擬化驅(qū)動(dòng)程序。應(yīng)該理解,上文描述的系統(tǒng)可提供這些組件的任意多個(gè)或每一個(gè)并且這些組件可以在獨(dú)立機(jī)器上提供,或者在一些實(shí)施例中,可在分布式系統(tǒng)的多個(gè)機(jī)器上提供??梢允褂镁幊毯?或工程技術(shù)將上文所描述的系統(tǒng)和方法實(shí)現(xiàn)為方法、裝置或產(chǎn)品以提供軟件、固件、硬件或上述的任何組合。此外,上述系統(tǒng)和方法可作為在一件或多件產(chǎn)品上實(shí)現(xiàn)或在其中實(shí)現(xiàn)的一個(gè)或多個(gè)計(jì)算機(jī)可讀程序而被提供。本文使用的術(shù)語(yǔ)“產(chǎn)品”旨在包括從一個(gè)或多個(gè)計(jì)算機(jī)可讀的裝置、固件、可編程邏輯、存儲(chǔ)器裝置(例如,EEPROM、ROM、PROM、RAM、SRAM等)、硬件(例如,集成電路芯片、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、專用集成電路(ASIC)等)、電子裝置、計(jì)算機(jī)可讀的非易失存儲(chǔ)單元(例如,CD-ROM、軟盤(pán)、硬盤(pán)等)可訪問(wèn)的或嵌入其中的代碼或邏輯。所述產(chǎn)品可以是從經(jīng)由網(wǎng)絡(luò)傳輸線、無(wú)線傳輸介質(zhì)、通過(guò)空間傳播的信號(hào)、無(wú)線電波、紅外信號(hào)等提供對(duì)計(jì)算機(jī)可讀程序的訪問(wèn)的文件服務(wù)器可訪問(wèn)的。所述產(chǎn)品可以是閃存卡或磁帶。所述產(chǎn)品包括硬件邏輯以及嵌入在計(jì)算機(jī)可讀介質(zhì)中由處理器執(zhí)行的軟件或可編程代碼。通常,計(jì)算機(jī)可讀程序可以任何編程語(yǔ)言來(lái)實(shí)現(xiàn),如LISP、PERL、C、C++、C#、PROLOG,或者諸如JAVA的任何字節(jié)碼語(yǔ)言。軟件程序可以作為目標(biāo)代碼被存儲(chǔ)在一件或多件產(chǎn)品上或其中。已經(jīng)描述了用于選擇性地實(shí)現(xiàn)漸進(jìn)式顯示技術(shù)的方法和系統(tǒng)的某些實(shí)施例,對(duì)本領(lǐng)域技術(shù)人員而言,顯而易見(jiàn)可以使用包含本發(fā)明的概念的其他實(shí)施例。權(quán)利要求1.一種用于在多核裝置的網(wǎng)絡(luò)接口硬件和由多核裝置的一個(gè)或多個(gè)核執(zhí)行的多個(gè)虛擬化分組處理器之間傳遞分組的方法,所述方法包括:Ca)由在多核裝置上執(zhí)行的第一虛擬化域經(jīng)由所述多核裝置的網(wǎng)絡(luò)接口硬件接收分組,所述第一虛擬化域包括具有直接訪問(wèn)所述網(wǎng)絡(luò)接口硬件的權(quán)限的特權(quán)域;(b)將所述分組傳遞到虛擬化分組處理器的隊(duì)列,所述虛擬化分組處理器來(lái)自于多個(gè)虛擬化分組處理器并且在所述多核裝置的核上的第二虛擬化域中執(zhí)行,所述第二虛擬化域來(lái)自于沒(méi)有直接訪問(wèn)所述網(wǎng)絡(luò)接口硬件的權(quán)限的多個(gè)虛擬化域;(c)由所述虛擬化分組處理器確定所述隊(duì)列包括從所述隊(duì)列讀取的多個(gè)分組與寫(xiě)入所述隊(duì)列的多個(gè)分組之間的區(qū)別;以及Cd)由所述虛擬化分組處理器響應(yīng)于該確定處理所述隊(duì)列中的分組。2.根據(jù)權(quán)利要求1所述的方法,還包括在所述第一虛擬化域中執(zhí)行驅(qū)動(dòng)程序的第一部分,用于接收來(lái)自于所述網(wǎng)絡(luò)接口硬件的分組,以及在所述第二虛擬化域中執(zhí)行所述驅(qū)動(dòng)程序的第二部分,用于接收來(lái)自所述隊(duì)列的分組。3.根據(jù)權(quán)利要求1所述的方法,還包括在所述多核裝置的內(nèi)核存儲(chǔ)空間中建立所述隊(duì)列,其中所述第一虛擬化域和所述第二虛擬化域能夠訪問(wèn)所述隊(duì)列。4.根據(jù)權(quán)利要求1所述的方法,還包括為多個(gè)虛擬化分組處理器中的每一個(gè)分配所述多核裝置的內(nèi)核存儲(chǔ)空間中的相應(yīng)的隊(duì)列。5.根據(jù)權(quán)利要求1所述的方法,還包括在所述多核裝置的用戶存儲(chǔ)空間中執(zhí)行所述虛擬化分組處理器。6.根據(jù)權(quán)利要求1所述的方法,還包括由所述虛擬化分組處理器響應(yīng)于識(shí)別從所述隊(duì)列讀取的分組數(shù)量與寫(xiě)入所述隊(duì)列的分組數(shù)量之間的區(qū)別,生成系統(tǒng)調(diào)用或管理程序調(diào)用,以將所述分組從所述隊(duì)列傳輸?shù)剿龅诙摂M化域。7.根據(jù)權(quán)利要求1所述的方法,其中(d)還包括將所述分組從所述隊(duì)列中的第一格式轉(zhuǎn)換為第二格式,用于由所述虛擬化分組處理器進(jìn)行處理。8.根據(jù)權(quán)利要求1所述的方法,還包括將多個(gè)分組從所述隊(duì)列傳輸?shù)今v留在用戶存儲(chǔ)空間中的所述虛擬化分組處理器的接收隊(duì)列。9.根據(jù)權(quán)利要求1所述的方法,還包括在將所述分組傳遞到所述虛擬化分組處理器的隊(duì)列之前,由所述第一虛擬化域?qū)⑺龇纸M發(fā)送到駐留在所述多核裝置的內(nèi)核空間中的共享隊(duì)列中。10.根據(jù)權(quán)利要求1所述的方法,還包括將所述分組從內(nèi)核存儲(chǔ)空間中的隊(duì)列傳遞到所述多核裝置的用戶存儲(chǔ)空間中的第二虛擬化域的接收隊(duì)列。11.一種用于在多核裝置的網(wǎng)絡(luò)接口硬件和由多核裝置的一個(gè)或多個(gè)核執(zhí)行的多個(gè)虛擬化分組處理器之間傳遞分組的方法,所述方法包括:Ca)由在多核裝置的核上的第一虛擬化域中執(zhí)行的虛擬化分組處理器將分組緩沖到所述第一虛擬化域的發(fā)送隊(duì)列中,所述第一虛擬化域來(lái)自于沒(méi)有直接訪問(wèn)所述多核裝置的網(wǎng)絡(luò)接口硬件的權(quán)限的多個(gè)虛擬化域;(b)由所述虛擬化分組處理器確定所述發(fā)送隊(duì)列具有要發(fā)送的一個(gè)或多個(gè)分組;(C)響應(yīng)于該確定,將一個(gè)或多個(gè)分組從所述發(fā)送隊(duì)列發(fā)送到駐留在所述多核裝置的內(nèi)核存儲(chǔ)空間上的、能夠由第二虛擬化域訪問(wèn)的共享隊(duì)列,所述第二虛擬化域包括具有直接訪問(wèn)所述網(wǎng)絡(luò)接口硬件的權(quán)限的特權(quán)域;以及Cd)響應(yīng)于來(lái)自所述第一虛擬化域的通知,由所述第二虛擬化域訪問(wèn)所述共享隊(duì)列中的一個(gè)或多個(gè)分組,該一個(gè)或多個(gè)分組用于經(jīng)由所述網(wǎng)絡(luò)接口硬件發(fā)送到網(wǎng)絡(luò)。12.根據(jù)權(quán)利要求11所述的方法,還包括在所述第一虛擬化域中執(zhí)行驅(qū)動(dòng)程序的第一部分,以將所述分組緩沖到所述發(fā)送隊(duì)列,以及在所述第二虛擬化域中執(zhí)行所述驅(qū)動(dòng)程序的第二部分,以訪問(wèn)所述共享隊(duì)列中的分組。13.根據(jù)權(quán)利要求11所述的方法,其中所述共享隊(duì)列駐留在管理程序的內(nèi)核空間中,所述管理程序提供所述第一和第二虛擬化域。14.根據(jù)權(quán)利要求11所述的方法,還包括在所述多核裝置的內(nèi)核空間中建立所述共享隊(duì)列,其中所述第一虛擬化域能夠訪問(wèn)所述共享隊(duì)列。15.根據(jù)權(quán)利要求11所述的方法,還包括由所述虛擬化分組處理器響應(yīng)于將一個(gè)或多個(gè)分組緩沖到所述發(fā)送隊(duì)列來(lái)生成系統(tǒng)調(diào)用,以發(fā)起向內(nèi)核存儲(chǔ)空間中的所述共享隊(duì)列傳遞所述發(fā)送隊(duì)列上的一個(gè)或多個(gè)分組。16.根據(jù)權(quán)利要求11所述的方法,還包括由所述虛擬化分組處理器在內(nèi)核存儲(chǔ)空間中生成管理程序調(diào)用,以發(fā)起向內(nèi)核存儲(chǔ)空間中的所述共享隊(duì)列傳遞所述發(fā)送隊(duì)列上的一個(gè)或多個(gè)分組。17.根據(jù)權(quán)利要求11所述的方法,其中(a)還包括在將分組緩沖到所述發(fā)送隊(duì)列之前,將所述分組從與所述虛擬化分組處理器關(guān)聯(lián)的第一格式轉(zhuǎn)換為第二格式。18.一種用于在多核裝置的網(wǎng)絡(luò)接口硬件和由多核裝置的一個(gè)或多個(gè)核執(zhí)行的多個(gè)虛擬化分組處理器之間傳遞分組的系統(tǒng),所述系統(tǒng)包括:第一虛擬化域,所述第一虛擬化域在多核裝置的第一核上執(zhí)行、包括具有直接訪問(wèn)所述多核裝置的網(wǎng)絡(luò)接口硬件的權(quán)限的特權(quán)域、經(jīng)由所述網(wǎng)絡(luò)接口硬件接收分組、并且將接收的分組傳遞到所述多核裝置的內(nèi)核模式中的隊(duì)列;以及第二虛擬化域,所述第二虛擬化域來(lái)自于沒(méi)有直接訪問(wèn)所述網(wǎng)絡(luò)接口硬件的權(quán)限的多個(gè)虛擬化域、在所述多核裝置的第二核上執(zhí)行、并且包括虛擬化分組處理器,所述虛擬化分組處理器響應(yīng)于確定所述隊(duì)列具有從所述隊(duì)列讀取的多個(gè)分組和寫(xiě)入所述隊(duì)列的多個(gè)分組之間的區(qū)別,來(lái)訪問(wèn)所述隊(duì)列中的分組。19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中所述第一虛擬化域還包括驅(qū)動(dòng)程序的第一部分,用于從所述網(wǎng)絡(luò)接口硬件接收分組,并且所述第二虛擬化域還包括所述驅(qū)動(dòng)程序的第二部分,用于接收來(lái)自所述隊(duì)列的分組。20.根據(jù)權(quán)利要求18所述的系統(tǒng),其中所述第二虛擬化域響應(yīng)于該確定,在內(nèi)核存儲(chǔ)空間中生成系統(tǒng)調(diào)用或管理程序調(diào)用,以訪問(wèn)所述隊(duì)列上的分組。全文摘要本發(fā)明涉及用于在多核裝置的網(wǎng)絡(luò)接口硬件和由多核裝置的一個(gè)或多個(gè)核執(zhí)行的多個(gè)虛擬化分組處理器之間傳遞分組的方法和系統(tǒng)。裝置上的第一虛擬化域可經(jīng)由網(wǎng)絡(luò)接口硬件接收(1201)分組。第一虛擬化域可包括具有訪問(wèn)該硬件的權(quán)限的特權(quán)域。系統(tǒng)可將分組傳遞(1203)到來(lái)自多個(gè)虛擬化分組處理器并且在核上的第二虛擬化域內(nèi)執(zhí)行的虛擬化分組處理器的隊(duì)列。第二虛擬化域可能沒(méi)有直接訪問(wèn)網(wǎng)絡(luò)接口硬件的權(quán)限。分組處理器可確定(1205)該隊(duì)列包括從隊(duì)列讀取的多個(gè)分組和寫(xiě)入隊(duì)列的多個(gè)分組之間的差異。分組處理器可響應(yīng)于該確定處理(1207)來(lái)自該隊(duì)列的分組。文檔編號(hào)H04L29/08GK103155520SQ201180048120公開(kāi)日2013年6月12日申請(qǐng)日期2011年8月5日優(yōu)先權(quán)日2010年8月6日發(fā)明者D·格爾申請(qǐng)人:思杰系統(tǒng)有限公司