通過硬件輔助處理http報頭的方法
【專利摘要】在處理超文本傳輸協(xié)議(HTTP)報頭時,分組預(yù)處理器被配置有至少一個預(yù)定的報頭字段標識符。該分組預(yù)處理器檢測在主機和服務(wù)器之間的HTTP會話之上接收的HTTP分組的報頭字段中的至少一個報頭字段標識符,使預(yù)定的報頭字段標識符匹配于HTTP分組中的報頭字段標識符,產(chǎn)生包含與HTTP分組中的報頭字段標識符對應(yīng)的信息的報頭報告塊,并將HTTP分組和報頭報告塊發(fā)送至處理器模塊以基于報頭報告塊處理HTTP分組。處理器模塊從分組預(yù)處理器接收HTTP分組和報頭報告塊,使用報頭報告塊檢索服務(wù)策略,將服務(wù)策略應(yīng)用于HTTP分組,并將HTTP分組發(fā)送至主機或服務(wù)器。
【專利說明】通過硬件輔助處理HTTP報頭的方法
[0001]發(fā)明背景
[0002]MM
[0003]本發(fā)明總地涉及數(shù)據(jù)通信,更具體地涉及服務(wù)網(wǎng)關(guān)。
[0004]直量
[0005]服務(wù)器負載平衡器或應(yīng)用傳遞控制器通常基于連接請求分組的一個或多個網(wǎng)絡(luò)協(xié)議地址(諸如IP、TCP、網(wǎng)絡(luò)層、傳輸層或應(yīng)用層地址)平衡多個服務(wù)器之間的負載。它們可深入分組有效負載地執(zhí)行深度分組檢查以檢查有效負載內(nèi)容以尋找優(yōu)化負載平衡的暗示。基于深度負載檢查技術(shù)的優(yōu)化包括基于有效負載內(nèi)容中的URL、域名、應(yīng)用協(xié)議類型以及用戶信息的負載平衡。在這些場合下,服務(wù)器負載平衡器不修改從主機發(fā)起的請求分組。
[0006]隨著Web話務(wù)增加,服務(wù)器負載平衡器為之服務(wù)的服務(wù)器數(shù)目也在增加。深度分組檢查技術(shù)也被精煉,尤其是對超文本傳輸協(xié)議(HTTP)型Web會話。服務(wù)器負載平衡器可選擇將負載平衡器特定的cookie插入以存儲服務(wù)器負載平衡器的偏好,從而當相同主機再次請求服務(wù)時負載平衡器可檢測特定的cookie并選擇一適宜的服務(wù)器。當服務(wù)器對來自主機的HTTP請求作出響應(yīng)時將特定的cookie插入,并當主機經(jīng)由服務(wù)器負載平衡器發(fā)送對服務(wù)的后繼HTTP請求時該cookie被檢測到。當接收到后繼的HTTP請求時,服務(wù)器負載平衡器在將HTTP請求發(fā)送至服務(wù)器前移除該特定的cookie。
[0007]Cookie的插入、檢測和移除的處理是耗計算的。計算需求的很大部分出現(xiàn)在擬插入、檢測或移除特定cookie的各HTTP報頭字段和子報頭字段的檢測中。因此,存在標識各報頭字段和子報頭字段的處理由特定硬件處理模塊輔助的需要,由此減少處理特定cookie的計算需求。
[0008]發(fā)明簡述
[0009]根據(jù)本發(fā)明的一個實施例,一種處理超文本傳輸協(xié)議(HTTP)報頭的方法包括:將至少一個預(yù)定的報頭字段標識符配置到硬件分組預(yù)處理器的存儲器上,其中允許硬件分組預(yù)處理器檢測在主機和服務(wù)器之間的HTTP會話之上接收的HTTP分組的報頭字段中的至少一個報頭字段標識符,使預(yù)定的報頭字段標識符匹配于HTTP分組中的報頭字段標識符,產(chǎn)生包含與HTTP分組中的報頭字段標識符對應(yīng)的信息的報頭報告塊,并將報頭報告塊發(fā)送至處理器模塊以基于該報頭報告塊處理HTTP分組。
[0010]在本發(fā)明的一個方面,在使預(yù)定報頭字段標識符匹配于HTTP分組中的報頭字段標識符時和在產(chǎn)生報頭報告塊時,進一步允許硬件分組預(yù)處理器:將HTTP報頭中的報頭字段標識符與在硬件分組預(yù)處理器的存儲器上配置的預(yù)定報頭字段標識符比較;并響應(yīng)于HTTP報頭中的報頭字段標識符與硬件分組預(yù)處理器的存儲器上配置的預(yù)定報頭字段標識符匹配的判斷產(chǎn)生報頭塊報告以使其包括報頭字段塊,該報頭字段塊包括:報頭字段位置,它指示與HTTP報頭中的報頭字段標識符對應(yīng)的報頭字段的開始位置;以及報頭字段大小,它指示與HTTP報頭中的報頭字段標識符對應(yīng)的報頭字段的值的大小或長度。
[0011]在本發(fā)明的一個方面,該方法還包括:在硬件分組預(yù)處理器的存儲器上配置至少一個預(yù)定的子報頭字段標識符,其中進一步允許硬件分組預(yù)處理器檢測HTTP分組的報頭字段中的至少一個子報頭字段標識符,使預(yù)定的子報頭字段標識符與HTTP分組中的子報頭字段標識符匹配,并產(chǎn)生報頭報告塊以使其進一步包括與HTTP分組中的子報頭字段標識符對應(yīng)的信息。
[0012]在本發(fā)明的一個方面,在使預(yù)定的子報頭字段標識符與HTTP分組中的子報頭字段標識符匹配時和在產(chǎn)生報頭報告塊時,進一步允許硬件分組預(yù)處理器:將預(yù)定的子報頭字段標識符與對應(yīng)于HTTP報頭中的報頭字段標識符的報頭字段中的字符進行比較;并響應(yīng)于找到預(yù)定子報頭字段標識符和與HTTP報頭中的報頭字段標識符對應(yīng)的報頭字段中的字符之間的匹配產(chǎn)生報頭塊報告以使其包括子報頭字段塊,該子報頭字段塊包括:子報頭字段位置,它指示與HTTP報頭中的子報頭字段標識符對應(yīng)的子報頭字段的開始位置;以及子報頭字段大小,它指示與HTTP報頭中的子報頭字段標識符對應(yīng)的子報頭字段的值的大小或長度。
[0013]在本發(fā)明的一個方面,處理器模塊:從硬件分組預(yù)處理器接收報頭報告塊;使用報頭報告塊檢索服務(wù)策略,包括:使用報頭字段塊中的報頭字段位置和報頭字段大小獲得HTTP報頭中的報頭字段值;基于該報頭字段值檢索服務(wù)策略;并將該服務(wù)策略應(yīng)用至HTTP分組。
[0014]在本發(fā)明的一個方面,處理器模塊:從硬件分組預(yù)處理器接收報頭報告塊;使用報頭報告塊檢索服務(wù)策略,包括:使用子報頭字段塊中的子報頭字段位置和子報頭字段大小獲得HTTP報頭中的子報頭字段值;并基于該子報頭字段值檢索服務(wù)策略;并將該服務(wù)策略應(yīng)用于HTTP分組。
[0015]在本發(fā)明的一個方面,該報頭字段包括HTTP cookie報頭字段。
[0016]在本發(fā)明的一個方面,處理器模塊進一步:修改HTTP分組的報頭字段;并將經(jīng)修改的HTTP分組發(fā)送至主機或服務(wù)器。
[0017]在本發(fā)明的一個方面,在修改HTTP分組的報頭字段和將經(jīng)修改的HTTP分組發(fā)送至主機或服務(wù)器時,處理器模塊:通過移除子報頭字段修改HTTP分組的報頭字段;并將經(jīng)修改的HTTP分組發(fā)送至服務(wù)器。
[0018]在本發(fā)明的一個方面,在修改HTTP分組的報頭字段和將經(jīng)修改的HTTP分組發(fā)送至主機或服務(wù)器時,處理器模塊:通過插入第二子報頭字段修改HTTP分組的報頭字段;并將經(jīng)修改的HTTP分組發(fā)送至主機。
[0019]這里還描述和要求了與前面概述的方法對應(yīng)的服務(wù)網(wǎng)關(guān)。
[0020]附圖簡述
[0021]圖1示出根據(jù)本發(fā)明使用具有分組預(yù)處理器的服務(wù)網(wǎng)關(guān)的HTTP會話處理方法的一個實施例。
[0022]圖2示出根據(jù)本發(fā)明處理HTTP請求分組的服務(wù)網(wǎng)關(guān)的一個實施例。
[0023]圖2a示出處理HTTP分組的分組預(yù)處理器的一個實施例。
[0024]圖2b示出處理報頭報告塊的處理器模塊的一個實施例。
[0025]圖3示出根據(jù)本發(fā)明的報頭報告塊的一個實施例。
[0026]圖4示出根據(jù)本發(fā)明標識HTTP請求或響應(yīng)分組的分組預(yù)處理器的一個實施例。
[0027]圖5示出根據(jù)本發(fā)明標識HTTP報頭字段的分組預(yù)處理器的一個實施例。[0028]圖6示出根據(jù)本發(fā)明標識HTTP子報頭字段的分組預(yù)處理器的一個實施例。
[0029]圖7示出根據(jù)本發(fā)明處理HTTP響應(yīng)分組的服務(wù)網(wǎng)關(guān)的一個實施例。
[0030]發(fā)明詳細描述
[0031]下面的描述被給出以使本領(lǐng)域普通技術(shù)人員能夠作出和使用本發(fā)明并在專利申請的背景及其需求中被提供。對實施例的各種修改對本領(lǐng)域內(nèi)技術(shù)人員來說是容易理解的,并且這里的一般原理可被應(yīng)用于其它實施例。因此,本發(fā)明不打算局限于所示的實施例,而是順應(yīng)與本文描述的原理和特征一致的最寬范圍。
[0032]本發(fā)明可采用完全硬件實施例、完全軟件實施例或既包含硬件又包含軟件元素的實施例的形式。在一優(yōu)選實施例中,本發(fā)明實現(xiàn)在軟件中,該軟件包括但不限于固件、固有軟件、微代碼等。
[0033]此外,本發(fā)明可采用可從計算機可使用或計算機可讀介質(zhì)訪問的計算機程序產(chǎn)品的形式,該計算機程序產(chǎn)品提供程序代碼以由計算機或任何指令執(zhí)行系統(tǒng)使用或與之結(jié)合地使用。為了這種描述的目的,計算機可使用或計算機可讀介質(zhì)可以是包含、存儲、通信、傳播或傳輸由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與之結(jié)合地使用的程序的任何裝置。
[0034]介質(zhì)可以是電、磁、光、電磁、紅外或半導(dǎo)體系統(tǒng)(或裝置或設(shè)備)或傳播介質(zhì)。計算機可讀介質(zhì)的示例包括半導(dǎo)體或固態(tài)存儲器、磁帶、可移除計算機磁盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、剛性磁盤和光盤。光盤的當前示例包括壓縮盤-只讀存儲器(CD-ROM)、壓縮盤-讀 / 寫(CD-R/W)和 DVD。
[0035]適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括通過系統(tǒng)總線直接或間接地耦合至存儲器元件的至少一個處理器。存儲器元件可包括在程序代碼實際執(zhí)行期間運用的本地存儲器、大容量存儲器以及提供至少一些程序代碼的臨時存儲以減少執(zhí)行期間必須從大容量存儲器檢取代碼的次數(shù)的高速緩沖存儲器。
[0036]輸入/輸出或I/O設(shè)備(包括但不限于鍵盤、顯示器、定位設(shè)備等)可直接地或通過中介的I/o控制器耦合至系統(tǒng)。
[0037]網(wǎng)絡(luò)適配器也可耦合至系統(tǒng)以使數(shù)據(jù)處理系統(tǒng)能夠通過中介的私人網(wǎng)或公眾網(wǎng)耦合至其它的數(shù)據(jù)處理系統(tǒng)或遠程打印機或存儲設(shè)備。調(diào)制解調(diào)器、線纜調(diào)制解調(diào)器和以太網(wǎng)卡是當前可用類型的網(wǎng)絡(luò)適配器中的一些。
[0038]附圖中的流程圖和框圖示出根據(jù)本發(fā)明各實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的架構(gòu)、功能和操作。在這一方面,流程圖或框圖中的每個方框可代表代碼的一個模塊、區(qū)段或部分,其包括用于實現(xiàn)特定局部功能的一個或多個可執(zhí)行指令。還要注意,在一些替代實現(xiàn)中,方框中注明的功能可以附圖中注明的順序以外的順序發(fā)生。例如,相繼示出的兩個方框事實上可基本同時地執(zhí)行,或者這些方框有時可以相反順序執(zhí)行,這取決于所涉及的功能。還要理解,框圖和/或流程圖的每個方框以及框圖和/或流程圖中的方框組合可由執(zhí)行特定功能或動作的基于硬件的專用系統(tǒng)或?qū)S糜布陀嬎銠C指令的組合來實現(xiàn)。
[0039]這里使用的術(shù)語僅為了描述特定實施例并且不旨在對本發(fā)明構(gòu)成限制。在本文中,單數(shù)形式“一”、“一個”和“該”同樣旨在包括復(fù)數(shù)形式,除非上下文中明確指示相反情形。還要理解,當在本說明書中使用時,術(shù)語“包括”和/或“包含”指示所宣稱特征、整體、步驟、操作、要素和/或組件的存在,但不排除一個或多個其它特征、整體、步驟、操作、要素、組件和/或其組的存在或附加。
[0040]在圖1所示實施例中,服務(wù)網(wǎng)關(guān)110處理主機100和服務(wù)器210之間的HTTP(超文本傳輸協(xié)議)會話300。HTTP會話300是在數(shù)據(jù)網(wǎng)153上傳遞的。
[0041]在一實施例中,數(shù)據(jù)網(wǎng)153包括網(wǎng)際協(xié)議(IP)網(wǎng)絡(luò)、公司數(shù)據(jù)網(wǎng)絡(luò)、地方性公司數(shù)據(jù)網(wǎng)絡(luò)、因特網(wǎng)服務(wù)提供者網(wǎng)絡(luò)、住戶數(shù)據(jù)網(wǎng)絡(luò)、例如以太網(wǎng)的有線網(wǎng)絡(luò)、例如WiFi網(wǎng)絡(luò)的無線網(wǎng)絡(luò)、或蜂窩網(wǎng)絡(luò)。在一實施例中,數(shù)據(jù)網(wǎng)153位于數(shù)據(jù)中心或連接至網(wǎng)絡(luò)或應(yīng)用網(wǎng)絡(luò)云。
[0042]主機100是具有網(wǎng)絡(luò)訪問能力的計算設(shè)備。在一實施例中,主機100是工作站、臺式個人計算機或膝上個人計算機、個人數(shù)字助理(PDA)、便箋式PC、智能電話或蜂窩電話、機頂盒、因特網(wǎng)媒體觀看器、因特網(wǎng)媒體播放機、智能傳感器、智能醫(yī)療設(shè)備、網(wǎng)頂盒、聯(lián)網(wǎng)的電視機、聯(lián)網(wǎng)的DVR、聯(lián)網(wǎng)的藍光播放機或媒體中心。
[0043]服務(wù)網(wǎng)關(guān)110操作地耦合至處理器模塊113、分組預(yù)處理器112、網(wǎng)絡(luò)接口模塊111以及計算機可讀介質(zhì)114。計算機可讀介質(zhì)114存儲計算機可讀程序代碼,當由處理器模塊113執(zhí)行該計算機可讀程序代碼時,實現(xiàn)本發(fā)明如本文所述的各實施例。在一些實施例中,服務(wù)網(wǎng)關(guān)110被實現(xiàn)為服務(wù)器負載平衡器、應(yīng)用傳遞控制器、服務(wù)傳遞平臺、話務(wù)管理器、安全網(wǎng)關(guān)、防火墻系統(tǒng)組件、虛擬專用網(wǎng)(VPN)的組件、用于視頻服務(wù)器的負載平衡器、將負載分配至一個或多個服務(wù)器的網(wǎng)關(guān)、應(yīng)付HTTP服務(wù)會話300的HTTP層的Web或HTTP服務(wù)器或執(zhí)行網(wǎng)絡(luò)地址變換(NAT)的網(wǎng)關(guān)。
[0044]處理器模塊113典型地包括一個或多個通用處理器或微處理器。在一實施例中,處理器模塊113包括多核微處理器。在一實施例中,處理器模塊113包括存儲器單兀,該存儲器單元存儲在執(zhí)行存儲在計算機可讀介質(zhì)114中的計算機可讀程序代碼期間使用的變量。
[0045]網(wǎng)絡(luò)接口模塊111連接于數(shù)據(jù)網(wǎng)153。網(wǎng)絡(luò)接口模塊111從主機100接收數(shù)據(jù)分組并將數(shù)據(jù)分組發(fā)送至主機100,以及從服務(wù)器210接收數(shù)據(jù)分組并將數(shù)據(jù)分組發(fā)送至服務(wù)器210。
[0046]分組預(yù)處理器112是基于硬件的分組處理模塊,包括簡單但快速的處理能力以處理由網(wǎng)絡(luò)接口模塊111接收的數(shù)據(jù)分組。在一實施例中,分組預(yù)處理器112包括現(xiàn)場可編程門陣列(FPGA)模塊、專用集成電路(ASIC)、微控制器或能實現(xiàn)分組預(yù)處理器112的處理需要的電路。
[0047]服務(wù)器210操作地耦合于處理器213和計算機可讀介質(zhì)214。該計算機可讀介質(zhì)214存儲計算機可讀程序代碼,當由處理器213執(zhí)行該計算機可讀程序代碼時,實現(xiàn)本發(fā)明如本文所述的各實施例。在一些實施例中,計算機可讀程序代碼將服務(wù)器210實現(xiàn)為Web服務(wù)器、文件服務(wù)器、視頻服務(wù)器、數(shù)據(jù)庫服務(wù)器、應(yīng)用服務(wù)器、話音系統(tǒng)、會議服務(wù)器、媒體網(wǎng)關(guān)、媒體中心、使用HTTP協(xié)議向主機100提供網(wǎng)絡(luò)或應(yīng)用服務(wù)的應(yīng)用服務(wù)器或網(wǎng)絡(luò)服務(wù)器。
[0048]典型地,主機100通過經(jīng)由數(shù)據(jù)網(wǎng)153和服務(wù)網(wǎng)關(guān)110向服務(wù)器210發(fā)送HTTP請求分組400來建立HTTP會話300。一旦處理HTTP請求分組400,服務(wù)器210經(jīng)由數(shù)據(jù)網(wǎng)153和服務(wù)網(wǎng)關(guān)110將HTTP響應(yīng)分組800發(fā)回到主機100。HTTP請求分組400包括HTTP請求報頭403,而HTTP響應(yīng)分組800包括HTTP響應(yīng)報頭803。[0049]服務(wù)網(wǎng)關(guān)110通過網(wǎng)絡(luò)接口模塊111從主機100接收HTTP請求分組400。網(wǎng)絡(luò)接口模塊111將HTTP請求分組400發(fā)送至分組預(yù)處理器112。分組預(yù)處理器112檢查HTTP請求分組400,產(chǎn)生報頭報告塊410并將HTTP請求分組400和報頭報告塊410發(fā)送至處理器模塊113。處理器模塊113接收HTTP請求分組400和報頭報告塊410。處理器模塊113基于HTTP請求分組400、報頭報告塊410和服務(wù)策略310選擇服務(wù)器210。處理器模塊113將HTTP請求分組400發(fā)送至服務(wù)器210。在一實施例中,處理器模塊113在將經(jīng)修改的HTTP請求分組400發(fā)送至服務(wù)器210之前基于報頭報告塊410和服務(wù)策略310修改HTTP請求分組400。
[0050]在一實施例中,服務(wù)網(wǎng)關(guān)110從服務(wù)器210接收HTTP響應(yīng)分組800。服務(wù)網(wǎng)關(guān)110通過網(wǎng)絡(luò)接口模塊111接收HTTP響應(yīng)分組800。網(wǎng)絡(luò)接口模塊111將HTTP響應(yīng)分組800發(fā)送至分組預(yù)處理器112。分組預(yù)處理器112檢查HTTP響應(yīng)分組800,產(chǎn)生報頭報告塊810,并將HTTP響應(yīng)分組800和報頭報告塊810發(fā)送至處理器模塊113。處理器模塊113接收HTTP響應(yīng)分組800和報頭報告塊810。處理器模塊113基于報頭報告塊810和服務(wù)策略310處理HTTP響應(yīng)分組800。處理器模塊113將HTTP響應(yīng)分組800發(fā)送至主機100。在一實施例中,處理器模塊113在將經(jīng)修改的HTTP響應(yīng)分組800發(fā)送至主機100之前基于報頭報告塊810和服務(wù)策略310修改HTTP響應(yīng)分組800。
[0051]圖2示出處理HTTP請求分組400的服務(wù)網(wǎng)關(guān)110的一個實施例。如圖1中提到的,服務(wù)網(wǎng)關(guān)110的網(wǎng)絡(luò)模塊111接收HTTP請求分組400。網(wǎng)絡(luò)模塊111將分組400發(fā)送至分組預(yù)處理器112。分組預(yù)處理器112檢查分組400以產(chǎn)生報頭報告塊410。
[0052]圖3不出報頭報告塊410的一個實施例。在一實施例中,報頭報告塊410包括概要塊420和可選擇的報頭字段塊430。在一實施例中,概要塊420包括報頭指示符422,其指示分組400是否包括有效HTTP報頭。在一實施例中,概要塊420包括分組位置424,其指示HTTP內(nèi)容在分組400中的開始位置。在一實施例中,分組位置424指示分組400中除HTTP報頭外的HTTP內(nèi)容。在一實施例中,概要塊420包括報頭字段指示符425,其指示報頭報告塊410中是否包括報頭字段塊430。在一實施例中,報頭報告塊410也包括子報頭字段塊480,而報頭字段指示符425也指示報頭報告塊410中是否包括子報頭字段塊480。
[0053]在一實施例中,報頭字段塊430包括標識HTTP報頭中的報頭字段的報頭字段標識符432。在一實施例中,報頭字段塊430包括報頭字段位置434,它指示與分組400中的報頭字段標識符432對應(yīng)的報頭字段的開始位置。在一實施例中,報頭字段塊430包括報頭字段大小435,它指示與報頭字段標識符432對應(yīng)的報頭字段的值的大小或長度。
[0054]在一實施例中,子報頭字段塊480包括子報頭字段標識符482,它標識與報頭字段標識符432對應(yīng)的報頭字段內(nèi)的子報頭字段。在一實施例中,子報頭字段塊480包括子報頭字段位置484,它指示與分組400中的子報頭字段標識符482對應(yīng)的報頭字段的開始位置。在一實施例中,子報頭字段塊480包括子報頭字段大小485,它指示與子報頭字段標識符482對應(yīng)的子報頭字段的值的大小或長度。
[0055]圖2a示出處理HTTP分組的分組預(yù)處理器的一個實施例。如圖2a所示,分組預(yù)處理器112檢查分組400以確定分組400是否包括有效HTTP報頭(1202),如下面進一步參照圖4描述的那樣。
[0056]一旦確定該分組400包括有效HTTP報頭,分組預(yù)處理器112檢查分組400以確定該分組400是否包括與預(yù)定的報頭字段標識符405匹配的報頭字段(1205)。在一實施例中,報頭字段標識符405在處理分組400之前被存儲在分組預(yù)處理器112中。在一實施例中,在處理分組400之前,報頭字段標識符405由處理器模塊113配置在分組預(yù)處理器112的內(nèi)存之上。一旦成功地匹配分組400中的報頭字段標識符405,分組預(yù)處理器112提取分組400中與報頭字段標識符405關(guān)聯(lián)的信息,該信息用來產(chǎn)生報頭字段塊430 (1210)。然后產(chǎn)生報頭字段塊430,其中報頭字段塊430的報頭字段標識符432關(guān)聯(lián)于報頭字段標識符405(1212)。分組預(yù)處理器112修改報頭報告塊400的概要塊420中的報頭字段指示符425以指示報頭字段標識符405包括在分組400中(1216)。
[0057]在一實施例中,分組預(yù)處理器112確定報頭字段標識符405不包括在分組400中。分組預(yù)處理器112修改報頭字段指示符425以指示報頭字段標識符405不被包括在分組400中。作為響應(yīng),分組預(yù)處理器112不產(chǎn)生報頭字段塊430。使分組400中的報頭字段標識符405匹配的過程將在下面參照圖5進行描述。報頭字段標識符405的示例包括“Host (主機)”、“Server (月艮務(wù)器)”、“Content (內(nèi)容)”、“Cookie,,、“Cookie2,,、“Set-Cookie” 和“Set-Cookie2”。
[0058]在一實施例中,分組預(yù)處理器112進一步檢查分組400以尋找與預(yù)定的子報頭字段標識符407匹配的子報頭字段。在一實施例中,子報頭字段標識符407在處理分組400前被存儲在分組預(yù)處理器112中。在一實施例中,子報頭字段標識符407在處理分組400之前由處理器模塊113配置在分組預(yù)處理器112上。一旦成功地確定子報頭字段標識符407在分組400中,分組預(yù)處理器112提取分組400中與子報頭字段標識符407關(guān)聯(lián)的信息,該信息用來產(chǎn)生報頭字段塊480 (1222)。然后產(chǎn)生報頭字段塊480,其中子報頭字段塊480的子報頭字段標識符482關(guān)聯(lián)于子報頭字段標識符407 (1223)。分組預(yù)處理器112進一步修改報頭指示符425以指示子報頭字段標識符407被包括在分組400中。使分組400中的子報頭字段標識符407匹配的過程參照圖6在下文中進一步描述。子報頭字段標識符407的示例包括“Service-Group (服務(wù)-組)”、“Std_sg”和其它cookie名的字串,其中子報頭字段標識符407是Cookie子報頭、Cookie-2子報頭、Set-Cookie子報頭或Set_Cookie2子報頭。在一實施例中,子報頭字段標識符407包括父報頭字段標識符。例如,子報頭字段標識符 407 是 “Cookie/Sto-sg,,。
[0059]在一實施例中,分組預(yù)處理器112確定分組400不包括有效HTTP報頭。作為響應(yīng),分組預(yù)處理器112不產(chǎn)生報頭報告塊410。在一實施例中,分組預(yù)處理器112產(chǎn)生具有概要塊420的報頭報告塊410,該概要塊420指示分組400中不包括有效HTTP報頭。
[0060]返回到圖2,分組預(yù)處理器112將報頭報告塊410發(fā)送至處理器模塊113。在一實施例中,分組預(yù)處理器112將分組400連同報頭報告塊410 —起發(fā)送至處理器模塊113。在一實施例中,分組預(yù)處理器112在將分組400發(fā)送至處理器模塊113之后發(fā)送報頭報告塊410。
[0061]圖2b不出處理報頭報告塊410的處理器模塊113的一個實施例。處理器模塊113接收分組400和報頭報告塊410。
[0062]在一實施例中,處理器模塊113接收報頭報告塊410并從概要塊420中確定分組400包括有效HTTP報頭(1251)。處理器模塊113使用報頭報告塊410處理分組400。當處理器模塊113不接收報頭報告塊410或從接收的報頭報告塊410的概要塊420中確定分組400不含有效HTTP請求報頭時,分組400的處理落在本發(fā)明的范圍之外。
[0063]響應(yīng)于確定分組400包括有效HTTP報頭,處理器模塊113使用報頭報告塊410檢索服務(wù)策略310 (1260)。在檢索服務(wù)策略310時,假設(shè)報頭報告塊410的報頭字段塊430對應(yīng)于報頭字段標識符432“Server ”,處理器模塊113通過使用報頭字段塊430中的報頭字段位置434和報頭字段大小435從分組400獲得報頭字段“Server”的報頭字段值437 (1261)。處理器模塊113基于報頭字段值437選擇服務(wù)策略310。在一實施例中,子報頭字段塊480對應(yīng)于子報頭字段標識符407 "Service-Group^處理器模塊113通過使用子報頭字段塊480中的子報頭字段位置484和子報頭字段大小485從分組400獲得子報頭字段標識符407的子報頭字段值487(1263)。處理器模塊113基于子報頭字段值487檢索服務(wù)策略310。
[0064]處理器模塊113將服務(wù)策略310應(yīng)用至分組400(1270)。在一實施例中,處理器模塊113基于服務(wù)策略310選擇服務(wù)器210。在一實施例中,處理器模塊113基于服務(wù)策略310將話務(wù)管理應(yīng)用于分組400。在一實施例中,處理器模塊113基于服務(wù)策略310將安全性控制應(yīng)用于分組400。
[0065]在一實施例中,處理器模塊113使用HTTP請求分組400建立與服務(wù)器210的HTTP會話350(1272)。在一實施例中,處理器模塊113在使用經(jīng)修改的分組400建立HTTP會話350之前修改HTTP請求分組400 (1275)。在一實施例中,子報頭字段塊480指示父報頭字段標識符“Cookie”的子報頭字段。處理器模塊113將與子報頭字段塊480關(guān)聯(lián)的相應(yīng)子報頭字段從HTTP請求分組400中移除。例如,子報頭字段標識符407是“Sto-sg”。處理器模塊113將該子報頭字段標識符407 “Sto-sg”從“Cookie”報頭字段中移除。在一實施例中,分組 400 中的 “Cookie” 報頭字段是 “Cookie:user=frank ;Sto-sg=201983578 ;session-1d=8204”。在修改后,經(jīng)修改的分組400中的“Cookie”報頭字段是“Cookie:user=frank ;sessi on-1d=8204”。處理器模塊113將經(jīng)修改的分組400發(fā)送至服務(wù)器210以建立HTTP會話350。
[0066]在一實施例中,處理器模塊113創(chuàng)建一會話條目390 (1280)并存儲關(guān)于與主機100的HTTP會話300和與服務(wù)器210的HTTP會話350的信息。在一實施例中,處理器模塊113將會話條目390與服務(wù)策略310相關(guān)聯(lián)。
[0067]在一實施例中,處理器模塊113在將分組400發(fā)送至服務(wù)器210以建立HTTP會話350之前不對分組400進行修改。
[0068]圖4示出標識HTTP請求或響應(yīng)分組的分組預(yù)處理器的一個實施例。在圖4中,分組預(yù)處理器112檢查從網(wǎng)絡(luò)接口模塊111接收的分組700。分組700可以是來自主機100的HTTP請求分組、來自服務(wù)器210的HTTP響應(yīng)分組或任何其它數(shù)據(jù)分組。分組預(yù)處理器112處理分組700以確定分組700是否包括有效HTTP報頭。在一實施例中,分組700包括傳輸控制協(xié)議(TCP)和網(wǎng)際協(xié)議(IP)分組報頭741。在一實施例中,分組700包括IP隧道分組報頭。IP隧道的示例包括L2TP隧道、移動IP隧道、IP中IP隧道、GPRS IP隧道、IPv4-1Pv6隧道、IPv6-1Pv4隧道、IP MPLS隧道或其它IP隧道協(xié)議。分組預(yù)處理器112檢查TCP/IP報頭741是否指示分組700是HTTP分組(1403)。在一實施例中,當分組700是來自主機100的分組時,分組預(yù)處理器112將分組700的TCP目的地端口號與多個預(yù)定端口號704進行比較。在一實施例中,當分組700是從服務(wù)器210接收的時,分組處理器112使用分組700的TCP源端口號。多個預(yù)定端口號704包括例如端口號80,8080,8000或由處理器模塊113配置的至少一個端口號。如果不匹配,分組預(yù)處理器112確定分組700不是HTTP分組并且該分組700不包括有效HTTP報頭。否則,分組預(yù)處理器112確定分組700可包括有效HTTP報頭。
[0069]在步驟1405,分組預(yù)處理器112檢查TCP/IP報頭741的標志(Flag)和段偏移(Fragment Offset)以確定分組700是否為IP分組段(1405)。如果分組700是IP分組段,則分組預(yù)處理器112確定分組700不包括有效HTTP報頭。否則,分組預(yù)處理器112確定分組700可包括有效HTTP報頭。
[0070]分組預(yù)處理器112將分組700的TCP有效負載745的開始部分與HTTP命令字串706 進行比較(1407),該 HTTP 命令字串 706 包括:GET、GET [whitespace]、P0ST、P0ST [whitespace]以及HTTP/。如果不存在匹配,則分組預(yù)處理器112確定分組700不包括有效HTTP報頭。否則,分組預(yù)處理器112確定分組700可能包括有效HTTP報頭。
[0071]在一實施例中,在1403、1405和1407中,分組預(yù)處理器112確定分組700可包括有效HTTP報頭。作為響應(yīng),分組預(yù)處理器112產(chǎn)生報頭報告塊710 (1409)。如果分組預(yù)處理器112在1403、1405或1407中確定分組700不包括有效HTTP報頭,則在一實施例中,分組預(yù)處理器112不產(chǎn)生報頭報告塊710。在一實施例中,分組預(yù)處理器112產(chǎn)生報頭報告塊710但將指示該分組700不包括有效HTTP報頭的報頭指示符722存儲在報頭報告塊710的概要塊720中。在一實施例中,分組預(yù)處理器112確定分組700包括或可能包括有效HTTP報頭。分組預(yù)處理器112將指示分組700中包括有效HTTP報頭的報頭指示符722存儲在概要塊720中。
[0072]圖5示出標識HTTP報頭字段的分組預(yù)處理器的一實施例。在分組預(yù)處理器112確定分組700包括有效HTTP報頭之后,分組預(yù)處理器112針對報頭字段標識符705處理分組 700。
[0073]分組預(yù)處理器112將分組700中的報頭字段標識符與一字符序列進行比較,該字符序列包含字符“\n”(換行或移行字符或十六進制值0x10)隨后是報頭字段標識符705再后是字符“:”的組合。在一實施例中,字符序列包括在字符“\n”之前的“\r”(回車字符或十六進制值0x13)。在一實施例中,分組預(yù)處理器112從分組700的TCP有效負載745的開始位置開始匹配,或在另一實施例中,在分組700中圖4中匹配的HTTP命令之后。
[0074]在一實施例中,在分組700中沒有發(fā)現(xiàn)匹配。分組預(yù)處理器112確定分組700不包括報頭字段標識符705。
[0075]在一實施例中,發(fā)現(xiàn)匹配。分組預(yù)處理器112確定分組700包括報頭字段標識符705。分組預(yù)處理器112產(chǎn)生與報頭字段標識符705對應(yīng)的報頭字段塊730以使其包括報頭字段標識符732。分組預(yù)處理器112記錄分組700中發(fā)現(xiàn)匹配的報頭字段位置734。分組預(yù)處理器112將位置734存儲在報頭字段塊730中。在該實施例中,分組預(yù)處理器112匹配從位置734開始的字符“\n”。在一實施例中,分組預(yù)處理器112在位置738尋找分組700中的“\n”或“\r\n”的匹配。分組預(yù)處理器112將報頭字段報告730的報頭字段大小735計算為位置738和位置734之間的差并將報頭字段大小735存儲在報頭字段塊730中。在一實施例中,差735是位置738和匹配字符“:”的位置之間的差。在一實施例中,分組處理器112使匹配字符“:”后的諸如空白“”字符或制表“\t”字符的線性空白字符序列匹配。差735位于位置738和匹配字符“:”后的第一個非線性空白字符之間。[0076]圖6是標識HTTP子報頭字段的分組預(yù)處理器的實施例。在分組預(yù)處理器112確定分組700包括有效HTTP報頭之后,分組預(yù)處理器112針對子報頭字段標識符707處理分組700。在分組700是HTTP請求分組的一實施例中,子報頭字段標識符707與“Cookie”的子報頭字段關(guān)聯(lián)。在分組700是HTTP響應(yīng)分組的一實施例中,子報頭字段標識符707與“Set-Cookie ”或“Set-Cookie2”的子報頭字段關(guān)聯(lián)。
[0077]在一實施例中,分組預(yù)處理器112確定如圖5所示與“Cookie”關(guān)聯(lián)的報頭字段標識符的報頭字段位置794和結(jié)束位置798。分組預(yù)處理器112繼續(xù)使用分組700中的位置794和結(jié)束位置798執(zhí)行與子報頭字段標識符707的比較。分組預(yù)處理器112使用子報頭字段標識符707和字符“=”的字符序列組合進行比較。
[0078]在一實施例中,分組預(yù)處理器112在位置784尋找子報頭字段標識符707的匹配。在該實施例中,位置784等于或大于位置794并且不大于位置798。分組預(yù)處理器112繼續(xù)確定子報頭字段標識符707的大小785。在一實施例中,分組預(yù)處理器112確定匹配字符“=”的位置和位置798之間的非線性空白字符的第一次出現(xiàn)以及在非線性空白字符第一次出現(xiàn)之后但在位置798之前的位置788的字符“;”的第一次出現(xiàn)。在一實施例中,分組預(yù)處理器112將大小785計算為位置784和位置788之間的差。在一實施例中,位置784標志著確定的非線性空白字符的第一次出現(xiàn)。
[0079]在一實施例中,分組預(yù)處理器112在匹配的非線性空白字符的第一次出現(xiàn)和報頭報告塊710中的位置798之間沒有找到字符“;”,并且分組預(yù)處理器112在計算大小785時將位置798用作位置788。
[0080]在其中分組預(yù)處理器112確定子報頭字段標識符707的匹配被發(fā)現(xiàn)的一實施例中,分組預(yù)處理器112創(chuàng)建子報頭字段塊780。分組預(yù)處理器112將位置784和大小785作為報頭字段與報頭字段標識符782 —起存儲在報頭報告塊710的子報頭字段塊780中。
[0081]在一實施例中,分組預(yù)處理器112未發(fā)現(xiàn)子報頭字段標識符707的匹配。分組預(yù)處理器112確定在匹配的報頭字段“Cookie”中在位置794未包括子報頭字段標識符707。在一實施例中,分組預(yù)處理器112繼續(xù)匹配分組700中的另一報頭字段“Cookie”。在一實施例中,分組預(yù)處理器112確定子報頭字段標識符707不被包括在分組700中。分組預(yù)處理器112不產(chǎn)生報頭字段塊780。
[0082]在圖4-6中,分組預(yù)處理器112使分組700與一個或多個字符的序列匹配。這種匹配是FPGA、ASIC和其它適宜和能勝任的基于硬件的處理模塊的領(lǐng)域內(nèi)技術(shù)人員所熟知的。
[0083]圖7示出處理HTTP響應(yīng)分組800的服務(wù)網(wǎng)關(guān)110的實施例。服務(wù)網(wǎng)關(guān)110的網(wǎng)絡(luò)模塊111從服務(wù)器210接收HTTP響應(yīng)分組800。網(wǎng)絡(luò)模塊111將分組800發(fā)送至分組預(yù)處理器112。分組預(yù)處理器112檢查分組800以產(chǎn)生報頭報告塊810。
[0084]在一實施例中,報頭報告塊810包括概要塊820、可選擇的報頭字段塊830和子報頭字段塊880。概要塊820包括指示分組800是否包括有效HTTP報頭的報頭指示符(未示出)以及指示報頭報告塊810中是包括報頭字段塊830還是子報頭字段塊880的報頭字段指示符825。
[0085]在一實施例中,報頭字段塊830對應(yīng)于報頭字段標識符805。在一實施例中,子報頭字段塊880關(guān)聯(lián)于子報頭字段標識符807。
[0086]分組預(yù)處理器112如圖4-6所示那樣檢查分組800以產(chǎn)生報頭報告塊810。具體地說,報頭字段標識符805是“Set-Cookie”或“Set-C00kie2”,而子報頭字段標識符807是名稱字串,例如“SerVice-Gr0Up”、“Std-Sg”或由處理器模塊113在分組預(yù)處理器112上配置的另一名稱字串。典型地,該子報頭字段標識符807是報頭字段標識符805的子報頭字段。
[0087]在一實施例中,分組預(yù)處理器112未發(fā)現(xiàn)報頭字段標識符805或子報頭字段標識符807。分組預(yù)處理器112指示報頭字段指示符825中沒有相應(yīng)的報頭字段或子報頭字段。
[0088]處理器模塊113從分組預(yù)處理器112接收分組800和可能的報頭報告塊810。如果處理器模塊113未接收到報頭報告塊810或從報頭報告塊810的概要塊820中確定分組800不包含有效HTTP報頭,則處理器模塊113以本發(fā)明范圍以外的方式處理分組800。
[0089]在一實施例中,處理器模塊113接收報頭報告塊810并從概要塊820確定分組800包括有效HTTP報頭。處理器模塊113使用報頭報告塊810處理分組800。
[0090]在一實施例中,處理器模塊113使用諸如分組800中的服務(wù)器210地址、主機100地址、TCP源端口號和目的地端口號之類的分組800信息檢索會話條目390。處理器模塊113進一步檢索與會話條目390關(guān)聯(lián)的服務(wù)策略310。
[0091 ] 在一實施例中,如果在報頭報告塊810中包括與“ Set-Cookie ”或“ Set_Cookie2 ”對應(yīng)的報頭字段塊830,處理器模塊113檢查報頭字段指示符825。在一實施例中,檢查失敗。處理器模塊113通過添加與“Set-Cookie”對應(yīng)的報頭字段來修改分組800。在一實施例中,處理器模塊113添加報頭字段“\n Set-Cookie:Stg-sg = 678”,其中子報頭字段“Stg-sg”的值“678”是基于服務(wù)策略310確定的。在一實施例中,值“678”是從會話條目390獲得的。在一實施例中,子報頭字段“Service-Group”用來取代“Stg-sg”。在一實施例中,子報頭字段名字串是從會話條目390獲得的。在一實施例中,處理器模塊113添加報頭字段 “\r\nSet_Cookie:Stg_sg=678”。
[0092]在一實施例中,報頭報告塊810中包括與“Set-Cookie”或“Set_Cookie2”對應(yīng)的報頭字段塊830。處理器模塊113檢查報頭字段指示符825以確定是否包括子報頭字段塊880。在一實施例中,報頭報告塊810中不包括子報頭字段塊880。處理器模塊113修改分組800中與報頭字段塊830對應(yīng)的報頭字段值。處理器模塊113將子報頭字段“Stg-sg = 678 ; ”插入與報頭字段標識符805對應(yīng)的HTTP報頭字段。例如,報頭字段標識符805是“Set-Cookie”,而分組800中的“Set-Cookie”的報頭字段值是“Set-Cookie:User=90167CD”。處理器模塊113將“Set-Cookie”的報頭字段值改變?yōu)椤癝et-Cookie:User=90167CD ;Stg_sg=678”。在一實施例中,處理器模塊113將“Set-Cookie” 的報頭字段值改變?yōu)?“Set-Cookie:User=90167CD ;Stg_sg=678\r\n”。
[0093]在一實施例中,報頭報告塊810中包括子報頭字段塊880。處理器模塊113不對分組800的HTTP報頭進行修改。
[0094]處理器模塊113將經(jīng)修改的分組800發(fā)送至主機100。
[0095]在一實施例中,分組700或分組800可包括兩個或更多個相同報頭字段,例如兩個或更多個“Cookie”或“Set-Cookie”報頭。在一實施例中,分組預(yù)處理器112對報頭的第一次出現(xiàn)進行處理。在一實施例中,分組預(yù)處理器112對所配置的子報頭字段被匹配的報頭第一次出現(xiàn)進行處理。在一實施例中,分組預(yù)處理器112將多個相同報頭字段的出現(xiàn)記錄在報頭報告塊710或報頭報告塊810中。[0096]盡管已根據(jù)所示實施例對本發(fā)明進行了描述,然而本領(lǐng)域內(nèi)技術(shù)人員容易理解,對這些實施例可以有許多變例并且這些變例落在本發(fā)明的精神和范圍內(nèi)。因此,本領(lǐng)域內(nèi)技術(shù)人員可作出許多修改而不脫離所附權(quán)利要求書的精神和范圍。
【權(quán)利要求】
1.一種處理超文本傳輸協(xié)議(HTTP)報頭的方法,包括: 將至少一個預(yù)定報頭字段標識符配置到硬件分組預(yù)處理器的存儲器上,其中硬件分組預(yù)處理器被允許檢測在主機和服務(wù)器之間的HTTP會話之上接收的HTTP分組的報頭字段中的至少一個報頭字段標識符,使預(yù)定報頭字段標識符匹配于HTTP分組中的報頭字段標識符,產(chǎn)生包含與HTTP分組中的報頭字段標識符對應(yīng)的信息的報頭報告塊,并將報頭報告塊發(fā)送至處理器模塊以基于所述報頭報告塊處理HTTP分組。
2.如權(quán)利要求1所述的方法,其特征在于,在使預(yù)定報頭字段標識符匹配于HTTP分組中的報頭字段標識符時和在產(chǎn)生報頭報告塊時,所述硬件分組預(yù)處理器被進一步允許: 將HTTP報頭中的報頭字段標識符與在硬件分組預(yù)處理器的存儲器上配置的預(yù)定報頭字段標識符作比較;并且響應(yīng)于HTTP報頭中的報頭字段標識符與硬件分組預(yù)處理器的存儲器上配置的預(yù)定報頭字段標識符匹配的判斷產(chǎn)生報頭塊報告以使其包含報頭字段塊,所述報頭字段塊包括:報頭字段位置,其指示與HTTP報頭中的報頭字段標識符對應(yīng)的報頭字段的開始位置;以及 報頭字段大小,其指示與HTTP報頭中的報頭字段標識符對應(yīng)的報頭字段的值的大小或長度。
3.如權(quán)利要求2所述的方法,其特征在于,還包括: 將至少一個預(yù)定的子報頭字段標識符配置到硬件分組預(yù)處理器的存儲器上, 其中硬件分組預(yù)處理器被進一步允許檢測HTTP分組的報頭字段中的至少一個子報頭字段標識符,使預(yù)定的子報頭字段`標識符與HTTP分組中的子報頭字段標識符匹配,產(chǎn)生報頭報告塊以使其進一步包含與HTTP分組中的子報頭字段標識符對應(yīng)的信息。
4.如權(quán)利要求3所述的方法,其特征在于,在使預(yù)定的子報頭字段標識符與HTTP分組中的子報頭字段標識符匹配時和在產(chǎn)生報頭報告塊時,所述硬件分組預(yù)處理器被進一步允許: 將預(yù)定的子報頭字段標識符與對應(yīng)于HTTP報頭中的報頭字段標識符的報頭字段中的字符進行比較;并且 響應(yīng)于找到預(yù)定的子報頭字段標識符和與HTTP報頭中的報頭字段標識符對應(yīng)的報頭字段中的字符之間的匹配,產(chǎn)生報頭塊報告以使其包含子報頭字段塊,所述子報頭字段塊包括: 子報頭字段位置,其指示與HTTP報頭中的子報頭字段標識符對應(yīng)的子報頭字段的開始位置;以及 子報頭字段大小,其指示與HTTP報頭中的子報頭字段標識符對應(yīng)的子報頭字段的值的大小或長度。
5.如權(quán)利要求2所述的方法,其特征在于,所述處理器模塊: 從硬件分組預(yù)處理器接收報頭報告塊; 使用報頭報告塊檢索服務(wù)策略,包括: 使用報頭字段塊中的報頭字段位置和報頭字段大小獲得HTTP報頭中的報頭字段值;并 基于所述報頭字段值檢索服務(wù)策略;以及將所述服務(wù)策略應(yīng)用至HTTP分組。
6.如權(quán)利要求4所述的方法,其特征在于,所述處理器模塊: 從所述硬件分組預(yù)處理器接收報頭報告塊; 使用報頭報告塊檢索服務(wù)策略,包括: 使用子報頭字段塊中的子報頭字段位置和子報頭字段大小獲得HTTP報頭中的子報頭字段值;并 基于所述子報頭字段值檢索服務(wù)策略;以及 將所述服務(wù)策略應(yīng)用于HTTP分組。
7.如權(quán)利要求1所述的方法,其特征在于,所述報頭字段包括HTTPcookie報頭字段。
8.如權(quán)利要求4所述的方法,其特征在于,所述報頭字段包括HTTPcookie報頭字段。
9.如權(quán)利要求6所述的方法,其特征在于,所述處理器模塊進一步: 修改HTTP分組的報頭字段;以及 將經(jīng)修改的HTTP分組發(fā)送至主機或服務(wù)器。
10.如權(quán)利要求9所述的方法,其特征在于,所述報頭字段包括HTTPcookie報頭字段。
11.如權(quán)利要求10所述的方法,其特征在于,在修改HTTP分組的報頭字段和將經(jīng)修改的HTTP分組發(fā)送至主機或服務(wù)器時,所述處理器模塊: 通過移除子報頭字段修改HTTP分組的報頭字段;以及 將經(jīng)修改的HTTP分組發(fā)送至服務(wù)器。
12.如權(quán)利要求10所述的方法,其特征在于,在修改HTTP分組的報頭字段和將經(jīng)修改的HTTP分組發(fā)送至主機或服務(wù)器時,所述處理器模塊: 通過插入第二子報頭字段修改HTTP分組的報頭字段;以及 將經(jīng)修改的HTTP分組發(fā)送至主機。
13.一種服務(wù)網(wǎng)關(guān),包括: 硬件分組預(yù)處理器,其包括配置有至少一個預(yù)定報頭字段標識符的存儲器, 其中所述硬件分組預(yù)處理器檢測在主機和服務(wù)器之間的HTTP會話之上接收的HTTP分組的報頭字段中的至少一個報頭字段標識符,使預(yù)定報頭字段標識符匹配于HTTP分組中的報頭字段標識符,產(chǎn)生包含與HTTP分組中的報頭字段標識符對應(yīng)的信息的報頭報告塊,并將所述報頭報告塊發(fā)送至處理器模塊以基于所述報頭報告塊處理HTTP分組。
14.如權(quán)利要求13所述的服務(wù)網(wǎng)關(guān),其特征在于,在使預(yù)定報頭字段標識符匹配于HTTP分組中的報頭字段標識符時和在產(chǎn)生報頭報告塊時,所述硬件分組預(yù)處理器: 將HTTP報頭中的報頭字段標識符與在硬件分組預(yù)處理器的存儲器上配置的預(yù)定報頭字段標識符作比較;并且 響應(yīng)于HTTP報頭中的報頭字段標識符與硬件分組預(yù)處理器的存儲器上配置的預(yù)定報頭字段標識符匹配的判斷,產(chǎn)生報頭塊報告以使其包含報頭字段塊,所述報頭字段塊包括: 報頭字段位置,其指示與HTTP報頭中的報頭字段標識符對應(yīng)的報頭字段的開始位置;以及 報頭字段大小,其指示與HTTP報頭中的報頭字段標識符對應(yīng)的報頭字段的值的大小或長度。
15.如權(quán)利要求14所述的服務(wù)網(wǎng)關(guān),其特征在于,在硬件分組預(yù)處理器的存儲器上進一步配置有至少一個預(yù)定的子報頭字段標識符, 其中硬件分組預(yù)處理器進一步檢測HTTP分組的報頭字段中的至少一個子報頭字段標識符,使預(yù)定的子報頭字段標識符與HTTP分組中的子報頭字段標識符匹配,產(chǎn)生報頭報告塊以使其進一步包含與HTTP分組中的子報頭字段標識符對應(yīng)的信息。
16.如權(quán)利要求15所述的服務(wù)網(wǎng)關(guān),其特征在于,在使預(yù)定的子報頭字段標識符與HTTP分組中的子報頭字段標識符匹配時和在產(chǎn)生報頭報告塊時,所述硬件分組預(yù)處理器進一步: 將預(yù)定的子報頭字段標識符與對應(yīng)于HTTP報頭中的報頭字段標識符的報頭字段中的字符進行比較;并且 響應(yīng)于發(fā)現(xiàn)預(yù)定的子報頭字段標識符和與HTTP報頭中的報頭字段標識符對應(yīng)的報頭字段中的字符之間的匹配,產(chǎn)生報頭塊報告以使其包含子報頭字段塊,所述子報頭字段塊包括: 子報頭字段位置,其指示與HTTP報頭中的子報頭字段標識符對應(yīng)的子報頭字段的開始位置;以及 子報頭字段大小,其指示與HTTP報頭中的子報頭字段標識符對應(yīng)的子報頭字段的值的大小或長度。
17.如權(quán)利要求14所述的服務(wù)網(wǎng)關(guān),其特征在于,還包括: 處理器模塊:以及 包含計算機可讀程序代碼.的計算機可讀介質(zhì),當由所述處理器模塊執(zhí)行所述計算機可讀程序代碼時,使所述服務(wù)網(wǎng)關(guān): 從硬件分組預(yù)處理器接收報頭報告塊; 使用報頭報告塊檢索服務(wù)策略,包括: 使用報頭字段塊中的報頭字段位置和報頭字段大小獲得HTTP報頭中的報頭字段值;并 基于所述報頭字段值檢索所述服務(wù)策略;以及 將所述服務(wù)策略應(yīng)用至HTTP分組。
18.如權(quán)利要求16所述的服務(wù)網(wǎng)關(guān),其特征在于,還包括: 處理器模塊:以及 包含計算機可讀程序代碼的計算機可讀介質(zhì),當由所述處理器模塊執(zhí)行所述計算機可讀程序代碼時,使所述服務(wù)網(wǎng)關(guān): 從所述硬件分組預(yù)處理器接收報頭報告塊; 使用所述報頭報告塊檢索服務(wù)策略,包括: 使用子報頭字段塊中的子報頭字段位置和子報頭字段大小獲得HTTP報頭中的子報頭字段值;并 基于所述子報頭字段值檢索服務(wù)策略;以及 將所述服務(wù)策略應(yīng)用于HTTP分組。
19.如權(quán)利要求13所述的服務(wù)網(wǎng)關(guān),其特征在于,所述報頭字段包括HTTPcookie報頭字段。
20.如權(quán)利要求16所述的服務(wù)網(wǎng)關(guān),其特征在于,所述報頭字段包括HTTPcookie報頭字段。
21.如權(quán)利要求18所述的服務(wù)網(wǎng)關(guān),其特征在于,所述計算機可讀程序代碼當由所述處理器模塊執(zhí)行時進一步使所述服務(wù)網(wǎng)關(guān): 修改HTTP分組的報頭字段;以及 將經(jīng)修改的HTTP分組發(fā)送至主機或服務(wù)器。
22.如權(quán)利要求21所述的服務(wù)網(wǎng)關(guān),其特征在于,所述報頭字段包括HTTPcookie報頭字段。
23.如權(quán)利要求22所述的服務(wù)網(wǎng)關(guān),其特征在于,在修改HTTP分組的報頭字段和將經(jīng)修改的HTTP分組發(fā)送至主機或服務(wù)器時,所述服務(wù)網(wǎng)關(guān)進一步: 通過移除子報頭字段修改HTTP分組的報頭字段;以及 將經(jīng)修改的HTTP分組發(fā)送至服務(wù)器。
24.如權(quán)利要求2所述的服務(wù)網(wǎng)關(guān),其特征在于,在修改HTTP分組的報頭字段和將經(jīng)修改的HTTP分組發(fā)送至主機或服務(wù)器時,所述服務(wù)網(wǎng)關(guān)進一步:通過插入第二子報頭字段修改HTTP分組的報頭字段;以及 將經(jīng)修改的HTTP分組發(fā)送 至主機。
【文檔編號】H04L29/06GK103428261SQ201310196116
【公開日】2013年12月4日 申請日期:2013年5月23日 優(yōu)先權(quán)日:2012年5月25日
【發(fā)明者】G·卡瑪特, I·E·戴維斯, R·賈蘭 申請人:A10網(wǎng)絡(luò)股份有限公司