Utf-8模式匹配系統(tǒng)和方法【專利摘要】描述了用于有效地處理、搜索和/或重寫可變寬度編碼數(shù)據(jù)的系統(tǒng)和方法,該可變寬度編碼數(shù)據(jù)例如是UTF-8編碼數(shù)據(jù)。系統(tǒng)和方法的實施例修改和改寫了諸如Horspool和Wu-Manber算法的搜索算法,以便有效地處理和管理在大塊文本中搜索可變寬度編碼文本,該大塊文本例如可經(jīng)由通過網(wǎng)絡裝置的分組流傳輸?shù)奈谋?,該網(wǎng)絡裝置例如是中間裝置?!緦@f明】UTF-8模式匹配系統(tǒng)和方法[0001]相關申請[0002]本申請要求在2011年3月28日提交的、名稱為“SystemsandMethodsForRewritingADataStreamContainingUTF_8EncodingViaAnIntermediary”的美國臨時申請N0.61/468470的權益和優(yōu)先權,該美國臨時申請通過引用被全部包含于此?!?br>技術領域:
】[0003]本申請總的涉及修改數(shù)據(jù)。本申請尤其涉及在UTF-8編碼的分組穿過中間裝置時識別和重寫它們。【
背景技術:
】[0004]存在提供重寫特征的不同系統(tǒng),該重寫特征允許系統(tǒng)重寫分組內(nèi)容。在一些實例中,需要被重寫的內(nèi)容可以是流過多核系統(tǒng)的內(nèi)容。當前系統(tǒng)可提供在超文本傳輸協(xié)議(HTTP)層面的重寫支持。此外,當前系統(tǒng)可在執(zhí)行重寫之前保存整個響應。[0005]在許多實例中,提供重寫支持的當前系統(tǒng)可能需要在執(zhí)行重寫之前積累整個響應。在這些實例中,保存響應的需求可導致增加的存儲器消耗以及增加的響應時間延遲。其他系統(tǒng)可能需要不必要的開銷動作,例如將響應復制到緩沖器的需求。還有一些其他的系統(tǒng)僅能重寫可累積的數(shù)據(jù)量。在其他系統(tǒng)中,可多次執(zhí)行主體解析,使得主體被解析的次數(shù)可與用新模式重寫特定模式的動作的數(shù)量相等。在這些系統(tǒng)的許多中,附加需求可耗盡資源和存儲器,從而降低了特定時間段期間的吞吐量或者被重寫的分組量?!?br/>發(fā)明內(nèi)容】[0006]鑒于當前系統(tǒng)的缺點,需要一種系統(tǒng),其能夠重寫分組流、保存最小數(shù)量的分組并且使用最小量的資源。特別地,本公開的系統(tǒng)和方法對(例如在分組流內(nèi)的)多字節(jié)字符編碼的數(shù)據(jù)或文本提供更有效的搜索。[0007]UTF-8是關于統(tǒng)一碼(Unicode)的多字節(jié)字符編碼,其通常由符合互聯(lián)網(wǎng)數(shù)字分配機構(IANA)列表的標準使用,該標準包括CSS、HTML、XML和HTTP頭部。UTF-8使用的日益增加可歸因于其反向兼容ASCII,以及歸因于其不需要采用字節(jié)順序標記(BOM)。由于行業(yè)主要使用UTF-8,所以需要能夠在大塊文本中搜索多個UTF-8編碼模式的系統(tǒng)。[0008]當前系統(tǒng)使用各種算法來識別字符串中的子串,也稱為多模式匹配。該算法的例子包括((可在http://webglimpse.net/pubs/TR94_17.pdf獲得的)SunWu和UdiManber,“AFastAlgorithmforMult1-PatternSearching”,技術報告TR-94-17,亞利桑那大學(1994)中所描述的,其中通過引用全部包含其內(nèi)容的)Wu-Manber和Horspool算法。[0009]Wu-Manber算法是對Boyer-Moore算法的改進算法。如本領域公知的,Wu-Manber算法是采用以下三個表的多階段算法:移動表(SHIFTtable)、哈希表(HASHtable)和前綴表(PREFIXtable)。與Boyer-Moore算法一樣,對于檢查在特定位置處是否存在匹配進行的驗證或嘗試是反向操作的。移動表用于在掃描文本時確定可移動或者略過文本中的多少個字符。哈希和前綴表用于為匹配確定哪個模式是候選模式,并且驗證該匹配。[0010]Wu-Manber用于同時搜索多個模式。P=Ip1,P2,…,pk}表示一組模式,是來自固定字母表的字符的串,每個Pi是一個字符串。Imin表示P中模式的最小長度,且Imax表示P中模式的最大長度。T=Itpt2,…tN}是包括與P相同的固定字母表的字符的大文本。M是所有模式的總的大小,其中M=k*lmin,且c是固定字母表的大小。Wu-Manber的實質是使用長度為B的字符塊,以通過生成表來對模式進行預處理。如果文本中B個字符的字符串沒有出現(xiàn)在任何模式中,則搜索移動lmin_B+l。將每個大小為B的字符串映射到用作對移動表的索引的整數(shù)。移動表中的值確定在掃描T時移動多遠。設X=X1...xB為正被掃描的文本中的B個字符,并且X被映射到移動表的第i個條目。有兩種情況:[0011]?如果X沒有作為P中任何模式的子串出現(xiàn),則搜索移動(lmin-B+l)個字符。系統(tǒng)在SHIFT[i]中存儲(lmin_B+l)。[0012]?如果X作為P的某些模式的子串出現(xiàn),則標識在任何模式中最右邊出現(xiàn)的X。如果X在&的位置q處結束,并且假設X不在任何其他模式中大于q的任何位置處結束。則在SHIFT[i]中存儲Imin-Q0[0013]為計算移動表,分別考慮每個模式Pi=aia2...alfflin0將大小為B的Pi的子串a(chǎn)j_bV..Bj映射到移動表,且將相應的值設置為其當前值(所有子串當前值的初始值為lmin_B+l)和Ifflin-J(得到該子串需要移動的量)中的最小值。在搜索階段期間,只要移動(SHIFT)值為正,則沿文本移動搜索位置。當移動值為零時,到搜索位置左邊的文本可能是一個模式字符串O[0014]正是同一個整數(shù)索引到另一個表,稱作哈希。哈希表的第i個條目HASH[i]包括指向模式列表的指針,該模式最后B個字符哈希到i。哈希表僅保存模式,而移動表保存大小為B的所有可能的字符串。[0015]對使用UTF-8編碼的模式實現(xiàn)Wu-Manber算法存在一些挑戰(zhàn)。對于不區(qū)分大小寫的字符串比較,在比較前將字符串都轉換為同樣格式其效率非常低。該附加步驟可能將算法的效率降低到幾乎為線性效率,其不同于Wu-Manber算法的原始次線性效率。此外,Wu-Manber需要跳轉到文本中標識的第N個字符。由于在ASCII中每個字符是單字節(jié)的,這是常量時間的操作。然而,由于UTF-8是多字節(jié)編碼,因為跳轉到字符位置需要在計算字符期間穿過整個文本,該操作變?yōu)榫€性操作。這還將算法從次線性效率降低到線性效率。[0016]用于對字符串進行多模式匹配的另一個經(jīng)常使用的公知算法是Horspool算法。與Wu-Manber算法一樣,Horspool是Boyer-Moore算法的變形。Horspool算法是簡化的Boyer-Moore算法,并且具有O(N)的平均復雜度和最差情況下O(MN)的復雜度,其中N表示搜索字符串的長度且M表示模式的長度。在由NigelHorspool撰寫的、標題為“PracticalFastSearchinginStrings,,的文章(Software-PracticeandExperience,卷10,頁501-506(1980))中更加詳細地描述了該算法,其中通過引用全部包括了該內(nèi)容。Horspool算法也執(zhí)行模式預處理,作為在初始匹配嘗試失敗時確定在搜索文本中向前跳過多遠的手段。預處理的結果存儲在矢量中,其中在搜索處理期間使用該矢量。[0017]示例:[0018]文本:GCATCGCAGAGAGTATACAGTACG[0019]模式:GCAGAGAG[0020]模式字符的跳轉值為:[0021]GCAGAGAG[0022]7654321[0023]字符的跳轉值(jumpvalue)是其距離結尾(不考慮最后字符)的位置。如果模式中有字符重復,則采取最小的位置。對于上面列舉的示例,該模式的跳轉值為:[0024]A=I[0025]G=2[0026]C=6[0027]列舉的值反映在忽略最后位置的情況下字符在字符串中距離結尾的最小位置。[0028]初始值:[0029]文本:GCATCGCAGAGAGTATACAGTACG[0030]模式:GCAGAGAG[0031]步驟1:[0032]比較模式的最后字符與文本的相應字符。跳轉總是基于該文本字符,其稱作支點(pivot)字符。在所給的示例中,由于模式的最后字符(G)與文本的相應字符(A)不匹配,所以存在不匹配,并且在文本字符A(該步驟的支點字符)處不匹配,將模式向右跳轉A的跳轉值(在實際的實現(xiàn)中,保持指向該文本的指針且移動該指針)。[0033]步驟I之后的位置:[0034]文本:GCATCGCAGAGAGTATACAGTACG[0035]模式:GCAGAGAG[0036]步驟2:[0037]盡管模式的最后字符與文本中相應的字符相匹配,但實際匹配失敗。所以系統(tǒng)再次前進支點字符(G)的跳轉值。[0038]步驟2之后的位置:[0039]文本:GCATCGCAGAGAGTATACAGTACG[0040]模式:GCAGAGAG[0041]步驟3:[0042]由于模式最后的字符與文本中的相應字符相匹配,則系統(tǒng)從頭開始進行比較以查看是否是完美匹配。在這種情況下,由于在其第一個字符存在不匹配(G與T不匹配),則系統(tǒng)再次跳轉支點字符(該情況下為G)的跳轉值。[0043]步驟3之后的位置:[0044]文本:GCATCGCAGAGAGTATACAGTACG[0045]模式:GCAGAGAG[0046]步驟4:模式的最后字符匹配,且從開頭比較字符串。如示例中所示,找到匹配。[0047]對使用UTF-8編碼的模式實現(xiàn)Horspool算法存在一些挑戰(zhàn)。在ASCII情況下預處理和存儲預處理的模式比較簡單,這是因為ASCII字符的總數(shù)小于用UTF-8編碼的那些字符,并且對于所有ASCII來說大寫與相應的小寫字符之間的差是相同的。但是對于UTF-8字符來說,可能需要有效的數(shù)據(jù)結構來存儲預處理的字符串,并且不區(qū)分大小寫的比較變得較為復雜,這是因為除了通過引用格式映射表,沒有直接的方法來尋找字符的其他格式(case)。對于不區(qū)分大小寫的字符串比較,在比較前將字符串都轉換為相同格式其效率非常低。這將算法的效率降低到幾乎線性的效率,而不是原始的次線性效率。規(guī)則的Horspool算法需要跳轉到文本的第N個字符。由于ASCII中的每個字符是單字節(jié)的,這是常量時間的操作。但在UTF-8中,由于跳轉到字符位置需要在計算字符期間穿過整個文本,這樣是線性的操作。這樣還使得算法從次線性變?yōu)榫€性。[0048]在實現(xiàn)不分大小寫的過程中,在計算前綴和后綴表的同時,將所有UTF-8模式轉換為相應的小寫模式,并且如同規(guī)則Wu-Manber算法,對它們計算哈希值和相應的跳轉值。[0049]將三個字節(jié)的塊用于哈希計算。這與Wu-Manber不同,因為在計算移動和哈希表時,系統(tǒng)使用字節(jié)而非字符。在一些實施例中,可基于模式或統(tǒng)計分析使用另一長度的字節(jié)。例如,如果模式具有為10的字節(jié)長度,在將模式轉換為其小寫后,字節(jié)8、9、10用于計算哈希。該元組的跳轉值為零。對于字節(jié)(8、9、10)的哈希值,存儲跳轉值O。不管何時記錄為零的零跳轉,在相同的表中(或者在替換表中)還存儲該模式。因此,如果在哈希索引處的跳轉值為零,可以很容易地訪問所有相應的模式。當在文本中進行搜索時這樣是有益的。不管何時找到具有零跳轉的支點塊,獲取并且檢查所有相應的模式,以驗證它們中的任何一個是否與文本實際上相匹配。[0050]修改的算法可能需要在文本中跳轉。為保持次線性運行時間復雜度,使用字節(jié)跳轉而非字符跳轉。這可能導致跳轉到字符的中間。在一些實施例中,這樣有助于確定不存在匹配。在一些情況下,當跳轉到字符的中間時,系統(tǒng)轉到字符的開頭并且繼續(xù)進行算法。[0051]首先,獲取所有模式的最小字節(jié)長度,并且系統(tǒng)根據(jù)最小模式在文本中進行跳轉。從該位置使用最后三個字節(jié)計算哈希值。由于這是不區(qū)分大小寫的字符串搜索(并且因此對小寫UTF-8字符串計算哈希表),所以在計算哈希前將字節(jié)轉換為小寫。由于只能將字符轉換為小寫,獲取包括所選擇的3個字節(jié)的最小有效UTF-8字符串。將該字符串轉換為小寫UTF-8字符串,并且將來自相同位置的三個字節(jié)用于哈希值計算。由于這一步,算法僅對該簡單情況起作用:其中UTF-8字符長度并不隨著格式轉換而改變?;谠摴V祦順俗R跳轉。[0052]在本公開的一些實施例中,修改的Wu-Manber算法可包括以下步驟:[0053]1.初始化:設置指向文本開頭的指針。(通過獲取所有模式之中最小的字節(jié)長度Ifflin以及通過將指針移動lmin_3個字節(jié),其中3是塊的大小)將指針移動到支點塊。[0054]2.對于支點塊中的三個字節(jié)計算哈希值。為此,找到包括這三個字節(jié)的最小有效UTF-8字符串,并且將該字符串轉換為小寫。從小寫字符串中,選擇該三個字節(jié)的位置并且計算哈希值,以及根據(jù)哈希值找到跳轉。[0055]3.如果在該哈希處跳轉為0,則在該位置處可匹配一個或多個模式。在預處理步驟中,當在哈希表中記錄零跳轉時,還維護在該哈希處具有零跳轉的模式列表。獲取并且檢查那些模式中的每一個,以查看是否存在任何匹配。任何這樣的搜索可能需要基于模式長度在文本中回顧適當?shù)拈L度。如果文本中的這個點沒有到達字符邊界,甚至可以在比較任何字符之前跳過該模式。如果該點在字符邊界處,執(zhí)行不區(qū)分大小寫的UTF-8字符串比較,以檢查模式是否匹配文本的該部分。如果其匹配,則公布對該字符串的匹配。系統(tǒng)繼續(xù)匹配模式列表中的其他字符串,直到用盡關于該哈希的列表。將跳轉設置為I。注意:如Wu-Manber文章所描述的,系統(tǒng)還可以對模式進行前綴匹配。[0056]4.根據(jù)跳轉值在文本中跳轉。如果該跳轉超過文本邊界,則公布沒有更多的匹配。否則獲取該指針處的最后三個字節(jié)作為支點塊。[0057]5.轉到步驟2。[0058]在規(guī)則Horspool中,字符的跳轉值是其在模式中距離結尾的位置。如果字符重復多于一次,則其所有位置中的最小值將是其跳轉值。由于用于找到某個字符的跳轉值的線性搜索效率較低(如需要在算法的每次迭代中找到某個字符的跳轉值的搜索),所以需要索引表來存儲該跳轉值。對于ASCII來說,由于ASCII字符數(shù)量較小,可使用普通索引表來存儲跳轉值。在UTF-8中,可能的字符數(shù)量巨大。對于模式中的每個UTF-8字符,計算其相應的統(tǒng)一碼值。如果其是大寫的,則計算相應的小寫統(tǒng)一碼值。在任何一種情況下,在統(tǒng)一碼值上應用哈希。由于UTF-8字符可以最多有4個字節(jié),所以維護四個哈希表,每個大小一個哈希表(基于統(tǒng)計分析、空間限制和哈希沖突,該數(shù)可以減少或增加)。如果存在哈希沖突,則跳轉值應該是兩者中的最小值。這是因為,在不存在任何哈希沖突時,字符的跳轉值確保在跳轉之后文本的支點字符與模式中的相同字符對齊。沒有該對齊,系統(tǒng)不能識別任何匹配。在沖突的情況下,通過獲取現(xiàn)有值和新值的最小值,跳轉可能不會使文本中的支點與模式中的相同字符對齊,但是其確保不會漏掉匹配。可以通過從后處理而不是從前處理模式,來容易地實現(xiàn)獲取兩個哈希值中的最小值。[0059]在跳轉表中,字符的跳轉值是其在模式中距離后面的位置。但是如果保持跳轉表中的字符位置,則系統(tǒng)可能必須在UTF-8文本中跳轉那些字符,并且系統(tǒng)將變?yōu)樽址幼址钠ヅ?,該匹配的效率非常低。因此,不保持字符在模式中的位置。相反,使用相應的字?jié)長度。那樣,當使用這些值在文本中進行跳轉時,系統(tǒng)可以執(zhí)行直接跳轉而不用計算字符。[0060]比較模式的最后字符與文本。并且如果存在匹配,則比較整個模式。要不區(qū)分大小寫地比較兩個字符,系統(tǒng)需要計算它們相應的小寫(或大寫)統(tǒng)一碼值。由于事先已知模式,則在預處理步驟中,系統(tǒng)計算模式所有字符的小寫統(tǒng)一碼值,并且進行存儲。還存儲模式的字節(jié)長度和最后字符的長度。在流式文本中,搜索預處理模式。[0061]在處理不對齊時,算法可能需要在文本中跳轉。為保持次線性運行時間復雜度,使用字節(jié)跳轉而不是字符跳轉。這樣會導致跳轉到字符的中間。在一些實施例中,這樣有助于確定不存在匹配。在一些情況下,當在字符的中間時,系統(tǒng)轉到字符的開頭并且用算法繼續(xù)處理。[0062]在處理選擇支點元素時,獲取模式的最后字符以及文本中的相應字符,以執(zhí)行不區(qū)分大小寫的比較。如果模式具有5個字符,則系統(tǒng)需要轉到文本中的第5個字符,并且將其與模式的第5個字符進行比較。但是轉到文本中第5個字符是線性時間,因此,而是使用模式的字節(jié)長度。如果模式中的最后字符長度為4,并且如果模式為20字節(jié)長度,則最后字符從第17個字節(jié)開始。在文本中,系統(tǒng)還直接轉到第17個字節(jié),并且查看其是否與字符邊界對齊。系統(tǒng)朝文本的開頭轉到最近的對齊字符。在任何情況下,在文本中尋找模式的小寫統(tǒng)一碼值(該值是支點元素)。在不匹配的情況下,系統(tǒng)從跳轉表中找到其跳轉值且在文本中跳轉,使得文本的比較點向右移動,并且比較該點與模式中的相應點。[0063]在本公開的一些實施例中,修改的Horspool算法可包括以下步驟:[0064]1.初始化:設置指向文本開頭的指針?;谀J介L度和最后字符長度,在文本中跳轉到其支點元素。在初始化過程中,如果任何這樣的跳轉轉到字符的中間,則轉到下一字符。但在隨后的步驟中,在任何這種不對齊的情況下,轉到字符的開頭。[0065]2.比較支點元素的小寫統(tǒng)一碼值與模式最后字符的相應值。如果上面比較的字符相同則轉到模式的開頭,并且跳轉到文本的相應字節(jié)位置,以比較模式與文本的該部分。但是在文本中的該跳轉可能到達字符的中間,其明顯表示沒有匹配。但如果跳轉到字符邊界,則對兩個字符串執(zhí)行不區(qū)分大小寫的比較。[0066]3.如果存在匹配,通過公布匹配位置退出(如果搜索模式的多次出現(xiàn),則可繼續(xù)算法直到到達文本的結尾)。如果不存在匹配,則跳轉當前支點元素的跳轉值。[0067]4.如果跳轉遇到或者穿過文本的結尾,則退出算法。如果跳轉到達字符的開頭或中間,將該字符取作支點元素。[0068]5.轉到步驟2。[0069]在一個方面,本公開涉及用于在文本塊中不區(qū)分大小寫地搜索可變寬度編碼模式的系統(tǒng)和方法。裝置可為模式中的每個字符確定相應的小寫統(tǒng)一碼值,其中對于該模式在文本塊中搜索匹配。所述模式可由可變寬度編碼字符組成。裝置可為所述模式建立跳轉值的索引表,所述索引表包括對每個相應的小寫統(tǒng)一碼值的哈希,該哈希標識關于相應字符的多個字節(jié)長度。響應于跳轉值的索引表,所述裝置可基于模式的字節(jié)長度以及模式的最后字符的字節(jié)長度,將指向文本塊的指針跳轉到文本塊中的支點元素。所述裝置比較支點元素的小寫統(tǒng)一碼值與所述模式的最后字符的字符的相應小寫統(tǒng)一碼值。[0070]在一些實施例中,裝置確定在所述模式中的字符是大寫的,并且計算小寫統(tǒng)一碼值。所述模式可以是UTF-8編碼的模式,或者包括UTF-8編碼的可變寬度編碼字符。在一些實施例中,所述裝置為每個大小的可變寬度編碼字符建立索引表。在一些實施例中,所述裝置在文本塊的開頭處設置指針。在一些實施例中,所述裝置確定所述指針已經(jīng)跳轉到文本塊中的字符的中間。響應于確定指針已經(jīng)跳轉到文本塊中的字符的中間,所述裝置可將指針移動或設置到該字符的開頭。在一些實施例中,所述裝置確定到支點元素的跳轉是到字符邊界的跳轉,并且所述裝置響應于確定跳轉到字符邊界而執(zhí)行比較。在一些實施例中,所述裝置確定支點元素的小寫統(tǒng)一碼值與所述模式的最后字符的字符的相應小寫統(tǒng)一碼值相匹配。所述裝置可將指針跳轉到與模式的開頭相對應的文本塊中的字節(jié)位置,并且比較模式與由指針標識的文本塊的相應部分。[0071]在另一個方面,本公開涉及用于在文本塊中對可變寬度編碼模式同時執(zhí)行不區(qū)分大小寫搜索的系統(tǒng)和方法。裝置可將要在文本塊內(nèi)搜索的每個模式轉換為相應的小寫模式,每個模式包括可變寬度編碼字符。所述裝置可為每個模式建立轉移表,該轉移表包括相應的小寫模式的預定數(shù)量字節(jié)的哈希以及跳轉值。響應于轉移表,所述裝置可將指針跳轉或移動到文本塊的支點塊。所述裝置可標識支點塊內(nèi)的編碼字符串,其包括來自支點塊的預定數(shù)量字節(jié)的字節(jié),并且計算與預定數(shù)量字節(jié)相對應的小寫編碼字符串的字節(jié)的哈希。所述裝置可使用字節(jié)的哈希,從轉移表獲得跳轉值。[0072]在一些實施例中,所述模式包括UTF-8編碼的可變寬度編碼字符。在一些實施例中,所述裝置在每個哈希維護具有零跳轉的模式列表。在一些實施例中,所述裝置基于所有模式的最小字節(jié)長度,首先將指針跳轉到初始支點塊。在一些實施例中,所述裝置識別最小有效編碼字符串,其包括來自支點塊的預定數(shù)量字節(jié)的字節(jié)。[0073]在一些實施例中,所述裝置識別出跳轉值為零。所述裝置可確定與為零的跳轉值相關聯(lián)的任何模式是否與文本塊中的相應文本相匹配。所述裝置可為每個模式將指向文本塊的指針移回模式的多個字節(jié)長度。所述裝置可響應于識別所述指針不是字符邊界,確定所述模式與由所述指針標識的文本的相應部分不匹配。所述裝置可響應于識別所述指針在字符邊界處,比較模式與由所述指針標識的文本塊的文本。[0074]在附圖和下面的描述中將詳細闡述本發(fā)明的各種實施例的細節(jié)。【專利附圖】【附圖說明】[0075]通過參考下述結合附圖的描述,本發(fā)明的前述和其它目的、方面、特征和優(yōu)點將會更加明顯并更易于理解,其中:[0076]圖1A是客戶機經(jīng)由設備訪問服務器的網(wǎng)絡環(huán)境的實施例的框圖;[0077]圖1B是經(jīng)由設備從服務器傳送計算環(huán)境到客戶機的環(huán)境的實施例的框圖;[0078]圖1C是經(jīng)由設備從服務器傳送計算環(huán)境到客戶機的環(huán)境的另一個實施例的框圖;[0079]圖1D是經(jīng)由設備從服務器傳送計算環(huán)境到客戶機的環(huán)境的另一個實施例的框圖;[0080]圖1E-1H是計算裝置的實施例的框圖;[0081]圖2A是用于處理客戶機和服務器之間的通信的設備的實施例的框圖;[0082]圖2B是用于優(yōu)化、加速、負載平衡和路由客戶端和服務器之間的通信的設備的另一個實施例的框圖;[0083]圖3是用于經(jīng)由設備與服務器通信的客戶機的實施例的框圖;[0084]圖4A是虛擬化環(huán)境的實施例的框圖;[0085]圖4B是虛擬化環(huán)境的另一個實施例的框圖;[0086]圖4C是虛擬化設備的實施例的框圖;[0087]圖5A是在多核網(wǎng)絡設備中實現(xiàn)并行的方法的實施例的框圖;[0088]圖5B是使用多核系統(tǒng)的系統(tǒng)的實施例的框圖;[0089]圖5C是多核系統(tǒng)的一個方面的另一實施例的框圖;[0090]圖6A-6C是用于執(zhí)行流式重寫的系統(tǒng)的實施例的框圖;[0091]圖7是用于執(zhí)行流式重寫的方法的實施例的流程圖;[0092]圖8A是用于執(zhí)行流式重寫的方法的實施例的流程圖;以及[0093]圖SB是用于執(zhí)行流式重寫的方法的另一個實施例的流程圖;[0094]圖9A是用于搜索可變寬度編碼數(shù)據(jù)的系統(tǒng)的實施例的框圖;[0095]圖9B是用于搜索可變寬度編碼數(shù)據(jù)的方法的實施例的流程圖;[0096]圖9C是用于搜索可變寬度編碼數(shù)據(jù)的方法的另一個實施例的流程圖。[0097]從下面結合附圖所闡述的詳細描述,本發(fā)明的特征和優(yōu)點將更明顯,其中,同樣的參考標記在全文中標識相應的元素。在附圖中,同樣的附圖標記通常表示相同的、功能上相似的和/或結構上相似的元素?!揪唧w實施方式】[0098]為了閱讀下文各種實施例的描述,下述對于說明書的部分以及它們各自內(nèi)容的描述是有用的:[0099]-A部分描述有益于實施本文描述的實施例的網(wǎng)絡環(huán)境和計算環(huán)境;[0100]-B部分描述用于將計算環(huán)境傳送到遠程用戶的系統(tǒng)和方法的實施例;[0101]-C部分描述用于加速客戶機和服務器間通信的系統(tǒng)和方法的實施例;[0102]-D部分描述用于對應用傳送控制器進行虛擬化的系統(tǒng)和方法的實施例。[0103]-E部分描述用于提供多核架構和環(huán)境的系統(tǒng)和方法的實施例;以及[0104]-F部分描述用于經(jīng)由中間裝置重寫數(shù)據(jù)流的系統(tǒng)和方法的實施例;[0105]一G部分描述用于經(jīng)由中間裝置重寫包含UTF-8編碼的數(shù)據(jù)流的系統(tǒng)和方法的實施例。[0106]A.網(wǎng)絡和計算環(huán)塏[0107]在討論設備和/或客戶機的系統(tǒng)和方法的實施例的細節(jié)之前,討論可在其中部署這些實施例的網(wǎng)絡和計算環(huán)境是有幫助的。現(xiàn)在參見圖1A,描述了網(wǎng)絡環(huán)境的實施例。概括來講,網(wǎng)絡環(huán)境包括經(jīng)由一個或多個網(wǎng)絡104、104’(總的稱為網(wǎng)絡104)與一個或多個服務器106a—106η(同樣總的稱為服務器106,或遠程機器106)通信的一個或多個客戶機102a-102η(同樣總的稱為本地機器102,或客戶機102)。在一些實施例中,客戶機102通過設備200與服務器106通信。[0108]雖然圖1A示出了在客戶機102和服務器106之間的網(wǎng)絡104和網(wǎng)絡104’,客戶機102和服務器106可以位于同一個的網(wǎng)絡104上。網(wǎng)絡104和104’可以是相同類型的網(wǎng)絡或不同類型的網(wǎng)絡。網(wǎng)絡104和/或104’可為局域網(wǎng)(LAN)例如公司內(nèi)網(wǎng),城域網(wǎng)(MAN),或者廣域網(wǎng)(WAN)例如因特網(wǎng)或萬維網(wǎng)。在一個實施例中,網(wǎng)絡104可為專用網(wǎng)絡并且網(wǎng)絡104’可為公網(wǎng)。在一些實施例中,網(wǎng)絡104可為專用網(wǎng)并且網(wǎng)絡104’可為公網(wǎng)。在又一個實施例中,網(wǎng)絡104和104’可都為專用網(wǎng)。在一些實施例中,客戶機102可位于公司企業(yè)的分支機構中,通過網(wǎng)絡104上的WAN連接與位于公司數(shù)據(jù)中心的服務器106通信。[0109]網(wǎng)絡104和/或104’可以是任何類型和/或形式的網(wǎng)絡,并且可包括任何下述網(wǎng)絡:點對點網(wǎng)絡,廣播網(wǎng)絡,廣域網(wǎng),局域網(wǎng),電信網(wǎng)絡,數(shù)據(jù)通信網(wǎng)絡,計算機網(wǎng)絡,ATM(異步傳輸模式)網(wǎng)絡,SONET(同步光纖網(wǎng)絡)網(wǎng)絡,SDH(同步數(shù)字體系)網(wǎng)絡,無線網(wǎng)絡和有線網(wǎng)絡。在一些實施例中,網(wǎng)絡104可以包括無線鏈路,諸如紅外信道或者衛(wèi)星頻帶。網(wǎng)絡104和/或104’的拓撲可為總線型、星型或環(huán)型網(wǎng)絡拓撲。網(wǎng)絡104和/或104’以及網(wǎng)絡拓撲可以是對于本領域普通技術人員所熟知的、可以支持此處描述的操作的任何這樣的網(wǎng)絡或網(wǎng)絡拓撲。[0110]如圖1A所示,設備200被顯示在網(wǎng)絡104和104’之間,設備200也可被稱為接口單元200或者網(wǎng)關200。在一些實施例中,設備200可位于網(wǎng)絡104上。例如,公司的分支機構可在分支機構中部署設備200。在其他實施例中,設備200可以位于網(wǎng)絡104’上。例如,設備200可位于公司的數(shù)據(jù)中心。在又一個實施例中,多個設備200可在網(wǎng)絡104上部署。在一些實施例中,多個設備200可部署在網(wǎng)絡104’上。在一個實施例中,第一設備200與第二設備200’通信。在其他實施例中,設備200可為位于與客戶機102同一或不同網(wǎng)絡104、104’的任一客戶機102或服務器106的一部分。一個或多個設備200可位于客戶機102和服務器106之間的網(wǎng)絡或網(wǎng)絡通信路徑中的任一點。[0111]在一些實施例中,設備200包括由位于佛羅里達州Ft.Lauderdale的CitrixSystems公司制造的被稱為CitrixNetScaler設備的任何網(wǎng)絡設備。在其他實施例中,設備200包括由位于華盛頓州西雅圖的F5Networks公司制造的被稱為WebAccelerator和BigIP的任何一個產(chǎn)品實施例。在又一個實施例中,設備205包括由位于加利福尼亞州Sunnyvale的JuniperNetworks公司制造的DX加速設備平臺和/或諸如SA700、SA2000、SA4000和SA6000的SSLVPN系列設備中的任何一個。在又一個實施例中,設備200包括由位于加利福尼亞州SanJose的CiscoSystems公司制造的任何應用加速和/或安全相關的設備和/或軟件,例如CiscoACE應用控制引擎模塊服務(ApplicationControlEngineModuleservice)軟件和網(wǎng)絡模塊以及CiscoAVS系列應用速度系統(tǒng)(ApplicationVelocitySystem)。[0112]在一個實施例中,系統(tǒng)可包括多個邏輯分組的服務器106。在這些實施例中,服務器的邏輯分組可以被稱為服務器群38。在其中一些實施例中,服務器106可為地理上分散的。在一些情況中,群38可以作為單個實體被管理。在其他實施例中,服務器群38包括多個服務器群38。在一個實施例中,服務器群代表一個或多個客戶機102執(zhí)行一個或多個應用程序。[0113]在每個群38中的服務器106可為不同種類。一個或多個服務器106可根據(jù)一種類型的操作系統(tǒng)平臺(例如,由華盛頓州Redmond的Microsoft公司制造的WINDOWSNT)操作,而一個或多個其它服務器106可根據(jù)另一類型的操作系統(tǒng)平臺(例如,Unix或Linux)操作。每個群38的服務器106不需要與同一群38內(nèi)的另一個服務器106物理上接近。因此,被邏輯分組為群38的服務器106組可使用廣域網(wǎng)(WAN)連接或城域網(wǎng)(MAN)連接互聯(lián)。例如,群38可包括物理上位于不同大陸或大陸的不同區(qū)域、國家、州、城市、校園或房間的服務器106。如果使用局域網(wǎng)(LAN)連接或一些直連形式來連接服務器106,則可增加群38中的服務器106間的數(shù)據(jù)傳送速度。[0114]服務器106可指文件服務器、應用服務器、web服務器、代理服務器或者網(wǎng)關服務器。在一些實施例中,服務器106可以有作為應用服務器或者作為主應用服務器工作的能力。在一個實施例中,服務器106可包括活動目錄??蛻魴C102也可稱為客戶端節(jié)點或端點。在一些實施例中,客戶機102可以有作為客戶機節(jié)點尋求訪問服務器上的應用的能力,也可以有作為應用服務器為其它客戶機102a-102n提供對寄載的應用的訪問的能力。[0115]在一些實施例中,客戶機102與服務器106通信。在一個實施例中,客戶機102與群38中的服務器106的其中一個直接通信。在又一個實施例中,客戶機102執(zhí)行程序鄰近應用(programneighborhoodapplication)以與群38內(nèi)的服務器106通信。在又一個實施例中,服務器106提供主節(jié)點的功能。在一些實施例中,客戶機102通過網(wǎng)絡104與群38中的服務器106通信。通過網(wǎng)絡104,客戶機102例如可以請求執(zhí)行群38中的服務器106a-106n寄載的各種應用,并接收應用執(zhí)行結果的輸出進行顯示。在一些實施例中,只有主節(jié)點提供識別和提供與寄載所請求的應用的服務器106’相關的地址信息所需的功能。[0116]在一個實施例中,服務器106提供web服務器的功能。在又一個實施例中,服務器106a接收來自客戶機102的請求,將該請求轉發(fā)到第二服務器106b,并使用來自服務器106b對該請求的響應來對客戶機102的請求進行響應。在又一個實施例中,服務器106獲得客戶機102可用的應用的列舉以及與由該應用的列舉所識別的應用的服務器106相關的地址信息。在又一個實施例中,服務器106使用web接口將對請求的響應提供給客戶機102。在一個實施例中,客戶機102直接與服務器106通信以訪問所識別的應用。在又一個實施例中,客戶機102接收由執(zhí)行服務器106上所識別的應用而產(chǎn)生的諸如顯示數(shù)據(jù)的應用輸出數(shù)據(jù)。[0117]現(xiàn)參考圖1B,描述了部署多個設備200的網(wǎng)絡環(huán)境的實施例。第一設備200可以部署在第一網(wǎng)絡104上,而第二設備200’部署在第二網(wǎng)絡104’上。例如,公司可以在分支機構部署第一設備200,而在數(shù)據(jù)中心部署第二設備200’。在又一個實施例中,第一設備200和第二設備200’被部署在同一個網(wǎng)絡104或網(wǎng)絡104上。例如,第一設備200可以被部署用于第一服務器群38,而第二設備200可以被部署用于第二服務器群38’。在另一個實例中,第一設備200可以被部署在第一分支機構,而第二設備200’被部署在第二分支機構’。在一些實施例中,第一設備200和第二設備200’彼此協(xié)同或聯(lián)合工作,以加速客戶機和服務器之間的網(wǎng)絡流量或應用和數(shù)據(jù)的傳送。[0118]現(xiàn)參考圖1C,描述了網(wǎng)絡環(huán)境的又一個實施例,在該網(wǎng)絡環(huán)境中,將設備200和一個或多個其它類型的設備部署在一起,例如,部署在一個或多個WAN優(yōu)化設備205,205’之間。例如,第一WAN優(yōu)化設備205顯示在網(wǎng)絡104和104’之間,而第二WAN優(yōu)化設備205’可以部署在設備200和一個或多個服務器106之間。例如,公司可以在分支機構部署第一WAN優(yōu)化設備205,而在數(shù)據(jù)中心部署第二WAN優(yōu)化設備205’。在一些實施例中,設備205可以位于網(wǎng)絡104’上。在其他實施例中,設備205’可以位于網(wǎng)絡104上。在一些實施例中,設備205’可以位于網(wǎng)絡104’或網(wǎng)絡104〃上。在一個實施例中,設備205和205’在同一個網(wǎng)絡上。在又一個實施例中,設備205和205’在不同的網(wǎng)絡上。在另一個實例中,第一WAN優(yōu)化設備205可以被部署用于第一服務器群38,而第二WAN優(yōu)化設備205’可以被部署用于第二服務器群38’。[0119]在一個實施例中,設備205是用于加速、優(yōu)化或者以其他方式改善任何類型和形式的網(wǎng)絡流量(例如去往和/或來自WAN連接的流量)的性能、操作或服務質量的裝置。在一些實施例中,設備205是一個性能增強代理。在其他實施例中,設備205是任何類型和形式的WAN優(yōu)化或加速裝置,有時也被稱為WAN優(yōu)化控制器。在一個實施例中,設備205是由位于佛羅里達州Ft.Lauderdale的CitrixSystems公司出品的被稱為WANScaler的產(chǎn)品實施例中的任何一種。在其他實施例中,設備205包括由位于華盛頓州Seattle的F5Networks公司出品的被稱為BIG-1P鏈路控制器和WANjet的產(chǎn)品實施例中的任何一種。在又一個實施例中,設備205包括由位于加利福尼亞州Sunnyvale的JuniperNetfforks公司出品的WX和WXCWAN加速裝置平臺中的任何一種。在一些實施例中,設備205包括由加利福尼亞州SanFrancisco的RiverbedTechnology公司出品的虹蹲(steeIhead)系列WAN優(yōu)化設備中的任何一種。在其他實施例中,設備205包括由位于新澤西州Roseland的ExpandNetworks公司出品的WAN相關裝置中的任何一種。在一個實施例中,設備205包括由位于加利福尼亞州Cupertino的Packeteer公司出品的任何一種WAN相關設備,例如由Packeteer提供的PacketShaper、iShared和SkyX產(chǎn)品實施例。在又一個實施例中,設備205包括由位于加利福尼亞州SanJose的CiscoSystems公司出品的任何WAN相關設備和/或軟件,例如Cisco廣域網(wǎng)應用服務軟件和網(wǎng)絡模塊以及廣域網(wǎng)引擎設備。[0120]在一個實施例中,設備205為分支機構或遠程辦公室提供應用和數(shù)據(jù)加速服務。在一個實施例中,設備205包括廣域文件服務(WAFS)的優(yōu)化。在又一個實施例中,設備205加速文件的傳送,例如經(jīng)由通用互聯(lián)網(wǎng)文件系統(tǒng)(CIFS)協(xié)議。在其他實施例中,設備205在存儲器和/或存儲裝置中提供高速緩存來加速應用和數(shù)據(jù)的傳送。在一個實施例中,設備205在任何級別的網(wǎng)絡堆棧或在任何的協(xié)議或網(wǎng)絡層中提供網(wǎng)絡流量的壓縮。在又一個實施例中,設備205提供傳輸層協(xié)議優(yōu)化、流量控制、性能增強或修改和/或管理,以加速WAN連接上的應用和數(shù)據(jù)的傳送。例如,在一個實施例中,設備205提供傳輸控制協(xié)議(TCP)優(yōu)化。在其他實施例中,設備205提供對于任何會話或應用層協(xié)議的優(yōu)化、流量控制、性能增強或修改和/或管理。[0121]在又一個實施例中,設備205將任何類型和形式的數(shù)據(jù)或信息編碼成網(wǎng)絡分組的定制的或標準的TCP和/或IP的報頭字段或可選字段,以將其存在、功能或能力通告給另一個設備205’。在又一個實施例中,設備205’可以使用在TCP和/或IP報頭字段或選項中編碼的數(shù)據(jù)來與另一個設備205’進行通信。例如,設備可以使用TCP選項或IP報頭字段或選項來傳達在執(zhí)行諸如WAN加速的功能時或者為了彼此聯(lián)合工作而由設備205,205’所使用的一個或多個參數(shù)。[0122]在一些實施例中,設備200保存在設備205和205’之間傳達的TCP和/或IP報頭和/或可選字段中編碼的任何信息。例如,設備200可以終止經(jīng)過設備200的傳輸層連接,例如經(jīng)過設備205和205’的在客戶機和服務器之間的一個傳輸層連接。在一個實施例中,設備200識別并保存由第一設備205通過第一傳輸層連接發(fā)送的傳輸層分組中的任何編碼信息,并經(jīng)由第二傳輸層連接來將具有編碼信息的傳輸層分組傳達到第二設備205’。[0123]現(xiàn)參考圖1D,描述了用于傳送和/或操作客戶機102上的計算環(huán)境的網(wǎng)絡環(huán)境。在一些實施例中,服務器106包括用于向一個或多個客戶機102傳送計算環(huán)境或應用和/或數(shù)據(jù)文件的應用傳送系統(tǒng)190??偟膩碚f,客戶機10通過網(wǎng)絡104、104’和設備200與服務器106通信。例如,客戶機102可駐留在公司的遠程辦公室里,例如分支機構,并且服務器106可駐留在公司數(shù)據(jù)中心??蛻魴C102包括客戶機代理120以及計算環(huán)境15。計算環(huán)境15可執(zhí)行或操作用于訪問、處理或使用數(shù)據(jù)文件的應用??山?jīng)由設備200和/或服務器106傳送計算環(huán)境15、應用和/或數(shù)據(jù)文件。[0124]在一些實施例中,設備200加速計算環(huán)境15或者其任何部分到客戶機102的傳送。在一個實施例中,設備200通過應用傳送系統(tǒng)190加速計算環(huán)境15的傳送。例如,可使用此處描述的實施例來加速從公司中央數(shù)據(jù)中心到遠程用戶位置(例如公司的分支機構)的流應用(streamingapplication)及該應用可處理的數(shù)據(jù)文件的傳送。在又一個實施例中,設備200加速客戶機102和服務器106之間的傳輸層流量。設備200可以提供用于加速從服務器106到客戶機102的任何傳輸層有效載荷的加速技術,例如:1)傳輸層連接池,2)傳輸層連接多路復用,3)傳輸控制協(xié)議緩沖,4)壓縮和5)高速緩存。在一些實施例中,設備200響應于來自客戶機102的請求提供服務器106的負載平衡。在其他實施例中,設備200充當代理或者訪問服務器來提供對一個或者多個服務器106的訪問。在又一個實施例中,設備200提供從客戶機102的第一網(wǎng)絡104到服務器106的第二網(wǎng)絡104’的安全虛擬專用網(wǎng)絡連接,諸如SSLVPN連接。在又一些實施例中,設備200提供客戶機102和服務器106之間的連接和通信的應用防火墻安全、控制和管理。[0125]在一些實施例中,基于多個執(zhí)行方法并且基于通過策略引擎195所應用的任一驗證和授權策略,應用傳送管理系統(tǒng)190提供將計算環(huán)境傳送到遠程的或者另外的用戶的桌面的應用傳送技術。使用這些技術,遠程用戶可以從任何網(wǎng)絡連接裝置100獲取計算環(huán)境并且訪問服務器所存儲的應用和數(shù)據(jù)文件。在一個實施例中,應用傳送系統(tǒng)190可駐留在服務器106上或在其上執(zhí)行。在又一個實施例中,應用傳送系統(tǒng)190可駐留在多個服務器106a-106n上或在其上執(zhí)行。在一些實施例中,應用傳送系統(tǒng)190可在服務器群38內(nèi)執(zhí)行。在一個實施例中,執(zhí)行應用傳送系統(tǒng)190的服務器106也可存儲或提供應用和數(shù)據(jù)文件。在又一個實施例中,一個或多個服務器106的第一組可執(zhí)行應用傳送系統(tǒng)190,而不同的服務器106η可存儲或提供應用和數(shù)據(jù)文件。在一些實施例中,應用傳送系統(tǒng)190、應用和數(shù)據(jù)文件中的每一個可駐留或位于不同的服務器。在又一個實施例中,應用傳送系統(tǒng)190的任何部分可駐留、執(zhí)行、或被存儲于或分發(fā)到設備200或多個設備。[0126]客戶機102可包括用于執(zhí)行使用或處理數(shù)據(jù)文件的應用的計算環(huán)境15??蛻魴C102可通過網(wǎng)絡104、104’和設備200請求來自服務器106的應用和數(shù)據(jù)文件。在一個實施例中,設備200可以將來自客戶機102的請求轉發(fā)到服務器106。例如,客戶機102可能不具有本地存儲或者本地可訪問的應用和數(shù)據(jù)文件。響應于請求,應用傳送系統(tǒng)190和/或服務器106可以傳送應用和數(shù)據(jù)文件到客戶機102。例如,在一個實施例中,服務器106可以把應用作為應用流來傳輸,以在客戶機102上的計算環(huán)境15中操作。[0127]在一些實施例中,應用傳送系統(tǒng)190包括CitrixSystems有限公司的CitrixAccessSuite?的任一部分(例如MetaFrame或CitrixPresentationServer?),和/或微軟公司開發(fā)的Microsoft?Windows終端服務中的任何一個。在一個實施例中,應用傳送系統(tǒng)190可以通過遠程顯示協(xié)議或者以其它方式通過基于遠程計算或者基于服務器計算來傳送一個或者多個應用到客戶機102或者用戶。在又一個實施例中,應用傳送系統(tǒng)190可以通過應用流來傳送一個或者多個應用到客戶機或者用戶。[0128]在一個實施例中,應用傳送系統(tǒng)190包括策略引擎195,其用于控制和管理對應用的訪問、應用執(zhí)行方法的選擇以及應用的傳送。在一些實施例中,策略引擎195確定用戶或者客戶機102可以訪問的一個或者多個應用。在又一個實施例中,策略弓I擎195確定應用應該如何被傳送到用戶或者客戶機102,例如執(zhí)行方法。在一些實施例中,應用傳送系統(tǒng)190提供多個傳送技術,從中選擇應用執(zhí)行的方法,例如基于服務器的計算、本地流式傳輸或傳送應用給客戶機120以用于本地執(zhí)行。[0129]在一個實施例中,客戶機102請求應用程序的執(zhí)行并且包括服務器106的應用傳送系統(tǒng)190選擇執(zhí)行應用程序的方法。在一些實施例中,服務器106從客戶機102接收證書。在又一個實施例中,服務器106從客戶機102接收對于可用應用的列舉的請求。在一個實施例中,響應該請求或者證書的接收,應用傳送系統(tǒng)190列舉對于客戶機102可用的多個應用程序。應用傳送系統(tǒng)190接收執(zhí)行所列舉的應用的請求。應用傳送系統(tǒng)190選擇預定數(shù)量的方法之一來執(zhí)行所列舉的應用,例如響應策略引擎的策略。應用傳送系統(tǒng)190可以選擇執(zhí)行應用的方法,使得客戶機102接收通過執(zhí)行服務器106上的應用程序所產(chǎn)生的應用輸出數(shù)據(jù)。應用傳送系統(tǒng)190可以選擇執(zhí)行應用的方法,使得本地機器10在檢索包括應用的多個應用文件之后本地執(zhí)行應用程序。在又一個實施例中,應用傳送系統(tǒng)190可以選擇執(zhí)行應用的方法,以通過網(wǎng)絡104流式傳輸應用到客戶機102。[0130]客戶機102可以執(zhí)行、操作或者以其它方式提供應用,所述應用可為任何類型和/或形式的軟件、程序或者可執(zhí)行指令,例如任何類型和/或形式的web瀏覽器、基于web的客戶機、客戶機一服務器應用、瘦客戶端計算客戶機、ActiveX控件、或者Java程序、或者可以在客戶機102上執(zhí)行的任何其它類型和/或形式的可執(zhí)行指令。在一些實施例中,應用可以是代表客戶機102在服務器106上執(zhí)行的基于服務器或者基于遠程的應用。在一個實施例中,服務器106可以使用任何瘦-客戶端或遠程顯示協(xié)議來顯示輸出到客戶機102,所述瘦_客戶端或遠程顯示協(xié)議例如由位于佛羅里達州Ft.Lauderdale的CitrixSystems公司出品的獨立計算架構(ICA)協(xié)議或由位于華盛頓州Redmond的微軟公司出品的遠程桌面協(xié)議(RDP)。應用可使用任何類型的協(xié)議,并且它可為,例如,HTTP客戶機、FTP客戶機、Oscar客戶機或Telnet客戶機。在其他實施例中,應用包括和VoIP通信相關的任何類型的軟件,例如軟IP電話。在進一步的實施例中,應用包括涉及到實時數(shù)據(jù)通信的任一應用,例如用于流式傳輸視頻和/或音頻的應用。[0131]在一些實施例中,服務器106或服務器群38可運行一個或多個應用,例如提供瘦客戶端計算或遠程顯示表示應用的應用。在一個實施例中,服務器106或服務器群38作為一個應用來執(zhí)行CitrixSystems有限公司的CitrixAccessSuite?的任一部分(例如MetaFrame或CitrixPresentationServer?),和/或微軟公司開發(fā)的Microsoft?Windows終端服務中的任何一個。在一個實施例中,該應用是位于佛羅里達州FortLauderdale的CitrixSystems有限公司開發(fā)的ICA客戶機。在其他實施例中,該應用包括由位于華盛頓州Redmond的Microsoft公司開發(fā)的遠程桌面(RDP)客戶機。另外,服務器106可以運行一個應用,例如,其可以是提供電子郵件服務的應用服務器,例如由位于華盛頓州Redmond的Microsoft公司制造的MicrosoftExchange,web或Internet服務器,或者桌面共享服務器,或者協(xié)作服務器。[0132]在一些實施例中,任一應用可以包括任一類型的所寄載的服務或產(chǎn)品,例如位于加利福尼亞州SantaBarbara的CitrixOnlineDivision公司提供的GoToMeeting?,位于加利福尼亞州SantaClara的WebEx有限公司提供的WebEx?,或者位于華盛頓州Redmond的Microsoft公司提供的MicrosoftOfficeLiveMeeting。[0133]仍參考圖1D,網(wǎng)絡環(huán)境的一個實施例可以包括監(jiān)控服務器106A。監(jiān)控服務器106A可以包括任何類型和形式的性能監(jiān)控服務198。性能監(jiān)控服務198可以包括監(jiān)控、測量和/或管理軟件和/或硬件,包括數(shù)據(jù)收集、集合、分析、管理和報告。在一個實施例中,性能監(jiān)控服務198包括一個或多個監(jiān)控代理197。監(jiān)控代理197包括用于在諸如客戶機102、服務器106或設備200和205的裝置上執(zhí)行監(jiān)控、測量和數(shù)據(jù)收集活動的任何軟件、硬件或其組合。在一些實施例中,監(jiān)控代理197包括諸如VisualBasic腳本或Javascript任何類型和形式的腳本。在一個實施例中,監(jiān)控代理197相對于裝置的任何應用和/或用戶透明地執(zhí)行。在一些實施例中,監(jiān)控代理197相對于應用或客戶機不顯眼地被安裝和操作。在又一個實施例中,監(jiān)控代理197的安裝和操作不需要用于該應用或裝置的任何設備。[0134]在一些實施例中,監(jiān)控代理197以預定頻率監(jiān)控、測量和收集數(shù)據(jù)。在其他實施例中,監(jiān)控代理197基于檢測到任何類型和形式的事件來監(jiān)控、測量和收集數(shù)據(jù)。例如,監(jiān)控代理197可以在檢測到對web頁面的請求或收到HTTP響應時收集數(shù)據(jù)。在另一個實例中,監(jiān)控代理197可以在檢測到諸如鼠標點擊的任一用戶輸入事件時收集數(shù)據(jù)。監(jiān)控代理197可以報告或提供任何所監(jiān)控、測量或收集的數(shù)據(jù)給監(jiān)控服務198。在一個實施例中,監(jiān)控代理197根據(jù)時間安排或預定頻率來發(fā)送信息給監(jiān)控服務198。在又一個實施例中,監(jiān)控代理197在檢測到事件時發(fā)送信息給監(jiān)控服務198。[0135]在一些實施例中,監(jiān)控服務198和/或監(jiān)控代理197對諸如客戶機、服務器、服務器群、設備200、設備205或網(wǎng)絡連接的任何網(wǎng)絡資源或網(wǎng)絡基礎結構元件的進行監(jiān)控和性能測量。在一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197執(zhí)行諸如TCP或UDP連接的任何傳輸層連接的監(jiān)控和性能測量。在又一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量網(wǎng)絡等待時間。在又一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量帶寬利用。[0136]在其他實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量終端用戶響應時間。在一些實施例中,監(jiān)控服務198執(zhí)行應用的監(jiān)控和性能測量。在又一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197執(zhí)行到應用的任何會話或連接的監(jiān)控和性能測量。在一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量瀏覽器的性能。在又一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量基于HTTP的事務的性能。在一些實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量IP電話(VoIP)應用或會話的性能。在其他實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量諸如ICA客戶機或RDP客戶機的遠程顯示協(xié)議應用的性能。在又一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量任何類型和形式的流媒體的性能。在進一步的實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量所寄載的應用或軟件即服務(Software-As-A-Service,SaaS)傳送模型的性能。[0137]在一些實施例中,監(jiān)控服務198和/或監(jiān)控代理197執(zhí)行與應用相關的一個或多個事務、請求或響應的監(jiān)控和性能測量。在其他實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量應用層堆棧的任何部分,例如任何.NET或J2EE調用。在一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量數(shù)據(jù)庫或SQL事務。在又一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量任何方法、函數(shù)或應用編程接口(API)調用。[0138]在一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197對經(jīng)由諸如設備200和/或設備205的一個或多個設備從服務器到客戶機的應用和/或數(shù)據(jù)的傳送進行監(jiān)控和性能測量。在一些實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量虛擬化應用的傳送的性能。在其他實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量流式應用的傳送的性能。在又一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量傳送桌面應用到客戶機和/或在客戶機上執(zhí)行桌面應用的性能。在又一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控和測量客戶機/服務器應用的性能。[0139]在一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197被設計和構建成為應用傳送系統(tǒng)190提供應用性能管理。例如,監(jiān)控服務198和/或監(jiān)控代理197可以監(jiān)控、測量和管理經(jīng)由Citrix表示服務器(CitrixPresentationServer)傳送應用的性能。在該實例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控單獨的ICA會話。監(jiān)控服務198和/或監(jiān)控代理197可以測量總的以及每次的會話系統(tǒng)資源使用,以及應用和連網(wǎng)性能。監(jiān)控服務198和/或監(jiān)控代理197可以對于給定用戶和/或用戶會話來標識有效服務器(activeserver).在一些實施例中,監(jiān)控服務198和/或監(jiān)控代理197監(jiān)控在應用傳送系統(tǒng)190和應用和/或數(shù)據(jù)庫服務器之間的后端連接。監(jiān)控服務198和/或監(jiān)控代理197可以測量每個用戶會話或ICA會話的網(wǎng)絡等待時間、延遲和容量。[0140]在一些實施例中,監(jiān)控服務198和/或監(jiān)控代理197測量和監(jiān)控對于應用傳送系統(tǒng)190的諸如總的存儲器使用、每個用戶會話和/或每個進程的存儲器使用。在其他實施例中,監(jiān)控服務198和/或監(jiān)控代理197測量和監(jiān)控諸如總的CPU使用、每個用戶會話和/或每個進程的應用傳送系統(tǒng)190的CPU使用。在又一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197測量和監(jiān)控登錄到諸如Citrix表示服務器的應用、服務器或應用傳送系統(tǒng)所需的時間。在一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197測量和監(jiān)控用戶登錄應用、月艮務器或應用傳送系統(tǒng)190的持續(xù)時間。在一些實施例中,監(jiān)控服務198和/或監(jiān)控代理197測量和監(jiān)控應用、服務器或應用傳送系統(tǒng)會話的有效和無效的會話計數(shù)。在又一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197測量和監(jiān)控用戶會話等待時間。[0141]在另外的實施例中,監(jiān)控服務198和/或監(jiān)控代理197測量和監(jiān)控任何類型和形式的服務器指標。在一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197測量和監(jiān)控與系統(tǒng)內(nèi)存、CPU使用和盤存儲器有關的指標。在又一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197測量和監(jiān)控和頁錯誤有關的指標,諸如每秒頁錯誤。在其他實施例中,監(jiān)控服務198和/或監(jiān)控代理197測量和監(jiān)控往返時間的指標。在又一個實施例中,監(jiān)控服務198和/或監(jiān)控代理197測量和監(jiān)控與應用崩潰、錯誤和/或中止相關的指標。[0142]在一些實施例中,監(jiān)控服務198和監(jiān)控代理198包括由位于佛羅里達州Ft.Lauderdale的CitrixSystems公司出品的被稱為EdgeSight的任何一種產(chǎn)品實施例。在又一個實施例中,性能監(jiān)控服務198和/或監(jiān)控代理198包括由位于加利福尼亞州PaloAlto的Symphoniq公司出品的被稱為TrueView產(chǎn)品套件的產(chǎn)品實施例的任一部分。在一個實施例中,性能監(jiān)控服務198和/或監(jiān)控代理198包括由位于加利福尼亞州SanFrancisco的TeaLeaf技術公司出品的被稱為TeaLeafCX產(chǎn)品套件的產(chǎn)品實施例的任何部分。在其他實施例中,性能監(jiān)控服務198和/或監(jiān)控代理198包括由位于德克薩斯州Houston的BMC軟件公司出品的諸如BMC性能管理器和巡邏產(chǎn)品(BMCPerformanceManagerandPatrolproducts)的商業(yè)服務管理產(chǎn)品的任何部分。[0143]客戶機102、服務器106和設備200可以被部署為和/或執(zhí)行在任何類型和形式的計算裝置上,諸如能夠在任何類型和形式的網(wǎng)絡上通信并執(zhí)行此處描述的操作的計算機、網(wǎng)絡裝置或者設備。圖1E和IF描述了可用于實施客戶機102、服務器106或設備200的實施例的計算裝置100的框圖。如圖1E和IF所示,每個計算裝置100包括中央處理單元101和主存儲器單元122。如圖1E所示,計算裝置100可以包括可視顯示裝置124、鍵盤126和/或諸如鼠標的指示裝置127。每個計算裝置100也可包括其它可選元件,例如一個或多個輸入/輸出裝置130a-130b(總的使用附圖標記130表示),以及與中央處理單元101通信的高速緩存存儲器140。[0144]中央處理單元101是響應并處理從主存儲器單元122取出的指令的任何邏輯電路。在許多實施例中,中央處理單元由微處理器單元提供,例如:由加利福尼亞州MountainView的Intel公司制造的微處理器單元;由伊利諾伊州Schaumburg的Motorola公司制造的微處理器單元;由加利福尼亞州SantaClara的Transmeta公司制造的微處理器單元;由紐約州WhitePlains的InternationalBusinessMachines公司制造的RS/6000處理器;或者由加利福尼亞州Sunnyvale的AdvancedMicroDevices公司制造的微處理器單元。計算裝置100可以基于這些處理器中的任何一種,或者能夠如此處所述方式運行的任何其它處理器。[0145]主存儲器單元122可以是能夠存儲數(shù)據(jù)并允許微處理器101直接訪問任何存儲位置的一個或多個存儲器芯片,例如靜態(tài)隨機存取存儲器(SRAM)、突發(fā)SRAM或同步突發(fā)SRAM(BSRAM)、動態(tài)隨機存取存儲器DRAM、快速頁模式DRAM(FPMDRAM)、增強型DRAM(EDRAM)、擴展數(shù)據(jù)輸出RAM(EDORAM)、擴展數(shù)據(jù)輸出DRAM(EDODRAM)、突發(fā)式擴展數(shù)據(jù)輸出DRAM(BEDODRAM)、增強型DRAM(EDRAM)、同步DRAM(SDRAM),JEDECSRAM、PC100SDRAM、雙數(shù)據(jù)速率SDRAM(DDRSDRAM)、增強型SRAM(ESDRAM)、同步鏈路DRAM(SLDRAM)、直接內(nèi)存總線DRAM(DRDRAM)或鐵電RAM(FRAM)0主存儲器122可以基于上述存儲芯片的任何一種,或者能夠如此處所述方式運行的任何其它可用存儲芯片。在圖1E中所示的實施例中,處理器101通過系統(tǒng)總線150(在下面進行更詳細的描述)與主存儲器122進行通信。圖1E描述了在其中處理器通過存儲器端口103直接與主存儲器122通信的計算裝置100的實施例。例如,在圖1F中,主存儲器122可以是DRDRAM。[0146]圖1F描述了在其中主處理器101通過第二總線與高速緩存存儲器140直接通信的實施例,第二總線有時也稱為后端總線。其他實施例中,主處理器101使用系統(tǒng)總線150和高速緩存存儲器140通信。高速緩存存儲器140通常有比主存儲器122更快的響應時間,并且通常由SRAM、BSRAM或EDRAM提供。在圖1F中所示的實施例中,處理器101通過本地系統(tǒng)總線150與多個I/O裝置130進行通信??梢允褂酶鞣N不同的總線將中央處理單元101連接到任何I/O裝置130,所述總線包括VESAVL總線、ISA總線、EISA總線、微通道體系結構(MCA)總線、PCI總線、PC1-X總線、PC1-Express總線或NuBus。對于I/O裝置是視頻顯示器124的實施例,處理器101可以使用高級圖形端口(AGP)與顯示器124通信。圖1F說明了主處理器101通過超傳輸(HyperTransport)、快速I/O或者InfiniBand直接與I/O裝置130通信的計算機100的一個實施例。圖1F還描述了在其中混合本地總線和直接通信的實施例:處理器101使用本地互連總線與I/O裝置130b進行通信,同時直接與I/O裝置130a進行通信。[0147]計算裝置100可以支持任何適當?shù)陌惭b裝置116,例如用于接納諸如3.5英寸、5.25英寸磁盤或ZIP磁盤這樣的軟盤的軟盤驅動器、⑶-ROM驅動器、⑶-R/RW驅動器、DVD-ROM驅動器、各種格式的磁帶驅動器、USB裝置、硬盤驅動器或適于安裝像任何客戶機代理120或其部分的軟件和程序的任何其它裝置。計算裝置100還可以包括存儲裝置128,諸如一個或者多個硬盤驅動器或者獨立磁盤冗余陣列,用于存儲操作系統(tǒng)和其它相關軟件,以及用于存儲諸如涉及客戶機代理120的任何程序的應用軟件程序?;蛘?,可以使用安裝裝置116的任何一種作為存儲裝置128。此外,操作系統(tǒng)和軟件可從例如可引導⑶的可弓I導介質運行,諸如KNOPPIX?,一種用于GNU/Linux的可引導CD,該可引導CD可自knoppix.net作為GNU/Linux—個分發(fā)版獲得。[0148]此外,計算裝置100可以包括通過多種連接接口到局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)或因特網(wǎng)的網(wǎng)絡接口118,所述多種連接包括但不限于標準電話線路、LAN或WAN鏈路(例如802.ll,Tl,T3、56kb、X.25)、寬帶連接(如ISDN、幀中繼、ATM)、無線連接、或上述任何或所有連接的一些組合。網(wǎng)絡接口118可以包括內(nèi)置網(wǎng)絡適配器、網(wǎng)絡接口卡、PCMCIA網(wǎng)絡卡、卡總線網(wǎng)絡適配器、無線網(wǎng)絡適配器、USB網(wǎng)絡適配器、調制解調器或適用于將計算裝置100接口到能夠通信并執(zhí)行這里所說明的操作的任何類型的網(wǎng)絡的任何其它設備。[0149]計算裝置100中可以包括各種I/O裝置130a_130n。輸入裝置包括鍵盤、鼠標、觸控板、軌跡球、麥克風和繪圖板。輸出裝置包括視頻顯示器、揚聲器、噴墨打印機、激光打印機和熱升華打印機。如圖1E所示,I/O裝置130可以由I/O控制器123控制。I/O控制器可以控制一個或多個I/O裝置,例如鍵盤126和指示裝置127(如鼠標或光筆)。此外,I/O裝置還可以為計算裝置100提供存儲裝置128和/或安裝介質116。在其他實施例中,計算裝置100可以提供USB連接以接納手持USB存儲裝置,例如由位于美國加利福尼亞州LosAlamitos的TwintechIndustry有限公司生產(chǎn)的USB閃存驅動驅動系列裝置。[0150]在一些實施例中,計算裝置100可以包括多個顯示裝置124a_124n或與其相連,這些顯示裝置各自可以是相同或不同的類型和/或形式。因而,任何一種I/O裝置130a-130n和/或I/O控制器123可以包括任一類型和/或形式的適當?shù)挠布?、軟件或硬件和軟件的組合,以支持、允許或提供通過計算裝置100連接和使用多個顯示裝置124a-124n。例如,計算裝置100可以包括任何類型和/或形式的視頻適配器、視頻卡、驅動器和/或庫,以與顯示裝置124a-124n接口、通信、連接或以其他方式使用顯示裝置。在一個實施例中,視頻適配器可以包括多個連接器以與多個顯示裝置124a-124n接口。在其他實施例中,計算裝置100可以包括多個視頻適配器,每個視頻適配器與顯示裝置124a-124n中的一個或多個連接。在一些實施例中,計算裝置100的操作系統(tǒng)的任一部分都可以被配置用于使用多個顯示器124a-124n。在其他實施例中,顯示裝置124a_124n中的一個或多個可以由一個或多個其它計算裝置提供,諸如例如通過網(wǎng)絡與計算裝置100連接的計算裝置IOOa和100b。這些實施例可以包括被設計和構造為將另一個計算機的顯示裝置用作計算裝置100的第二顯示裝置124a的任一類型的軟件。本領域的普通技術人員應認識和理解可以將計算裝置100配置成具有多個顯示裝置124a-124n的各種方法和實施例。[0151]在另外的實施例中,I/O裝置130可以是系統(tǒng)總線150和外部通信總線之間的橋170,所述外部通信總線例如USB總線、Apple桌面總線、RS-232串行連接、SCSI總線、FireWire總線、Fireffire800總線、以太網(wǎng)總線、AppleTalk總線、千兆位以太網(wǎng)總線、異步傳輸模式總線、HIPPI總線、超級HIPPI總線、SerialPlus總線、SCI/LAMP總線、光纖信道總線或串行SCSI總線。[0152]圖1E和IF中描述的那類計算裝置100通常在控制任務的調度和對系統(tǒng)資源的訪問的操作系統(tǒng)的控制下操作。計算裝置100可以運行任何操作系統(tǒng),如Microsoft?Windows操作系統(tǒng),不同發(fā)行版本的Unix和Linux操作系統(tǒng),用于Macintosh計算機的任何版本的MACOS?,任何嵌入式操作系統(tǒng),任何實時操作系統(tǒng),任何開源操作系統(tǒng),任何專有操作系統(tǒng),任何用于移動計算裝置的操作系統(tǒng),或者任何其它能夠在計算裝置上運行并完成這里所述操作的操作系統(tǒng)。典型的操作系統(tǒng)包括:WIND0WS3.X、WIND0WS95、WIND0WS98、WIND0WS2000,WINDOWSΝΤ3.51、WINDOWSΝΤ4.0、WINDOWSCE和WINDOWSXP,所有這些均由位于華盛頓州Redmond的微軟公司出品;由位于加利福尼亞州Cupertino的蘋果計算機出品的MacOS;由位于紐約州Armonk的國際商業(yè)機器公司出品的OS/2;以及由位于猶他州SaltLakeCity的Caldera公司發(fā)布的可免費使用的Linux操作系統(tǒng)或者任何類型和/或形式的Unix操作系統(tǒng),以及其它。[0153]在其他的實施例中,計算裝置100可以有符合該裝置的不同的處理器、操作系統(tǒng)和輸入設備。例如,在一個實施例中,計算機100是由Palm公司出品的Treol80、270、1060、600或650智能電話。在該實施例中,Treo智能電話在PalmOS操作系統(tǒng)的控制下操作,并包括指示筆輸入裝置以及五向導航裝置。此外,計算裝置100可以是任何工作站、桌面計算機、膝上型或筆記本計算機、服務器、手持計算機、移動電話、任何其它計算機、或能夠通信并有足夠的處理器能力和存儲容量以執(zhí)行此處所述的操作的其它形式的計算或者電信裝置。[0154]如圖1G所示,計算裝置100可以包括多個處理器,可以提供用于對不只一個數(shù)據(jù)片同時執(zhí)行多個指令或者同時執(zhí)行一個指令的功能。在一些實施例中,計算裝置100可包括具有一個或多個核的并行處理器。在這些實施例的一個中,計算裝置100是共享內(nèi)存并行設備,具有多個處理器和/或多個處理器核,將所有可用內(nèi)存作為一個全局地址空間進行訪問。在這些實施例的又一個中,計算裝置100是分布式存儲器并行設備,具有多個處理器,每個處理器訪問本地存儲器。在這些實施例的又一個中,計算裝置100既有共享的存儲器又有僅由特定處理器或處理器子集訪問的存儲器。在這些實施例的又一個中,如多核微處理器的計算裝置100將兩個或多個獨立處理器組合在一個封裝中,通常在一個集成電路(IC)中。在這些實施例的又一個中,計算裝置100包括具有單元寬帶引擎(CELLBROADBANDENGINE)架構的芯片,并包括高能處理器單元以及多個協(xié)同處理單元,高能處理器單元和多個協(xié)同處理單元通過內(nèi)部高速總線連接在一起,可以將內(nèi)部高速總線稱為單元互連總線。[0155]在一些實施例中,處理器提供用于對多個數(shù)據(jù)片同時執(zhí)行單個指令(SMD)的功能。其他實施例中,處理器提供用于對多個數(shù)據(jù)片同時執(zhí)行多個指令(MMD)的功能。又一個實施例中,處理器可以在單個裝置中使用SMD和MMD核的任意組合。[0156]在一些實施例中,計算裝置100可包括圖像處理單元。圖1H所示的在這些實施例的一個中,計算裝置100包括至少一個中央處理單元101和至少一個圖像處理單元。在這些實施例的又一個中,計算裝置100包括至少一個并行處理單元和至少一個圖像處理單元。在這些實施例的又一個中,計算裝置100包括任意類型的多個處理單元,多個處理單元中的一個包括圖像處理單元。[0157]一些實施例中,第一計算裝置IOOa代表客戶計算裝置IOOb的用戶執(zhí)行應用。又一個實施例中,計算裝置100執(zhí)行虛擬機,其提供執(zhí)行會話,在該會話中,代表客戶計算裝置IOOb的用戶執(zhí)行應用。在這些實施例的一個中,執(zhí)行會話是寄載的桌面會話。在這些實施例的又一個中,計算裝置100執(zhí)行終端服務會話。終端服務會話可以提供寄載的桌面環(huán)境。在這些實施例的又一個中,執(zhí)行會話提供對計算環(huán)境的訪問,該計算環(huán)境可包括以下的一個或多個:應用、多個應用、桌面應用以及可執(zhí)行一個或多個應用的桌面會話。[0158]B.設各架構[0159]圖2A示出設備200的一個示例實施例。提供圖2A的設備200架構僅用于示例,并不意于作為限制性的架構。如圖2所示,設備200包括硬件層206和被分為用戶空間202和內(nèi)核空間204的軟件層。[0160]硬件層206提供硬件元件,在內(nèi)核空間204和用戶空間202中的程序和服務在該硬件元件上被執(zhí)行。硬件層206也提供結構和元件,就設備200而言,這些結構和元件允許在內(nèi)核空間204和用戶空間202內(nèi)的程序和服務既在內(nèi)部進行數(shù)據(jù)通信又與外部進行數(shù)據(jù)通信。如圖2所示,硬件層206包括用于執(zhí)行軟件程序和服務的處理單元262,用于存儲軟件和數(shù)據(jù)的存儲器264,用于通過網(wǎng)絡傳輸和接收數(shù)據(jù)的網(wǎng)絡端口266,以及用于執(zhí)行與安全套接字協(xié)議層相關的功能處理通過網(wǎng)絡傳輸和接收的數(shù)據(jù)的加密處理器260。在一些實施例中,中央處理單元262可在單獨的處理器中執(zhí)行加密處理器260的功能。另外,硬件層206可包括用于每個處理單元262和加密處理器260的多處理器。處理器262可以包括以上結合圖1E和IF所述的任一處理器101。例如,在一個實施例中,設備200包括第一處理器262和第二處理器262’。在其他實施例中,處理器262或者262’包括多核處理器。[0161]雖然示出的設備200的硬件層206通常帶有加密處理器260,但是處理器260可為執(zhí)行涉及任何加密協(xié)議的功能的處理器,例如安全套接字協(xié)議層(SSL)或者傳輸層安全(TLS)協(xié)議。在一些實施例中,處理器260可為通用處理器(GPP),并且在進一步的實施例中,可為用于執(zhí)行任何安全相關協(xié)議處理的可執(zhí)行指令。[0162]雖然圖2中設備200的硬件層206包括了某些元件,但是設備200的硬件部分或組件可包括計算裝置的任何類型和形式的元件、硬件或軟件,例如此處結合圖1E和IF示出和討論的計算裝置100。在一些實施例中,設備200可包括服務器、網(wǎng)關、路由器、開關、橋接器或其它類型的計算或網(wǎng)絡設備,并且擁有與此相關的任何硬件和/或軟件元件。[0163]設備200的操作系統(tǒng)分配、管理或另外分離可用的系統(tǒng)存儲器到內(nèi)核空間204和用戶空間204。在示例的軟件架構200中,操作系統(tǒng)可以是任何類型和/或形式的Unix操作系統(tǒng),盡管本發(fā)明并未這樣限制。這樣,設備200可以運行任何操作系統(tǒng),如任何版本的Microsoft?Windows操作系統(tǒng)、不同版本的Unix和Linux操作系統(tǒng)、用于Macintosh計算機的任何版本的MacOS?、任何的嵌入式操作系統(tǒng)、任何的網(wǎng)絡操作系統(tǒng)、任何的實時操作系統(tǒng)、任何的開放源操作系統(tǒng)、任何的專用操作系統(tǒng)、用于移動計算裝置或網(wǎng)絡裝置的任何操作系統(tǒng)、或者能夠運行在設備200上并執(zhí)行此處所描述的操作的任何其它操作系統(tǒng)。[0164]保留內(nèi)核空間204用于運行內(nèi)核230,內(nèi)核230包括任何設備驅動器,內(nèi)核擴展或其他內(nèi)核相關軟件。就像本領域技術人員所知的,內(nèi)核230是操作系統(tǒng)的核心,并提供對資源以及設備104的相關硬件元件的訪問、控制和管理。根據(jù)設備200的實施例,內(nèi)核空間204也包括與高速緩存管理器232協(xié)同工作的多個網(wǎng)絡服務或進程,高速緩存管理器232有時也稱為集成的高速緩存,其益處此處將進一步詳細描述。另外,內(nèi)核230的實施例將依賴于通過設備200安裝、配置或其他使用的操作系統(tǒng)的實施例。[0165]在一個實施例中,設備200包括一個網(wǎng)絡堆棧267,例如基于TCP/IP的堆棧,用于與客戶機102和/或服務器106通信。在一個實施例中,使用網(wǎng)絡堆棧267與第一網(wǎng)絡(例如網(wǎng)絡108)以及第二網(wǎng)絡110通信。在一些實施例中,設備200終止第一傳輸層連接,例如客戶機102的TCP連接,并建立客戶機102使用的到服務器106的第二傳輸層連接,例如,終止在設備200和服務器106的第二傳輸層連接。可通過單獨的網(wǎng)絡堆棧267建立第一和第二傳輸層連接。在其他實施例中,設備200可包括多個網(wǎng)絡堆棧,例如267或267’,并且在一個網(wǎng)絡堆棧267可建立或終止第一傳輸層連接,在第二網(wǎng)絡堆棧267’上可建立或者終止第二傳輸層連接。例如,一個網(wǎng)絡堆??捎糜谠诘谝痪W(wǎng)絡上接收和傳輸網(wǎng)絡分組,并且另一個網(wǎng)絡堆棧用于在第二網(wǎng)絡上接收和傳輸網(wǎng)絡分組。在一個實施例中,網(wǎng)絡堆棧267包括用于為一個或多個網(wǎng)絡分組進行排隊的緩沖器243,其中網(wǎng)絡分組由設備200傳輸。[0166]如圖2A所示,內(nèi)核空間204包括高速緩存管理器232、高速層2-7集成分組引擎240、加密引擎234、策略引擎236以及多協(xié)議壓縮邏輯238。在內(nèi)核空間204或內(nèi)核模式而不是用戶空間202中運行這些組件或進程232、240、234、236和238提高這些組件中的每個單獨的和結合的性能。內(nèi)核操作意味著這些組件或進程232、240、234、236和238在設備200的操作系統(tǒng)的核地址空間中運行。例如,在內(nèi)核模式中運行加密引擎234通過移動加密和解密操作到內(nèi)核可改進加密性能,從而可減少在內(nèi)核模式中的存儲空間或內(nèi)核線程與在用戶模式中的存儲空間或線程之間的傳輸?shù)臄?shù)量。例如,在內(nèi)核模式獲得的數(shù)據(jù)可能不需要傳輸或拷貝到運行在用戶模式的進程或線程,例如從內(nèi)核級數(shù)據(jù)結構到用戶級數(shù)據(jù)結構。在另一個方面,也可減少內(nèi)核模式和用戶模式之間的上下文切換的數(shù)量。另外,在任何組件或進程232、240、235、236和238間的同步和通信在內(nèi)核空間204中可被執(zhí)行的更有效率。[0167]在一些實施例中,組件232、240、234、236和238的任何部分可在內(nèi)核空間204中運行或操作,而這些組件232、240、234、236和238的其它部分可在用戶空間202中運行或操作。在一個實施例中,設備200使用內(nèi)核級數(shù)據(jù)結構來提供對一個或多個網(wǎng)絡分組的任何部分的訪問,例如,包括來自客戶機102的請求或者來自服務器106的響應的網(wǎng)絡分組。在一些實施例中,可以由分組引擎240通過到網(wǎng)絡堆棧267的傳輸層驅動器接口或過濾器獲得內(nèi)核級數(shù)據(jù)結構。內(nèi)核級數(shù)據(jù)結構可包括通過與網(wǎng)絡堆棧267相關的內(nèi)核空間204可訪問的任何接口和/或數(shù)據(jù)、由網(wǎng)絡堆棧267接收或發(fā)送的網(wǎng)絡流量或分組。在其他實施例中,任何組件或進程232、240、234、236和238可使用內(nèi)核級數(shù)據(jù)結構來執(zhí)行組件或進程的需要的操作。在一個實例中,當使用內(nèi)核級數(shù)據(jù)結構時,組件232、240、234、236和238在內(nèi)核模式204中運行,而在又一個實施例中,當使用內(nèi)核級數(shù)據(jù)結構時,組件232、240、234、236和238在用戶模式中運行。在一些實施例中,內(nèi)核級數(shù)據(jù)結構可被拷貝或傳遞到第二內(nèi)核級數(shù)據(jù)結構,或任何期望的用戶級數(shù)據(jù)結構。[0168]高速緩存管理器232可包括軟件、硬件或軟件和硬件的任何組合,以提供對任何類型和形式的內(nèi)容的高速緩存訪問、控制和管理,例如對象或由源服務器106提供服務的動態(tài)產(chǎn)生的對象。由高速緩存管理器232處理和存儲的數(shù)據(jù)、對象或內(nèi)容可包括任何格式(例如標記語言)的數(shù)據(jù),或者通過任何協(xié)議的通信的任何類型的數(shù)據(jù)。在一些實施例中,高速緩存管理器232復制存儲在其他地方的原始數(shù)據(jù)或先前計算、產(chǎn)生或傳輸?shù)臄?shù)據(jù),其中相對于讀高速緩存存儲器元件,需要更長的訪問時間以取得、計算或以其他方式得到原始數(shù)據(jù)。一旦數(shù)據(jù)被存儲在高速緩存存儲元件中,通過訪問高速緩存的副本而不是重新獲得或重新計算原始數(shù)據(jù)即可進行后續(xù)操作,因此而減少了訪問時間。在一些實施例中,高速緩存元件可以包括設備200的存儲器264中的數(shù)據(jù)對象。在其他實施例中,高速緩存存儲元件可包括有比存儲器264更快的存取時間的存儲器。在又一個實施例中,高速緩存元件可以包括設備200的任一類型和形式的存儲元件,諸如硬盤的一部分。在一些實施例中,處理單元262可提供被高速緩存管理器232使用的高速緩存存儲器。在又一個實施例中,高速緩存管理器232可使用存儲器、存儲區(qū)或處理單元的任何部分和組合來高速緩存數(shù)據(jù)、對象或其它內(nèi)容。[0169]另外,高速緩存管理器232包括用于執(zhí)行此處描述的設備200的技術的任一實施例的任何邏輯、功能、規(guī)則或操作。例如,高速緩存管理器232包括基于無效時間周期的終止,或者從客戶機102或服務器106接收無效命令使對象無效的邏輯或功能。在一些實施例中,高速緩存管理器232可作為在內(nèi)核空間204中執(zhí)行的程序、服務、進程或任務而操作,并且在其他實施例中,在用戶空間202中執(zhí)行。在一個實施例中,高速緩存管理器232的第一部分在用戶空間202中執(zhí)行,而第二部分在內(nèi)核空間204中執(zhí)行。在一些實施例中,高速緩存管理器232可包括任何類型的通用處理器(GPP),或任何其他類型的集成電路,例如現(xiàn)場可編程門陣列(FPGA),可編程邏輯設備(PLD),或者專用集成電路(ASIC)。[0170]策略引擎236可包括例如智能統(tǒng)計引擎或其它可編程應用。在一個實施例中,策略引擎236提供配置機制以允許用戶識別、指定、定義或配置高速緩存策略。策略引擎236,在一些實施例中,也訪問存儲器以支持數(shù)據(jù)結構,例如備份表或hash表,以啟用用戶選擇的高速緩存策略決定。在其他實施例中,除了對安全、網(wǎng)絡流量、網(wǎng)絡訪問、壓縮或其它任何由設備200執(zhí)行的功能或操作的訪問、控制和管理之外,策略引擎236可包括任何邏輯、規(guī)貝U、功能或操作以確定和提供對設備200所高速緩存的對象、數(shù)據(jù)、或內(nèi)容的訪問、控制和管理。特定高速緩存策略的其他實施例此處進一步描述。[0171]加密引擎234包括用于操控諸如SSL或TLS的任何安全相關協(xié)議或其中涉及的任何功能的處理的任何邏輯、商業(yè)規(guī)則、功能或操作。例如,加密引擎234加密并解密通過設備200傳輸?shù)木W(wǎng)絡分組,或其任何部分。加密引擎234也可代表客戶機102a-102n、服務器106a-106n或設備200來設置或建立SSL或TLS連接。因此,加密引擎234提供SSL處理的卸載和加速。在一個實施例中,加密引擎234使用隧道協(xié)議來提供在客戶機102a-102n和服務器106a-106n間的虛擬專用網(wǎng)絡。在一些實施例中,加密引擎234與加密處理器260通信。在其他實施例中,加密引擎234包括運行在加密處理器260上的可執(zhí)行指令。[0172]多協(xié)議壓縮引擎238包括用于壓縮一個或多個網(wǎng)絡分組協(xié)議(例如被設備200的網(wǎng)絡堆棧267使用的任何協(xié)議)的任何邏輯、商業(yè)規(guī)則、功能或操作。在一個實施例中,多協(xié)議壓縮引擎238雙向壓縮在客戶機102a-102n和服務器106a_106n間任一基于TCP/IP的協(xié)議,包括消息應用編程接口(MAPI)(電子郵件)、文件傳輸協(xié)議(FTP)、超文本傳輸協(xié)議(HTTP)、通用互聯(lián)網(wǎng)文件系統(tǒng)(CIFS)協(xié)議(文件傳輸)、獨立計算架構(ICA)協(xié)議、遠程桌面協(xié)議(RDP)、無線應用協(xié)議(WAP)、移動IP協(xié)議以及互聯(lián)網(wǎng)協(xié)議電話(VoIP)協(xié)議。在其他實施例中,多協(xié)議壓縮引擎238提供基于超文本標記語言(HTML)的協(xié)議的壓縮,并且在一些實施例中,提供任何標記語言的壓縮,例如可擴展標記語言(XML)。在一個實施例中,多協(xié)議壓縮引擎238提供任何高性能協(xié)議的壓縮,例如設計用于設備200到設備200通信的任何協(xié)議。在又一個實施例中,多協(xié)議壓縮引擎238使用修改的傳輸控制協(xié)議來壓縮任何通信的任何載荷或任何通信,例如事務TCP(T/TCP)、帶有選擇確認的TCP(TCP-SACK)、帶有大窗口的TCP(TCP-LW)、例如TCP-Vegas協(xié)議的擁塞預報協(xié)議以及TCP欺騙協(xié)議(TCPspoofingprotocol)0[0173]同樣的,多協(xié)議壓縮引擎238為用戶加速經(jīng)由桌面客戶機乃至移動客戶機訪問應用的性能,所述桌面客戶機例如MicosoftOutlook和非web瘦客戶機,諸如由像Oracle、SAP和Siebel的通用企業(yè)應用所啟動的任何客戶機,所述移動客戶機例如掌上電腦。在一些實施例中,通過在內(nèi)核模式204內(nèi)部執(zhí)行并與訪問網(wǎng)絡堆棧267的分組處理引擎240集成,多協(xié)議壓縮引擎238可以壓縮TCP/IP協(xié)議攜帶的任何協(xié)議,例如任何應用層協(xié)議。[0174]高速層2-7集成分組引擎240,通常也稱為分組處理引擎,或分組引擎,負責設備200通過網(wǎng)絡端口266接收和發(fā)送的分組的內(nèi)核級處理的管理。高速層2-7集成分組引擎240可包括用于在例如接收網(wǎng)絡分組和傳輸網(wǎng)絡分組的處理期間排隊一個或多個網(wǎng)絡分組的緩沖器。另外,高速層2-7集成分組引擎240與一個或多個網(wǎng)絡堆棧267通信以通過網(wǎng)絡端口266發(fā)送和接收網(wǎng)絡分組。高速層2-7集成分組引擎240與加密引擎234、高速緩存管理器232、策略引擎236和多協(xié)議壓縮邏輯238協(xié)同工作。更具體地,配置加密引擎234以執(zhí)行分組的SSL處理,配置策略引擎236以執(zhí)行涉及流量管理的功能,例如請求級內(nèi)容切換以及請求級高速緩存重定向,并配置多協(xié)議壓縮邏輯238以執(zhí)行涉及數(shù)據(jù)壓縮和解壓縮的功能。[0175]高速層2-7集成分組引擎240包括分組處理定時器242。在一個實施例中,分組處理定時器242提供一個或多個時間間隔以觸發(fā)輸入處理,例如,接收或者輸出(即傳輸)網(wǎng)絡分組。在一些實施例中,高速層2-7集成分組引擎240響應于定時器242處理網(wǎng)絡分組。分組處理定時器242向分組引擎240提供任何類型和形式的信號以通知、觸發(fā)或傳輸時間相關的事件、間隔或發(fā)生。在許多實施例中,分組處理定時器242以毫秒級操作,例如100ms、50ms、或25ms。例如,在一些實例中,分組處理定時器242提供時間間隔或者以其它方式使得由高速層2-7集成分組引擎240以IOms時間間隔處理網(wǎng)絡分組,而在其他實施例中,使高速層2-7集成分組引擎240以5ms時間間隔處理網(wǎng)絡分組,并且在進一步的實施例中,短到3、2或Ims時間間隔。高速層2-7集成分組引擎240在操作期間可與加密引擎234、高速緩存管理器232、策略引擎236以及多協(xié)議壓縮引擎238連接、集成或通信。因此,響應于分組處理定時器242和/或分組引擎240,可執(zhí)行加密引擎234、高速緩存管理器232、策略引擎236以及多協(xié)議壓縮引擎238的任何邏輯、功能或操作。因此,在由分組處理定時器242提供的時間間隔粒度,可執(zhí)行加密引擎234、高速緩存管理器232、策略引擎236以及多協(xié)議壓縮引擎238的任何邏輯、功能或操作,例如,時間間隔少于或等于10ms。例如,在一個實施例中,高速緩存管理器232可響應于高速層2-7集成分組引擎240和/或分組處理定時器242來執(zhí)行任何高速緩存的對象的終止。在又一個實施例中,高速緩存的對象的終止或無效時間被設定為與分組處理定時器242的時間間隔相同的粒度級,例如每10ms。[0176]與內(nèi)核空間204不同,用戶空間202是被用戶模式應用或在用戶模式運行的程序所使用的操作系統(tǒng)的存儲區(qū)域或部分。用戶模式應用不能直接訪問內(nèi)核空間204而使用服務調用以訪問內(nèi)核服務。如圖2所示,設備200的用戶空間202包括圖形用戶接口(⑶I)210、命令行接口(CLI)212、殼服務(shellservice)214、健康監(jiān)控程序216以及守護(daemon)服務218。⑶1210和CLI212提供系統(tǒng)管理員或其他用戶可與之交互并控制設備200操作的裝置,例如通過設備200的操作系統(tǒng)。⑶1210和CLI212可包括運行在用戶空間202或內(nèi)核框架204中的代碼。GUI210可以是任何類型或形式的圖形用戶接口,可以通過文本、圖形或其他形式由任何類型的程序或應用(如瀏覽器)來呈現(xiàn)。CLI212可為任何類型和形式的命令行或基于文本的接口,例如通過操作系統(tǒng)提供的命令行。例如,CLI212可包括殼,該殼是使用戶與操作系統(tǒng)相互作用的工具。在一些實施例中,可通過bash、csh、tcsh或者ksh類型的殼提供CLI212。殼服務214包括程序、服務、任務、進程或可執(zhí)行指令以支持由用戶通過⑶1210和/或CLI212的與設備200或者操作系統(tǒng)的交互[0177]健康監(jiān)控程序216用于監(jiān)控、檢查、報告并確保網(wǎng)絡系統(tǒng)正常運行,以及用戶正通過網(wǎng)絡接收請求的內(nèi)容。健康監(jiān)控程序216包括一個或多個程序、服務、任務、進程或可執(zhí)行指令,為監(jiān)控設備200的任何行為提供邏輯、規(guī)則、功能或操作。在一些實施例中,健康監(jiān)控程序216攔截并檢查通過設備200傳遞的任何網(wǎng)絡流量。在其他實施例中,健康監(jiān)控程序216通過任何合適的方法和/或機制與一個或多個下述設備連接:加密引擎234,高速緩存管理器232,策略引擎236,多協(xié)議壓縮邏輯238,分組引擎240,守護服務218以及殼服務214。因此,健康監(jiān)控程序216可調用任何應用編程接口(API)以確定設備200的任何部分的狀態(tài)、情況或健康。例如,健康監(jiān)控程序216可周期性地查驗(ping)或發(fā)送狀態(tài)查詢以檢查程序、進程、服務或任務是否活動并當前正在運行。在又一個實施例中,健康監(jiān)控程序216可檢查由任何程序、進程、服務或任務提供的任何狀態(tài)、錯誤或歷史日志以確定設備200任何部分的任何狀況、狀態(tài)或錯誤。[0178]守護服務218是連續(xù)運行或在背景中運行的程序,并且處理設備200接收的周期性服務請求。在一些實施例中,守護服務可向其他程序或進程(例如合適的另一個守護服務218)轉發(fā)請求。如本領域技術人員所公知的,守護服務218可無人監(jiān)護的運行,以執(zhí)行連續(xù)的或周期性的系統(tǒng)范圍功能,例如網(wǎng)絡控制,或者執(zhí)行任何需要的任務。在一些實施例中,一個或多個守護服務218運行在用戶空間202中,而在其他實施例中,一個或多個守護服務218運行在內(nèi)核空間。[0179]現(xiàn)參考圖2B,描述了設備200的又一個實施例。總的來說,設備200提供下列服務、功能或操作中的一個或多個:用于一個或多個客戶機102以及一個或多個服務器106之間的通信的SSLVPN連通280、交換/負載平衡284、域名服務解析286、加速288和應用防火墻290。服務器106的每一個可以提供一個或者多個網(wǎng)絡相關服務270a-270n(稱為服務270)。例如,服務器106可以提供http服務270。設備200包括一個或者多個虛擬服務器或者虛擬互聯(lián)網(wǎng)協(xié)議服務器,稱為VSerVer275、vS275、VIP服務器或者僅是VIP275a_275n(此處也稱為vServer275)。vServer275根據(jù)設備200的配置和操作來接收、攔截或者以其它方式處理客戶機102和服務器106之間的通信。[0180]vServer275可以包括軟件、硬件或者軟件和硬件的任何組合。vServer275可包括在設備200中的用戶模式202、內(nèi)核模式204或者其任何組合中運行的任何類型和形式的程序、服務、任務、進程或者可執(zhí)行指令。vServer275包括任何邏輯、功能、規(guī)則或者操作,以執(zhí)行此處所述技術的任何實施例,諸如SSLVPN280、轉換/負載平衡284、域名服務解析286、加速288和應用防火墻290。在一些實施例中,vServer275建立到服務器106的服務270的連接。服務275可以包括能夠連接到設備200、客戶機102或者vServer275并與之通信的任何程序、應用、進程、任務或者可執(zhí)行指令集。例如,服務275可以包括web服務器、http服務器、ftp、電子郵件或者數(shù)據(jù)庫服務器。在一些實施例中,服務270是守護進程或者網(wǎng)絡驅動器,用于監(jiān)聽、接收和/或發(fā)送應用的通信,諸如電子郵件、數(shù)據(jù)庫或者企業(yè)應用。在一些實施例中,服務270可以在特定的IP地址、或者IP地址和端口上通信。[0181]在一些實施例中,vServer275應用策略引擎236的一個或者多個策略到客戶機102和服務器106之間的網(wǎng)絡通信。在一個實施例中,該策略與VSerVer275相關。在又一個實施例中,該策略基于用戶或者用戶組。在又一個實施例中,策略為通用的并且應用到一個或者多個vServer275a-275n,和通過設備200通信的任何用戶或者用戶組。在一些實施例中,策略引擎的策略具有基于通信的任何內(nèi)容應用該策略的條件,通信的內(nèi)容諸如互聯(lián)網(wǎng)協(xié)議地址、端口、協(xié)議類型、分組中的頭部或者字段、或者通信的上下文,諸如用戶、用戶組、VSerVer275、傳輸層連接、和/或客戶機102或者服務器106的標識或者屬性。[0182]在其他實施例中,設備200與策略引擎236通信或接口,以便確定遠程用戶或遠程客戶機102的驗證和/或授權,以訪問來自服務器106的計算環(huán)境15、應用和/或數(shù)據(jù)文件。在又一個實施例中,設備200與策略引擎236通信或交互,以便確定遠程用戶或遠程客戶機102的驗證和/或授權,使得應用傳送系統(tǒng)190傳送一個或多個計算環(huán)境15、應用和/或數(shù)據(jù)文件。在又一個實施例中,設備200基于策略引擎236對遠程用戶或遠程客戶機102的驗證和/或授權建立VPN或SSLVPN連接。一個實施例中,設備200基于策略引擎236的策略控制網(wǎng)絡流量以及通信會話。例如,基于策略引擎236,設備200可控制對計算環(huán)境15、應用或數(shù)據(jù)文件的訪問。[0183]在一些實施例中,vServer275與客戶機102經(jīng)客戶機代理120建立傳輸層連接,諸如TCP或者UDP連接。在一個實施例中,vServer275監(jiān)聽和接收來自客戶機102的通信。在其他實施例中,vServer275與客戶機服務器106建立傳輸層連接,諸如TCP或者UDP連接。在一個實施例中,vServer275建立到運行在服務器106上的服務器270的互聯(lián)網(wǎng)協(xié)議地址和端口的傳輸層連接。在又一個實施例中,vServer275將到客戶機102的第一傳輸層連接與到服務器106的第二傳輸層連接相關聯(lián)。在一些實施例中,VSerVer275建立到服務器106的傳輸層連接池并經(jīng)由所述池化(pooled)的傳輸層連接多路復用客戶機的請求。[0184]在一些實施例中,設備200提供客戶機102和服務器106之間的SSLVPN連接280。例如,第一網(wǎng)絡102上的客戶機102請求建立到第二網(wǎng)絡104’上的服務器106的連接。在一些實施例中,第二網(wǎng)絡104’是不能從第一網(wǎng)絡104路由的。在其他實施例中,客戶機102位于公用網(wǎng)絡104上,并且服務器106位于專用網(wǎng)絡104’上,例如企業(yè)網(wǎng)。在一個實施例中,客戶機代理120攔截第一網(wǎng)絡104上的客戶機102的通信,加密該通信,并且經(jīng)第一傳輸層連接發(fā)送該通信到設備200。設備200將第一網(wǎng)絡104上的第一傳輸層連接與到第二網(wǎng)絡104上的服務器106的第二傳輸層連接相關聯(lián)。設備200接收來自客戶機代理102的所攔截的通信,解密該通信,并且經(jīng)第二傳輸層連接發(fā)送該通信到第二網(wǎng)絡104上的服務器106。第二傳輸層連接可以是池化的傳輸層連接。同樣的,設備200為兩個網(wǎng)絡104、104’之間的客戶機102提供端到端安全傳輸層連接。[0185]在一個實施例中,設備200寄載虛擬專用網(wǎng)絡104上的客戶機102的內(nèi)部網(wǎng)互聯(lián)網(wǎng)協(xié)議或者IntranetIP282地址??蛻魴C102具有本地網(wǎng)絡標識符,諸如第一網(wǎng)絡104上的互聯(lián)網(wǎng)協(xié)議(IP)地址和/或主機名稱。當經(jīng)設備200連接到第二網(wǎng)絡104’時,設備200在第二網(wǎng)絡104’上為客戶機102建立、分配或者以其它方式提供IntranetIP,其是諸如IP地址和/或主機名稱的網(wǎng)絡標識符。使用為客戶機的所建立的IntranetIP282,設備200在第二或專用網(wǎng)104’上監(jiān)聽并接收指向該客戶機102的任何通信。在一個實施例中,設備200在第二專用網(wǎng)絡104上用作或者代表客戶機102。例如,在又一個實施例中,vServer275監(jiān)聽和響應到客戶機102的IntranetIP282的通信。在一些實施例中,如果第二網(wǎng)絡104’上的計算裝置100發(fā)送請求,設備200如同客戶機102—樣來處理該請求。例如,設備200可以響應對客戶機IntranetIP282的查驗。在又一個實施例中,設備可以與請求和客戶機IntranetIP282連接的第二網(wǎng)絡104上的計算裝置100建立連接,諸如TCP或者UDP連接。[0186]在一些實施例中,設備200為客戶機102和服務器106之間的通信提供下列一個或多個加速技術288:1)壓縮;2)解壓縮;3)傳輸控制協(xié)議池;4)傳輸控制協(xié)議多路復用;5)傳輸控制協(xié)議緩沖;以及6)高速緩存。[0187]在一個實施例中,設備200通過開啟與每一服務器106的一個或者多個傳輸層連接并且維持這些連接以允許由客戶機經(jīng)因特網(wǎng)的重復數(shù)據(jù)訪問,來為服務器106緩解由重復開啟和關閉到客戶機102的傳輸層連接所造成的大量處理負載。該技術此處稱為“連接池”。[0188]在一些實施例中,為了經(jīng)池化的傳輸層連接無縫拼接從客戶機102到服務器106的通信,設備200通過在傳輸層協(xié)議級修改序列號和確認號來轉換或多路復用通信。這被稱為“連接多路復用”。在一些實施例中,不需要應用層協(xié)議相互作用。例如,在到來分組(即,自客戶機102接收的分組)的情況中,所述分組的源網(wǎng)絡地址被改變?yōu)樵O備200的輸出端口的網(wǎng)絡地址,而目的網(wǎng)絡地址被改為目的服務器的網(wǎng)絡地址。在發(fā)出分組(即,自服務器106接收的一個分組)的情況中,源網(wǎng)絡地址被從服務器106的網(wǎng)絡地址改變?yōu)樵O備200的輸出端口的網(wǎng)絡地址,而目的地址被從設備200的網(wǎng)絡地址改變?yōu)檎埱蟮目蛻魴C102的網(wǎng)絡地址。分組的序列號和確認號也被轉換為到客戶機102的設備200的傳輸層連接上的客戶機102所期待的序列號和確認。在一些實施例中,傳輸層協(xié)議的分組校驗和被重新計算以計及這些轉換。[0189]在又一個實施例中,設備200為客戶機102和服務器106之間的通信提供交換或負載平衡功能284。在一些實施例中,設備200根據(jù)層4或應用層請求數(shù)據(jù)來分布流量并將客戶機請求定向到服務器106。在一個實施例中,盡管網(wǎng)絡分組的網(wǎng)絡層或者層2識別目的服務器106,但設備200通過承載為傳輸層分組的有效載荷的數(shù)據(jù)和應用信息來確定服務器106以便分發(fā)網(wǎng)絡分組。在一個實施例中,設備200的健康監(jiān)控程序216監(jiān)控服務器的健康來確定分發(fā)客戶機請求到哪個服務器106。在一些實施例中,如果設備200探測到某個服務器106不可用或者具有超過預定閾值的負載,設備200可以將客戶機請求指向或者分發(fā)到另一個服務器106。[0190]在一些實施例中,設備200用作域名服務(DNS)解析器或者以其它方式為來自客戶機102的DNS請求提供解析。在一些實施例中,設備攔截由客戶機102發(fā)送的DNS請求。在一個實施例中,設備200以設備200的IP地址或其所寄載的IP地址來響應客戶機的DNS請求。在此實施例中,客戶機102把用于域名的網(wǎng)絡通信發(fā)送到設備200。在又一個實施例中,設備200以第二設備200’的或其所寄載的IP地址來響應客戶機的DNS請求。在一些實施例中,設備200使用由設備200確定的服務器106的IP地址來響應客戶機的DNS請求。[0191]在又一個實施例中,設備200為客戶機102和服務器106之間的通信提供應用防火墻功能290。在一個實施例中,策略引擎236提供用于探測和阻斷非法請求的規(guī)則。在一些實施例中,應用防火墻290防御拒絕服務(DoS)攻擊。在其他實施例中,設備檢查所攔截的請求的內(nèi)容,以識別和阻斷基于應用的攻擊。在一些實施例中,規(guī)則/策略引擎236包括用于提供對多個種類和類型的基于web或因特網(wǎng)的脆弱點的保護的一個或多個應用防火墻或安全控制策略,例如下列的一個或多個脆弱點:1)緩沖區(qū)泄出,2)CG1-BIN參數(shù)操縱,3)表單/隱藏字段操縱,4)強制瀏覽,5)C00kie或會話中毒,6)被破壞的訪問控制列表(ACLs)或弱密碼,7)跨站腳本處理(XSS),8)命令注入,9)SQL注入,10)錯誤觸發(fā)敏感信息泄露,11)對加密的不安全使用,12)服務器錯誤配置,13)后門和調試選項,14)網(wǎng)站涂改,15)平臺或操作系統(tǒng)弱點,和16)零天攻擊。在一個實施例中,對下列情況的一種或多種,應用防火墻290以檢查或分析網(wǎng)絡通信的形式來提供HTML格式字段的保護:1)返回所需的字段,2)不允許附加字段,3)只讀和隱藏字段強制(enforcement),4)下拉列表和單選按鈕字段的一致,以及5)格式字段最大長度強制。在一些實施例中,應用防火墻290確保cookie不被修改。在其他實施例中,應用防火墻290通過執(zhí)行合法的URL來防御強制瀏覽。[0192]在其他實施例中,應用防火墻290保護在網(wǎng)絡通信中包含的任何機密信息。應用防火墻290可以根據(jù)引擎236的規(guī)則或策略來檢查或分析任一網(wǎng)絡通信以識別在網(wǎng)絡分組的任一字段中的任一機密信息。在一些實施例中,應用防火墻290在網(wǎng)絡通信中識別信用卡號、口令、社會保險號、姓名、病人代碼、聯(lián)系信息和年齡的一次或多次出現(xiàn)。網(wǎng)絡通信的編碼部分可以包括這些出現(xiàn)或機密信息?;谶@些出現(xiàn),在一個實施例中,應用防火墻290可以對網(wǎng)絡通信采取策略行動,諸如阻止發(fā)送網(wǎng)絡通信。在又一個實施例中,應用防火墻290可以重寫、移動或者以其它方式掩蓋該所識別的出現(xiàn)或者機密信息。[0193]仍參考圖2B,設備200可以包括如上面結合圖1D所討論的性能監(jiān)控代理197。在一個實施例中,設備200從如圖1D中所描述的監(jiān)控服務198或監(jiān)控服務器106中接收監(jiān)控代理197。在一些實施例中,設備200在諸如磁盤的存儲裝置中保存監(jiān)控代理197,以用于傳送給與設備200通信的任何客戶機或服務器。例如,在一個實施例中,設備200在接收到建立傳輸層連接的請求時發(fā)送監(jiān)控代理197給客戶機。在其他實施例中,設備200在建立與客戶機102的傳輸層連接時發(fā)送監(jiān)控代理197。在又一個實施例中,設備200在攔截或檢測對web頁面的請求時發(fā)送監(jiān)控代理197給客戶機。在又一個實施例中,設備200響應于監(jiān)控服務器198的請求來發(fā)送監(jiān)控代理197到客戶機或服務器。在一個實施例中,設備200發(fā)送監(jiān)控代理197到第二設備200’或設備205。[0194]在其他實施例中,設備200執(zhí)行監(jiān)控代理197。在一個實施例中,監(jiān)控代理197測量和監(jiān)控在設備200上執(zhí)行的任何應用、程序、進程、服務、任務或線程的性能。例如,監(jiān)控代理197可以監(jiān)控和測量vServers275A-275N的性能與操作。在又一個實施例中,監(jiān)控代理197測量和監(jiān)控設備200的任何傳輸層連接的性能。在一些實施例中,監(jiān)控代理197測量和監(jiān)控通過設備200的任何用戶會話的性能。在一個實施例中,監(jiān)控代理197測量和監(jiān)控通過設備200的諸如SSLVPN會話的任何虛擬專用網(wǎng)連接和/或會話的性能。在進一步的實施例中,監(jiān)控代理197測量和監(jiān)控設備200的內(nèi)存、CPU和磁盤使用以及性能。在又一個實施例中,監(jiān)控代理197測量和監(jiān)控諸如SSL卸載、連接池和多路復用、高速緩存以及壓縮的由設備200執(zhí)行的任何加速技術288的性能。在一些實施例中,監(jiān)控代理197測量和監(jiān)控由設備200執(zhí)行的任一負載平衡和/或內(nèi)容交換284的性能。在其他實施例中,監(jiān)控代理197測量和監(jiān)控由設備200執(zhí)行的應用防火墻290保護和處理的性能。[0195]C.客戶機代理[0196]現(xiàn)參考圖3,描述客戶機代理120的實施例??蛻魴C102包括客戶機代理120,用于經(jīng)由網(wǎng)絡104與設備200和/或服務器106來建立和交換通信??偟膩碚f,客戶機102在計算裝置100上操作,該計算裝置100擁有帶有內(nèi)核模式302以及用戶模式303的操作系統(tǒng),以及帶有一個或多個層310a-310b的網(wǎng)絡堆棧310??蛻魴C102可以已經(jīng)安裝和/或執(zhí)行一個或多個應用。在一些實施例中,一個或多個應用可通過網(wǎng)絡堆棧310與網(wǎng)絡104通信。所述應用之一,諸如web瀏覽器,也可包括第一程序322。例如,可在一些實施例中使用第一程序322來安裝和/或執(zhí)行客戶機代理120,或其中任何部分??蛻魴C代理120包括攔截機制或者攔截器350,用于從網(wǎng)絡堆棧310攔截來自一個或者多個應用的網(wǎng)絡通信。[0197]客戶機102的網(wǎng)絡堆棧310可包括任何類型和形式的軟件、或硬件或其組合,用于提供與網(wǎng)絡的連接和通信。在一個實施例中,網(wǎng)絡堆棧310包括用于網(wǎng)絡協(xié)議組的軟件實現(xiàn)。網(wǎng)絡堆棧310可包括一個或多個網(wǎng)絡層,例如為本領域技術人員所公認和了解的開放式系統(tǒng)互聯(lián)(OSI)通信模型的任何網(wǎng)絡層。這樣,網(wǎng)絡堆棧310可包括用于任何以下OSI模型層的任何類型和形式的協(xié)議:1)物理鏈路層;2)數(shù)據(jù)鏈路層;3)網(wǎng)絡層;4)傳輸層;5)會話層);6)表示層,以及7)應用層。在一個實施例中,網(wǎng)絡堆棧310可包括在因特網(wǎng)協(xié)議(IP)的網(wǎng)絡層協(xié)議上的傳輸控制協(xié)議(TCP),通常稱為TCP/IP。在一些實施例中,可在以太網(wǎng)協(xié)議上承載TCP/IP協(xié)議,以太網(wǎng)協(xié)議可包括IEEE廣域網(wǎng)(WAN)或局域網(wǎng)(LAN)協(xié)議的任何族,例如被IEEE802.3覆蓋的這些協(xié)議。在一些實施例中,網(wǎng)絡堆棧310包括任何類型和形式的無線協(xié)議,例如IEEE802.11和/或移動因特網(wǎng)協(xié)議。[0198]考慮基于TCP/IP的網(wǎng)絡,可使用任何基于TCP/IP的協(xié)議,包括消息應用編程接口(MAPI)(email)、文件傳輸協(xié)議(FTP)、超文本傳輸協(xié)議(HTTP)、通用因特網(wǎng)文件系統(tǒng)(CIFS)協(xié)議(文件傳輸)、獨立計算架構(ICA)協(xié)議、遠程桌面協(xié)議(RDP)、無線應用協(xié)議(WAP)、移動IP協(xié)議,以及互聯(lián)網(wǎng)協(xié)議電話(VoIP)協(xié)議。在又一個實施例中,網(wǎng)絡堆棧310包括任何類型和形式的傳輸控制協(xié)議,諸如修改的傳輸控制協(xié)議,例如事務TCP(T/TCP),帶有選擇確認的TCP(TCP-SACK),帶有大窗口的TCP(TCP-LW),例如TCP-Vegas協(xié)議的擁塞預測協(xié)議,以及TCP欺騙協(xié)議。在其他實施例中,網(wǎng)絡堆棧310可使用諸如基于IP的UDP的任何類型和形式的用戶數(shù)據(jù)報協(xié)議(UDP),例如用于語音通信或實時數(shù)據(jù)通信。[0199]另外,網(wǎng)絡堆棧310可包括支持一個或多個層的一個或多個網(wǎng)絡驅動器,例如TCP驅動器或網(wǎng)絡層驅動器。網(wǎng)絡層驅動器可作為計算裝置100的操作系統(tǒng)的一部分或者作為計算裝置100的任何網(wǎng)絡接口卡或其它網(wǎng)絡訪問組件的一部分被包括。在一些實施例中,網(wǎng)絡堆棧310的任何網(wǎng)絡驅動器可被定制、修改或調整以提供網(wǎng)絡堆棧310的定制或修改部分,用來支持此處描述的任何技術。在其他實施例中,設計并構建加速程序302以與網(wǎng)絡堆棧310協(xié)同操作或工作,上述網(wǎng)絡堆棧310由客戶機102的操作系統(tǒng)安裝或以其它方式提供。[0200]網(wǎng)絡堆棧310包括任何類型和形式的接口,用于接收、獲得、提供或以其它方式訪問涉及客戶機102的網(wǎng)絡通信的任何信息和數(shù)據(jù)。在一個實施例中,與網(wǎng)絡堆棧310的接口包括應用編程接口(API)。接口也可包括任何函數(shù)調用、鉤子或過濾機制,事件或回調機制、或任何類型的接口技術。網(wǎng)絡堆棧310通過接口可接收或提供與網(wǎng)絡堆棧310的功能或操作相關的任何類型和形式的數(shù)據(jù)結構,例如對象。例如,數(shù)據(jù)結構可以包括與網(wǎng)絡分組相關的信息和數(shù)據(jù)或者一個或多個網(wǎng)絡分組。在一些實施例中,數(shù)據(jù)結構包括在網(wǎng)絡堆棧310的協(xié)議層處理的網(wǎng)絡分組的一部分,例如傳輸層的網(wǎng)絡分組。在一些實施例中,數(shù)據(jù)結構325包括內(nèi)核級別數(shù)據(jù)結構,而在其他實施例中,數(shù)據(jù)結構325包括用戶模式數(shù)據(jù)結構。內(nèi)核級數(shù)據(jù)結構可以包括獲得的或與在內(nèi)核模式302中操作的網(wǎng)絡堆棧310的一部分相關的數(shù)據(jù)結構、或者運行在內(nèi)核模式302中的網(wǎng)絡驅動程序或其它軟件、或者由運行或操作在操作系統(tǒng)的內(nèi)核模式的服務、進程、任務、線程或其它可執(zhí)行指令獲得或收到的任何數(shù)據(jù)結構。[0201]此外,網(wǎng)絡堆棧310的一些部分可在內(nèi)核模式302執(zhí)行或操作,例如,數(shù)據(jù)鏈路或網(wǎng)絡層,而其他部分在用戶模式303執(zhí)行或操作,例如網(wǎng)絡堆棧310的應用層。例如,網(wǎng)絡堆棧的第一部分310a可以給應用提供對網(wǎng)絡堆棧310的用戶模式訪問,而網(wǎng)絡堆棧310的第二部分310a提供對網(wǎng)絡的訪問。在一些實施例中,網(wǎng)絡堆棧的第一部分310a可包括網(wǎng)絡堆棧310的一個或多個更上層,例如層5-7的任何層。在其他實施例中,網(wǎng)絡堆棧310的第二部分310b包括一個或多個較低的層,例如層1-4的任何層。網(wǎng)絡堆棧310的每個第一部分310a和第二部分310b可包括網(wǎng)絡堆棧310的任何部分,位于任何一個或多個網(wǎng)絡層,處于用戶模式203、內(nèi)核模式202,或其組合,或在網(wǎng)絡層的任何部分或者到網(wǎng)絡層的接口點,或用戶模式203和內(nèi)核模式202的任何部分或到用戶模式203和內(nèi)核模式202的接口點。[0202]攔截器350可以包括軟件、硬件、或者軟件和硬件的任何組合。在一個實施例中,攔截器350在網(wǎng)絡堆棧310的任一點攔截網(wǎng)絡通信,并且重定向或者發(fā)送網(wǎng)絡通信到由攔截器350或者客戶機代理120所期望的、管理的或者控制的目的地。例如,攔截器350可以攔截第一網(wǎng)絡的網(wǎng)絡堆棧310的網(wǎng)絡通信并且發(fā)送該網(wǎng)絡通信到設備200,用于在第二網(wǎng)絡104上發(fā)送。在一些實施例中,攔截器350包括含有諸如被構建和設計來與網(wǎng)絡堆棧310對接并一同工作的網(wǎng)絡驅動器的驅動器的任一類型的攔截器350。在一些實施例中,客戶機代理120和/或攔截器350操作在網(wǎng)絡堆棧310的一個或者多個層,諸如在傳輸層。在一個實施例中,攔截器350包括過濾器驅動器、鉤子機制、或者連接到網(wǎng)絡堆棧的傳輸層的任一形式和類型的合適網(wǎng)絡驅動器接口,諸如通過傳輸驅動器接口(TDI)。在一些實施例中,攔截器350連接到諸如傳輸層的第一協(xié)議層和諸如傳輸協(xié)議層之上的任何層的另一個協(xié)議層,例如,應用協(xié)議層。在一個實施例中,攔截器350可以包括遵守網(wǎng)絡驅動器接口規(guī)范(NDIS)的驅動器,或者NDIS驅動器。在又一個實施例中,攔截器350可以包括微型過濾器或者微端口驅動器。在一個實施例中,攔截器350或其部分在內(nèi)核模式202中操作。在又一個實施例中,攔截器350或其部分在用戶模式203中操作。在一些實施例中,攔截器350的一部分在內(nèi)核模式202中操作,而攔截器350的另一部分在用戶模式203中操作。在其他實施例中,客戶機代理120在用戶模式203操作,但通過攔截器350連接到內(nèi)核模式驅動器、進程、服務、任務或者操作系統(tǒng)的部分,諸如以獲取內(nèi)核級數(shù)據(jù)結構225。在其他實施例中,攔截器350為用戶模式應用或者程序,諸如應用。[0203]在一個實施例中,攔截器350攔截任何的傳輸層連接請求。在這些實施例中,攔截器350執(zhí)行傳輸層應用編程接口(API)調用以設置目的地信息,諸如到期望位置的目的地IP地址和/或端口用于定位。以此方式,攔截器350攔截并重定向傳輸層連接到由攔截器350或客戶機代理120控制或管理的IP地址和端口。在一個實施例中,攔截器350把連接的目的地信息設置為客戶機代理120監(jiān)聽的客戶機102的本地IP地址和端口。例如,客戶機代理120可以包括為重定向的傳輸層通信監(jiān)聽本地IP地址和端口的代理服務。在一些實施例中,客戶機代理120隨后將重定向的傳輸層通信傳送到設備200。[0204]在一些實施例中,攔截器350攔截域名服務(DNS)請求。在一個實施例中,客戶機代理120和/或攔截器350解析DNS請求。在又一個實施例中,攔截器發(fā)送所攔截的DNS請求到設備200以進行DNS解析。在一個實施例中,設備200解析DNS請求并且將DNS響應傳送到客戶機代理120。在一些實施例中,設備200經(jīng)另一個設備200’或者DNS服務器106來解析DNS請求。[0205]在又一個實施例中,客戶機代理120可以包括兩個代理120和120’。在一個實施例中,第一代理120可以包括在網(wǎng)絡堆棧310的網(wǎng)絡層操作的攔截器350。在一些實施例中,第一代理120攔截網(wǎng)絡層請求,諸如因特網(wǎng)控制消息協(xié)議(ICMP)請求(例如,查驗和跟蹤路由)。在其他實施例中,第二代理120’可以在傳輸層操作并且攔截傳輸層通信。在一些實施例中,第一代理120在網(wǎng)絡堆棧210的一層攔截通信并且與第二代理120’連接或者將所攔截的通信傳送到第二代理120’。[0206]客戶機代理120和/或攔截器350可以以對網(wǎng)絡堆棧310的任何其它協(xié)議層透明的方式在協(xié)議層操作或與之對接。例如,在一個實施例中,攔截器350可以以對諸如網(wǎng)絡層的傳輸層之下的任何協(xié)議層和諸如會話、表示或應用層協(xié)議的傳輸層之上的任何協(xié)議層透明的方式在網(wǎng)絡堆棧310的傳輸層操作或與之對接。這允許網(wǎng)絡堆棧310的其它協(xié)議層如所期望的進行操作并無需修改以使用攔截器350。這樣,客戶機代理120和/或攔截器350可以與傳輸層連接以安全、優(yōu)化、加速、路由或者負載平衡經(jīng)由傳輸層承載的任一協(xié)議提供的任一通信,諸如TCP/IP上的任一應用層協(xié)議。[0207]此外,客戶機代理120和/或攔截器可以以對任何應用、客戶機102的用戶和與客戶機102通信的諸如服務器的任何其它計算裝置透明的方式在網(wǎng)絡堆棧310上操作或與之對接。客戶機代理120和/或攔截器350可以以無需修改應用的方式被安裝和/或執(zhí)行在客戶機102上。在一些實施例中,客戶機102的用戶或者與客戶機102通信的計算裝置未意識到客戶機代理120和/或攔截器350的存在、執(zhí)行或者操作。同樣,在一些實施例中,相對于應用、客戶機102的用戶、諸如服務器的另一個計算裝置、或者在由攔截器350連接的協(xié)議層之上和/或之下的任何協(xié)議層透明地來安裝、執(zhí)行和/或操作客戶機代理120和/或攔截器350。[0208]客戶機代理120包括加速程序302、流客戶機306、收集代理304和/或監(jiān)控代理197。在一個實施例中,客戶機代理120包括由佛羅里達州FortLauderdale的CitrixSystemsInc.開發(fā)的獨立計算架構(ICA)客戶機或其任一部分,并且也指ICA客戶機。在一些實施例中,客戶機代理120包括應用流客戶機306,用于從服務器106流式傳輸應用到客戶機102。在一些實施例中,客戶機代理120包括加速程序302,用于加速客戶機102和服務器106之間的通信。在又一個實施例中,客戶機代理120包括收集代理304,用于執(zhí)行端點檢測/掃描并且用于為設備200和/或服務器106收集端點信息。[0209]在一些實施例中,加速程序302包括用于執(zhí)行一個或多個加速技術的客戶機側加速程序,以加速、增強或者以其他方式改善客戶機與服務器106的通信和/或對服務器106的訪問,諸如訪問由服務器106提供的應用。加速程序302的可執(zhí)行指令的邏輯、函數(shù)和/或操作可以執(zhí)行一個或多個下列加速技術:1)多協(xié)議壓縮,2)傳輸控制協(xié)議池,3)傳輸控制協(xié)議多路復用,4)傳輸控制協(xié)議緩沖,以及5)通過高速緩存管理器的高速緩存。另外,加速程序302可執(zhí)行由客戶機102接收和/或發(fā)送的任何通信的加密和/或解密。在一些實施例中,加速程序302以集成的方式或者格式執(zhí)行一個或者多個加速技術。另外,加速程序302可以對作為傳輸層協(xié)議的網(wǎng)絡分組的有效載荷所承載的任一協(xié)議或者多協(xié)議執(zhí)行壓縮。[0210]流客戶機306包括應用、程序、進程、服務、任務或者可執(zhí)行指令,所述應用、程序、進程、服務、任務或者可執(zhí)行指令用于接收和執(zhí)行從服務器106所流式傳輸?shù)膽?。服務?06可以流式傳輸一個或者多個應用數(shù)據(jù)文件到流客戶機306,用于播放、執(zhí)行或者以其它方式引起客戶機102上的應用被執(zhí)行。在一些實施例中,服務器106發(fā)送一組壓縮或者打包的應用數(shù)據(jù)文件到流客戶機306。在一些實施例中,多個應用文件被壓縮并存儲在文件服務器上檔案文件中,例如CAB、ZIP、SIT、TAR、JAR或其它檔案文件。在一個實施例中,服務器106解壓縮、解包或者解檔應用文件并且將該文件發(fā)送到客戶機102。在又一個實施例中,客戶機102解壓縮、解包或者解檔應用文件。流客戶機306動態(tài)安裝應用或其部分,并且執(zhí)行該應用。在一個實施例中,流客戶機306可以為可執(zhí)行程序。在一些實施例中,流客戶機306可以能夠啟動另一個可執(zhí)行程序。[0211]收集代理304包括應用、程序、進程、服務、任務或者可執(zhí)行指令,用于識別、獲取和/或收集關于客戶機102的信息。在一些實施例中,設備200發(fā)送收集代理304到客戶機102或者客戶機代理120??梢愿鶕?jù)設備的策略引擎236的一個或多個策略來配置收集代理304。在其他實施例中,收集代理304發(fā)送在客戶機102上收集的信息到設備200。在一個實施例中,設備200的策略引擎236使用所收集的信息來確定和提供到網(wǎng)絡104的客戶機連接的訪問、驗證和授權控制。[0212]在一個實施例中,收集代理304包括端點檢測和掃描機制,其識別并且確定客戶機的一個或者多個屬性或者特征。例如,收集代理304可以識別和確定任何一個或多個以下的客戶機側屬性:1)操作系統(tǒng)和/或操作系統(tǒng)的版本,2)操作系統(tǒng)的服務包,3)運行的服務,4)運行的進程,和5)文件。收集代理304還可以識別并確定客戶機上任何一個或多個以下軟件的存在或版本:1)防病毒軟件;2)個人防火墻軟件;3)防垃圾郵件軟件,和4)互聯(lián)網(wǎng)安全軟件。策略引擎236可以具有基于客戶機或客戶機側屬性的任何一個或多個屬性或特性的一個或多個策略。[0213]在一些實施例中,客戶機代理120包括如結合圖1D和2B所討論的監(jiān)控代理197。監(jiān)控代理197可以是諸如VisualBasic或Java腳本的任何類型和形式的腳本。在一個實施例中,監(jiān)控代理197監(jiān)控和測量客戶機代理120的任何部分的性能。例如,在一些實施例中,監(jiān)控代理197監(jiān)控和測量加速程序302的性能。在又一個實施例中,監(jiān)控代理197監(jiān)控和測量流客戶機306的性能。在其他實施例中,監(jiān)控代理197監(jiān)控和測量收集代理304的性能。在又一個實施例中,監(jiān)控代理197監(jiān)控和測量攔截器350的性能。在一些實施例中,監(jiān)控代理197監(jiān)控和測量客戶機102的諸如存儲器、CPU和磁盤的任何資源。[0214]監(jiān)控代理197可以監(jiān)控和測量客戶機的任何應用的性能。在一個實施例中,監(jiān)控代理197監(jiān)控和測量客戶機102上的瀏覽器的性能。在一些實施例中,監(jiān)控代理197監(jiān)控和測量經(jīng)由客戶機代理120傳送的任何應用的性能。在其他實施例中,監(jiān)控代理197測量和監(jiān)控應用的最終用戶響應時間,例如基于web的響應時間或HTTP響應時間。監(jiān)控代理197可以監(jiān)控和測量ICA或RDP客戶機的性能。在又一個實施例中,監(jiān)控代理197測量和監(jiān)控用戶會話或應用會話的指標。在一些實施例中,監(jiān)控代理197測量和監(jiān)控ICA或RDP會話。在一個實施例中,監(jiān)控代理197測量和監(jiān)控設備200在加速傳送應用和/或數(shù)據(jù)到客戶機102的過程中的性能。[0215]在一些實施例中,仍參考圖3,第一程序322可以用于自動地、靜默地、透明地或者以其它方式安裝和/或執(zhí)行客戶機代理120或其部分,諸如攔截器350。在一個實施例中,第一程序322包括插件組件,例如ActiveX控件或Java控件或腳本,其加載到應用并由應用執(zhí)行。例如,第一程序包括由web瀏覽器應用載入和運行的ActiveX控件,例如在存儲器空間或應用的上下文中。在又一個實施例中,第一程序322包括可執(zhí)行指令組,該可執(zhí)行指令組被例如瀏覽器的應用載入并執(zhí)行。在一個實施例中,第一程序322包括被設計和構造的程序以安裝客戶機代理120。在一些實施例中,第一程序322通過網(wǎng)絡從另一個計算裝置獲得、下載、或接收客戶機代理120。在又一個實施例中,第一程序322是用于在客戶機102的操作系統(tǒng)上安裝如網(wǎng)絡驅動的程序的安裝程序或即插即用管理器。[0216]P.用于提供虛擬化應用傳送控制器的系統(tǒng)和方法[0217]現(xiàn)參考圖4A,該框圖描述虛擬化環(huán)境400的一個實施例??傮w而言,計算裝置100包括管理程序層、虛擬化層和硬件層。管理程序層包括管理程序401(也稱為虛擬化管理器),其通過在虛擬化層中執(zhí)行的至少一個虛擬機來分配和管理對硬件層中的多個物理資源(例如處理器421和盤428)的訪問。虛擬化層包括至少一個操作系統(tǒng)410和分配給至少一個操作系統(tǒng)410的多個虛擬資源。虛擬資源可包括而不限于多個虛擬處理器432a、432b、432c(總稱為432)和虛擬盤442a、442b、442c(總稱為442),以及如虛擬存儲器和虛擬網(wǎng)絡接口的虛擬資源??蓪⒍鄠€虛擬資源和操作系統(tǒng)稱為虛擬機406。虛擬機406可包括控制操作系統(tǒng)405,該控制操作系統(tǒng)405與管理程序401通信,并用于執(zhí)行應用以管理并配置計算裝置100上的其他虛擬機。[0218]具體而言,管理程序401可以以模擬可訪問物理設備的操作系統(tǒng)的任何方式向操作系統(tǒng)提供虛擬資源。管理程序401可以向任何數(shù)量的客戶操作系統(tǒng)410a、410b(總稱為410)提供虛擬資源。一些實施例中,計算裝置100執(zhí)行一種或多種管理程序。這些實施例中,管理程序可用于模擬虛擬硬件、劃分物理硬件、虛擬化物理硬件并執(zhí)行提供對計算環(huán)境的訪問的虛擬機。管理程序可包括由位于美國加州的PaloAlto的VMWare制造的這些程序;XEN管理程序(一種開源產(chǎn)品,其開發(fā)由開源Xen.0rg協(xié)會監(jiān)管);由微軟公司提供的HyperV、VirtualServer或虛擬PC管理程序,或其他。一些實施例中,計算裝置100執(zhí)行創(chuàng)建客戶操作系統(tǒng)可在其上執(zhí)行虛擬機平臺的管理程序,該計算裝置100被稱為宿主服務器。在這些實施例的一個中,例如,計算裝置100是由位于美國佛羅里達州FortLauderdale的CitrixSystems有限公司提供的XENSERVER。[0219]一些實施例中,管理程序401在計算裝置上執(zhí)行的操作系統(tǒng)之內(nèi)執(zhí)行。在這些實施例的一個中,執(zhí)行操作系統(tǒng)和管理程序401的計算裝置可被視為具有宿主操作系統(tǒng)(執(zhí)行在計算裝置上的操作系統(tǒng)),和客戶操作系統(tǒng)(在由管理程序401提供的計算資源分區(qū)內(nèi)執(zhí)行的操作系統(tǒng))。其他實施例中,管理程序401和計算裝置上的硬件直接交互而不是在宿主操作系統(tǒng)上執(zhí)行。在這些實施例的一個中,管理程序401可被視為在“裸金屬(baremetal)”上執(zhí)行,所述“裸金屬”指包括計算裝置的硬件。[0220]一些實施例中,管理程序401可以產(chǎn)生操作系統(tǒng)410在其中執(zhí)行的虛擬機406a_c(總稱為406)。在這些實施例的一個中,管理程序401加載虛擬機映像以創(chuàng)建虛擬機406。在這些實施例的又一個中,管理程序401在虛擬機406內(nèi)執(zhí)行操作系統(tǒng)410。仍在這些實施例的又一個中,虛擬機406執(zhí)行操作系統(tǒng)410。[0221]一些實施例中,管理程序401控制在計算裝置100上執(zhí)行的虛擬機406的處理器調度和內(nèi)存劃分。在這些實施例的一個中,管理程序401控制至少一個虛擬機406的執(zhí)行。在這些實施例的又一個中,管理程序401向至少一個虛擬機406呈現(xiàn)由計算裝置100提供的至少一個硬件資源的抽象。其他實施例中,管理程序401控制是否以及如何將物理處理器能力呈現(xiàn)給虛擬機406。[0222]控制操作系統(tǒng)405可以執(zhí)行用于管理和配置客戶操作系統(tǒng)的至少一個應用。一個實施例中,控制操作系統(tǒng)405可以執(zhí)行管理應用,如包括如下用戶接口的應用,該用戶接口為管理員提供對用于管理虛擬機執(zhí)行的功能的訪問,這些功能包括用于執(zhí)行虛擬機、中止虛擬機執(zhí)行或者識別要分配給虛擬機的物理資源類型的功能。又一個實施例中,管理程序401在由管理程序401創(chuàng)建的虛擬機406內(nèi)執(zhí)行控制操作系統(tǒng)405。又一個實施例中,控制操作系統(tǒng)405在被授權直接訪問計算裝置100上的物理資源的虛擬機406上執(zhí)行。一些實施例中,計算裝置IOOa上的控制操作系統(tǒng)405a可以通過管理程序401a和管理程序401b之間的通信與計算裝置IOOb上的控制操作系統(tǒng)405b交換數(shù)據(jù)。這樣,一個或多個計算裝置100可以和一個或多個其他計算裝置100交換有關處理器或資源池中可用的其他物理資源的數(shù)據(jù)。在這些實施例的一個中,這種功能允許管理程序管理分布在多個物理計算裝置上的資源池。在這些實施例的又一個中,多個管理程序管理在一個計算裝置100上執(zhí)行的一個或多個客戶操作系統(tǒng)。[0223]一個實施例中,控制操作系統(tǒng)405在被授權與至少一個客戶操作系統(tǒng)410交互的虛擬機406上執(zhí)行。又一個實施例中,客戶操作系統(tǒng)410通過管理程序401和控制操作系統(tǒng)405通信,以請求訪問盤或網(wǎng)絡。仍在又一個實施例中,客戶操作系統(tǒng)410和控制操作系統(tǒng)405可通過由管理程序401建立的通信信道通信,例如,通過由管理程序401提供的多個共享存儲器頁面。[0224]一些實施例中,控制操作系統(tǒng)405包括用于直接與由計算裝置100提供的網(wǎng)絡硬件通信的網(wǎng)絡后端驅動器。在這些實施例的一個中,網(wǎng)絡后端驅動器處理來自至少一個客戶操作系統(tǒng)110的至少一個虛擬機請求。其他實施例中,控制操作系統(tǒng)405包括用于與計算裝置100上的存儲元件通信的塊后端驅動器。在這些實施例的一個中,塊后端驅動器基于從客戶操作系統(tǒng)410接收的至少一個請求從存儲元件讀寫數(shù)據(jù)。[0225]一個實施例中,控制操作系統(tǒng)405包括工具堆棧404。其他實施例中,工具堆棧404提供如下功能:和管理程序401交互、和其他控制操作系統(tǒng)405(例如位于第二計算裝置IOOb上)通信,或者管理計算裝置100上的虛擬機406b、406c。又一個實施例中,工具堆棧404包括自定義應用,其用于向虛擬機群的管理員提供改進的管理功能。一些實施例中,工具堆棧404和控制操作系統(tǒng)405中的至少一個包括管理API,其提供用于遠程配置并控制計算裝置100上運行的虛擬機406的接口。其他實施例中,控制操作系統(tǒng)405通過工具堆棧404和管理程序401通信。[0226]一個實施例中,管理程序401在由管理程序401創(chuàng)建的虛擬機406內(nèi)執(zhí)行客戶操作系統(tǒng)410。又一個實施例中,客戶操作系統(tǒng)410為計算裝置100的用戶提供對計算環(huán)境中的資源的訪問。又一個實施例中,資源包括程序、應用、文檔、文件、多個應用、多個文件、可執(zhí)行程序文件、桌面環(huán)境、計算環(huán)境或對計算裝置100的用戶可用的其他資源。又一個實施例中,可通過多個訪問方法將資源傳送給計算裝置100,這些方法包括但不限于:常規(guī)的直接在計算裝置100上安裝、通過應用流的方法傳送給計算裝置100、將由在第二計算裝置100’上執(zhí)行資源產(chǎn)生的并通過表示層協(xié)議傳送給計算裝置100的輸出數(shù)據(jù)傳送給計算裝置100、將通過在第二計算裝置100’上執(zhí)行的虛擬機執(zhí)行資源所產(chǎn)生的輸出數(shù)據(jù)傳送給計算裝置100、或者從連接到計算裝置100的移動存儲裝置(例如USB設備)執(zhí)行或者通過在計算裝置100上執(zhí)行的虛擬機執(zhí)行并且產(chǎn)生輸出數(shù)據(jù)。一些實施例中,計算裝置100將執(zhí)行資源所產(chǎn)生的輸出數(shù)據(jù)傳輸給另一個計算裝置100’。[0227]一個實施例中,客戶操作系統(tǒng)410和該客戶操作系統(tǒng)410在其上執(zhí)行的虛擬機結合形成完全虛擬化虛擬機,該完全虛擬化虛擬機并不知道自己是虛擬機,這樣的機器可稱為“DomainUHVM(硬件虛擬機)虛擬機”。又一個實施例中,完全虛擬化機包括模擬基本輸入/輸出系統(tǒng)(BIOS)的軟件以便在完全虛擬化機中執(zhí)行操作系統(tǒng)。在又一個實施例中,完全虛擬化機可包括驅動器,其通過和管理程序401通信提供功能。這樣的實施例中,驅動器可意識到自己在虛擬化環(huán)境中執(zhí)行。又一個實施例中,客戶操作系統(tǒng)410和該客戶操作系統(tǒng)410在其上執(zhí)行的虛擬機結合形成超虛擬化(paravirtualized)虛擬機,該超虛擬化虛擬機意識到自己是虛擬機,這樣的機器可稱為“DomainUPV虛擬機”。又一個實施例中,超虛擬化機包括完全虛擬化機不包括的額外驅動器。又一個實施例中,超虛擬化機包括如上所述的被包含在控制操作系統(tǒng)405中的網(wǎng)絡后端驅動器和塊后端驅動器。[0228]現(xiàn)參考圖4B,框圖描述了系統(tǒng)中的多個聯(lián)網(wǎng)計算裝置的一個實施例,其中,至少一個物理主機執(zhí)行虛擬機。總體而言,系統(tǒng)包括管理組件404和管理程序401。系統(tǒng)包括多個計算裝置100、多個虛擬機406、多個管理程序401、多個管理組件(又稱為工具堆棧404或者管理組件404)以及物理資源421、428。多個物理機器100的每一個可被提供為如上結合圖1E-1H和圖4A描述的計算裝置100。[0229]具體而言,物理盤428由計算裝置100提供,存儲至少一部分虛擬盤442。一些實施例中,虛擬盤442和多個物理盤428相關聯(lián)。在這些實施例的一個中,一個或多個計算裝置100可以與一個或多個其他計算裝置100交換有關處理器或資源池中可用的其他物理資源的數(shù)據(jù),允許管理程序管理分布在多個物理計算裝置上的資源池。一些實施例中,將虛擬機406在其上執(zhí)行的計算裝置100稱為物理主機100或主機100。[0230]管理程序在計算裝置100上的處理器上執(zhí)行。管理程序將對物理盤的訪問量分配給虛擬盤。一個實施例中,管理程序401分配物理盤上的空間量。又一個實施例中,管理程序401分配物理盤上的多個頁面。一些實施例中,管理程序提供虛擬盤442作為初始化和執(zhí)行虛擬機450進程的一部分。[0231]一個實施例中,將管理組件404a稱為池管理組件404a。又一個實施例中,可以稱為控制管理系統(tǒng)405a的管理操作系統(tǒng)405a包括管理組件。一些實施例中,將管理組件稱為工具堆棧。在這些實施例的一個中,管理組件是上文結合圖4A描述的工具堆棧404。其他實施例中,管理組件404提供用戶接口,用于從如管理員的用戶接收要供應和/或執(zhí)行的虛擬機406的標識。仍在其他實施例中,管理組件404提供用戶接口,用于從如管理員的用戶接收將虛擬機406b從一個物理機器100遷移到另一物理機器的請求。在進一步的實施例中,管理組件404a識別在其上執(zhí)行所請求的虛擬機406d的計算裝置IOOb并指示所識別的計算裝置IOOb上的管理程序401b執(zhí)行所識別的虛擬機,這樣,可將管理組件稱為池管理組件。[0232]現(xiàn)參考圖4C,描述了虛擬應用傳送控制器或虛擬設備450的實施例??傮w而言,上文結合圖2A和2B描述的設備200的任何功能和/或實施例(例如應用傳送控制器)可以部署在上文結合圖4A和4B描述的虛擬化環(huán)境的任何實施例中。應用傳送控制器的功能不是以設備200的形式部署,而是將該功能部署在諸如客戶機102、服務器106或設備200的任何計算裝置100上的虛擬化環(huán)境400中。[0233]現(xiàn)在參考圖4C,描述了在服務器106的管理程序401上操作的虛擬設備450的實施例的框圖。如圖2A和2B的設備200—樣,虛擬機450可以提供可用性、性能、卸載和安全的功能。對于可用性,虛擬設備可以執(zhí)行網(wǎng)絡第4層和第7層之間的負載平衡并執(zhí)行智能服務健康監(jiān)控。對于通過網(wǎng)絡流量加速實現(xiàn)的性能增加,虛擬設備可以執(zhí)行緩存和壓縮。對于任何服務器的卸載處理,虛擬設備可以執(zhí)行連接復用和連接池和/或SSL處理。對于安全,虛擬設備可以執(zhí)行設備200的任何應用防火墻功能和SSLVPN功能。[0234]結合附圖2A描述的設備200的任何模塊可以虛擬化設備傳送控制器450的形式被打包、組合、設計或構造,虛擬化設備傳送控制器450可部署成在諸如流行的服務器這樣的任何服務器上的虛擬化環(huán)境300或非虛擬化環(huán)境中執(zhí)行的軟件模塊或組件。例如,可以安裝在計算裝置上的安裝包的形式提供虛擬設備。參考圖2A,可以將高速緩存管理器232、策略引擎236、壓縮238、加密引擎234、分組引擎240、⑶I210、CLI212、殼服務214中的任一個設計和構成在計算裝置和/或虛擬化環(huán)境300的任何操作系統(tǒng)上運行的組件或模塊。虛擬化設備400不使用設備200的加密處理器260、處理器262、存儲器264和網(wǎng)絡堆棧267,而是可使用虛擬化環(huán)境400提供的任何這些資源或者服務器106上以其他方式可用的這些資源。[0235]仍參考圖4C,簡言之,任何一個或多個vServer275A-275N可以操作或執(zhí)行在任意類型的計算裝置100(如服務器106)的虛擬化環(huán)境400中。結合附圖2B描述的設備200的任何模塊和功能可以設計和構造成在服務器的虛擬化或非虛擬化環(huán)境中操作??梢詫Server275、SSLVPN280、內(nèi)網(wǎng)UP282、交換裝置284、DNS286、加速裝置288、APPFW280和監(jiān)控代理中的任一個打包、組合、設計或構造成應用傳送控制器450的形式,應用傳送控制器450可部署成在裝置和/或虛擬化環(huán)境400中執(zhí)行的一個或多個軟件模塊或組件。[0236]一些實施例中,服務器可以在虛擬化環(huán)境中執(zhí)行多個虛擬機406a_406b,每個虛擬機運行虛擬應用傳送控制器450的相同或不同實施例。一些實施例中,服務器可以在多核處理系統(tǒng)的一個核上執(zhí)行一個或多個虛擬機上的一個或多個虛擬設備450。一些實施例中,服務器可以在多處理器裝置的每個處理器上執(zhí)行一個或多個虛擬機上的一個或多個虛擬設備450。[0237]E.提供多核架構的系統(tǒng)和方法[0238]根據(jù)摩爾定律,每兩年集成電路上可安裝的晶體管的數(shù)量會基本翻倍。然而,CPU速度增加會達到一個穩(wěn)定的水平(plateaus),例如,2005年以來,CPU速度在約3.5_4GHz的范圍內(nèi)。一些情況下,CPU制造商可能不依靠CPU速度增加來獲得額外的性能。一些CPU制造商會給處理器增加附加核以提供額外的性能。依靠CPU獲得性能改善的如軟件和網(wǎng)絡供應商的產(chǎn)品可以通過利用這些多核CPU來改進他們的性能。可以重新設計和/或編寫為單CPU設計和構造的軟件以利用多線程、并行架構或多核架構。[0239]一些實施例中,稱為nCore或多核技術的設備200的多核架構允許設備打破單核性能障礙并利用多核CPU的能力。前文結合圖2A描述的架構中,運行單個網(wǎng)絡或分組引擎。nCore技術和架構的多核允許同時和/或并行地運行多個分組引擎。通過在每個核上運行分組引擎,設備架構利用附加核的處理能力。一些實施例中,這提供了高達七倍的性能改善和擴展性。[0240]圖5A示出根據(jù)一類并行機制或并行計算方案(如功能并行機制、數(shù)據(jù)并行機制或基于流的數(shù)據(jù)并行機制)在一個或多個處理器核上分布的工作、任務、負載或網(wǎng)絡流量的一些實施例。總體而言,圖5A示出如具有η個核的設備200’的多核系統(tǒng)的實施例,η個核編號為I到N。一個實施例中,工作、負載或網(wǎng)絡流量可以分布在第一核505Α、第二核505Β、第三核505C、第四核50?、第五核505Ε、第六核505F、第七核505G等上,這樣,分布位于所有η個核505Ν(此后統(tǒng)稱為核505)或η個核中的兩個或多個上??梢杂卸鄠€VIP275,每個運行在多個核中的相應的核上。可以有多個分組引擎240,每個運行在多個核的相應的核。所使用任何方法可產(chǎn)生多個核中任一核上的不同的、變化的或類似的工作負載或性能級別515。對于功能并行方法,每個核運行由分組引擎、VIP275或設備200提供的多個功能的不同功能。在數(shù)據(jù)并行方法中,數(shù)據(jù)可基于接收數(shù)據(jù)的網(wǎng)絡接口卡(NIC)或VIP275并行或分布在核上。又一個數(shù)據(jù)并行方法中,可通過將數(shù)據(jù)流分布在每個核上而將處理分布在核上。[0241]圖5A的進一步的細節(jié)中,一些實施例中,可以根據(jù)功能并行機制500將負載、工作或網(wǎng)絡流量在多個核505間分布。功能并行機制可基于執(zhí)行一個或多個相應功能的每個核。一些實施例中,第一核可執(zhí)行第一功能,同時第二核執(zhí)行第二功能。功能并行方法中,根據(jù)功能性將多核系統(tǒng)要執(zhí)行的功能劃分并分布到每個核。一些實施例中,可將功能并行機制稱為任務并行機制,并且可在每個處理器或核對同一數(shù)據(jù)或不同數(shù)據(jù)執(zhí)行不同進程或功能時實現(xiàn)。核或處理器可執(zhí)行相同或不同的代碼。一些情況下,不同的執(zhí)行線程或代碼可在工作時相互通信??梢赃M行通信以將數(shù)據(jù)作為工作流的一部分從一個線程傳遞給下一線程。[0242]一些實施例中,根據(jù)功能并行機制500將工作分布在核505上,可以包括根據(jù)特定功能分布網(wǎng)絡流量,所述特定功能例如為網(wǎng)絡輸入/輸出管理(NWI/O)510A、安全套接層(SSL)加密和解密510B和傳輸控制協(xié)議(TCP)功能510C。這會產(chǎn)生基于所使用的功能量或功能級別的工作、性能或者計算負載515。一些實施例中,根據(jù)數(shù)據(jù)并行機制540將工作分布在核505上可包括基于與特定的硬件或軟件組件相關聯(lián)的分布數(shù)據(jù)來分布工作量515。一些實施例中,根據(jù)基于流的數(shù)據(jù)并行機制520將工作分布在核505上可包括基于上下文或流來分布數(shù)據(jù),從而使得每個核上的工作量515A-N可以類似、基本相等或者相對平均分布。[0243]在功能并行方法的情況下,可以配置每個核來運行由設備的分組引擎或VIP提供的多個功能中的一個或多個功能。例如,核I可執(zhí)行設備200’的網(wǎng)絡I/O處理,同時核2執(zhí)行設備的TCP連接管理。類似地,核3可執(zhí)行SSL卸載,同時核4可執(zhí)行第7層或應用層處理和流量管理。每個核可執(zhí)行相同或不同的功能。每個核可執(zhí)行不只一個功能。任一核可運行結合附圖2A和2B識別和/或描述的功能或其一部分。該方法中,核上的工作可以粗粒度或細粒度方式按功能劃分。一些情況下,如圖5A所示,按功能劃分會使得不同核運行在不同的性能或負載級別515。[0244]在功能并行方法的情況下,可以配置每個核來運行由設備的分組引擎提供的多個功能中的一個或多個功能。例如,核I可執(zhí)行設備200’的網(wǎng)絡I/O處理,同時核2執(zhí)行設備的TCP連接管理。類似地,核3可執(zhí)行SSL卸載,同時核4可執(zhí)行第7層或應用層處理和流量管理。每個核可執(zhí)行相同或不同的功能。每個核可執(zhí)行不只一個功能。任何核可運行結合附圖2A和2B識別和/或描述的功能或其一部分。該方法中,核上的工作可以粗粒度或細粒度方式按功能劃分。一些情況下,如圖5A所示,按功能劃分會使得不同核運行在不同的性能或負載級別。[0245]可以用任何結構或方案來分布功能或任務。例如,圖5B示出用于處理與網(wǎng)絡I/O功能510A相關聯(lián)的應用和進程的第一核Corel505A。一些實施例中,與網(wǎng)絡I/O相關聯(lián)的網(wǎng)絡流量可以和特定的端口號相關聯(lián)。因而,將具有與NWI/0510A相關聯(lián)的端口目的地的發(fā)出和到來的分組導引給Corel505A,該Corel505A專用于處理與NWI/O端口相關聯(lián)的所有網(wǎng)絡流量。類似的,Core2505B專用于處理與SSL處理相關聯(lián)的功能,Core450ro可專用于處理所有TCP級處理和功能。[0246]雖然圖5A示出如網(wǎng)絡I/0、SSL和TCP的功能,也可將其他功能分配給核。這些其他功能可包括此處描述的任一或多個功能或操作。例如,結合圖2A和2B描述的任何功能可基于功能基礎分布在核上。一些情況下,第一VIP275A可運行在第一核上,同時,具有不同配置的第二VIP275B可運行在第二核上。一些實施例中,每個核505可處理特定功能,這樣每個核505可處理與該特定功能相關聯(lián)的處理。例如,Core2505B可處理SSL卸載,同時Core450ro可處理應用層處理和流量管理。[0247]其他實施例中,可根據(jù)任何類型或形式的數(shù)據(jù)并行機制540將工作、負載或網(wǎng)絡流量分布在核505上。一些實施例中,可由每個核對分布式數(shù)據(jù)的不同片執(zhí)行相同任務或功能來實現(xiàn)多核系統(tǒng)中的數(shù)據(jù)并行機制。一些實施例中,單個執(zhí)行線程或代碼控制對所有數(shù)據(jù)片的操作。其他實施例中,不同線程或指令控制操作,但是可執(zhí)行相同代碼。一些實施例中,從分組引擎、vServer(VIP)275A-C、網(wǎng)絡接口卡(NIC)542D-E和/或設備200上包括的或者與設備200相關聯(lián)的任何其他網(wǎng)絡硬件或軟件的角度實現(xiàn)數(shù)據(jù)并行機制。例如,每個核可運行同樣的分組引擎或VIP代碼或配置但是在不同的分布式數(shù)據(jù)集上進行操作。每個網(wǎng)絡硬件或軟件結構可接收不同的、變化的或者基本相同量的數(shù)據(jù),因而可以具有變化的、不同的或相對相同量的負載515。[0248]在數(shù)據(jù)并行方法的情況下,可以基于VIP、NIC和/或VIP或NIC的數(shù)據(jù)流來劃分和分布工作。在這些的方法的一個中,可通過使每個VIP在分布的數(shù)據(jù)集上工作來將多核系統(tǒng)的工作劃分或者分布在VIP中。例如,可配置每個核運行一個或多個VIP。網(wǎng)絡流量可分布在處理流量的每個VIP的核上。在這些方法的又一個中,可基于哪個NIC接收網(wǎng)絡流量來將設備的工作劃分或分布在核上。例如,第一NIC的網(wǎng)絡流量可被分布到第一核,同時第二NIC的網(wǎng)絡流量可被分布給第二核。一些情況下,核可處理來自多個NIC的數(shù)據(jù)。[0249]雖然圖5A示出了與單個核505相關聯(lián)的單個vServer,正如VIP1275A、VIP2275B和VIP3275C的情況。但是,一些實施例中,單個vServer可以與一個或者多個核505相關聯(lián)。相反,一個或多個vServer可以與單個核505相關聯(lián)。將vServer與核505關聯(lián)可包括該核505處理與該特定vServer關聯(lián)的所有功能。一些實施例中,每個核執(zhí)行具有相同代碼和配置的VIP。其他實施例中,每個核執(zhí)行具有相同代碼但配置不同的VIP。一些實施例中,每個核執(zhí)行具有不同代碼和相同或不同配置的VIP。[0250]和vServer類似,NIC也可以和特定的核505關聯(lián)。許多實施例中,NIC可以連接到一個或多個核505,這樣,當NIC接收或傳輸數(shù)據(jù)分組時,特定的核505處理涉及接收和傳輸數(shù)據(jù)分組的處理。一個實施例中,單個NIC可以與單個核505相關聯(lián),正如NIC1542D和NIC2542E的情況。其他實施例中,一個或多個NIC可以與單個核505相關聯(lián)。但其他實施例中,單個NIC可以與一個或者多個核505相關聯(lián)。這些實施例中,負載可以分布在一個或多個核505上,使得每個核505基本上處理類似的負載量。與NIC關聯(lián)的核505可以處理與該特定NIC關聯(lián)的所有功能和/或數(shù)據(jù)。[0251]雖然根據(jù)VIP或NIC的數(shù)據(jù)將工作分布在核上具有某種程度的獨立性,但是,一些實施例中,這會造成如圖5A的變化負載515所示的核的不平衡的使用。[0252]一些實施例中,可根據(jù)任何類型或形式的數(shù)據(jù)流將負載、工作或網(wǎng)絡流量分布在核505上。在這些方法的又一個中,可基于數(shù)據(jù)流將工作劃分或分布在多個核上。例如,客戶機或服務器之間的經(jīng)過設備的網(wǎng)絡流量可以被分布到多個核中的一個核并且由其處理。一些情況下,最初建立會話或連接的核可以是該會話或連接的網(wǎng)絡流量所分布的核。一些實施例中,數(shù)據(jù)流基于網(wǎng)絡流量的任何單元或部分,如事務、請求/響應通信或來自客戶機上的應用的流量。這樣,一些實施例中,客戶機和服務器之間的經(jīng)過設備200’的數(shù)據(jù)流可以比其他方式分布的更均衡。[0253]在基于流的數(shù)據(jù)并行機制520中,數(shù)據(jù)分布和任何類型的數(shù)據(jù)流相關,例如請求/響應對、事務、會話、連接或應用通信。例如,客戶機或服務器之間的經(jīng)過設備的網(wǎng)絡流量可以被分布到多個核中的一個核并且由其處理。一些情況下,最初建立會話或連接的核可以是該會話或連接的網(wǎng)絡流量所分布的核。數(shù)據(jù)流的分布可以使得每個核505運行基本相等或相對均勻分布的負載量、數(shù)據(jù)量或網(wǎng)絡流量。[0254]一些實施例中,數(shù)據(jù)流基于網(wǎng)絡流量的任何單元或部分,如事務、請求/響應通信或源自客戶機上的應用的流量。這樣,一些實施例中,客戶機和服務器之間的經(jīng)過設備200’的數(shù)據(jù)流可以比其他方式分布的更均衡。一個實施例中,可以基于事務或一系列事務分布數(shù)據(jù)量。一些實施例中,該事務可以是客戶機和服務器之間的,其特征可以是IP地址或其他分組標識符。例如,核1505A可專用于特定客戶機和特定服務器之間的事務,因此,核1505A上的負載515A可包括與特定客戶機和服務器之間的事務相關聯(lián)的網(wǎng)絡流量??赏ㄟ^將源自特定客戶機或服務器的所有數(shù)據(jù)分組路由到核1505A來將網(wǎng)絡流量分配給核1505A。[0255]雖然可部分地基于事務將工作或負載分布到核,但是,其他實施例中,可基于每個分組的基礎分配負載或工作。這些實施例中,設備200可攔截數(shù)據(jù)分組并將數(shù)據(jù)分組分配給負載量最小的核505。例如,由于核I上的負載515A小于其他核505B-N上的負載515B-N,所以設備200可將第一到來的數(shù)據(jù)分組分配給核1505A。將第一數(shù)據(jù)分組分配給核1505A后,核1505A上的負載量515A與處理第一數(shù)據(jù)分組所需的處理資源量成比例增加。設備200攔截到第二數(shù)據(jù)分組時,設備200會將負載分配給核4505D,這是由于核450?具有第二少的負載量。一些實施例中,將數(shù)據(jù)分組分配給負載量最小的核可確保分布到每個核505的負載515A-N保持基本相等。[0256]其他實施例中,將一部分網(wǎng)絡流量分配給特定核505的情況下,可以每單元為基礎分配負載。上述示例說明以每分組為基礎進行負載平衡。其他實施例中,可以基于分組數(shù)目分配負載,例如,將每10個、100個或1000個分組分配給流量最少的核505。分配給核505的分組數(shù)量可以是由應用、用戶或管理員確定的數(shù)目,而且可以為大于零的任何數(shù)。仍在其他實施例中,基于時間指標分配負載,使得在預定時間段將分組分布到特定核505。這些實施例中,可以在5毫秒內(nèi)或者由用戶、程序、系統(tǒng)、管理器或其他方式確定的任何時間段將分組分布到特定核505。預定時間段過去后,在預定時間段內(nèi)將時間分組傳輸給不同的核505。[0257]用于將工作、負載或網(wǎng)絡流量分布在一個或多個核505上的基于流的數(shù)據(jù)并行方法可包括上述實施例的任意組合。這些方法可以由設備200的任何部分執(zhí)行,由在核505上執(zhí)行的應用或者一組可執(zhí)行指令執(zhí)行,例如分組引擎,或者由在與設備200通信的計算裝置上執(zhí)行的任何應用、程序或代理執(zhí)行。[0258]圖5A所示的功能和數(shù)據(jù)并行機制計算方案可以任何方式組合,以產(chǎn)生混合并行機制或分布式處理方案,其包括功能并行機制500、數(shù)據(jù)并行機制540、基于流的數(shù)據(jù)并行機制520或者其任何部分。一些情況下,多核系統(tǒng)可使用任何類型或形式的負載平衡方案來將負載分布在一個或多個核505上。負載平衡方案可以和任何功能和數(shù)據(jù)平行方案或其組合結合使用。[0259]圖5B示出多核系統(tǒng)545的實施例,該系統(tǒng)可以是任何類型或形式的一個或多個系統(tǒng)、設備、裝置或組件。一些實施例中,該系統(tǒng)545可被包括在具有一個或多個處理核505A-N的設備200內(nèi)。系統(tǒng)545還可包括與存儲器總線556通信的一個或多個分組引擎(PE)或分組處理引擎(PPE)548A-N。存儲器總線可用于與一個或多個處理核505A-N通信。系統(tǒng)545還可包括一個或多個網(wǎng)絡接口卡(NIC)552和流分布器550,流分布器還可與一個或多個處理核505A-N通信。流分布器550可包括接收側調整器(ReceiverSideScaler-RSS)或接收側調整(ReceiverSideScaling-RSS)模塊560。[0260]進一步參考圖5B,具體而言,一個實施例中,分組引擎548A-N可包括此處所述的設備200的任何部分,例如圖2A和2B所述設備的任何部分。一些實施例中,分組引擎548A-N可包括任何下列的元件:分組引擎240、網(wǎng)絡堆棧267、高速緩存管理器232、策略引擎236、壓縮引擎238、加密引擎234、⑶I210、CLI212、殼服務214、監(jiān)控程序216以及能夠從數(shù)據(jù)總線556或一個或多個核505A-N中的任一個接收數(shù)據(jù)分組的其他任何軟件和硬件元件。一些實施例中,分組引擎548A-N可包括一個或多個vServer275A-N或其任何部分。其他實施例中,分組引擎548A-N可提供以下功能的任意組合:SSLVPN280、內(nèi)部網(wǎng)IP282、交換284、DNS286、分組加速288、APPFW280、如由監(jiān)控代理197提供的監(jiān)控、和作為TCP堆棧關聯(lián)的功能、負載平衡、SSL卸載和處理、內(nèi)容交換、策略評估、高速緩存、壓縮、編碼、解壓縮、解碼、應用防火墻功能、XML處理和加速以及SSLVPN連接。[0261]一些實施例中,分組引擎548A-N可以與特定服務器、用戶、客戶或網(wǎng)絡關聯(lián)。分組引擎548與特定實體關聯(lián)時,分組引擎548可處理與該實體關聯(lián)的數(shù)據(jù)分組。例如,如果分組引擎548與第一用戶關聯(lián),那么該分組引擎548將對由第一用戶產(chǎn)生的分組或者目的地址與第一用戶關聯(lián)的分組進行處理和操作。類似地,分組引擎548可選擇不與特定實體關聯(lián),使得分組引擎548可對不是由該實體產(chǎn)生的或目的是該實體的任何數(shù)據(jù)分組進行處理和以其他方式進行操作。[0262]一些實例中,可將分組引擎548A-N配置為執(zhí)行圖5A所示的任何功能和/或數(shù)據(jù)并行方案。這些實例中,分組引擎548A-N可將功能或數(shù)據(jù)分布在多個核505A-N上,從而使得分布是根據(jù)并行機制或分布方案的。一些實施例中,單個分組引擎548A-N執(zhí)行負載平衡方案,其他實施例中,一個或多個分組弓I擎548A-N執(zhí)行負載平衡方案。一個實施例中,每個核505A-N可以與特定分組引擎548關聯(lián),使得可以由分組引擎執(zhí)行負載平衡。在該實施例中,負載平衡可要求與核505關聯(lián)的每個分組引擎548A-N和與核關聯(lián)的其他分組引擎通信,使得分組引擎548A-N可共同決定將負載分布在何處。該過程的一個實施例可包括從每個分組引擎接收對于負載的投票的仲裁器。仲裁器可部分地基于引擎投票的持續(xù)時間將負載分配給每個分組引擎548A-N,一些情況下,還可基于與在引擎關聯(lián)的核505上的當前負載量相關聯(lián)的優(yōu)先級值來將負載分配給每個分組引擎548A-N。[0263]核上運行的任何分組引擎可以運行于用戶模式、內(nèi)核模式或其任意組合。一些實施例中,分組引擎作為在用戶空間或應用空間中運行的應用或程序來操作。這些實施例中,分組引擎可使用任何類型或形式的接口來訪問內(nèi)核提供的任何功能。一些實施例中,分組引擎操作于內(nèi)核模式中或作為內(nèi)核的一部分來操作。一些實施例中,分組引擎的第一部分操作于用戶模式中,分組引擎的第二部分操作于內(nèi)核模式中。一些實施例中,第一核上的第一分組引擎執(zhí)行于內(nèi)核模式中,同時,第二核上的第二分組引擎執(zhí)行于用戶模式中。一些實施例中,分組引擎或其任何部分對NIC或其任何驅動器進行操作或者與其聯(lián)合操作。[0264]一些實施例中,存儲器總線556可以是任何類型或形式的存儲器或計算機總線。雖然在圖5B中描述了單個存儲器總線556,但是系統(tǒng)545可包括任意數(shù)量的存儲器總線556。一個實施例中,每個分組引擎548可以和一個或者多個單獨的存儲器總線556相關聯(lián)。[0265]一些實施例中,NIC552可以是此處所述的任何網(wǎng)絡接口卡或機制。NIC552可具有任意數(shù)量的端口。NIC可設計并構造成連接到任何類型和形式的網(wǎng)絡104。雖然示出單個NIC552,但是,系統(tǒng)545可包括任意數(shù)量的NIC552。一些實施例中,每個核505A-N可以與一個或多個單個NIC552關聯(lián)。因而,每個核505可以與專用于特定核505的單個NIC552關聯(lián)。[0266]核505A-N可包括此處所述的任何處理器。此外,可根據(jù)此處所述的任何核505配置來配置核505A-N。另外,核505A-N可具有此處所述的任何核505功能。雖然圖5B示出七個核505A-G,但是系統(tǒng)545可包括任意數(shù)量的核505。具體而言,系統(tǒng)545可包括N個核,其中N是大于零的整數(shù)。[0267]核可具有或使用被分配或指派用于該核的存儲器??蓪⒋鎯ζ饕暈樵摵说膶S谢虮镜卮鎯ζ鞑⑶覂H有該核可訪問該存儲器。核可具有或使用共享的或指派給多個核的存儲器。該存儲器可被視為由不只一個核可訪問的公共或共享存儲器。核可使用專有或公共存儲器的任何組合。通過每個核的單獨的地址空間,消除了使用同一地址空間的情況下的一些協(xié)調級別。利用單獨的地址空間,核可以對核自己的地址空間中的信息和數(shù)據(jù)進行工作,而不用擔心與其他核沖突。每個分組引擎可以具有用于TCP和/或SSL連接的單獨存儲器池。[0268]仍參考圖5B,上文結合圖5A描述的核505的任何功能和/或實施例可以部署在上文結合圖4A和4B描述的虛擬化環(huán)境的任何實施例中。不是以物理處理器505的形式部署核505的功能,而是將這些功能部署在諸如客戶機102、服務器106或設備200的任何計算裝置100的虛擬化環(huán)境400內(nèi)。其他實施例中,不是以設備或一個裝置的形式部署核505的功能,而是將該功能部署在任何布置的多個裝置上。例如,一個裝置可包括兩個或多個核,另一個裝置可包括兩個或多個核。例如,多核系統(tǒng)可包括計算裝置的集群、服務器群或計算裝置的網(wǎng)絡。一些實施例中,不是以核的形式部署核505的功能,而是將該功能部署在多個處理器上,例如部署多個單核處理器上。[0269]一個實施例中,核505可以為任何形式或類型的處理器。一些實施例中,核的功能可以基本類似此處所述的任何處理器或中央處理單元。一些實施例中,核505可包括此處所述的任何處理器的任何部分。雖然圖5A示出7個核,但是,設備200內(nèi)可以有任意N個核,其中N是大于I的整數(shù)。一些實施例中,核505可以安裝在公用設備200內(nèi),其他實施例中,核505可以安裝在彼此通信連接的一個或多個設備200內(nèi)。一些實施例中,核505包括圖形處理軟件,而其他實施例中,核505提供通用處理能力。核505可彼此物理靠近地安裝和/或可彼此通信連接??梢杂靡晕锢矸绞胶?或通信方式耦合到核的任何類型和形式的總線或子系統(tǒng)連接核,用于向核、從核和/或在核之間傳輸數(shù)據(jù)。[0270]盡管每個核505可包括用于與其他核通信的軟件,一些實施例中,核管理器(未不出)可有助于每個核505之間的通信。一些實施例中,內(nèi)核可提供核管理。核可以使用各種接口機制彼此接口或通信。一些實施例中,可以使用核到核的消息傳送來在核之間通信,比如,第一核通過連接到核的總線或子系統(tǒng)向第二核發(fā)送消息或數(shù)據(jù)。一些實施例中,核可通過任何種類或形式的共享存儲器接口通信。一個實施例中,可以存在在所有核中共享的一個或多個存儲器單元。一些實施例中,每個核可以具有和每個其他核共享的單獨存儲器單元。例如,第一核可具有與第二核的第一共享存儲器,以及與第三核的第二共享存儲器。一些實施例中,核可通過任何類型的編程或API(如通過內(nèi)核的函數(shù)調用)來通信。一些實施例中,操作系統(tǒng)可識別并支持多核裝置,并提供用于核間通信的接口和API。[0271]流分布器550可以是任何應用、程序、庫、腳本、任務、服務、進程或在任何類型或形式的硬件上執(zhí)行的任何類型和形式的可執(zhí)行指令。一些實施例中,流分布器550可以是用于執(zhí)行此處所述任何操作和功能的任何電路設計或結構。一些實施例中,流分布器分布、轉發(fā)、路由、控制和/或管理多個核505上的數(shù)據(jù)和/或在核上運行的分組引擎或VIP的分布。一些實施例中,可將流分布器550稱為接口主裝置(interfacemaster)。一個實施例中,流分布器550包括在設備200的核或處理器上執(zhí)行的一組可執(zhí)行指令。又一個實施例中,流分布器550包括在與設備200通信的計算機器上執(zhí)行的一組可執(zhí)行指令。一些實施例中,流分布器550包括在如固件的NIC上執(zhí)行的一組可執(zhí)行指令。其他實施例,流分布器550包括用于將數(shù)據(jù)分組分布在核或處理器上的軟件和硬件的任何組合。一個實施例中,流分布器550在至少一個核505A-N上執(zhí)行,而在其他實施例中,分配給每個核505A-N的單獨的流分布器550在相關聯(lián)的核505A-N上執(zhí)行。流分布器可使用任何類型和形式的統(tǒng)計或概率算法或決策來平衡多個核上的流。可以將如NIC的設備硬件或內(nèi)核設計或構造成支持NIC和/或核上的順序操作。[0272]系統(tǒng)545包括一個或多個流分布器550的實施例中,每個流分布器550可以與處理器505或分組引擎548關聯(lián)。流分布器550可包括允許每個流分布器550和在系統(tǒng)545內(nèi)執(zhí)行的其他流分布器550通信的接口機制。一個實例中,一個或多個流分布器550可通過彼此通信確定如何平衡負載。該過程的操作可以基本與上述過程類似,即將投票提交給仲裁器,然后仲裁器確定哪個流分布器550應該接收負載。其他實施例中,第一流分布器550’可識別所關聯(lián)的核上的負載并基于任何下列標準確定是否將第一數(shù)據(jù)分組轉發(fā)到所關聯(lián)的核:所關聯(lián)的核上的負載大于預定閾值;所關聯(lián)的核上的負載小于預定閾值;所關聯(lián)的核上的負載小于其他核上的負載;或者可以用于部分基于處理器上的負載量來確定將數(shù)據(jù)分組轉發(fā)到何處的任何其他指標。[0273]流分布器550可以根據(jù)如此處所述的分布、計算或負載平衡方法而將網(wǎng)絡流量分布在核505上。一個實施例中,流分布器可基于功能并行機制分布方案550、數(shù)據(jù)并行機制負載分布方案540、基于流的數(shù)據(jù)并行機制分布方案520或這些分布方案的任意組合或用于將負載分布在多個處理器上的任何負載平衡方案來分布網(wǎng)絡流量。因而,流分布器550可通過接收數(shù)據(jù)分組并根據(jù)操作的負載平衡或分布方案將數(shù)據(jù)分組分布在處理器上而充當負載分布器。一個實施例中,流分布器550可包括用于確定如何相應地分布分組、工作或負載的一個或多個操作、函數(shù)或邏輯。又一個實施例中,流分布器550可包括可識別與數(shù)據(jù)分組關聯(lián)的源地址和目的地址并相應地分布分組的一個或多個子操作、函數(shù)或邏輯。[0274]一些實施例中,流分布器550可包括接收側調整(RSS)網(wǎng)絡驅動器模塊560或將數(shù)據(jù)分組分布在一個或多個核505上的任何類型和形式的可執(zhí)行指令。RSS模塊560可以包括硬件和軟件的任意組合。一些實施例中,RSS模塊560和流分布器550協(xié)同工作以將數(shù)據(jù)分組分布在核505A-N或多處理器網(wǎng)絡中的多個處理器上。一些實施例中,RSS模塊560可在NIC552中執(zhí)行,其他實施例中,可在核505的任何一個上執(zhí)行。[0275]一些實施例中,RSS模塊560使用微軟接收側調整(RSS)方法。一個實施例中,RSS是微軟可擴展網(wǎng)絡主動技術(MicrosoftScalableNetworkinginitiativetechnology),其使得系統(tǒng)中的多個處理器上的接收處理是平衡的,同時保持數(shù)據(jù)的順序傳送。RSS可使用任何類型或形式的哈希方案來確定用于處理網(wǎng)絡分組的核或處理器。[0276]RSS模塊560可應用任何類型或形式的哈希函數(shù),如Toeplitz哈希函數(shù)。哈希函數(shù)可應用到哈希類型值或者任何值序列。哈希函數(shù)可以是任意安全級別的安全哈?;蛘呤且云渌绞郊用堋9:瘮?shù)可使用哈希關鍵字(hashkey)ο關鍵字的大小取決于哈希函數(shù)。對于Toeplitz哈希,用于IPv6的哈希關鍵字大小為40字節(jié),用于IPv4的哈希關鍵字大小為16字節(jié)。[0277]可以基于任何一個或多個標準或設計目標設計或構造哈希函數(shù)。一些實施例中,可使用為不同的哈希輸入和不同哈希類型提供均勻分布的哈希結果的哈希函數(shù),所述不同哈希輸入和不同哈希類型包括TCP/IPv4、TCP/IPv6、IPv4和IPv6頭部。一些實施例中,可使用存在少量桶時(例如2個或4個)提供均勻分布的哈希結果的哈希函數(shù)。一些實施例中,可使用存在大量桶時(例如64個桶)提供隨機分布的哈希結果的哈希函數(shù)。在一些實施例中,基于計算或資源使用水平來確定哈希函數(shù)。在一些實施例中,基于在硬件中實現(xiàn)哈希的難易度來確定哈希函數(shù)。在一些實施例中,基于用惡意的遠程主機發(fā)送將全部哈希到同一桶中的分組的難易度來確定哈希函數(shù)。[0278]RSS可從任意類型和形式的輸入來產(chǎn)生哈希,例如值序列。該值序列可包括網(wǎng)絡分組的任何部分,如網(wǎng)絡分組的任何頭部、域或載荷或其一部分。一些實施例中,可將哈希輸入稱為哈希類型,哈希輸入可包括與網(wǎng)絡分組或數(shù)據(jù)流關聯(lián)的任何信息元組,例如下面的類型:包括至少兩個IP地址和兩個端口的四元組、包括任意四組值的四元組、六元組、二元組和/或任何其他數(shù)字或值序列。以下是可由RSS使用的哈希類型示例:[0279]-源TCP端口、源IP版本4(IPv4)地址、目的TCP端口和目的IPv4地址的四元組。[0280]-源TCP端口、源IP版本6(IPv6)地址、目的TCP端口和目的IPv6地址的四元組。[0281]-源IPv4地址和目的IPv4地址的二元組。[0282]-源IPv6地址和目的IPv6地址的二元組。[0283]-源IPv6地址和目的IPv6地址的二元組,包括對解析IPv6擴展頭部的支持。[0284]哈希結果或其任何部分可用于識別用于分布網(wǎng)絡分組的核或實體,如分組引擎或Vipo一些實施例中,可向哈希結果應用一個或者多個哈希位或掩碼。哈希位或掩碼可以是任何位數(shù)或字節(jié)數(shù)。NIC可支持任意位,例如7位。網(wǎng)絡堆??稍诔跏蓟瘯r設定要使用的實際位數(shù)。位數(shù)介于I和7之間,包括端值。[0285]可通過任意類型和形式的表用哈希結果來識別核或實體,例如通過桶表(buckettable)或間接表(indirectiontable)。一些實施例中,用哈希結果的位數(shù)來索引表。哈希掩碼的范圍可有效地限定間接表的大小。哈希結果的任何部分或哈希結果自身可用于索引間接表。表中的值可標識任何核或處理器,例如通過核或處理器標識符來標識。一些實施例中,表中標識多核系統(tǒng)的所有核。其他實施例中,表中標識多核系統(tǒng)的一部分核。間接表可包括任意多個桶,例如2到128個桶,可以用哈希掩碼索引這些桶。每個桶可包括標識核或處理器的索引值范圍。一些實施例中,流控制器和/或RSS模塊可通過改變間接表來重新平衡網(wǎng)絡負載。[0286]一些實施例中,多核系統(tǒng)575不包括RSS驅動器或RSS模塊560。在這些實施例的一些中,軟件操控模塊(未不出)或系統(tǒng)內(nèi)RSS模塊的軟件實施例可以和流分布器550共同操作或者作為流分布器550的一部分操作,以將分組引導到多核系統(tǒng)575中的核505。[0287]一些實施例中,流分布器550在設備200上的任何模塊或程序中執(zhí)行,或者在多核系統(tǒng)575中包括的任何一個核505和任一裝置或組件上執(zhí)行。一些實施例中,流分布器550’可在第一核505A上執(zhí)行,而在其他實施例中,流分布器550”可在NIC552上執(zhí)行。其他實施例中,流分布器550’的實例可在多核系統(tǒng)575中包括的每個核505上執(zhí)行。該實施例中,流分布器550’的每個實例可和流分布器550’的其他實例通信以在核505之間來回轉發(fā)分組。存在這樣的狀況,其中,對請求分組的響應不是由同一核處理的,即第一核處理請求,而第二核處理響應。這些情況下,流分布器550’的實例可以攔截分組并將分組轉發(fā)到期望的或正確的核505,即流分布器550’可將響應轉發(fā)到第一核。流分布器550’的多個實例可以在任意數(shù)量的核505或核505的任何組合上執(zhí)行。[0288]流分布器可以響應于任一個或多個規(guī)則或策略而操作。規(guī)則可識別接收網(wǎng)絡分組、數(shù)據(jù)或數(shù)據(jù)流的核或分組處理引擎。規(guī)則可識別和網(wǎng)絡分組有關的任何類型和形式的元組信息,例如源和目的IP地址以及源和目的端口的四元組?;谒邮盏钠ヅ湟?guī)則所指定的元組的分組,流分布器可將分組轉發(fā)到核或分組引擎。一些實施例中,通過共享存儲器和/或核到核的消息傳輸將分組轉發(fā)到核。[0289]雖然圖5B不出了在多核系統(tǒng)575中執(zhí)行的流分布器550,但是,一些實施例中,流分布器550可執(zhí)行在位于遠離多核系統(tǒng)575的計算裝置或設備上。這樣的實施例中,流分布器550可以和多核系統(tǒng)575通信以接收數(shù)據(jù)分組并將分組分布在一個或多個核505上。一個實施例中,流分布器550接收以設備200為目的地的數(shù)據(jù)分組,向所接收的數(shù)據(jù)分組應用分布方案并將數(shù)據(jù)分組分布到多核系統(tǒng)575的一個或多個核505。一個實施例中,流分布器550可以被包括在路由器或其他設備中,這樣路由器可以通過改變與每個分組關聯(lián)的元數(shù)據(jù)而以特定核505為目的地,從而每個分組以多核系統(tǒng)575的子節(jié)點為目的地。這樣的實施例中,可用CISCO的vn-tag機制來改變或標記具有適當元數(shù)據(jù)的每個分組。[0290]圖5C示出包括一個或多個處理核505A-N的多核系統(tǒng)575的實施例。簡言之,核505中的一個可被指定為控制核505A并可用作其他核505的控制平面570。其他核可以是次級核,其工作于數(shù)據(jù)平面,而控制核提供控制平面。核505A-N共享全局高速緩存580??刂坪颂峁┛刂破矫?,多核系統(tǒng)中的其他核形成或提供數(shù)據(jù)平面。這些核對網(wǎng)絡流量執(zhí)行數(shù)據(jù)處理功能,而控制核提供對多核系統(tǒng)的初始化、配置和控制。[0291]仍參考圖5C,具體而言,核505A-N以及控制核505A可以是此處所述的任何處理器。此外,核505A-N和控制核505A可以是能在圖5C所述系統(tǒng)中工作的任何處理器。另外,核505A-N可以是此處所述的任何核或核組??刂坪丝梢允桥c其他核不同類型的核或處理器。一些實施例中,控制核可操作不同的分組引擎或者具有與其他核的分組引擎配置不同的分組引擎。[0292]每個核的存儲器的任何部分可以被分配給或者用作核共享的全局高速緩存。簡而言之,每個核的每個存儲器的預定百分比或預定量可用作全局高速緩存。例如,每個核的每個存儲器的50%可用作或分配給共享全局高速緩存。也就是說,所示實施例中,除了控制平面核或核I以外的每個核的2GB可用于形成28GB的共享全局高速緩存。例如通過配置服務而配置控制平面可確定用于共享全局高速緩存的存儲量(theamountofmemory)。一些實施例中,每個核可提供不同的存儲量供全局高速緩存使用。其他實施例中,任一核可以不提供任何存儲器或不使用全局高速緩存。一些實施例中,任何核也可具有未分配給全局共享存儲器的存儲器中的本地高速緩存。每個核可將網(wǎng)絡流量的任意部分存儲在全局共享高速緩存中。每個核可檢查高速緩存來查找要在請求或響應中使用的任何內(nèi)容。任何核可從全局共享高速緩存獲得內(nèi)容以在數(shù)據(jù)流、請求或響應中使用。[0293]全局高速緩存580可以是任意類型或形式的存儲器或存儲元件,例如此處所述的任何存儲器或存儲元件。一些實施例中,核505可訪問預定的存儲量(即32GB或者與系統(tǒng)575相當?shù)娜魏纹渌鎯α?。全局高速緩存580可以從預定的存儲量分配而來,同時,其余的可用存儲器可在核505之間分配。其他實施例中,每個核505可具有預定的存儲量。全局高速緩存580可包括分配給每個核505的存儲量。該存儲量可以字節(jié)為單位來測量,或者可用分配給每個核505的存儲器百分比來測量。因而,全局高速緩存580可包括來自與每個核505關聯(lián)的存儲器的IGB存儲器,或者可包括和每個核505關聯(lián)的存儲器的20%或一半。一些實施例,只有一部分核505提供存儲器給全局高速緩存580,而在其他實施例,全局高速緩存580可包括未分配給核505的存儲器。[0294]每個核505可使用全局高速緩存580來存儲網(wǎng)絡流量或緩存數(shù)據(jù)。一些實施例中,核的分組引擎使用全局高速緩存來緩存并使用由多個分組引擎所存儲的數(shù)據(jù)。例如,圖2A的高速緩存管理器和圖2B的高速緩存功能可使用全局高速緩存來共享數(shù)據(jù)以用于加速。例如,每個分組引擎可在全局高速緩存中存儲例如HTML數(shù)據(jù)的響應。操作于核上的任何高速緩存管理器可訪問全局高速緩存來將高速緩存響應提供給客戶請求。[0295]一些實施例中,核505可使用全局高速緩存580來存儲端口分配表,其可用于部分基于端口確定數(shù)據(jù)流。其他實施例中,核505可使用全局高速緩存580來存儲地址查詢表或任何其他表或列表,流分布器可使用這些表來確定將到來的數(shù)據(jù)分組和發(fā)出的數(shù)據(jù)分組導向何處。一些實施例中,核505可以讀寫高速緩存580,而其他實施例中,核505僅從高速緩存讀或者僅向高速緩存寫。核可使用全局高速緩存來執(zhí)行核到核通信。[0296]可以將全局高速緩存580劃分成各個存儲器部分,其中每個部分可專用于特定核505。一個實施例中,控制核505A可接收大量的可用高速緩存,而其他核505可接收對全局高速緩存580的變化的訪問量。[0297]一些實施例中,系統(tǒng)575可包括控制核505A。雖然圖5C將核1505A示為控制核,但是,控制核可以是設備200或多核系統(tǒng)中的任何一個核。此外,雖然僅描述了單個控制核,但是,系統(tǒng)575可包括一個或多個控制核,每個控制核對系統(tǒng)有某種程度的控制。一些實施例中,一個或多個控制核可以各自控制系統(tǒng)575的特定方面。例如,一個核可控制決定使用哪種分布方案,而另一個核可確定全局高速緩存580的大小。[0298]多核系統(tǒng)的控制平面可以是將一個核指定并配置成專用的管理核或者作為主核??刂破矫婧丝蓪Χ嗪讼到y(tǒng)中的多個核的操作和功能提供控制、管理和協(xié)調??刂破矫婧丝蓪Χ嗪讼到y(tǒng)中的多個核上存儲器系統(tǒng)的分配和使用提供控制、管理和協(xié)調,這包括初始化和配置存儲器系統(tǒng)。一些實施例中,控制平面包括流分布器,用于基于數(shù)據(jù)流控制數(shù)據(jù)流到核的分配以及網(wǎng)絡分組到核的分配。一些實施例中,控制平面核運行分組引擎,其他實施例中,控制平面核專用于系統(tǒng)的其他核的控制和管理。[0299]控制核505A可對其他核505進行某種級別的控制,例如,確定將多少存儲器分配給每個核505,或者確定應該指派哪個核來處理特定功能或硬件/軟件實體。一些實施例中,控制核505A可以對控制平面570中的這些核505進行控制。因而,控制平面570之外可存在不受控制核505A控制的處理器。確定控制平面570的邊界可包括由控制核505A或系統(tǒng)575中執(zhí)行的代理維護由控制核505A控制的核的列表??刂坪?05A可控制以下的任一個:核初始化、確定核何時不可用、一個核出故障時將負載重新分配給其他核505、決定實現(xiàn)哪個分布方案、決定哪個核應該接收網(wǎng)絡流量、決定應該給每個核分配多少高速緩存、確定是否將特定功能或元件分布到特定核、確定是否允許核彼此通信、確定全局高速緩存580的大小以及對系統(tǒng)575內(nèi)的核的功能、配置或操作的任何其他確定。[0300]F.用于經(jīng)由中間裝置重寫數(shù)據(jù)流的系統(tǒng)和方法[0301]圖6A和6B描述了使用流式重寫的系統(tǒng)的實施例。該系統(tǒng)可包括經(jīng)由一個或多個客戶機裝置訪問設備的一個或多個用戶。設備還可以與一個或多個后端服務器通信。[0302]進一步參考圖6A和6B且具體描述,在一個實施例中,系統(tǒng)可包括經(jīng)由一個或多個客戶機訪問設備的一個或多個用戶??蛻魴C可以是任何計算機,并且在一些實施例中可以是本文描述的任何計算裝置100。在一些實施例中,客戶機可以是設備、服務器或者任何其他計算機器。經(jīng)由一個或多個客戶機訪問設備的用戶可使用在一個或多個客戶機上顯示的一個或多個用戶接口發(fā)出請求。在一些實施例中,客戶機響應于輸入到在客戶機上顯示的用戶接口中的客戶機信息而生成請求。在一些實施例中,該請求可以是HTTP請求。[0303]設備可以是任何設備,且在一些實施例中可以是本文描述的任何設備200。在一些實施例中,設備200可包括多核系統(tǒng)545。[0304]在一個實施例中,設備可與一個或多個后端服務器通信。在一些實施例中,后端服務器可以是任何服務器。在另一個實施例中,后端服務器可以是本文描述的任何服務器。在一些實施例中,后端服務器可接收HTTP請求并且生成和發(fā)出HTTP響應。當接收到HTTP響應時,設備可將該HTTP響應轉發(fā)到一個或多個客戶機。[0305]圖6A描述其中可由設備執(zhí)行重寫的系統(tǒng)的實施例。在本實施例中,重寫可包括用短語或模式“https”替換短語或模式“http”。在一些實施例中,當在設備上接收到數(shù)據(jù)分組時,設備可重寫它們。在重寫分組時,設備可將分組轉發(fā)到后端服務器。在其他實施例中,當在設備上接收到由客戶機發(fā)出的HTTP請求時,設備可重寫它們。當重寫HTTP請求時,設備可將請求轉發(fā)到后端服務器。[0306]在一些實施例中,由設備重寫的內(nèi)容可以是由一組動作所部分限定的內(nèi)容。可由在設備上配置的一組策略來觸發(fā)這些動作。例如,動作可指示需要用短語或模式“HTTPS://”來替換在響應主體中出現(xiàn)的所有短語或模式“HTTP://”。在一些實施例中,接著設備可將每個響應主體復制到緩沖區(qū)、解析主體得到所需的模式,并且重寫包括所需模式的響應的部分。盡管圖6A和6B描述了指定重寫單個模式或短語的單個動作,但重寫處理可包括多個動作,其中每個動作可指定將要由設備重寫的一個或多個模式或短語。在多個實施例中,設備在重寫所指示的模式之前解析分組、響應或請求的主體。[0307]圖6B中描述了其中使用界線字節(jié)(barrierbyte)的系統(tǒng)的一個實施例。在一些實施例中,設備可連續(xù)重寫分組、響應和/或請求,直到達到界線字節(jié)量。在一些實施例中,界線字節(jié)可以是可由設備保存的最大量分組的總和。盡管在一些實施例中該界線字節(jié)的值可以是固定值,但在其他實施例中,可基于系統(tǒng)的特征自動地配置界線字節(jié)的值。在一些實施例中,可通過在設備上啟動一個或多個控制來配置界線字節(jié)的值。在其他實施例中,可經(jīng)由設備顯示屏上的管理接口來配置界線字節(jié)的值。[0308]圖6C中描述的是用于重寫穿過客戶機102和服務器106中間的裝置的內(nèi)容流的系統(tǒng)600的一個實施例。簡要概括,該系統(tǒng)包括在客戶機102和服務器106中間的裝置200??蛻魴C可以是本文描述的任何計算裝置。系統(tǒng)600可包括一個或多個客戶機。服務器可以是本文描述的任何計算裝置。系統(tǒng)600可包括一個或多個服務器或者位于服務器群中。裝置200可攔截通過網(wǎng)絡104在客戶機102和服務器106之間通信的請求610和響應615。設備可包括應用防火墻290,其可以包括解析器620、分組引擎548、重寫緩沖器625、重寫器(rewriter)630、動作635和數(shù)據(jù)庫640。在一些實施例中,可在設備200上但是在防火墻290之外存儲這些組件中的一個或多個。在一些實施例中,數(shù)據(jù)庫管理器可駐留在設備200上。在一些實施例中,數(shù)據(jù)庫管理器可駐留在設備200上,但是在應用防火墻290之外。在一些實施例中,系統(tǒng)600包括用于存儲數(shù)據(jù)庫640的一個或多個存儲裝置。[0309]盡管可將本文描述的一些步驟視為由應用防火墻290或設備200,或者由防火墻290或裝置200的某個組件或模塊執(zhí)行,但應理解,在各個實施例中,系統(tǒng)600的任何一個或多個組件或模塊可執(zhí)行相同或實質相同的步驟,而不會脫離本發(fā)明的精神和范圍。此外,盡管就數(shù)據(jù)庫進行概括描述,但應認識到本系統(tǒng)和方法可對允許存儲所標識的模式的任何適當?shù)臄?shù)據(jù)結構進行操作。[0310]設備或裝置200可以是數(shù)據(jù)處理、管理或存儲系統(tǒng)600的任何裝置或組件。裝置200可以是設備、網(wǎng)關或者在一個或多個客戶機102和/或一個或多個服務器106之間的中間裝置。在一些實施例中,裝置200是接收或發(fā)送一個或多個消息677的客戶機102或者服務器106的部分。在各個實施例中,裝置200可包括上文中結合圖1A-1H、2A-2B、3、4A-4C和5A-5C描述的計算裝置100、102和/或服務器106的任一實施例的一個或多個特征。舉例來說且并不意在進行限制,在下文中裝置200有時被描述為在應用防火墻處理環(huán)境中的防火墻290。[0311]應用防火墻290可包括任何類型或形式的硬件和/或硬件和軟件的組合。應用防火墻290可包括任何應用、程序、庫、腳本、進程、任務、線程或者在系統(tǒng)的任何處理器或核上執(zhí)行的任何類型和形式的可執(zhí)行指令。應用防火墻290可包括一個或多個模塊,包括解析器620、重寫緩沖器625、重寫器630、動作635、數(shù)據(jù)庫640和數(shù)據(jù)庫管理器。這些模塊中的任何一個或多個可具有或者繼承應用防火墻290的一些屬性。這些模塊中的任何一個或多個可包括應用防火墻290的某些部分,例如硬件或者硬件和/或軟件的組合。應用防火墻290可接收來自下列任何一個或多個的一個或多個請求610或者響應615、通信、分組和/或命令:用戶、程序、處理模塊和其他裝置(例如,客戶機102和/或服務器106)。[0312]應用防火墻290可包括用于接收請求610或響應615,和/或向目的地(例如服務器106)重傳請求610或響應615的收發(fā)器。應用防火墻290可接收來自多個裝置的請求610或響應615,并且可處理在任何兩個或更多裝置之間的、在任何方向上的請求610或響應615(即提供雙向支持)??蓪梅阑饓?90設計、構造和/或配置為接收、攔截、重定向、重新路由、過濾或者以其他方式處理請求610或響應615。應用防火墻290可經(jīng)由解析器620從一個或多個請求610或者響應615中識別、提取或推斷一個或多個模式。[0313]請求610或響應615可以是使用任何標準、專有和/或定制協(xié)議的任何類型或形式的通信。請求610或響應615可以是裝置之間的通信或者是裝置模塊之間的通信的部分。請求610或響應615可包括命令、頭部信息、有效載荷、證書、認證信息、用戶信息以及任何其他類型的事務信息或內(nèi)容。[0314]可將解析器620設計、構造和/或配置為提取、解析、推斷、識別或者以其他方式處理來自請求610或響應615的分組或者任何內(nèi)容。解析器620可包括硬件或者軟件和硬件的任何組合。解析器620可包括應用、程序、庫、腳本、進程、任務、線程或者在裝置200的一個或多個處理器或核上執(zhí)行的任何類型和形式的可執(zhí)行指令。在一些實施例中,解析器620是通用或者多語法/語言解析器620。在其他實施例中,將解析器620設計和構造為處理或者分析任何一種或多種特定類型的信息。在一些實施例中,解析器620可解密、解壓縮、執(zhí)行協(xié)議轉換或者以其他方式處理接收的請求610或響應615。[0315]重寫緩沖器625可包括硬件或者硬件和軟件的任何組合。重寫緩沖器625可存儲在設備200上。在一些實施例中,重寫緩沖器625可以是應用防火墻290的組件。在一些實施例中,重寫緩沖器是用于存儲識別的分組的存儲緩沖器。在一些實施例中,重寫緩沖器是存儲包括分組的數(shù)據(jù)結構的存儲緩沖器。在一些實施例中,重寫緩沖器625可具有預定的大小閾值。在一些實施例中,在制造時確定重寫緩沖器625的預定的大小閾值。在一些實施例中,由系統(tǒng)600的管理員設置該預定的大小閾值。在一些實施例中,可在與設備200關聯(lián)的存儲裝置上存儲重寫緩沖器625。[0316]可將重寫器630設計、構造和/或配置為修改、更新、生成、識別或者以其他方式處理來自請求610或響應615的分組或者任何內(nèi)容。重寫器630可包括硬件或者軟件和硬件的任何組合。重寫器630可包括應用、程序、庫、腳本、進程、任務、線程或者在裝置200的一個或多個處理器或者核上執(zhí)行的任何類型和形式的可執(zhí)行指令。在其他實施例中,將重寫器630設計和構造為處理或者分析任何一種或多種特定類型的信息。在一些實施例中,重寫器630可使用由裝置200提供的一個或多個標識的模式來為所識別的分組生成新分組。在一些實施例中,重寫器使用第一模式來識別分組中要重寫的內(nèi)容。接著重寫器630使用來自所識別的分組的數(shù)據(jù)創(chuàng)建新分組,并且替換第一模式。在一些實施例中,由第二模式替換第一模式。在一些實施例中,重寫器用用戶提供的內(nèi)容來替換第一模式。在一些實施例中,重寫器用由裝置的動作、規(guī)則或策略提供的內(nèi)容來替換第一模式。在一些實施例中,重寫器完成新分組的生成并且刪除現(xiàn)有的分組。[0317]在一些實施例中,重寫器630修改現(xiàn)有分組。重寫器630接收將被修改的分組,并且使用由裝置200提供的模式來識別將被修改的分組的內(nèi)容。在一些實施例中,重寫器630使用由裝置200標識或提供的模式來識別將被修改的內(nèi)容。在一些實施例中,重寫器630刪除所識別的內(nèi)容。在一些實施例中,重寫器替換所識別的內(nèi)容。在一些實施例中,重寫器630用由裝置200提供的另一個模式來替換所識別的內(nèi)容。在一些實施例中,重寫器630用用戶提供的信息來替換所識別的內(nèi)容。在一些實施例中,重寫器630使用在裝置的動作、規(guī)則或策略中提供的內(nèi)容替換所識別的內(nèi)容。[0318]可由任何應用、程序、庫、腳本、任務、服務、進程或者在任何類型和形式的硬件上執(zhí)行的任何類型和形式的可執(zhí)行指令來表示或執(zhí)行動作620。在一些實施例中,動作620可以是用于執(zhí)行本文描述的任何操作和功能的電路的任何設計和構造。在一些實施例中,動作620可包括在設備200上的一組可執(zhí)行指令。在另一個實施例中,動作620包括在與設備200通信的計算機器102、106上執(zhí)行的一組可執(zhí)行指令。在一些實施例中,動作620是在NIC(例如固件)上執(zhí)行的一組可執(zhí)行指令。在其他實施例中,動作620包括軟件和硬件任何組合,以處理從客戶機102或服務器106攔截的網(wǎng)絡分組。動作620可指定將要執(zhí)行的一組可執(zhí)行指令。動作620的示例可包括但不限于:生成新分組、從重寫緩沖器625移除分組,以及將來自多個分組的數(shù)據(jù)流存儲到重寫緩沖器625。[0319]可將數(shù)據(jù)庫640設計、構造和/或配置為存儲來自請求610或響應615的分組或者任何內(nèi)容的標識的模式。數(shù)據(jù)庫640可包括硬件或者軟件和硬件的任何組合??稍谠O備200上存儲數(shù)據(jù)庫640。在一些實施例中,數(shù)據(jù)庫640可以是存儲信息的任何手段,例如表、哈希表或矩陣。在一些實施例中,可在存儲裝置上存儲數(shù)據(jù)庫640。在一些實施例中,可在服務器106上存儲數(shù)據(jù)庫。[0320]裝置200的數(shù)據(jù)庫管理器可接收來自解析器676的一個或多個字符串。數(shù)據(jù)庫管理器可接收、存儲、生成或者修改經(jīng)由任何類型或形式的通信的數(shù)據(jù)庫查詢,例如,經(jīng)由核到核消息傳送(CCM),其中一個核執(zhí)行解析器620而數(shù)據(jù)庫管理器包括另一個核??蓪?shù)據(jù)庫管理器設計、構造和/或配置為管理從響應615或請求610中提取的所標識的模式的數(shù)據(jù)庫640。數(shù)據(jù)庫管理器可將標識的模式評估、計算、翻譯、轉換或者以其他方式處理為查詢。數(shù)據(jù)庫管理器可使用、采用、調用或者執(zhí)行任何算法、方法、公式、函數(shù)、轉換裝置、程序、腳本或命令,來將標識的模式處理為數(shù)據(jù)庫查詢。數(shù)據(jù)庫管理器可處理每個標識的模式,以在數(shù)據(jù)庫查詢中使用。[0321]圖7中示出的是描述用于執(zhí)行流式重寫的方法的一個實施例的流程圖。在一些實施例中,設備200對壓縮的一組分組進行解塊,使得設備200可訪問每一個單獨分組。設備200上的數(shù)據(jù)庫640可存儲一個或多個感興趣的模式。在一些實施例中,可在規(guī)則或動作635中限定這些模式??蓪⒁?guī)則和/或動作635稱作panstr模式,并且規(guī)則和/或動作635可標識用來進行重寫的一個或多個模式或短語??蓪⑦@些模式和/或短語稱作感興趣的模式。[0322]在一些實施例中,存儲模式、短語、動作635和/或規(guī)則的數(shù)據(jù)庫640可以是媒介(panner)數(shù)據(jù)庫640。在一些實施例中,可在設備200的協(xié)議控制塊內(nèi)包括該數(shù)據(jù)庫640。在其他實施例中,媒介數(shù)據(jù)庫640可以是存儲用于執(zhí)行本文描述的方法和系統(tǒng)的信息的任何數(shù)據(jù)庫、表和/或列表。在其他實施例中,由協(xié)議控制塊而不是媒介數(shù)據(jù)庫640存儲將對解塊的分組采取的動作635。在一些實施例中,協(xié)議控制塊可以是可管理設備與客戶機102和/或服務器106的連接的連接管理結構。[0323]在從媒介數(shù)據(jù)庫640檢索到感興趣的模式時,設備200可針對一個或多個感興趣的模式解析每個分組的主體。在一些實施例中,當設備200識別了一個模式,該設備200用由媒介數(shù)據(jù)庫中的動作6350標識的新模式重寫該模式。在一些實施例中,可緩沖重寫后的分組、可應用額外編輯,并且可將分組重新組合到一起。在一些實例中,設備200可在重新組合分組前,將編輯后的分組重新映射到TCP套接字或端口。[0324]圖8A中描述的是用于執(zhí)行流式重寫的方法800的一個實施例。設備可對一組分組進行解塊(步驟805)并且識別動作或規(guī)則,該動作或規(guī)則進一步識別一個或多個搜索模式(步驟810)。接著,在設備上執(zhí)行的解析器可解析一個或多個分組的主體,以識別搜索模式(步驟815)。接著,設備可用標識的新模式來重寫出現(xiàn)的搜索模式(步驟820),以及為重寫保存部分寫入響應的分組(步驟825)。接著,設備可重新組合分組,并且將重新組合的分組傳輸?shù)侥康牡?步驟830)。[0325]進一步參考圖8A且具體描述,在一個實施例中設備可對一組分組進行解塊(步驟805)。解塊一組分組可包括分離一組壓縮的和/或編碼的分組。在一些實施例中,一組分組可與響應和/或請求相對應。在一些實施例中,解塊一組分組可得到一個或多個單個分組的列表,這些分組一起構成整個響應和/或請求。在一些實施例中,解塊可包括從塊中的每個分組移除塊頭。[0326]接著,設備可識別動作和/或規(guī)則,該動作和/或規(guī)則進一步識別搜索模式(步驟810)。在一些實施例中,可在設備200上存儲動作和/或規(guī)則。在其他實施例中,可在設備200上的媒介數(shù)據(jù)庫640內(nèi)存儲動作635和/或規(guī)則。在一個實施例中,動作和/或規(guī)則635可掛在設備200的協(xié)議控制塊。由動作和/或規(guī)則635識別的搜索模式可包括要替換的模式,以及要覆寫老的模式的新模式。例如,這些模式可以是:用“https://”替換“http://”的指示、用“xyz.com”替換“abc.com”的指示,以及用“修改的”替換“文本”的指示。因此,搜索模式可包括字母、數(shù)字和符號的任何組合。在一個實施例中,數(shù)據(jù)庫640可包括多于一個的動作和/或規(guī)則。在其他實施例中,動作和/或規(guī)則可標識一個或多個搜索模式。[0327]在識別了一個或多個搜索模式時,在設備上執(zhí)行的解析器可針對所識別的搜索模式解析每個分組的主體(步驟815)。在一些實施例中,解析器可解析響應或請求的主體。在其他實施例中,解析器可在針對模式解析分組的同時,獲得關于模式的信息。解析器可將獲得的模式信息存儲到媒介數(shù)據(jù)庫中。[0328]在一個實施例中,設備可重寫響應和/或分組,以便用新識別的模式來替換搜索模式(步驟820)。例如,可用模式“123”來替換模式“abc”。在一些實施例中,可在查找媒介數(shù)據(jù)庫之后執(zhí)行重寫動作。在為特定響應和/或分組在媒介數(shù)據(jù)庫中識別了模式信息時,設備可重寫該響應和/或分組,或者設備可更新媒介數(shù)據(jù)庫并且對搜索模式的任何實例執(zhí)行重寫。[0329]在一些實施例中,可為重寫保存至少部分響應(步驟825)。保存的響應的大小可與配置的界線字節(jié)相對應。盡管圖8描述了保存分組的方法800,但在在一些實施例中,對于將要發(fā)生的重寫,不需要保存響應的任何部分。實質上,無論響應中有多少可用于重寫,可執(zhí)行所有重寫動作。在一些實施例中,當由保存的分組占用的存儲器的量超過界線字節(jié)限制時,可釋放保存最久的分組從而空出存儲器。[0330]在一些實施例中,在重寫了分組時,設備可重新組合分組并且將重新組合的分組傳輸?shù)侥康牡?步驟830)。在一些實施例中,當采用傳輸編碼時,可解塊和/或重新組合分組。在一些實施例中,重新組合可包括向塊中的每個分組添加修改的塊頭。在一些實施例中,設備可在重新組合分組之前,執(zhí)行分組到TCP套接字或端口的TCP重新映射。在一些實施例中,目的地可以是任何計算機、客戶機、服務器、設備和/或計算裝置。[0331]現(xiàn)參考圖SB,示出了描述用于重寫穿過客戶機和服務器中間的裝置的內(nèi)容流的方法850的流程圖。簡要概括,在步驟852,在客戶機和服務器中間的裝置識別要匹配的多個模式,其用于重寫由裝置接收的內(nèi)容流。在步驟854,裝置通過對分組內(nèi)容的單次解析,執(zhí)行多個模式和分組內(nèi)容的匹配。在步驟856,裝置將匹配結果存儲到與連接關聯(lián)的數(shù)據(jù)庫。在步驟858,裝置將分組存儲到具有預定的大小閾值的重寫緩沖器,其中該重寫緩沖器用于存儲要在傳輸前重寫的分組。在步驟860,裝置響應于確定重寫緩沖器的大小超過了該預定的大小閾值,來執(zhí)行重寫。裝置基于對數(shù)據(jù)庫中最老的分組執(zhí)行匹配的結果,來對從重寫緩沖器移除的最老分組執(zhí)行重寫。在步驟862,裝置傳輸重寫的最老的分組。[0332]仍參考圖6B且詳細描述,在步驟852,在客戶機和服務器中間的裝置識別要匹配的多個模式,其用于重寫由裝置接收的內(nèi)容流。在一些實施例中,裝置利用有效多模式搜索算法來識別多個模式。裝置可將這些模式存儲到媒介數(shù)據(jù)庫640中。在一些實施例中,裝置響應于多個模式的識別來生成動作。在一些實施例中,裝置將識別的模式合并到現(xiàn)有動作和/或規(guī)則中。在一些實施例中,在媒介數(shù)據(jù)庫640中存儲更新的動作或規(guī)則。如果所識別的模式先前還沒有被識別過,則裝置將所識別的模式存儲到媒介數(shù)據(jù)庫640中。如果在先前的模式識別中已經(jīng)識別了所識別的模式,那么不更新媒介數(shù)據(jù)庫。在一些實施例中,裝置200解析接收的http請求610以識別模式。在一些實施例中,裝置200解析接收的http響應615以識別模式。在一些實施例中,裝置200解析接收的http請求610或響應615的主體,并且將任何識別的模式與現(xiàn)有規(guī)則或動作635比較。在一些實施例中,裝置可以將識別的模式添加到規(guī)則或動作635中的現(xiàn)有模式。在一些實施例中,裝置可以用識別的模式替換規(guī)則或動作635的現(xiàn)有模式。在一些實施例中,裝置200可以用包括一個或多個識別的模式的新生成的規(guī)則或動作來替換現(xiàn)有規(guī)則或動作635。在一些實施例中,裝置可通過多個分組來接收來自服務器106的、對客戶機102的請求610的響應615。在一些實施例中,多個分組中的每個分組的有效載荷包括響應615的主體的部分。在一些實施例中,可在單個分組中識別響應615的主體。在一些實施例中,請求610的主體可包括多個分組的主體的部分。在一些實施例中,可在單個分組中識別請求610的主體。[0333]在步驟854,裝置200通過分組內(nèi)容的單次解析來執(zhí)行多個模式與分組內(nèi)容的匹配。在一些實施例中,裝置將識別的模式與單個分組的內(nèi)容進行匹配或比較。在一些實施例中,可在單個分組中識別多個模式。在一些實施例中,可在單個分組中找到多個模式中的單個模式。在一些實施例中,在單個分組中可能找不到多個模式中的任何所識別的模式。在一些實施例中,裝置200應用解析接收的分組的有效多模式搜索算法。通過應用多模式搜索算法,系統(tǒng)600可在搜索多個模式時在單次掃描(singlepass)中處理分組。在一些實施例中,規(guī)則或動作635可包括多個模式??蓪⒁?guī)則或模式635應用于分組,并且可在分組內(nèi)搜索規(guī)則的多個模式。在一些實施例中,可將各自包括多個模式的多個規(guī)則或動作635組合到單個查詢中,并且可在單次掃描中在分組中搜索來自該多個規(guī)則或動作635的所有模式。[0334]在一些實施例中,系統(tǒng)可采用多模式搜索算法。在一些實施例中,系統(tǒng)600可并發(fā)或同時采用多個算法。在一些實施例中,系統(tǒng)600可采用Boyer-Moore字符串搜索算法或者Boyer-Moore算法的一些變形。在Boyer-Moore算法中,如本領域公知的,該算法可反向操作對于檢查特定位置處是否存在匹配的驗證或者嘗試。在檢查給定字符串的最后字符之后,如果驗證失敗,則算法可向前跳并且開始尋找在文本指定或確定位置終止的匹配。算法可預先計算兩個表以處理其在每次失敗的驗證中獲得的信息。第一個表包括關于基于導致匹配嘗試失敗的字符標識,向前多少位置來開始下一搜索的信息。第二個表包括基于在匹配嘗試失敗之前成功匹配了多少個字符的計算。當發(fā)生不匹配時,該算法可移動兩個跳轉值中較大的那個值。[0335]在一些實施例中,系統(tǒng)600可采用Wu-Manber字符串搜索算法或Wu-Manber算法的一些變形,該Wu-Manber算法是對Boyer-Moore算法的改進。如本領域公知的,Wu-Manber算法是采用以下三個表的多階段算法:移動(SHIFT)表、哈希(HASH)表和前綴(PREFIX)表。與Boyer-Moore算法一樣,反向操作對于檢查在特定位置是否存在匹配的驗證或者嘗試。在掃描文本時,轉換表用于確定可移動或跳過文本中的多少字符。哈希和前綴表用于為匹配確定哪個模式是候選模式,并且驗證該匹配。[0336]在一些實施例中,裝置200可將分組存儲到數(shù)據(jù)結構。在一些實施例中,裝置200僅在分組包括識別的模式的匹配模式時,將該分組存儲到數(shù)據(jù)結構。在一些實施例中,解析器620解析所有接收的分組,并且無論是否存在識別的模式,將解析結果存儲到數(shù)據(jù)結構中。在一些實施例中,裝置200立即將接收的分組存儲到數(shù)據(jù)結構,而不解析該分組。在一些實施例中,裝置200執(zhí)行數(shù)據(jù)結構的內(nèi)容的單次解析,以在單次掃描中匹配多個模式和內(nèi)容。[0337]在步驟856,裝置將匹配的結果存儲到與連接關聯(lián)的數(shù)據(jù)庫。在一些實施例中,裝置200將匹配的結果存儲到與用戶的用戶會話關聯(lián)的數(shù)據(jù)庫。在一些實施例中,裝置200將匹配的結果存儲到在裝置200上存儲的數(shù)據(jù)庫640。在一些實施例中,裝置200將匹配的結果存儲到在通過網(wǎng)絡104訪問的另一裝置上存儲的數(shù)據(jù)庫640。在一些實施例中,裝置200將結果存儲到表、哈希表、矩陣或者其他數(shù)據(jù)存儲結構。在一些實施例中,數(shù)據(jù)庫640可以是SQL數(shù)據(jù)庫。在一些實施例中,數(shù)據(jù)庫640可使用多個識別的模式生成單個查詢。在一些實施例中,裝置200可響應于識別的動作635來生成新查詢。在一些實施例中,裝置200可以為每個標識的模式生成新查詢。在一些實施例中,裝置200可使用多個識別的模式來更新現(xiàn)有查詢。在一些實施例中,查詢與動作635相關聯(lián)。在一些實施例中,可將查詢存儲到裝置200上。在一些實施例中,可由數(shù)據(jù)庫管理器生成查詢。數(shù)據(jù)庫管理器可存儲在設備200上。在一些實施例中,數(shù)據(jù)庫管理器可在應用防火墻290內(nèi)執(zhí)行。在一些實施例中,數(shù)據(jù)庫管理器可在應用防火墻290的環(huán)境之外執(zhí)行。在一些實施例中,數(shù)據(jù)庫管理器可以為任何識別的模式生成、更新和存儲所有查詢。在一些實施例中,在裝置200上存儲查詢。在一些實施例中,在不同的裝置上存儲查詢。[0338]在步驟858,裝置將分組存儲到具有預定的大小閾值的重寫緩沖器,該重寫緩沖器用于在傳輸前存儲要重寫的分組。在一些實施例中,裝置200僅將具有識別的模式的分組存儲到重寫緩沖器625。在一些實施例中,裝置200響應于設備200的動作635或者策略將分組存儲到重寫緩沖器。在一些實施例中,重寫緩沖器625具有預定的大小閾值來存儲數(shù)據(jù)。在一些實施例中,在制造時確定重寫緩沖器625的預定的大小閾值。在一些實施例中,可由系統(tǒng)管理員修改重寫緩沖器625的預定的大小閾值。在一些實施例中,可由系統(tǒng)的用戶修改重寫緩沖器625的預定的大小閾值。[0339]在步驟860,裝置響應于確定重寫緩沖器的大小超過了預定的大小閾值,來執(zhí)行重寫。裝置基于對數(shù)據(jù)庫640中最老的分組執(zhí)行的匹配結果,來執(zhí)行對從重寫緩沖器625移除的最老分組的重寫。在一些實施例中,由與分組關聯(lián)的時間戳來確定最老的分組。在一些實施例中,將時間戳存儲到保存分組的數(shù)據(jù)結構。在一些實施例中,根據(jù)分組存儲到重寫緩沖器625中的順序來確定最老的分組。在一些實施例中,根據(jù)裝置200在將分組存儲到重寫緩沖器625之前完成對該分組的處理的時間來存儲分組,而不是根據(jù)時間戳來存儲分組。在一些實施例中,裝置200從重寫緩沖器625移除一個或多個最老的分組,直到在重寫緩沖器625中存儲的數(shù)據(jù)低于預定的大小閾值。在一些實施例中,響應于裝置的觸發(fā)動作635從重寫緩沖器中移除最老的分組。在一些實施例中,響應于裝置200的策略從重寫緩沖器中移除最老的分組。在一些實施例中,一旦達到預定閾值,則重寫緩沖器不允許裝置200將數(shù)據(jù)存儲到重寫緩沖器。在一些實施例中,裝置200響應于不能將數(shù)據(jù)存儲到重寫緩沖器635,而從重寫緩沖器移除最老的一個或多個分組,直到具有將拒絕的分組存儲到重寫緩沖器625的足夠空間。[0340]在一些實施例中,裝置200在數(shù)據(jù)庫640中查找與將要重寫的匹配模式相對應的分組中的偏移。在一些實施例中,裝置200根據(jù)指定要匹配的第一模式、用于替換第一模式的第二模式以及用以搜索模式的響應主體的多個字節(jié)的動作635來執(zhí)行寫入。在一些實施例中,裝置200修改現(xiàn)有動作以識別主體中的模式,以及用第二模式替換所識別的模式。第二模式可以是來自先前識別的另一個識別的模式。在一些實施例中,第二模式可以是用戶指定的模式。在一些實施例中,第二模式可以是來自數(shù)據(jù)庫640的現(xiàn)有模式。在一些實施例中,第二模式可以是由裝置200的第二動作635、規(guī)則或策略提供的模式。在一些實施例中,第二模式可包括多個識別的模式。[0341]在步驟862,裝置傳輸重寫的最老分組。在一些實施例中,裝置200將重寫的最老分組傳輸?shù)娇蛻魴C102。在一些實施例中,裝置200將重寫的最老分組傳輸?shù)椒掌?06。在一些實施例中,裝置200根據(jù)裝置200的策略延遲傳輸重寫的最老分組。在一些實施例中,裝置200立即將重寫的最老分組傳輸?shù)狡淠康牡亍T谝恍嵤├校b置200將重寫的最老分組傳輸?shù)皆跀?shù)據(jù)結構中存儲的目的地。在一些實施例中,裝置響應于裝置200的策略、動作635或規(guī)則,重新路由重寫的最老分組。在一些實施例中,裝置200將重寫的最老分組傳輸?shù)街霸诜纸M的頭部中存儲的目的地。在一些實施例中,裝置200在將最老的分組從重寫緩沖器625移除時,重寫每一個最老的分組。在一些實施例中,重寫器630從重寫緩沖器625移除最老的分組,并且使用識別的模式修改或者重寫該分組。在一些實施例中,重寫器630響應于設備200的動作635、策略或規(guī)則重寫最老的分組。在一些實施例中,重寫器通過重寫主體的部分來更新現(xiàn)有分組。在一些實施例中,重寫器630使用來自從重寫緩沖器625移除的最老分組的信息來生成新分組、刪除從重寫緩沖器625移除的最老的分組,并且將新生成的分組傳輸?shù)狡淠康牡亍T谝恍嵤├?,如果裝置200確定分組不包括任何識別的模式,則重寫器630不會修改或更新現(xiàn)有的最老分組或者生成新分組。[0342]G.用于經(jīng)由中間裝置重寫包含UTF-8編碼的數(shù)據(jù)流的系統(tǒng)和方法[0343]現(xiàn)參考圖9A-9C,將描述有效地處理、搜索和/或重寫可變寬度編碼數(shù)據(jù)的系統(tǒng)和方法,其中可變寬度編碼數(shù)據(jù)例如是UTF-8編碼數(shù)據(jù)。系統(tǒng)和方法的實施例修改和改寫搜索算法(例如Horspool和Wu-Manber算法),以便有效地處理和管理在大塊文本中對可變寬度編碼數(shù)據(jù)的搜索,該文本例如是可經(jīng)由通過網(wǎng)絡裝置(如中間裝置)的分組流傳輸?shù)奈谋?。[0344]圖9B和9C描述的是用于UTF-8編碼數(shù)據(jù)的搜索技術的方法的實施例。圖9A中描述的是用于對UTF-8編碼數(shù)據(jù)執(zhí)行任何搜索技術的系統(tǒng)的實施例。[0345]現(xiàn)參考圖9A,示出了用于執(zhí)行本文描述的多變量編碼搜索技術的任何實施例的系統(tǒng)的實施例。簡要概括,裝置102可包括搜索引擎970。裝置可接收或獲得包括多變量編碼數(shù)據(jù)(例如UTF-8)的文本塊980。裝置可接收或獲得多變量編碼數(shù)據(jù)的搜索模式/字符串982,以由搜索引擎在文本塊980內(nèi)搜索。搜索引擎可實現(xiàn)或包括修改的H0rSp001972組件或引擎,用于對本文描述的多變量編碼數(shù)據(jù)執(zhí)行任何修改的HorSpool搜索技術。搜索引擎可實現(xiàn)或包括修改的WuManber974組件或引擎,用于對本文描述的多變量編碼數(shù)據(jù)執(zhí)行任何修改的WuManber搜索技術。搜索引擎可使用組件972和974中的任一個在文本塊980內(nèi)搜索所述搜索字符串982。搜索引擎可利用指向在(例如在存儲器中存儲的)文本塊980內(nèi)的定位或位置的指針990,并且響應于跳轉/索引表986或表988(如移動、哈希或前綴表)將指針移動到支點984。[0346]裝置102可以是客戶機或者服務器裝置。裝置可以是本文描述的設備的任何實施例。系統(tǒng)可包括經(jīng)由客戶機裝置訪問設備的一個或多個用戶。設備還可以與一個或多個后端服務器通信。用于執(zhí)行圖9B和9C的任何方法的系統(tǒng)可以是本文描述的任何系統(tǒng),例如上文的H部分中描寫的流式重寫設備的任何實施例。[0347]裝置可接收、識別或處理文本塊980。文本塊可以是一大塊文本。文本塊可包括大于預定閾值的大小(以字節(jié)、單詞等為單位)。文本塊可包括任何類型和形式的多變量編碼數(shù)據(jù),例如UTF-8數(shù)據(jù)。文本塊可以是來自任何一個或多個網(wǎng)絡分組的有效載荷的數(shù)據(jù)。文本塊可包括應用層數(shù)據(jù),例如經(jīng)由傳輸層分組傳輸?shù)腍TTP或HTML數(shù)據(jù)。文本塊可以是由H部分中描述的重寫系統(tǒng)和方法的任何實施例重寫的數(shù)據(jù)。[0348]裝置可接收、識別或處理搜索模式或字符串983,以在文本塊內(nèi)進行搜索。搜索模式或字符串可包括任何數(shù)量的字符或符號。搜索模式或字符串可包括任何長度。搜索模式或字符串可包括任何類型和形式的多變量編碼數(shù)據(jù),例如UTF-8數(shù)據(jù)。搜索模式或字符串可以是在任何一個或多個網(wǎng)絡分組的有效載荷中尋找或識別的字符串或模式。搜索模式或字符串可以是確定是否在文本塊內(nèi)的字符串或模式,例如在任何一個或多個網(wǎng)絡分組的有效載荷內(nèi)。搜索模式或字符串可包括由設備在穿過該設備的網(wǎng)絡分組流中識別的任何字符串或模式。搜索模式或字符串可包括先前由設備從穿過該設備的網(wǎng)絡分組流中識別的和/或存儲的任何字符串或模式。搜索模式或字符串可以是要由H部分中描述的重寫系統(tǒng)和方法的任何實施例在文本塊中重寫的模式或字符串。[0349]裝置可經(jīng)由請求接收文本塊和搜索字符串。裝置可例如通過搜索引擎接收經(jīng)由API調用的請求。裝置可例如通過搜索引擎接收經(jīng)由應用層命令(例如經(jīng)由HTML)的請求。在一些實施例中,搜索引擎在設備的實施例中運行。在這些實施例中,設備例如通過分組引擎經(jīng)由API調用、程序指令等使用或集成搜索引擎,以在文本塊中搜索所述搜索字符串/模式。在一些實施例中,在AppFw290的實施例中運行搜索引擎。在這些實施例中,AppFw可例如經(jīng)由API調用、程序指令等使用或者集成搜索引擎,以在文本塊內(nèi)搜索所述搜索字符串/模式。[0350]搜索引擎970可包括應用、程序、庫、進程、服務、任務或者在裝置上執(zhí)行的任何類型和形式的可執(zhí)行指令??蓪⑺阉饕嬖O計和構造為執(zhí)行任何搜索和/或重寫技術以及本文描述的實施例。搜索引擎可使用指向在文本塊內(nèi)的定位或位置的指針990,例如指向存儲器地址的指針。搜索引擎可將指針在文本塊內(nèi)向前或向后移動。例如,搜索引擎可響應于跳轉表,將指針從一個位置/地址跳轉到文本塊中的另一個地址/位置。搜索引擎可將指針跳轉或移動到支點塊、指針或元素984,其是文本塊中的一個點。可根據(jù)本文描述的搜索技術的實施例來限定和使用支點塊584。搜索引擎可在支點元素984處應用搜索技術或者其部分。可根據(jù)搜索技術響應于索引或表,使用跳轉表或其他表來標識支點或支點塊。[0351]搜索引擎可包括Horspool搜索引擎972組件或模塊??蓪orspool搜索引擎修改為對多變量編碼數(shù)據(jù)(例如UTF-8編碼數(shù)據(jù))執(zhí)行任何修改的Horspool搜索技術。Horspool引擎可使用索引或跳轉表986,用于根據(jù)修改的Horspool搜索技術來存儲信息。跳轉表可包括到統(tǒng)一碼(Unicode)值的哈希,其標識字符的多個字節(jié)長度。在一些實施例中,跳轉表可包括到每個相應的小寫統(tǒng)一碼值的哈希,其標識相應字符的多個字節(jié)長度。[0352]搜索引擎可包括WuManber搜索引擎974組件或模塊??蓪uManber搜索引擎修改為對多變量編碼數(shù)據(jù)(例如UTF-8編碼數(shù)據(jù))執(zhí)行任何修改的WuManber搜索技術。WuManber引擎可使用表988,用于根據(jù)修改的WuManber搜索技術存儲信息。WuManber算法、組件或引擎可使用三個表988:移動表、哈希表和前綴表。與Boyer-Moore算法一樣,反向操作對檢查特定位置處是否存在匹配的驗證或者嘗試。在掃描文本時,移動表用于確定可移動或跳過文本中多少個字符。哈希和前綴表用于為匹配確定哪個模式是候選模式,并且驗證該匹配。[0353]UTF-8編碼是關于統(tǒng)一碼的多字節(jié)字符編碼。由于行業(yè)主要使用UTF-8,所以需要能夠在大塊文本中搜索多個UTF-8編碼模式的系統(tǒng)。能夠執(zhí)行多模式匹配的當前系統(tǒng)不能對編碼文本執(zhí)行這樣的搜索。說明書以下部分提供了能夠對UTF-8編碼文本執(zhí)行多模式搜索的機制。[0354]WuManber搜索引擎組件可包括對多變量編碼數(shù)據(jù)(例如UTF-8編碼數(shù)據(jù))執(zhí)行改寫的、配置的或者修改的WuManber基礎搜索技術的可執(zhí)行指令。在一些實施例中,WuManber搜索引擎組件使用以下算法來同時搜索由UTF-8編碼的區(qū)分大小寫的多個模式。P={Pl,p2^-,pk}表示一組模式,是來自固定字母表的字符的串,每個Pi是一個字符串。Ifflin表示以字節(jié)計的P中模式的最小長度,且Imax表示以字節(jié)計的P中模式的最大長度。T=It1,t2,-tN}是包括與P相同的固定字母表的字符的大文本。M是所有模式的總的大小,其中M=k*lmin,且c是固定字母表的大小。系統(tǒng)使用三個字節(jié)B的塊,以通過生成表來預處理模式。在一些實施例中,B可包括少于三個字節(jié)的塊。在一些實施例中,B可包括四個字節(jié)的塊。[0355]如果文本中B個字節(jié)的字符串沒有出現(xiàn)在任何模式中,則搜索移動lmin_B+l。將每個大小為B的字符串映射到用作對移動表的索引的整數(shù)。移動表中的值確定在掃描T時移動多遠。設X=X1...Xe為正被掃描的文本中的B個字符,并且X被映射到移動表的第i個條目。有兩種情況:[0356]?如果X沒有作為P中任何模式中的子串出現(xiàn),則搜索移動(lmin_B+l)個字節(jié)。系統(tǒng)在SHIFT[i]中存儲(lmin_B+l)。[0357]?如果X作為P的某些模式的子串出現(xiàn),則標識在任何模式中最右邊出現(xiàn)的X。如果X在&的位置q處結束,并且假設X不在任何其他模式中大于q的任何位置處結束。則在SHIFT[i]中存儲Imin-Q0[0358]為計算移動表,分別考慮每個模式Pi=aia2...alfflin0將大小為B的Pi的子串a(chǎn)j_bV..Bj映射到移動表,且將相應的值設置為其當前值(所有子串當前值的初始值為lmin_B+l)和Ifflin-J(得到該子串需要移動的量)中的最小值。在搜索階段期間,只要移動(SHIFT)值為正,則沿文本移動搜索位置。當移動值為零時,到搜索位置左邊的文本可能是一個模式字符串O[0359]正是同一個整數(shù)索引到另一個表,稱作哈希。哈希表的第i個條目HASH[i]包括指向模式列表的指針,該模式最后B個字符哈希到i。哈希表僅保存模式,而移動表保存大小為B的所有可能的字符串。[0360]在一些實施例中,系統(tǒng)或搜索引擎可能需要在文本中跳轉。為保持次線性運行時間復雜度,使用字節(jié)跳轉而不是字符跳轉。這可導致跳轉到字符的中間。在一些情況下,這樣有助于確定不存在匹配。在一些實施例中,當跳轉到字符的中間時,系統(tǒng)轉到字符的開頭,并且繼續(xù)進行該系統(tǒng)。[0361]最初,獲取所有模式的最小字節(jié)長度,且系統(tǒng)在文件中跳轉最小模式。從該位置使用最后三個字節(jié)來計算哈希值。[0362]現(xiàn)參考圖9B,描述改寫的或修改的WuManber搜索技術的實施例。簡要概括,方法900包括設置指向標識文本的開頭的指針990(在步驟902)。在步驟904,通過獲取最小字節(jié)長度以及將指針移動到(Imin-B),來將指針移動到支點塊984。在步驟906,使用支點塊中預定數(shù)量的字節(jié)來計算哈希值,并且根據(jù)該哈希確定跳轉值986。在步驟908,確定跳轉值是否等于零。如果不等于零,則在步驟912將跳轉值設置為I。如果等于零,則在步驟910檢查標識的模式,以查看是否找到任何模式匹配。接著,在步驟912將跳轉值設置為I。在步驟914,確定是否已經(jīng)到達文本的結尾。如果沒有到達結尾,則方法返回步驟906并且繼續(xù),直到到達文本的結尾。如果已經(jīng)到達文本的結尾,那么在步驟916終止搜索。[0363]在步驟902,將指針990設置到文本的開頭。指針可以是指向文本塊內(nèi)的地址或位置的指針,例如指向存儲器地址的指針。在一些實施例中,將指針設置為指向整個文本的開頭。在其他實施例中,將指針設置為指向由用戶標識的文本部分的開頭。在一些實施例中,將指針設置為指向文本的開頭,其中該文本已經(jīng)被分為多個部分。[0364]在步驟904,通過在所有模式之中取最小字節(jié)長度(Imin)以及將指針移動到由(Imin-B)找到的位置,來將指針990移動到支點塊984。在一些實施例中,將B預定為3字節(jié)。在其他實施例中,B可以是任何預定的大小。在其他實施例中,B大小可變。[0365]在步驟906,為支點塊計算哈希值。找到包含支點塊的字節(jié)的最小有效UTF-8字符串,并且將該字符串轉換為小寫。根據(jù)該小寫字符串,找到支點塊的準確字節(jié)位置,并且為每個字節(jié)計算哈希值。接著根據(jù)哈希確定跳轉值。[0366]在步驟908,確定跳轉值是否等于零。如果跳轉值等于零,則在步驟910咨詢哈希表。哈希表在零處包含具有零跳轉的模式列表。接著檢查每個模式,以查看是否存在到支點塊的任何匹配。該搜索可能需要基于模式長度以適當?shù)拈L度掃描文本。如果文本中的位置沒有到字符邊界,則甚至可以在比較任何字符之前可跳過該模式。如果文本中的位置在字符邊界處,則執(zhí)行不區(qū)分大小寫的UTF-8字符串比較,以檢查模式是否匹配文本的部分。如果其匹配,則公布對該字符串的匹配。系統(tǒng)繼續(xù)匹配模式列表中的其他字符串,直到用盡關于該哈希的列表。[0367]在步驟912,將跳轉值設置為I。搜索繼續(xù)且系統(tǒng)根據(jù)跳轉值在文本中進行跳轉。如果跳轉超過文本邊界,則在步驟914公布沒有更多的匹配。否則,通過獲取B的大小且將支點塊更新為在指針處的大小為B(例如三個字節(jié))的最后字節(jié)來更新支點塊,并且返回步驟906來繼續(xù)搜索直到到達文本的結尾。[0368]現(xiàn)參考圖9C,描述了用于對多變量寬度編碼數(shù)據(jù)(例如UTF-8)使用改寫的、配置的或修改的Horspool多模式搜索的方法。簡要概括,該方法950在步驟952設置指向文本開頭的指針。在步驟954,基于模式長度和最后字符長度在文本中將指針移動到其支點元素。在步驟956,比較支點元素的轉換的小寫統(tǒng)一碼值與模式的最后字符的相應值。在步驟958,確定是否存在匹配。如果存在,則在步驟960公布匹配位置。如果不存在,則在步驟962,系統(tǒng)例如經(jīng)由搜索引擎,根據(jù)當前支點元素的跳轉值在文本內(nèi)跳轉。在步驟964,確定是否到達文本結尾。如果到達結尾,則在步驟968終止搜索。如果沒有到達結尾,則返回步驟956并且繼續(xù)搜索,直到到達文本結尾且搜索終止。[0369]多模式搜索950執(zhí)行模式預處理,作為確定如果初始匹配嘗試失敗則在搜索文本中向前跳多遠的手段。在搜索處理期間使用的矢量中保存預處理的結果。字符的跳轉值是其距離結尾的位置(不考慮最后字節(jié))。如果模式中字節(jié)重復,則取最小位置。比較模式的最后字節(jié)與文本中的相應位置?;谠撐谋咀址D,其中該文本字符被認為是支點字符。[0370]對于模式中每個UTF-8字符,計算相應的統(tǒng)一碼值。如果字符是大寫的,則計算相應的小寫統(tǒng)一碼值。不論哪種情況,在統(tǒng)一碼值上應用哈希。由于UTF-8字符可以最多有4個字節(jié),所以維護四個哈希表988,每個大小一個哈希表(基于統(tǒng)計分析、空間限制和哈希沖突,該數(shù)可以減少或增加)。如果存在哈希沖突,則跳轉值應該是兩者中的最小值。這是因為,在不存在任何哈希沖突時,字符的跳轉值確保在跳轉之后文本的支點字符與模式中的相同字符對齊。沒有該對齊,系統(tǒng)不能識別任何匹配。在沖突的情況下,通過獲取現(xiàn)有值和新值中的最小值,跳轉可能不會使文本中的支點與模式中的相同字符對齊,但是其確保不會漏掉匹配。可以通過從后處理而不是從前處理模式,來容易地實現(xiàn)獲取兩個哈希值中的最小值。[0371]在跳轉表中,字符的跳轉值是其在模式中距離后面的位置。但是如果保持跳轉表986中的字符位置,則系統(tǒng)可能必須在UTF-8文本中跳轉那些字符,并且系統(tǒng)將變?yōu)樽址幼址钠ヅ洌撈ヅ涞男史浅5?。因此,不保持字符在模式中的位置。相反,在一些實施例中使用相應的字?jié)長度。那樣,當使用這些值在文本中進行跳轉時,系統(tǒng)可以執(zhí)行直接跳轉而不用計算字符。[0372]比較模式的最后字符與文本。并且如果存在匹配,則比較整個模式。要不區(qū)分大小寫地比較兩個字符,系統(tǒng)需要計算它們相應的小寫(或大寫)統(tǒng)一碼值。由于事先已知模式,則在預處理步驟中,系統(tǒng)計算模式所有字符的小寫統(tǒng)一碼值,并且進行存儲。還存儲模式的字節(jié)長度和最后字符的長度。[0373]方法需要在文本中跳轉。為由UTF-8編碼的數(shù)據(jù)保持次線性運行時間復雜度,使用字節(jié)跳轉而不是字符跳轉。這可能導致跳轉到字符的中間。在一些實施例中,這樣有助于確定不存在匹配。在一些情況下,當跳轉到字符的中間時,系統(tǒng)轉到字符的開頭并且繼續(xù)進行算法。[0374]要確定支點元素,對模式的最后字符與文本中相應的字符執(zhí)行不區(qū)分大小寫的比較。如果模式具有5個字符,則系統(tǒng)需要轉到文本中的第5個字符,并且將其與模式的第5個字符進行比較。但是轉到文本中的第五個字符是線性時間。因此,而是使用模式的字節(jié)長度。如果模式中最后字符長度為4,并且如果模式為20個字節(jié)長,那么最后字符從第17個字節(jié)開始。另外在文本中,系統(tǒng)直接轉到第17個字節(jié),并且查看其是否與字符邊界對齊。系統(tǒng)朝文本開頭轉到最近的對齊字符。在任何一種情況下,在文本中找到字符的小寫統(tǒng)一碼值(該值是支點元素)。在不匹配的情況下,系統(tǒng)從跳轉表986找到其跳轉值并且在文本中跳轉,使得向右移動文本的比較點,并且比較該點與模式中的相應點。[0375]在步驟952,將指針設置為指向文本的開頭。在一些實施例中,將指針設置為指向整個文本的開頭。在其他實施例中,將指針設置為指向由用戶標識的文本的部分的開頭。在一些實施例中,將指針設置為指向文本的開頭,其中該文本已經(jīng)被分為多個部分。[0376]在步驟954,基于模式長度和最后字符長度,在文本中將指針移動或者跳轉到其支點元素,在初始化過程中,如果任何這樣的跳轉轉到字符的中間,則轉到下一個字符。但在隨后的步驟中,在任何這種沒對齊的情況下,轉到字符的開頭。[0377]在步驟956,比較支點元素的小寫統(tǒng)一值與模式的最后字符的相應值。如果比較的字符相同,則比較模式的開頭,并且跳轉到文本中的相應字節(jié)位置,以比較模式與文本的該部分。如果在文本中可能跳轉到字符的中間,其明顯表示不匹配。但如果跳轉到字符邊界,則對兩個字符串進行不區(qū)分大小寫的比較。[0378]在步驟958,確定是否存在匹配。如果存在匹配,那么在步驟960通知匹配位置。在一些實施例中,將匹配位置添加到哈希表。在一些實施例中,將匹配位置傳輸?shù)搅硪荒K。在一些實施例中,在中間裝置上存儲匹配位置。如果不存在匹配,則在步驟962根據(jù)當前支點元素的跳轉值來移動或跳轉指針。[0379]在步驟964,確定是否已到達文本的結尾。如果已經(jīng)到達,則在步驟968終止搜索。如果沒有到達,則返回步驟965并且繼續(xù)搜索,直到到達文本的結尾并且終止搜索。[0380]應該理解,此處描述的系統(tǒng)可提供多個組件或每個組件并且這些組件可以在單獨機器上提供,或者在一些實施例中,可在分布式系統(tǒng)的多個機器上提供。此外,上述系統(tǒng)和方法可作為一件或多件產(chǎn)品上所體現(xiàn)的或在其中的一個或多個計算機可讀程序或可執(zhí)行指令而被提供。所述產(chǎn)品可以是軟盤、硬盤、CD-ROM,閃存卡、PROM、RAM、ROM或磁帶。通常,計算機可讀程序可以任何編程語言來實現(xiàn),如LISP、PERL、C、C++、C#、PROLOG,或者諸如JAVA的任何字節(jié)碼語言。軟件程序或可執(zhí)行指令可以作為目標代碼被存儲在一件或多件產(chǎn)品上或其中。[0381]盡管已經(jīng)參考具體實施例對本發(fā)明進行了詳細的顯示和描述,但對本領域技術人員應該理解可以在其中進行形式和細節(jié)上的各種變化而不脫離由本文公開的本發(fā)明的精神和范圍?!緳嗬蟆?.一種用于在文本塊中對可變寬度編碼模式進行不區(qū)分大小寫的搜索的方法,所述方法包括:Ca)由裝置為模式中的每個字符確定相應的小寫統(tǒng)一碼值,其中在文本塊內(nèi)為該模式搜索匹配,該模式包括可變寬度編碼字符;(b)由所述裝置為所述模式建立跳轉值的索引表,所述索引表包括到每個相應的小寫統(tǒng)一碼值的哈希,該哈希標識關于相應字符的多個字節(jié)長度;(c)由所述裝置響應于跳轉值的索引表,基于所述模式的字節(jié)長度和所述模式的最后字符的字節(jié)長度,將指向所述文本塊的指針跳轉到所述文本塊中的支點元素;以及Cd)由所述裝置比較所述支點元素的小寫統(tǒng)一碼值與所述模式的最后字符的字符的相應小寫統(tǒng)一碼值。2.根據(jù)權利要求1所述的方法,其中步驟(a)還包括由所述裝置確定在所述模式中的字符是大寫的,并且計算小寫統(tǒng)一碼值。3.根據(jù)權利要求1所述的方法,其中所述模式包括UTF-8編碼的可變寬度編碼字符。4.根據(jù)權利要求1所述的方法,其中步驟(b)還包括由所述裝置為每種大小的可變寬度編碼字符建立索引表。5.根據(jù)權利要求1所述的方法,其中步驟(c)還包括由所述裝置在所述文本塊的開頭處設置指針。6.根據(jù)權利要求1所述的方法,其中步驟(c)還包括由所述裝置確定所述指針已經(jīng)跳轉到所述文本塊中字符的中間。7.根據(jù)權利要求6所·述的方法,還包括由所述裝置響應于確定所述指針已經(jīng)跳轉到所述文本塊中字符的中間,將所述指針移動到該字符的開頭。8.根據(jù)權利要求1所述的方法,其中步驟(d)還包括由所述裝置確定到支點元素的跳轉是到字符邊界的跳轉,并且所述裝置響應于確定跳轉是到字符邊界而執(zhí)行比較。9.根據(jù)權利要求1所述的方法,還包括由所述裝置確定支點元素的小寫統(tǒng)一碼值與所述模式的最后字符的字符的相應小寫統(tǒng)一碼值相匹配。10.根據(jù)權利要求9所述的方法,還包括由所述裝置將所述指針跳轉到在所述文本塊中與所述模式的開頭相對應的字節(jié)位置,并且比較所述模式與由所述指針標識的所述文本塊的相應部分。11.一種用于在文本塊中對可變寬度編碼模式同時執(zhí)行不區(qū)分大小寫的搜索的方法,所述方法包括:Ca)由裝置將將要在文本塊內(nèi)搜索的每個模式轉換為相應的小寫模式,每個模式包括可變寬度編碼字符;(b)由所述裝置為每個模式建立轉移表,該轉移表包括相應的小寫模式的預定數(shù)量字節(jié)的哈希以及跳轉值;(C)由所述裝置響應于所述轉移表,將指針跳轉到所述文本塊中的支點塊;Cd)由所述裝置標識在所述支點塊內(nèi)的編碼字符串,其包括來自所述支點塊的預定數(shù)量字節(jié)的字節(jié);Ce)由所述裝置計算與所述預定數(shù)量字節(jié)相對應的小寫編碼字符串的字節(jié)的哈希;(f)由所述裝置使用所述字節(jié)的哈希,從所述轉移表獲得跳轉值。12.根據(jù)權利要求1所述的方法,其中所述模式包括UTF-8編碼的可變寬度編碼字符。13.根據(jù)權利要求11所述的方法,其中步驟(b)還包括由所述裝置在每個哈希維護具有零跳轉的模式的列表。14.根據(jù)權利要求11所述的方法,其中步驟(c)還包括由所述裝置基于所有模式的最小字節(jié)長度,首先將指針跳轉到初始支點塊。15.根據(jù)權利要求11所述的方法,其中步驟(d)還包括由所述裝置標識最小有效編碼字符串,其包括來自所述支點塊的預定數(shù)量字節(jié)的字節(jié)。16.根據(jù)權利要求11所述的方法,其中步驟(f)還包括由所述裝置識別所述跳轉值為零。17.根據(jù)權利要求16所述的方法,還包括由所述裝置確定與為零的跳轉值關聯(lián)的任何模式是否與所述文本塊中的相應文本相匹配。18.根據(jù)權利要求16所述的方法,還包括由所述裝置為每個模式將指向所述文本塊的指針移回所述模式的多個字節(jié)長度。19.根據(jù)權利要求18所述的方法,還包括由所述裝置響應于識別所述指針不是字符邊界,確定所述模式與由所述指針標識的文本的相應部分不匹配。20.根據(jù)權利要求18所述的方法,還包括由所述裝置響應于識別所述指針在字符邊界處,比較所述模式與由所述指針標識的文本塊的文本?!疚臋n編號】G06F17/30GK103548022SQ201280024694【公開日】2014年1月29日申請日期:2012年3月27日優(yōu)先權日:2011年3月28日【發(fā)明者】S·K·杜麗帕拉,S·C·弗農(nóng)申請人:思杰系統(tǒng)有限公司