亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

在網(wǎng)絡(luò)的內(nèi)容網(wǎng)關(guān)處對(duì)亂序數(shù)據(jù)分組的解析的制作方法

文檔序號(hào):6143296閱讀:138來源:國(guó)知局
專利名稱:在網(wǎng)絡(luò)的內(nèi)容網(wǎng)關(guān)處對(duì)亂序數(shù)據(jù)分組的解析的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及在網(wǎng)關(guān)節(jié)點(diǎn)處對(duì)去往網(wǎng)絡(luò)的數(shù)據(jù)分組進(jìn)行解析,以基于通 過該網(wǎng)關(guān)的數(shù)據(jù)分組的內(nèi)容來管理網(wǎng)絡(luò)。
背景技術(shù)
通過外部通信鏈路連接的通用計(jì)算機(jī)系統(tǒng)和專用設(shè)備的網(wǎng)絡(luò)在商業(yè)領(lǐng) 域公知并被廣泛利用。網(wǎng)絡(luò)通常包括有助于計(jì)算機(jī)系統(tǒng)和設(shè)備之間的信息 的通信的一個(gè)或多個(gè)網(wǎng)絡(luò)設(shè)備。網(wǎng)絡(luò)節(jié)點(diǎn)是通過通信鏈路連接的網(wǎng)絡(luò)設(shè) 備、計(jì)算機(jī)或?qū)S迷O(shè)備。端節(jié)點(diǎn)是被配置為發(fā)起或終結(jié)網(wǎng)絡(luò)上的通信的節(jié) 點(diǎn)。中間網(wǎng)絡(luò)節(jié)點(diǎn)有助于端節(jié)點(diǎn)之間的數(shù)據(jù)的通信。一些中間網(wǎng)絡(luò)節(jié)點(diǎn)充當(dāng)去往網(wǎng)絡(luò)或特定網(wǎng)絡(luò)服務(wù)提供商的部分網(wǎng)絡(luò)的網(wǎng)關(guān)。這種網(wǎng)關(guān)節(jié)點(diǎn)(下文中稱為網(wǎng)關(guān))不僅轉(zhuǎn)發(fā)數(shù)據(jù)分組,而且為提供 商的網(wǎng)絡(luò)的管理提供一些其他功能,諸如僅將訪問限制到被授權(quán)的用戶。 另外, 一些中間網(wǎng)絡(luò)節(jié)點(diǎn)充當(dāng)內(nèi)容網(wǎng)關(guān)。這種內(nèi)容網(wǎng)關(guān)基于相同的兩個(gè)端 節(jié)點(diǎn)之間的數(shù)據(jù)分組流中的一個(gè)或多個(gè)數(shù)據(jù)分組的內(nèi)容來提供對(duì)于網(wǎng)絡(luò)的 管理功能。內(nèi)容網(wǎng)關(guān)的功能包括評(píng)估由不同類型的有效載荷(例如,網(wǎng) 頁(yè)、文件傳送、電子郵件以及音頻和視頻內(nèi)容的流傳輸)引起的流量部 分、基于有效載荷的類型進(jìn)行路由、以及對(duì)于不同類型的有效載荷的不同 收費(fèi)等。這種內(nèi)容網(wǎng)關(guān)必須解析與相同的兩個(gè)端節(jié)點(diǎn)之間的每個(gè)流相關(guān)聯(lián)的若 干數(shù)據(jù)分組的有效載荷中的數(shù)據(jù)。解析包括解釋一個(gè)或多個(gè)有效載荷中的 數(shù)據(jù)。當(dāng)分組被順序解析時(shí),這種解析更加迅速和容易,因?yàn)橹辽僖恍?shù)據(jù)的含義取決于它在數(shù)據(jù)分組流中的位置。諸如傳輸控制協(xié)議(TCP)之 類的若干傳輸層協(xié)議通過在每個(gè)數(shù)據(jù)分組中包括序列號(hào)(sequence number)來支持?jǐn)?shù)據(jù)分組的排序。當(dāng)前,內(nèi)容網(wǎng)關(guān)通過存儲(chǔ)亂序(out of order)分組直到丟失的分組到 達(dá)為止來處理亂序到達(dá)的流的數(shù)據(jù)分組。在數(shù)據(jù)分組被解析之前不對(duì)數(shù)據(jù) 分組進(jìn)行轉(zhuǎn)發(fā),以防止提供商的網(wǎng)絡(luò)資源的未被授權(quán)的使用。當(dāng)丟失的數(shù) 據(jù)分組被接收時(shí),丟失且亂序數(shù)據(jù)分組的解析可以繼續(xù)。然后,這些解析 后的數(shù)據(jù)分組被轉(zhuǎn)發(fā)。這種方法的問題在于,在一些情況下網(wǎng)絡(luò)吞吐量顯 著降低,尤其是在輸入流通過不太可靠的接入網(wǎng)絡(luò)時(shí)(這時(shí)伴隨著頻繁丟 掉的分組)。


在附圖的圖形中通過示例而不是限制示出了本發(fā)明,并且相同的標(biāo)號(hào)表示相同的元件,其中圖l示出了具有內(nèi)容網(wǎng)關(guān)的示例網(wǎng)絡(luò);圖2示出了示例有序數(shù)據(jù)分組(sequenced data packet);圖3示出了使用有效的選擇性確認(rèn)的示例數(shù)據(jù)流; 圖4A示出了與其上的解析會(huì)干擾選擇性確認(rèn)的內(nèi)容網(wǎng)關(guān)有關(guān)的示例 數(shù)據(jù)流;圖4B示出了與其上的解析能較好地支持選擇性確認(rèn)的內(nèi)容網(wǎng)關(guān)有關(guān) 的示例數(shù)據(jù)流;圖5示出了用于在內(nèi)容網(wǎng)關(guān)上進(jìn)行解析的高級(jí)別方法;以及 圖6示出了本發(fā)明的實(shí)施例可以在其上實(shí)現(xiàn)的計(jì)算機(jī)系統(tǒng)。
具體實(shí)施方式
描述了用于在內(nèi)容網(wǎng)關(guān)上解析亂序數(shù)據(jù)分組的技術(shù)。在以下描述中, 出于說明的目的,闡述了大量具體細(xì)節(jié)以提供對(duì)本發(fā)明的全面理解。然 而,對(duì)于本領(lǐng)域技術(shù)人員很明顯的是,本發(fā)明可以在沒有這些具體細(xì)節(jié)的 情況下實(shí)施。在其他實(shí)例中,以框圖形式示出了公知的結(jié)構(gòu)和設(shè)備,以避 免對(duì)本發(fā)明的不必要的模糊。下面在接入網(wǎng)絡(luò)和提供商的網(wǎng)絡(luò)之間的內(nèi)容網(wǎng)關(guān)處接收、并利用TCP 選擇性確認(rèn)選項(xiàng)(SACK)確認(rèn)的可靠流的TCP數(shù)據(jù)分組的情況下,描述若干實(shí)施例。然而,本發(fā)明不限于這種情況。在其他實(shí)施例中, 一個(gè)或多 個(gè)內(nèi)容網(wǎng)關(guān)被置于相同或不同網(wǎng)絡(luò)或子網(wǎng)絡(luò)之間,該相同或不同網(wǎng)絡(luò)或子 網(wǎng)絡(luò)在存在或不存在SACK的情況下未被確認(rèn)的不可靠流或被確認(rèn)的可靠 流中、使用相同或不同協(xié)議的有序數(shù)據(jù)分組。
1.0綜述
在一組實(shí)施例中, 一種方法包括在網(wǎng)絡(luò)的本地節(jié)點(diǎn)處接收來自源節(jié) 點(diǎn)、去往目的地節(jié)點(diǎn)的由多個(gè)有序數(shù)據(jù)分組組成的流中的有序數(shù)據(jù)分組。 本地節(jié)點(diǎn)將對(duì)該流進(jìn)行解析,以確定該流中的用于描述該流的特定數(shù)據(jù)以 用于網(wǎng)絡(luò)管理?;谟行驍?shù)據(jù)分組中的序列數(shù)據(jù),確定該有序數(shù)據(jù)分組在 該流中是否順序錯(cuò)誤(亂序的)。如果確定該有序數(shù)據(jù)分組順序錯(cuò)誤,則 在解析該有序數(shù)據(jù)分組之前向目的地節(jié)點(diǎn)轉(zhuǎn)發(fā)該有序數(shù)據(jù)分組。該順序錯(cuò) 誤的有序數(shù)據(jù)分組還在本地節(jié)點(diǎn)處被存儲(chǔ)用于隨后進(jìn)行解析。
在各種其他實(shí)施例中, 一種裝置或軟件被配置為執(zhí)行以上方法的一個(gè)
或多個(gè)步驟。
2.0網(wǎng)絡(luò)綜述
網(wǎng)絡(luò)節(jié)點(diǎn)之間的通信通常通過交換離散的數(shù)據(jù)分組來實(shí)現(xiàn)。根據(jù)一個(gè) 或多個(gè)公知的、新的或仍在開發(fā)的協(xié)議,在數(shù)據(jù)分組中交換信息。在這種 情況下,協(xié)議包括定義節(jié)點(diǎn)如何基于通信鏈路上發(fā)送的信息來相互作用的
一組規(guī)則。每個(gè)分組一般包括l]與特定協(xié)議相關(guān)聯(lián)的頭部信息,2]跟隨 頭部信息且包含可以獨(dú)立于那個(gè)特定協(xié)議而被處理的信息的有效載荷信 息。在一些協(xié)議中,分組包括3]在有效載荷之后、指示有效載荷信息的 結(jié)束的尾部信息。頭部包括協(xié)議使用的信息,諸如分組的源、它的目的 地、有效載荷的長(zhǎng)度以及其他特性。通常,用于特定協(xié)議的有效載荷中的 數(shù)據(jù)包括與用于信息交換的不同層的細(xì)節(jié)相關(guān)聯(lián)的用于不同協(xié)議的頭部和 有效載荷。用于特定協(xié)議的頭部可以指示包含在其有效載荷中的下一個(gè)協(xié) 議的類型。有效載荷中的一般較高層的協(xié)議被認(rèn)為密封在較低層協(xié)議中。 包括在橫穿多個(gè)異構(gòu)網(wǎng)(諸如,互聯(lián)網(wǎng))的分組中的頭部一般包括物理
8(第1層)頭部、數(shù)據(jù)鏈路(第2層)頭部、互聯(lián)網(wǎng)(第3層)頭部以及
傳輸(第4層)頭部,如開放系統(tǒng)互連(OSI)參考模型所定義的。OSI參 考模型在由Radia Perlman于1999年9月出版的題為"Interconnections Second Edition"的參考書的1.1節(jié)中有更加詳細(xì)的描述,這一部分通過引 用結(jié)合于此,如同在這里進(jìn)行了完全闡述一樣。
數(shù)據(jù)鏈路頭部提供定義一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)和相鄰節(jié)點(diǎn)之間的特定通信鏈路 的信息?;ヂ?lián)網(wǎng)頭部提供定義計(jì)算機(jī)網(wǎng)絡(luò)內(nèi)的源和目的地地址的信息。特 別地,路徑可以跨越多個(gè)物理鏈路??梢愿鶕?jù)互聯(lián)網(wǎng)協(xié)議(IP)來對(duì)互聯(lián) 網(wǎng)頭部進(jìn)行格式化,其中,互聯(lián)網(wǎng)協(xié)議指定了邏輯路徑的端點(diǎn)處的源和目 的地節(jié)點(diǎn)的IP地址。所以,分組可以沿著它的邏輯路徑從節(jié)點(diǎn)"跳"到節(jié) 點(diǎn),直到它到達(dá)分配給存儲(chǔ)在分組的互聯(lián)網(wǎng)頭部中的目標(biāo)IP地址的端節(jié)點(diǎn) 為止。在每跳之后,如果必要的話,可以對(duì)分組的數(shù)據(jù)鏈路頭部中的源或 目的地地址進(jìn)行更新。然而,當(dāng)分組在網(wǎng)絡(luò)中被從鏈路傳送到鏈路時(shí),源 和目的地IP地址一般保持不變。IP有效載荷通常包括用于應(yīng)用的數(shù)據(jù) (第7層頭部和有效載荷)。
路由器和交換機(jī)是確定采用哪個(gè)或哪些通信鏈路來支持通過網(wǎng)絡(luò)的數(shù) 據(jù)分組的進(jìn)展的網(wǎng)絡(luò)設(shè)備?;诨ヂ?lián)網(wǎng)頭部(第3層)中的信息確定采用 哪些鏈路的網(wǎng)絡(luò)節(jié)點(diǎn)被稱為路由器。
計(jì)算機(jī)進(jìn)程交互的客戶端一服務(wù)器模型被廣泛知曉和使用。根據(jù)客戶 端一服務(wù)器模型,客戶端進(jìn)程發(fā)送包括請(qǐng)求的消息給服務(wù)器進(jìn)程,服務(wù)器 進(jìn)程通過提供服務(wù)進(jìn)行響應(yīng)。服務(wù)器進(jìn)程還可以向客戶端進(jìn)程返回具有響 應(yīng)的消息。通常,客戶端進(jìn)程和服務(wù)器進(jìn)程在被稱為主機(jī)的不同計(jì)算機(jī)設(shè) 備上運(yùn)行,并且使用用于網(wǎng)絡(luò)通信的一個(gè)或多個(gè)協(xié)議經(jīng)由網(wǎng)絡(luò)進(jìn)行通信。 術(shù)語(yǔ)"服務(wù)器"傳統(tǒng)上被用于指提供服務(wù)的進(jìn)程,或進(jìn)程在其上運(yùn)行的主 計(jì)算機(jī)。類似地,術(shù)語(yǔ)"客戶端"傳統(tǒng)上被用于指作出請(qǐng)求的進(jìn)程,或進(jìn) 程在其上運(yùn)行的主計(jì)算機(jī)。如本文中所使用的,術(shù)語(yǔ)"客戶端"和"服務(wù) 器"指進(jìn)程而不是主計(jì)算機(jī),除非從上下文可以明了的以外。另外,由于 可靠性、可測(cè)量性以及冗余性的原因(不限于這些原因),由服務(wù)器執(zhí)行 的進(jìn)程可以被分解為在多個(gè)主機(jī)(有時(shí)稱為等級(jí))上運(yùn)行的多個(gè)服務(wù)器。圖1示出了具有內(nèi)容網(wǎng)關(guān)160的示例網(wǎng)絡(luò)100。網(wǎng)絡(luò)100包括接入網(wǎng) 絡(luò)102a和各種子網(wǎng)絡(luò)102b。端節(jié)點(diǎn)120a和端節(jié)點(diǎn)120b (下文中統(tǒng)稱為端 節(jié)點(diǎn)120)被連接至接入網(wǎng)絡(luò)102a。在一些實(shí)施例中,接入網(wǎng)絡(luò)102a是無 線接入網(wǎng)絡(luò)。端節(jié)點(diǎn)120的用戶請(qǐng)求在各種子網(wǎng)絡(luò)102b上可用的資源。
各種子網(wǎng)絡(luò)102b包括內(nèi)容網(wǎng)關(guān)160、認(rèn)證、授權(quán)和計(jì)費(fèi)(AAA)服務(wù) 器114和收費(fèi)服務(wù)器(billing server) 180、以及其他服務(wù)器170a、服務(wù)器 170b、服務(wù)器170c、服務(wù)器170d (下文中統(tǒng)稱為服務(wù)器170)。在一些實(shí) 施例中,子網(wǎng)絡(luò)102b是被稱為較大的提供商網(wǎng)絡(luò)(未示出)的圍墻花園 (walled garden)的部分。圍墻花園存有為其支付了費(fèi)用的特殊內(nèi)容,并 且收費(fèi)取決于內(nèi)容類型和所檢索的數(shù)量。接入網(wǎng)絡(luò)102a上的一個(gè)或多個(gè)中 間節(jié)點(diǎn)被如圖所示地直接連接或通過較大的提供商網(wǎng)絡(luò)(未示出)間接連 接至內(nèi)容網(wǎng)關(guān)160。諸如遠(yuǎn)程用戶撥號(hào)認(rèn)證系統(tǒng)(RADIUS)之類的AAA 服務(wù)器114被內(nèi)容網(wǎng)關(guān)160用來驗(yàn)證在網(wǎng)關(guān)160處接收的數(shù)據(jù)分組的用 戶,并且是從在網(wǎng)關(guān)160處接收的數(shù)據(jù)分組解析出的一些數(shù)據(jù)的接收者。 收費(fèi)服務(wù)器180被內(nèi)容網(wǎng)關(guān)160用來確定在網(wǎng)關(guān)160處接收的數(shù)據(jù)分組的 用戶的帳戶,并且是從在網(wǎng)關(guān)160處接收的數(shù)據(jù)分組解析出的一些數(shù)據(jù)的 接收者,諸如關(guān)于所獲取的資源的數(shù)據(jù)(諸如用戶請(qǐng)求的有效載荷的位 置、數(shù)量和類型)。解析后的數(shù)據(jù)被收費(fèi)服務(wù)器180用來向用戶收取對(duì)于 用戶所獲取的資源的費(fèi)用。服務(wù)器170提供用戶期望的各種資源,諸如網(wǎng) 頁(yè)、數(shù)據(jù)文件、電子郵件、音頻、視頻和游戲資源。
盡管出于說明的目的,圖1圖示出了特定數(shù)目和類型的網(wǎng)絡(luò)102a、 102b、端節(jié)點(diǎn)120、網(wǎng)關(guān)160和服務(wù)器170,但是在其他實(shí)施例中,網(wǎng)絡(luò) 包括相同的、更多或更少的端節(jié)點(diǎn)和服務(wù)器以及相同或更多的內(nèi)容網(wǎng)關(guān) 160和其他網(wǎng)關(guān)。
圖2示出了示例有序數(shù)據(jù)分組230。在圖2中,有序數(shù)據(jù)分組是TCP 分組。TCP數(shù)據(jù)分組具有IP數(shù)據(jù)報(bào)230,該IP數(shù)據(jù)報(bào)包括IP頭部232和 IP有效載荷238。 IP有效載荷238包括TCP數(shù)據(jù)分組的TCP部分。TCP 部分包括TCP頭部242和TCP有效載荷248。 TCP頭部包括TCP序列字 段244。 TCP序列字段244保存指示每個(gè)數(shù)據(jù)分組在流中的唯一序列號(hào),
10其中,序列號(hào)單調(diào)變化以指示數(shù)據(jù)分組在流中的固有順序。例如,在TCP
中,序列字段244指示包括當(dāng)前數(shù)據(jù)分組的、被發(fā)送的八位字節(jié)(添加有流的任意起始值)的總數(shù)。八位字節(jié)是8個(gè)二進(jìn)制位(比特),也稱為字節(jié)。
在所示出的實(shí)施例中,TCP有效載荷包括指示第一超文本傳輸協(xié)議(HTTP)事務(wù)251a的結(jié)束和不同的HTTP事務(wù)251b的開始的第7層數(shù)據(jù)。HTTP用于傳輸萬維網(wǎng)頁(yè)。通過解析TCP有效載荷(IP數(shù)據(jù)報(bào)230的第7層部分),內(nèi)容網(wǎng)關(guān)160能夠確定兩個(gè)HTTP事務(wù)251a和251b之間的差別,向收費(fèi)服務(wù)器180報(bào)告這個(gè)信息,以及使得收費(fèi)服務(wù)器180相應(yīng)地對(duì)用戶收費(fèi)。
盡管出于說明目的,字段244、 251a和251b被圖示為特定次序的IP數(shù)據(jù)報(bào)230的連續(xù)部分,但是在其他實(shí)施例中, 一個(gè)或多個(gè)字段部分244、 251a和251b被以不同排列設(shè)置。
TCP提供了多個(gè)數(shù)據(jù)分組中的每個(gè)的可靠數(shù)據(jù)流。由于每個(gè)所發(fā)送的分組都被接收者確認(rèn),所以該流是可靠的。TCP分組被序列字段244中的數(shù)據(jù)表示的序列號(hào)唯一地標(biāo)識(shí)和排序。接收者節(jié)點(diǎn)通過報(bào)告所接收的數(shù)據(jù)分組的序列號(hào)來確認(rèn)數(shù)據(jù)分組的接收。根據(jù)選擇性確認(rèn)選項(xiàng)(SACK),一個(gè)確認(rèn)消息可以被用來確認(rèn)多個(gè)所發(fā)送的分組。這減少了對(duì)于寶貴的網(wǎng)絡(luò)帶寬和接收者節(jié)點(diǎn)上的處理能力的使用。根據(jù)SACK,來自接收者的確認(rèn)消息列出了自從前一個(gè)確認(rèn)消息開始所接收的分組的序列號(hào)。發(fā)送者可以從所確認(rèn)的序列號(hào)的列表確定是否有任何分組丟失,并且再次發(fā)送丟失的數(shù)據(jù)分組。發(fā)送節(jié)點(diǎn)保存每個(gè)所發(fā)送的分組的備份,至少直到對(duì)于該分組的確認(rèn)被接收到為止。SACK在互聯(lián)網(wǎng)工程任務(wù)組(IETF)的請(qǐng)求注解
(RFC) 2018中,以及在互聯(lián)網(wǎng)域ietf.org處的目錄/rfc/中的其他RFC中有所描述。RFC 2018可在該目錄中的名為rfc2018.txt的文件中得到。題為
"TCP Selective Acknowledgement Options"的RFC 2018的全部?jī)?nèi)容通過引用被結(jié)合于此,就像在這里完全公開了一樣。
圖3示出了使用有效的選擇性確認(rèn)(SACK)的示例數(shù)據(jù)流。圖3是示出在TCP會(huì)話期間交換的TCP數(shù)據(jù)分組的序列的時(shí)序圖。在圖3中,
ii時(shí)間向下增長(zhǎng)。在特定時(shí)間,在特定的TCP服務(wù)器310 (例如,運(yùn)行作為
內(nèi)容服務(wù)器170c的TCP服務(wù)器)和特定的TCP客戶端380 (例如,運(yùn)行作為端節(jié)點(diǎn)120a的TCP客戶端)之間交換TCP數(shù)據(jù)分組。通信節(jié)點(diǎn)由垂直框表示。數(shù)據(jù)分組由水平框表示;并且數(shù)據(jù)分組的傳播方向由表示數(shù)據(jù)分組的框上的箭頭指示。盡管出于說明目的示出了特定數(shù)目的TCP數(shù)據(jù)分組,但是在其他實(shí)施例中,更多或更少的TCP數(shù)據(jù)分組被在TCP服務(wù)器310和TCP客戶端380之間交換。
在最早的圖示時(shí)間處,具有第一序列數(shù)據(jù)(由符號(hào)#1指示)的TCP數(shù)據(jù)分組331被從TCP服務(wù)器310發(fā)送??蛻舳?80處的TCP數(shù)據(jù)分組331的到達(dá)由數(shù)據(jù)分組331的箭頭與表示TCP客戶端380的框相交的交叉指示。根據(jù)SACK, TCP數(shù)據(jù)分組331的到達(dá)沒有被立即確認(rèn)。相反,在經(jīng)過了某個(gè)時(shí)間、或接收了某個(gè)數(shù)量的數(shù)據(jù)、或跳過了期望的序列號(hào)(以最早發(fā)生的為準(zhǔn))之后,發(fā)送確認(rèn)。出于說明目的,假設(shè)在0.5秒、或接收了 64000字節(jié)或跳過了期望的序列號(hào)(以最早發(fā)生的為準(zhǔn))之后,發(fā)送SACK消息。
注意,序列號(hào)單調(diào)增加,但是通常不是逐-"遞增。相反,序列號(hào)通常增長(zhǎng)每個(gè)數(shù)據(jù)分組中發(fā)送的字節(jié)數(shù)目。另外,序列號(hào)不是一般在固定的第--數(shù)量處開始,而是在隨機(jī)選擇的數(shù)目開始,從而使得不同的流使用不同的序列號(hào)。出于說明目的,這里用符號(hào)弁l、 #2、 #3等來表示連續(xù)的序列號(hào)。然而,應(yīng)該理解,由這些符號(hào)表示的序列號(hào)不同于跟隨在標(biāo)記#后的數(shù)字。
在下一個(gè)時(shí)間,具有第二序列數(shù)據(jù)(由符號(hào)#2指示)的第二 TCP數(shù)據(jù)分組332被從TCP服務(wù)器310發(fā)送。由于某些原因,第二 TCP數(shù)據(jù)分組332沒有到達(dá)TCP客戶端380,如沒有與表示TCP客戶端380的框相交的數(shù)據(jù)分組332的箭頭所指示的。
在下一個(gè)連續(xù)時(shí)間,具有第三序列數(shù)據(jù)(由符號(hào)#3指示)的第三TCP數(shù)據(jù)分組333被從TCP服務(wù)器310發(fā)送。由于由符號(hào)#2指示的期望序列號(hào)已經(jīng)被跳過,所以對(duì)于確認(rèn)的條件被滿足。所以,TCP服務(wù)器在確認(rèn)序列#1和#3的接收的數(shù)據(jù)分組351中發(fā)送SACK消息。這向TCP服務(wù)器310通知具有序列#2的TCP數(shù)據(jù)分組332還沒有被接收。
為了避免過度反應(yīng),TCP服務(wù)器310并不立即再次發(fā)送丟失的分組(例如,具有序列#2的分組),因?yàn)槠淇赡芤呀?jīng)被TCP服務(wù)器380接收但順序錯(cuò)誤。相反,TCP服務(wù)器等待重發(fā)的適當(dāng)時(shí)機(jī)。在一些方法中,TCP服務(wù)器等待預(yù)定的相對(duì)較長(zhǎng)的重傳時(shí)間。在快速重發(fā)模式中,TCP服務(wù)器一直等到重復(fù)相同的丟失序列號(hào)的多個(gè)確認(rèn)被接收為止,或者重傳時(shí)間已經(jīng)期滿為止(以最先發(fā)生的為準(zhǔn))。指示相同的丟失數(shù)據(jù)分組的確認(rèn)的數(shù)目可被配置。
出于說明目的,假設(shè)在三個(gè)確認(rèn)消息指示數(shù)據(jù)分組沒有被接收到之后重發(fā)丟失的數(shù)據(jù)分組。在這個(gè)實(shí)施例中,在連續(xù)時(shí)間,從TCP服務(wù)器310發(fā)送具有第四序列數(shù)據(jù)(由符號(hào)#4指示)的第四TCP數(shù)據(jù)分組334和具有第五序列數(shù)據(jù)(由符號(hào)#5指示)的第五TCP數(shù)據(jù)分組335。由于由符號(hào)#2指示的期望序列號(hào)還沒有在TCP客戶端380處被接收到,所以對(duì)于確認(rèn)的條件被滿足。所以,TCP服務(wù)器在確認(rèn)序列#1、 #3和糾的接收的數(shù)據(jù)分組352中發(fā)送SACK消息,并在確認(rèn)序列#1、 #3、斜以及#5的接收的數(shù)據(jù)分組353中發(fā)送SACK消息。
數(shù)據(jù)分組351、 352和353中的多個(gè)確認(rèn)消息使得TCP服務(wù)器310在重傳時(shí)間期滿之前執(zhí)行快速重發(fā)。所以,TCP服務(wù)器310再次發(fā)送作為具有TCP序列#2的數(shù)據(jù)分組336的未確認(rèn)的數(shù)據(jù)分組。該過程繼續(xù),如省略號(hào)390所示的其他數(shù)據(jù)分組所指示。
服務(wù)器310在由該服務(wù)器發(fā)送的確認(rèn)數(shù)據(jù)中提供所請(qǐng)求的服務(wù),該所請(qǐng)求的服務(wù)通常至少部分地基于客戶端如何作出響應(yīng)。例如,如果在用于332的重傳定時(shí)器期滿之前數(shù)據(jù)分組331和333被確認(rèn),則服務(wù)器不會(huì)由于分組確認(rèn)的缺失而施加諸如"慢速啟動(dòng)"之類的TCP擁塞控制算法。防止服務(wù)器擁塞控制使得數(shù)據(jù)速率被保持為高于使用TCP擁塞控制算法時(shí)的情況。
3.0解析亂序分組
當(dāng)中間網(wǎng)絡(luò)節(jié)點(diǎn)解析有序數(shù)據(jù)分組時(shí),由于任何原因,對(duì)于亂序分組的處理可能消極地影響TCP客戶端380處的操作效率以及服務(wù)器310和客戶端380之間的帶寬的使用。由解析TCP數(shù)據(jù)分組的當(dāng)前方法造成的這種消極影響在圖4A中示出。
圖4A示出了與內(nèi)容網(wǎng)關(guān)420有關(guān)的示例數(shù)據(jù)流,其中內(nèi)容網(wǎng)關(guān)420上的解析會(huì)干擾依賴于選擇性確認(rèn)(SACK)的TCP擁塞控制算法。圖4A是示出在TCP會(huì)話期間交換的TCP數(shù)據(jù)分組的序列的時(shí)序圖。在圖4A中,時(shí)間向下增加。在特定時(shí)間,通過居間內(nèi)容網(wǎng)關(guān)420 (諸如內(nèi)容網(wǎng)關(guān)160)在特定TCP服務(wù)器410 (例如,用于內(nèi)容服務(wù)器170c的TCP服務(wù)器)和特定TCP客戶端480 (例如,運(yùn)行作為端節(jié)點(diǎn)120a的TCP客戶端)之間發(fā)送TCP數(shù)據(jù)分組。盡管出于說明目的示出了特定數(shù)目的TCP數(shù)據(jù)分組,但是在其他實(shí)施例中,在TCP服務(wù)器410和TCP客戶端480之間可交換更多或更少的TCP數(shù)據(jù)分組。圖4A中的從TCP服務(wù)器410發(fā)送的TCP數(shù)據(jù)分組類似于圖3中的由TCP服務(wù)器310發(fā)送的那些。
在最早的圖示時(shí)間,具有第一序列數(shù)據(jù)(由符號(hào)#1指示)的TCP數(shù)據(jù)分組431a被從TCP服務(wù)器410發(fā)送。如與表示網(wǎng)關(guān)420的框相交的數(shù)據(jù)分組431a的箭頭的交叉所指示的,TCP數(shù)據(jù)分組431a到達(dá)內(nèi)容網(wǎng)關(guān)420。內(nèi)容網(wǎng)關(guān)420解析TCP分組431a中的有效載荷,并在具有第一序列數(shù)據(jù)(序列#1)的TCP數(shù)據(jù)分組431b中向TCP客戶端480轉(zhuǎn)發(fā)數(shù)據(jù)。根據(jù)依賴于SACK的TCP延遲確認(rèn)算法,TCP數(shù)據(jù)分組431的到達(dá)沒有被立即確認(rèn)。相反,在經(jīng)過某個(gè)時(shí)間、或已經(jīng)接收到某個(gè)數(shù)量的數(shù)據(jù)、或跳過了期望的序列號(hào)(以最早發(fā)生的為準(zhǔn))之后,確認(rèn)被發(fā)送。出于說明目的,假設(shè)以下內(nèi)容在0.5秒、或者在接收到64000字節(jié)、或者跳過了期望的序列號(hào)之后(以最早發(fā)生的為準(zhǔn))之后,發(fā)送TCP SACK消息。
在下一時(shí)間,具有第二序列數(shù)據(jù)(由符號(hào)#2指示)的第二 TCP數(shù)據(jù)分組432被從TCP服務(wù)器410發(fā)送。由于某些原因,第二 TCP數(shù)據(jù)分組432沒有到達(dá)內(nèi)容網(wǎng)關(guān)420,如沒有與表示網(wǎng)關(guān)420的框相交的數(shù)據(jù)分組432的箭頭所指示的。
在下一個(gè)連續(xù)時(shí)間,具有第三序列數(shù)據(jù)(由符號(hào)#3指示)的第三TCP數(shù)據(jù)分組433a被從TCP服務(wù)器410發(fā)送,并且到達(dá)內(nèi)容網(wǎng)關(guān)420。內(nèi)容網(wǎng)關(guān)420識(shí)別出這些數(shù)據(jù)分組順序錯(cuò)誤并且不能被解析。該數(shù)據(jù)分組被存儲(chǔ)
在網(wǎng)關(guān)420處,而不被轉(zhuǎn)發(fā)至TCP客戶端480。
在下一個(gè)連續(xù)時(shí)間,具有第四序列數(shù)據(jù)(由符號(hào)斜指示)的第四TCP 數(shù)據(jù)分組434a和具有第五序列數(shù)據(jù)(由符號(hào)#5指示)的第五TCP數(shù)據(jù)分 組435被從TCP服務(wù)器310發(fā)送。這兩個(gè)最后的TCP數(shù)據(jù)分組在內(nèi)容網(wǎng) 關(guān)420處被接收。網(wǎng)關(guān)420識(shí)別出這些數(shù)據(jù)分組也是亂序(序列#2也丟 失)的并且也不能被解析。這些數(shù)據(jù)分組被存儲(chǔ)在網(wǎng)關(guān)420處,而不被轉(zhuǎn) 發(fā)至TCP客戶端480。
然后,對(duì)于確認(rèn)的條件被滿足。例如,自從在TCP客戶端480處數(shù)據(jù) 分組431b的接收開始,0.5秒己經(jīng)期滿。所以,TCP服務(wù)器在僅確認(rèn)序列 弁l的接收的數(shù)據(jù)分組441a中發(fā)送TCP SACK消息。內(nèi)容網(wǎng)關(guān)420解析 TCP分組441a中的有效載荷,并在TCP數(shù)據(jù)分組441b (該分組是確認(rèn)序 列#1的TCP SACK )中向TCP服務(wù)器410轉(zhuǎn)發(fā)數(shù)據(jù)。
如上所述,服務(wù)器410提供所請(qǐng)求的服務(wù)的速率通常至少部分地基于 在該服務(wù)器發(fā)送的確認(rèn)數(shù)據(jù)中該客戶端如何響應(yīng)。由于數(shù)據(jù)分組432被服 務(wù)器重發(fā)并且客戶端沒有通過重傳超時(shí)對(duì)其進(jìn)行確認(rèn),所以服務(wù)器可以發(fā) 起將消極地影響連接數(shù)據(jù)速率的諸如"慢啟動(dòng)"之類的擁塞控制算法。相 對(duì)于圖3中圖示的過程,網(wǎng)絡(luò)效率被消極影響。
TCP SACK分組441b的接收向TCP服務(wù)器410通知分別具有序列 #2、 #3、糾和#5的TCP數(shù)據(jù)分組432、 433a、 434a和435在TCP客戶端 480處沒有被接收。同樣為了防止過度反應(yīng),TCP服務(wù)器410不立刻重發(fā) 丟失的分組,而是等到重復(fù)相同的丟失序列號(hào)的多個(gè)確認(rèn)被接收或者重傳 時(shí)間期滿(以最早發(fā)生的為準(zhǔn))為止。在圖4A中,發(fā)送丟失的數(shù)據(jù)分組 432之后的重傳時(shí)間由時(shí)間間隔412指示。由于網(wǎng)關(guān)420沒有轉(zhuǎn)發(fā)其他分 組,所以沒有從TCP客戶端480接收其他確認(rèn)。所以,TCP服務(wù)器410等 待,直到在重發(fā)丟失的數(shù)據(jù)分組之前由時(shí)間間隔412指示的相對(duì)較長(zhǎng)的重 傳時(shí)間期滿為止。
在重傳時(shí)間間隔412之后,TCP服務(wù)器410再次發(fā)送作為具有TCP序 列#2的數(shù)據(jù)分組436a、具有TCP序列#3的TCP數(shù)據(jù)分組437、以及隨后的具有TCP序列#4和#5的數(shù)據(jù)分組(以及其后跟隨的由省略號(hào)491指示 的任何其他TCP數(shù)據(jù)分組)的未確認(rèn)的數(shù)據(jù)分組。
如與表示網(wǎng)關(guān)420的框相交的數(shù)據(jù)分組436a的箭頭的交叉所指示的, TCP數(shù)據(jù)分組436a到達(dá)內(nèi)容網(wǎng)關(guān)420。內(nèi)容網(wǎng)關(guān)420確定其不是亂序的, 因?yàn)樵谛蛄?2之前不存在期望的序列號(hào)。所以,內(nèi)容網(wǎng)關(guān)420解析TCP 分組436a中的有效載荷,并在具有序列#2的TCP數(shù)據(jù)分組436b中向 TCP客戶端480轉(zhuǎn)發(fā)數(shù)據(jù)。所存儲(chǔ)的數(shù)據(jù)分組433a、 434a和435不再是亂 序的,所以它們也可以被網(wǎng)關(guān)420解析并被轉(zhuǎn)發(fā)至TCP客戶端480。例 如,所存儲(chǔ)的具有序列#3的數(shù)據(jù)分組433a被作為具有序列弁3的TCP數(shù)據(jù) 分組433b解析并轉(zhuǎn)發(fā)。所存儲(chǔ)的具有序列糾的數(shù)據(jù)分組434a被作為具有 序列#4的TCP數(shù)據(jù)分組434b解析并轉(zhuǎn)發(fā)。如省略號(hào)492所指示的,所存 儲(chǔ)的具有序列#5的數(shù)據(jù)分組435被解析并轉(zhuǎn)發(fā)。
注意,TCP服務(wù)器410可以轉(zhuǎn)發(fā)具有序列#3的TCP數(shù)據(jù)分組437和 已經(jīng)被存儲(chǔ)在內(nèi)容網(wǎng)關(guān)420處并且不被需要的其他數(shù)據(jù)分組(例如,由省 略號(hào)491指示的具有序列#4和序列#5的數(shù)據(jù)分組)。TCP服務(wù)器410上的 處理和由這種重傳消耗的帶寬浪費(fèi)了網(wǎng)絡(luò)資源,并且進(jìn)一歩對(duì)這種由網(wǎng)關(guān) 420進(jìn)行解析的方法產(chǎn)生了消極影響。
根據(jù)所示出的實(shí)施例,內(nèi)容網(wǎng)關(guān)至少轉(zhuǎn)發(fā)一些有序數(shù)據(jù)分組(在它們 被解析之前),并存儲(chǔ)這些有序數(shù)據(jù)分組以用于在丟失的數(shù)據(jù)分組最終被 接收吋隨后進(jìn)行解析。這大大降低了對(duì)于網(wǎng)關(guān)上的解析的消極影響,并且 在圖4B中被示出。
圖4B示出了與內(nèi)容網(wǎng)關(guān)有關(guān)的示例數(shù)據(jù)流,該內(nèi)容網(wǎng)關(guān)上的解析能 更好地支持加速的選擇性確認(rèn)。圖4B是示出在TCP會(huì)話期間交換的TCP 數(shù)據(jù)分組的序列的時(shí)序圖。在圖4B中,時(shí)間向下增加。在特定時(shí)間,通 過居間內(nèi)容網(wǎng)關(guān)420 (諸如內(nèi)容網(wǎng)關(guān)160)在特定TCP服務(wù)器410 (例 如,用于內(nèi)容服務(wù)器170c的TCP服務(wù)器)和特定TCP客戶端480 (例 如,運(yùn)行作為端節(jié)點(diǎn)120a的TCP客戶端)之間發(fā)送TCP數(shù)據(jù)分組。盡管 出于說明目的示出了特定數(shù)目的TCP數(shù)據(jù)分組,但是在其他實(shí)施例中,可 以在TCP服務(wù)器410和TCP客戶端480之間交換更多或更少的TCP數(shù)據(jù)
16分組。圖4B中的從TCP服務(wù)器410發(fā)送的TCP數(shù)據(jù)分組類似于圖3中的 由TCP服務(wù)器310發(fā)送的那些和圖4A中的由TCP服務(wù)器410發(fā)送的那 扭。
在最早的圖示時(shí)間,具有第一序列數(shù)據(jù)(由符號(hào)#1指示)的TCP數(shù) 據(jù)分組451a被從TCP服務(wù)器410發(fā)送。如與表示網(wǎng)關(guān)420的框相交的數(shù) 據(jù)分組451a的箭頭的交叉所指示的,TCP數(shù)據(jù)分組451a到達(dá)內(nèi)容網(wǎng)關(guān) 420。內(nèi)容網(wǎng)關(guān)420解析TCP分組451a中的有效載荷,并在具有第一序列 數(shù)據(jù)(序列#1)的TCP數(shù)據(jù)分組451b中向TCP客戶端480轉(zhuǎn)發(fā)數(shù)據(jù)。根 據(jù)SACK, TCP數(shù)據(jù)分組451b的到達(dá)沒有被立即確認(rèn)。相反,在經(jīng)過某 個(gè)時(shí)間、或者已經(jīng)接收某個(gè)數(shù)量的數(shù)據(jù)、或者跳過期望的序列號(hào)(以最先 發(fā)生的時(shí)間為準(zhǔn))之后,確認(rèn)被發(fā)送。出于說明的目的,假設(shè)在0.5秒或 者接收到64000字節(jié)或者跳過期望的序列號(hào)(以最先發(fā)生的為準(zhǔn))之后, 發(fā)送SACK消息。
在下一個(gè)時(shí)間,具有第二序列數(shù)據(jù)(由符號(hào)#2指示)的第二 TCP數(shù) 據(jù)分組452被從TCP服務(wù)器410發(fā)送。由于某些原因,如沒有與表示網(wǎng)關(guān) 420的框相交的數(shù)據(jù)分組452的箭頭所指示的,第二 TCP數(shù)據(jù)分組452沒 有到達(dá)內(nèi)容網(wǎng)關(guān)420。
在下一個(gè)連續(xù)時(shí)間,具有第三序列數(shù)據(jù)(由符號(hào)#3指示)的第三TCP 數(shù)據(jù)分組453a被從TCP服務(wù)器410發(fā)送并在內(nèi)容網(wǎng)關(guān)420處被接收。網(wǎng) 關(guān)420識(shí)別出這個(gè)數(shù)據(jù)分組順序錯(cuò)誤并且不能被解析。與先前網(wǎng)關(guān)進(jìn)行的 處理不同,數(shù)據(jù)分組被存儲(chǔ)在網(wǎng)關(guān)420處,并被作為具有序列#3的TCP 數(shù)據(jù)分組453b轉(zhuǎn)發(fā)至TCP客戶端480。
然后,在TCP客戶端480處對(duì)于確認(rèn)的條件被滿足,因?yàn)橛煞?hào)#2 指示的期望的序列數(shù)據(jù)已經(jīng)被跳過。所以,TCP服務(wù)器在確認(rèn)序列#1和#3 的接收的數(shù)據(jù)分組461a中發(fā)送TCP SACK消息。內(nèi)容網(wǎng)關(guān)420解析TCP 分組461a中的有效載荷,并在作為確認(rèn)序列#1和#3的TCP SACK的TCP 數(shù)據(jù)分組461b中向TCP服務(wù)器410轉(zhuǎn)發(fā)數(shù)據(jù)。
大約在TCP SACK數(shù)據(jù)分組461a被接收的同時(shí),具有第四序列數(shù)據(jù) (由符號(hào)#4指示)的第四TCP數(shù)據(jù)分組454a被從TCP服務(wù)器410發(fā)送并在內(nèi)容網(wǎng)關(guān)420處被接收。網(wǎng)關(guān)420識(shí)別出這個(gè)數(shù)據(jù)分組也是順序錯(cuò)誤的 (序列#2仍是丟失的)并且也不能被解析。與圖4A中的先前網(wǎng)關(guān)進(jìn)行的 處理不同,該數(shù)據(jù)分組被存儲(chǔ)在網(wǎng)關(guān)420處,并且也被作為具有序列#4的 TCP數(shù)據(jù)分組454b轉(zhuǎn)發(fā)至TCP客戶端480。
TCP數(shù)據(jù)分組461b的接收向TCP服務(wù)器410通知僅有具有序列#2 的TCP數(shù)據(jù)分組452還沒有在TCP客戶端480處被接收。同樣為了防止 過度反應(yīng),TCP服務(wù)器410不立刻重發(fā)丟失的分組,而是等到重復(fù)相同的 丟失序列號(hào)的多個(gè)確認(rèn)被接收或者重傳時(shí)間期滿(以最先發(fā)生的時(shí)間為 準(zhǔn))為止。
當(dāng)數(shù)據(jù)分組454b被TCP客戶端480接收時(shí),對(duì)于確認(rèn)的條件被再次 滿足,因?yàn)橛煞?hào)#2指示的期望的序列數(shù)據(jù)還沒有被接收。所以,TCP服 務(wù)器在確認(rèn)序列#1、 #3和糾的接收的數(shù)據(jù)分組462a中發(fā)送TCP SACK消 息。內(nèi)容網(wǎng)關(guān)420解析TCP分組462a中的有效載荷,并在作為確認(rèn)序列 #1 、 #3和糾的TCP SACK的TCP數(shù)據(jù)分組462b中向TCP服務(wù)器410轉(zhuǎn) 發(fā)數(shù)據(jù)。
大約在TCP SACK數(shù)據(jù)分組462a被接收的同時(shí),具有第五序列數(shù)據(jù) (由符號(hào)#5指示)的第五TCP數(shù)據(jù)分組455a被從TCP服務(wù)器410發(fā)送, 并在內(nèi)容網(wǎng)關(guān)420處被接收。網(wǎng)關(guān)420識(shí)別出這個(gè)數(shù)據(jù)分組也是順序錯(cuò)誤 的(序列#2仍丟失)并且也不能被解析。與圖4A中的先前網(wǎng)關(guān)進(jìn)行的處 理不同,這個(gè)數(shù)據(jù)分組被存儲(chǔ)在網(wǎng)關(guān)420處,但是仍被作為具有序列#5的 TCP數(shù)據(jù)分組455b轉(zhuǎn)發(fā)至TCP客戶端480。
TCP數(shù)據(jù)分組462b的接收第二次向TCP服務(wù)器410通知僅有具有 序列#2的TCP數(shù)據(jù)分組452還沒有在TCP客戶端480處被接收。
當(dāng)數(shù)據(jù)分組455b被TCP客戶端480接收時(shí),對(duì)于確認(rèn)的條件再次被 滿足,因?yàn)橛煞?hào)#2指示的期望的序列數(shù)據(jù)仍沒有被接收。所以,TCP服 務(wù)器在確認(rèn)序列弁l、 #3、 #4和#5的接收的數(shù)據(jù)分組463a中發(fā)送TCP SACK消息。內(nèi)容網(wǎng)關(guān)420解析TCP分組463a中的有效載荷,并在作為 確認(rèn)序列弁l、 #3、 #4和#5的TCP SACK的TCP數(shù)據(jù)分組463b中向TCP 服務(wù)器410轉(zhuǎn)發(fā)數(shù)據(jù)。大約在TCP SACK數(shù)據(jù)分組463a被接收的同時(shí),具有第六序列數(shù)據(jù) (由符號(hào)#6指示)的第六TCP數(shù)據(jù)分組456a被從TCP服務(wù)器410發(fā)送, 并在內(nèi)容網(wǎng)關(guān)420處被接收。網(wǎng)關(guān)420識(shí)別出這個(gè)數(shù)據(jù)分組也是亂序的 (序列#2仍是丟失的)并且也不能被解析。這個(gè)數(shù)據(jù)分組被存儲(chǔ)在網(wǎng)關(guān) 420處,并且也被作為具有序列#6的TCP數(shù)據(jù)分組456b轉(zhuǎn)發(fā)至TCP客戶 端480。當(dāng)數(shù)據(jù)分組456b被TCP客戶端480接收時(shí),對(duì)于確認(rèn)的條件被 再次滿足,因?yàn)橛煞?hào)#2指示的期望的序列數(shù)據(jù)還沒有被接收。所以, TCP服務(wù)器在確認(rèn)序列糾、#3、 #4、 #5和#6的接收的數(shù)據(jù)分組464a中發(fā) 送TCP SACK消息。
TCP數(shù)據(jù)分組463b的接收第三次向TCP服務(wù)器410通知僅有具有 序列#2的TCP數(shù)據(jù)分組452還沒有在TCP客戶端480處被接收。
根據(jù)快速重發(fā)模式,現(xiàn)在TCP服務(wù)器410再次發(fā)送作為具有TCP序 列#2的數(shù)據(jù)分組457a的未確認(rèn)的數(shù)據(jù)分組。TCP數(shù)據(jù)分組457a到達(dá)內(nèi)容 網(wǎng)關(guān)420。內(nèi)容網(wǎng)關(guān)420確定其不是亂序的,因?yàn)樵谛蛄?2之前不存在丟 失的序列。所以,內(nèi)容網(wǎng)關(guān)420解析TCP分組457a中的有效載荷,并在 具有序列#2的TCP數(shù)據(jù)分組457b中向TCP客戶端480轉(zhuǎn)發(fā)數(shù)據(jù)。所存儲(chǔ) 的數(shù)據(jù)分組453a、 454a、 455a和456a不再是亂序的,所以它們也可以被 網(wǎng)關(guān)420解析,而不需要被轉(zhuǎn)發(fā)至TCP客戶端480,因?yàn)樗鼈冊(cè)诟绲臅r(shí) 候被轉(zhuǎn)發(fā)。來自TCP客戶端480的進(jìn)一歩響應(yīng)的適當(dāng)處理和收費(fèi)是基于數(shù) 據(jù)分組457a、 453a、 454a、 455a和456a的完全解析確定的。值得注意, 這些所存儲(chǔ)的亂序分組在序列號(hào)中可以具有額外間隙。在這種情況下,解 析繼續(xù)進(jìn)行,直到所存儲(chǔ)的分組的序列號(hào)中的下一個(gè)間隙為止。
大約在同時(shí),對(duì)于確認(rèn)的條件在TCP客戶端480處被再次滿足。所 以,TCP客戶端480在確認(rèn)直到序列#6的接收的由省略號(hào)494指示的數(shù)據(jù) 分組中發(fā)送SACK消息。內(nèi)容網(wǎng)關(guān)420解析這些確認(rèn)中的有效載荷,并在 確認(rèn)直到序列#6的序列號(hào)的由省略號(hào)493指示的TCP數(shù)據(jù)分組中向TCP 服務(wù)器410轉(zhuǎn)發(fā)數(shù)據(jù)。
數(shù)據(jù)分組的進(jìn)一歩交換也由省略號(hào)493和494指示。如上所述,使用 TCP服務(wù)器410的服務(wù)器在由TCP服務(wù)器發(fā)送的確認(rèn)數(shù)據(jù)中提供所請(qǐng)求的
19服務(wù),該所請(qǐng)求的服務(wù)通常至少部分地基于客戶端如何響應(yīng)。由于數(shù)據(jù)分
組451b、 453b和454b被以適時(shí)方式確認(rèn)并且由于"TCP快速重發(fā)"使得 452a被像數(shù)據(jù)分組457a—樣迅速重發(fā),所以(例如,圖4A中圖示的持續(xù) 時(shí)間412的)重傳定時(shí)器沒有期滿并且擁塞控制沒有被調(diào)用。相對(duì)于圖 4A中圖示的過程,網(wǎng)絡(luò)效率沒有受到消極影響。
注意,TCP服務(wù)器410沒有像圖4A中圖示的流程中所作的那樣重發(fā) 具有序列#3、斜、弁5和弁6的TCP數(shù)據(jù)分組。來自TCP服務(wù)器410的這種 重傳處理所需的處理和帶寬資源不再被浪費(fèi),所以進(jìn)一步的消極影響可以 被避免。另外,客戶端利用TCP快速重發(fā)算法,而不是等待超時(shí)才重發(fā)序 列#2。
在一些實(shí)施例中,不在內(nèi)容網(wǎng)關(guān)處進(jìn)行解析而被轉(zhuǎn)發(fā)的數(shù)據(jù)量被限制 以禁止協(xié)同操作的TCP客戶端和TCP服務(wù)器之間的欺騙性的TCP通信。 這種協(xié)同操作的TCP客戶端和TCP服務(wù)器可以通過同意在它們的通信中 跳過早期的序列號(hào)嘗試在內(nèi)容網(wǎng)關(guān)處規(guī)避收費(fèi)。跳過的序列號(hào)將中斷網(wǎng)關(guān) 處的解析(和依賴于這種解析的收費(fèi)),但是不會(huì)阻止TCP分組的轉(zhuǎn)發(fā)。
為了限制這種協(xié)同操作的益處,在某些最大數(shù)量的數(shù)據(jù)被轉(zhuǎn)發(fā)之后或 者在某些最大數(shù)量的時(shí)間流逝之后,在不接收丟失的有序數(shù)據(jù)分組的情況 下,欺騙性的TCP端節(jié)點(diǎn)、內(nèi)容網(wǎng)關(guān)停止轉(zhuǎn)發(fā)。該最大數(shù)量由用于使用內(nèi) 容網(wǎng)關(guān)的子網(wǎng)絡(luò)的網(wǎng)絡(luò)管理者確定。例如,在0.6秒以及66000字節(jié)被轉(zhuǎn) 發(fā)之后,TCP客戶端應(yīng)該已經(jīng)接收到若干SACK,并且己經(jīng)重發(fā)了具有丟 失的序列號(hào)的數(shù)據(jù)分組。如果沒有,則指示是欺騙性的協(xié)同操作。所以, 在一些實(shí)施例中,在0.6秒之后或者在66000字節(jié)之后(以最先發(fā)生的為 準(zhǔn)),轉(zhuǎn)發(fā)被停止。
在一些實(shí)施例中,在SACK被要求之前,時(shí)間或數(shù)據(jù)的數(shù)量或它們二 者的數(shù)量在早期數(shù)據(jù)分組中被協(xié)商或指示。在一些實(shí)施例中,所協(xié)商的值 被用來確定在不進(jìn)行解析的情況下將要轉(zhuǎn)發(fā)的數(shù)據(jù)的最大數(shù)量。為了防止 協(xié)同操作的端節(jié)點(diǎn)協(xié)商一個(gè)過高的值,在某些實(shí)施例中,如果其大于網(wǎng)絡(luò) 管理者設(shè)置的一些預(yù)先確定的值,則所協(xié)商的數(shù)量不被使用。
在一些實(shí)施例中,不論所協(xié)商的數(shù)量如何,數(shù)據(jù)分組都在不進(jìn)行解析的情況下被轉(zhuǎn)發(fā),直到足夠的SACK數(shù)據(jù)分組在內(nèi)容網(wǎng)關(guān)處被從TCP客
戶端接收并被內(nèi)容網(wǎng)關(guān)轉(zhuǎn)發(fā)后的小段時(shí)間已觸發(fā)TCP服務(wù)器的重發(fā)為止。 在一些實(shí)施例中,不論所協(xié)商的數(shù)量如何,在內(nèi)容網(wǎng)關(guān)處從TCP服務(wù)器接 收到足夠的SACK數(shù)據(jù)分組之后,僅有來自客戶端的一個(gè)額外數(shù)據(jù)分組在 不進(jìn)行解析的情況下被轉(zhuǎn)發(fā)。在一些實(shí)施例中,考慮到網(wǎng)關(guān)420和TCP服 務(wù)器410之間的通信并不是完美的,允許一個(gè)或多個(gè)額外的數(shù)據(jù)分組或確 認(rèn)。本領(lǐng)域普通技術(shù)人員能夠通過實(shí)驗(yàn)確定有多少額外的確認(rèn)或數(shù)據(jù)分組 應(yīng)該被允許以防止不是由欺騙性的行為導(dǎo)致的轉(zhuǎn)發(fā)的過于頻繁的中止。
網(wǎng)絡(luò)管理者能夠通過合理實(shí)驗(yàn)來確定不經(jīng)過解析而進(jìn)行轉(zhuǎn)發(fā)的最大數(shù) 量。網(wǎng)絡(luò)管理者通過轉(zhuǎn)發(fā)亂序分組來平衡網(wǎng)絡(luò)操作的效率和丟失對(duì)于協(xié)同 操作的欺騙性端節(jié)點(diǎn)的收入的危險(xiǎn)。
4.0內(nèi)容網(wǎng)關(guān)處的方法
圖5示出了用于在諸如內(nèi)容網(wǎng)關(guān)160之類的內(nèi)容網(wǎng)關(guān)上進(jìn)行解析的高 級(jí)別方法500。盡管出于說明目的,圖5中的歩驟被以特定次序示出,但 是在其他實(shí)施例中, 一個(gè)或多個(gè)步驟可以以不同的次序、在時(shí)間上重疊 地、或者串行或并行地執(zhí)行,或者一個(gè)或多個(gè)歩驟可以被省略或被添加, 或者在一些方式的組合中被改變。
在步驟502中,接收指示將要轉(zhuǎn)發(fā)的亂序分組的最大數(shù)目的數(shù)據(jù)。可 以使用任何方法來接收這個(gè)數(shù)據(jù)。例如,在各種實(shí)施例中,該數(shù)據(jù)被作為 默認(rèn)值包括在軟件指令中,被作為來自本地或遠(yuǎn)程節(jié)點(diǎn)上的網(wǎng)絡(luò)管理者的 人工輸入而接收,被從本地文件或數(shù)據(jù)庫(kù)中檢索出來,或者被響應(yīng)于查詢 或主動(dòng)從網(wǎng)絡(luò)上的不同節(jié)點(diǎn)發(fā)送,或者該數(shù)據(jù)被使用這些方法中的一些結(jié) 合而接收。在一些實(shí)施例中,步驟502被省略。例如,在用戶可信或使用 其他機(jī)制來阻止欺騙的實(shí)施例中,歩驟502被省略。
出于說明目的,假設(shè)在步驟502期間接收的數(shù)據(jù)指示以下事項(xiàng)中的哪 項(xiàng)最先出現(xiàn)就觸發(fā)快速重發(fā)0.5秒;或者64000個(gè)未解析的字節(jié)被轉(zhuǎn) 發(fā);或者在充分確認(rèn)之后有限數(shù)目的數(shù)據(jù)分組已經(jīng)被接收。
在其他實(shí)施例中,網(wǎng)絡(luò)管理者通過實(shí)驗(yàn)確定什么最大量具有平衡良好的網(wǎng)絡(luò)性能和從未被解析并可能是欺騙性的數(shù)據(jù)分組的容許轉(zhuǎn)發(fā)的期望結(jié) 果的作用。
在步驟510中,接收對(duì)于特定流的有序數(shù)據(jù)分組。例如,在步驟510
期間,接收TCP數(shù)據(jù)分組451a。
在步驟520中,確定數(shù)據(jù)分組是否順序錯(cuò)誤,例如,確定剛接收的數(shù) 據(jù)分組中的序列號(hào)是否晚于下一個(gè)期望的序列號(hào)。如果不是,則控制傳遞 到步驟580。
在步驟580,出于任何目的,像現(xiàn)有技術(shù)的內(nèi)容網(wǎng)關(guān)一樣正常對(duì)數(shù)據(jù) 分組進(jìn)行解析并進(jìn)行轉(zhuǎn)發(fā)。例如,TCP數(shù)據(jù)分組451被解析用于收費(fèi)目 的。然后,控制傳遞到步驟582。
在步驟582中,確定具有接下來的期望序列號(hào)的任何數(shù)據(jù)分組是否被 存儲(chǔ)。如果沒有,則控制回傳到步驟510,以接收該流的下一個(gè)數(shù)據(jù)分 組。如果是,則控制傳遞到歩驟584,以解析具有下一個(gè)序列值的數(shù)據(jù)分 組,但不對(duì)其進(jìn)行轉(zhuǎn)發(fā)(其在被存儲(chǔ)時(shí)已經(jīng)被轉(zhuǎn)發(fā))。然后控制回傳到歩 驟582。
例如,當(dāng)在步驟510中接收到具有丟失的序列號(hào)#2的TCP數(shù)據(jù)分組 457a時(shí),在歩驟580中該數(shù)據(jù)分組被解析并轉(zhuǎn)發(fā)。在歩驟582中,確定具 有下一個(gè)序列#3的數(shù)據(jù)分組被存儲(chǔ);并且控制傳遞到歩驟584以解析所存 儲(chǔ)的具有序列#3的TCP數(shù)據(jù)分組453a。在歩驟582,確定具有下一個(gè)序 列糾的數(shù)據(jù)分組被存儲(chǔ);并且控制回傳到步驟584,以解析所存儲(chǔ)的具有 序列糾的TCP數(shù)據(jù)分組454a。這個(gè)循環(huán)重復(fù),直到?jīng)]有被存儲(chǔ)的數(shù)據(jù)分 組或者所存儲(chǔ)的下一個(gè)數(shù)據(jù)分組超過了下一個(gè)期望的序列號(hào)為止;然后控 制傳遞到步驟510以接收由省略號(hào)493指示的TCP數(shù)據(jù)分組。在一些實(shí)施 例中,在解析之后將所存儲(chǔ)的數(shù)據(jù)分組標(biāo)記為刪除。如果不是下一個(gè)期望 序列號(hào)的數(shù)據(jù)分組被存儲(chǔ),則該分組不被解析,但被保留在存儲(chǔ)器中用于 在跳過的分組被接收時(shí)進(jìn)行解析。
如果在步驟520中確定在步驟510中接收的數(shù)據(jù)分組順序錯(cuò)誤,則控 制傳遞到步驟530。在步驟530,數(shù)據(jù)分組被存儲(chǔ)用于隨后進(jìn)行解析。然 后控制傳遞到步驟540。
22在步驟540,確定將要轉(zhuǎn)發(fā)的最大數(shù)量的亂序分組是否已經(jīng)被轉(zhuǎn)發(fā)。 如果是,則不轉(zhuǎn)發(fā)該分組,并且控制傳遞到步驟510,以接收該流的下一 個(gè)有序數(shù)據(jù)分組。
可以使用任何方法來確定將要轉(zhuǎn)發(fā)的最大數(shù)量是否已經(jīng)被轉(zhuǎn)發(fā)。在所
示出的實(shí)施例中,確定從第一個(gè)亂序分組被轉(zhuǎn)發(fā)開始是否經(jīng)過了 0.5秒、 或者如果當(dāng)前數(shù)據(jù)分組被轉(zhuǎn)發(fā)是否有超過64000個(gè)字節(jié)將被轉(zhuǎn)發(fā)、或者是 否接收了充分確認(rèn)之后的有限數(shù)目的數(shù)據(jù)分組,以觸發(fā)快速重發(fā)。如果這 些條件沒有一個(gè)被滿足,則控制傳遞到步驟550。
例如,當(dāng)接收到TCP數(shù)據(jù)分組453a時(shí),還沒有轉(zhuǎn)發(fā)亂序數(shù)據(jù)分組, 并且用于流逝的時(shí)間的計(jì)數(shù)器還沒有開始,所以控制傳遞到步驟550。
在步驟550,數(shù)據(jù)分組被轉(zhuǎn)發(fā)。例如,TCP數(shù)據(jù)分組453a被作為TCP 數(shù)據(jù)分組453b轉(zhuǎn)發(fā)。
在步驟560,所轉(zhuǎn)發(fā)的數(shù)量增加。例如,時(shí)鐘計(jì)數(shù)器被初始化,并且 所轉(zhuǎn)發(fā)的比特?cái)?shù)目增加了數(shù)據(jù)分組453a的大小。然后,控制傳回步驟 510,以接收該流的下一個(gè)有序數(shù)據(jù)分組。
在一些實(shí)施例中,步驟540和560被省略。例如,在用戶可信或利用 其他機(jī)制來阻止欺騙的實(shí)施例中,步驟540和步驟560被省略。
5.0實(shí)現(xiàn)機(jī)制一硬件綜述
圖6示出了可以在其上實(shí)現(xiàn)本發(fā)明的實(shí)施例的計(jì)算機(jī)系統(tǒng)600。使用 在諸如路由器設(shè)備之類的網(wǎng)絡(luò)元件上運(yùn)行的一個(gè)或多個(gè)計(jì)算機(jī)程序來實(shí)現(xiàn) 優(yōu)選實(shí)施例。所以,在這個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)600是路由器。
計(jì)算機(jī)系統(tǒng)600包括用于在計(jì)算機(jī)系統(tǒng)600的內(nèi)部和外部部件之間傳 遞信息的諸如總線610之類的通信機(jī)制。信息被表示為可測(cè)量現(xiàn)象的物理 信號(hào), 一般為電壓,但是在其他實(shí)施例中,包括諸如磁、電磁、壓力、化 學(xué)、分子原子和量子相互作用之類的現(xiàn)象。例如,北和南磁場(chǎng)、或者零和 非零電壓表示二進(jìn)制位(比特)的兩個(gè)狀態(tài)(0, 1) 。 二進(jìn)制位序列組成 了被用于表示特性的數(shù)目或編碼的數(shù)字?jǐn)?shù)據(jù)。總線610包括很多平行的信 息導(dǎo)體,從而信息在耦合至總線610的設(shè)備中間被迅速傳輸。用于處理信息的一個(gè)或多個(gè)處理器602與總線610相耦合。處理器602對(duì)信息執(zhí)行一 組操作。該組操作包括從總線610獲取信息和將信息放置在總線610上。 該組操作一般還包括比較兩個(gè)或兩個(gè)以上的信息單元、移動(dòng)信息單元的位 置、以及通過諸如加法或乘法來結(jié)合兩個(gè)或兩個(gè)以上信息單元。將被處理 器602執(zhí)行的操作序列組成了計(jì)算機(jī)指令。
計(jì)算機(jī)系統(tǒng)600還包括耦合至總線610的存儲(chǔ)器604。諸如隨機(jī)存取 存儲(chǔ)器(RAM)或其他動(dòng)態(tài)存儲(chǔ)設(shè)備之類的存儲(chǔ)器604存儲(chǔ)包括計(jì)算機(jī)指 令在內(nèi)的信息。動(dòng)態(tài)存儲(chǔ)器允許這里存儲(chǔ)的信息被計(jì)算機(jī)系統(tǒng)600改變。 RAM允許存儲(chǔ)在被稱為存儲(chǔ)器地址的位置處的信息單元獨(dú)立于相鄰地址 處的信息而被存儲(chǔ)和檢索。存儲(chǔ)器604還可以被處理器602用來在計(jì)算機(jī) 指令的執(zhí)行期間存儲(chǔ)暫態(tài)值。計(jì)算機(jī)系統(tǒng)600還包括耦合至總線610的、 用于存儲(chǔ)不會(huì)被計(jì)算機(jī)系統(tǒng)600改變的包括指令在內(nèi)的靜態(tài)信息的只讀存 儲(chǔ)器(ROM) 606或其他靜態(tài)存儲(chǔ)設(shè)備。耦合至總線610的還有即使在計(jì) 算機(jī)系統(tǒng)600被關(guān)閉或者斷電時(shí)也會(huì)繼續(xù)存在的用于存儲(chǔ)包括指令在內(nèi)的 信息的磁盤或光盤。
在這里使用的術(shù)語(yǔ)"計(jì)算機(jī)可讀介質(zhì)"指參與向處理器602提供包括 用于執(zhí)行的指令在內(nèi)的信息的任何介質(zhì)。這種介質(zhì)可以采取很多形式,包 括但不限于非易失性介質(zhì)、易失性介質(zhì)以及傳輸介質(zhì)。非易失性介質(zhì)包括 例如存儲(chǔ)設(shè)備608之類的光盤或磁盤。易失性介質(zhì)包括例如動(dòng)態(tài)存儲(chǔ)器 604。傳輸介質(zhì)包括例如同軸電纜、銅線、光纜、以及在沒有電線或纜線 的情況下通過空間傳播的波(包括無線電、光學(xué)和紅外波在內(nèi),諸如聲波 和電磁波)。在傳輸介質(zhì)上傳送的信號(hào)在這里被稱為載波。
計(jì)算機(jī)可讀介質(zhì)的常見形式包括例如軟盤、軟磁盤、硬盤、磁帶或任 何其他磁介質(zhì)、光盤ROM (CD-ROM)、數(shù)字視頻盤(DVD)或任何其 他光介質(zhì)、穿孔卡、紙帶、或具有孔洞圖樣的任何其他物理介質(zhì)、RAM、 可編程ROM (PROM)、可擦除PROM (EPROM) 、 FLASH-EPROM、 或任何其他存儲(chǔ)器芯片或盒式磁帶、載波或任何其他計(jì)算機(jī)可以從其進(jìn)行 讀取的介質(zhì)。
包括指令在內(nèi)的信息被從諸如具有鍵盤(該鍵盤包含由人類用戶操作的字母數(shù)字鍵)或傳感器的終端之類的外部終端612提供給總線610,以 供處理器使用。傳感器檢測(cè)其鄰近區(qū)域中的狀況,并將這些檢測(cè)轉(zhuǎn)變?yōu)榕c
用于表示計(jì)算機(jī)系統(tǒng)600中的信息的信號(hào)相兼容的信號(hào)。主要用于與人類 交互的耦合至總線610的終端612的其他外部部件包括用于呈現(xiàn)圖像的顯 示設(shè)備(諸如陰極射線管(CRT)、液晶顯示器(LCD)或等離子屏幕) 以及用于控制呈現(xiàn)在顯示器上的小光標(biāo)圖像的位置并發(fā)布與呈現(xiàn)在終端 612的顯示器上的制圖元素相關(guān)聯(lián)的命令的定位設(shè)備(諸如鼠標(biāo)、跟蹤球 或光標(biāo)方向鍵)。在一些實(shí)施例中,終端612被省略。
計(jì)算機(jī)系統(tǒng)600還包括耦合至總線610的通信接口 670的一個(gè)或多個(gè) 實(shí)例。通信接口 670向諸如打印機(jī)、掃描儀、外部磁盤以及終端612之類 的以它們自身的處理器進(jìn)行操作的各種外部設(shè)備提供雙向通信耦合。計(jì)算 機(jī)系統(tǒng)600中運(yùn)行的硬件或軟件提供終端接口或基于特性的命令接口,從 而外部命令可以被給到計(jì)算機(jī)系統(tǒng)。例如,通信接口 670可以是串行端口 或者并行端口 ,諸如RS-232或RS-422接口或者個(gè)人計(jì)算機(jī)上的通用串行 總線(USB)。在一些實(shí)施例中,通信接口 670是綜合業(yè)務(wù)數(shù)字網(wǎng) (ISDN)卡或數(shù)字用戶線路(DSL)卡或向相應(yīng)類型的電話線路提供信息 通信連接的電話調(diào)制器。在一些實(shí)施例中,通信接口 670是將總線610上 的信號(hào)轉(zhuǎn)換為用于同軸電纜上的通信連接的信號(hào)或者轉(zhuǎn)換為用于光纜上的 通信連接的光信號(hào)的線纜調(diào)制解調(diào)器。作為另一個(gè)示例,通信接口 670可 以是局域網(wǎng)(LAN)卡,以提供到諸如以太網(wǎng)之類的兼容LAN的數(shù)據(jù)通 信連接。也可以實(shí)現(xiàn)無線鏈路。對(duì)于無線鏈路,通信接口 670發(fā)送和接收 承載諸如數(shù)字?jǐn)?shù)據(jù)的信息流的電的、聲學(xué)的、或者電磁的信號(hào)(包括紅外 和光信號(hào)在內(nèi))。這些信號(hào)是載波的示例。
在所示出的實(shí)施例中,諸如專用集成電路(IC) 620的專用硬件被耦 合至總線610。專用硬件被配置為執(zhí)行為專門目的而執(zhí)行的操作,這些操 作不能被處理器602足夠快地執(zhí)行。專用IC的示例包括用于生成圖像進(jìn) 行顯示的圖形加速器卡、用于加密和解密網(wǎng)絡(luò)上發(fā)送的消息的密碼板、語(yǔ) 音識(shí)別、以及去往特定外部設(shè)備的接口,諸如重復(fù)執(zhí)行在硬件中被更有效 地執(zhí)行的一些復(fù)雜的操作序列的機(jī)器人臂和醫(yī)學(xué)掃描裝備。在一個(gè)或多個(gè)有形介質(zhì)中編碼的邏輯包括計(jì)算機(jī)指令和專用硬件中的一個(gè)或它們二者。
在所示出的用作路由器的計(jì)算機(jī)中,計(jì)算機(jī)系統(tǒng)600包括作為用于在
網(wǎng)絡(luò)上交換信息流的專用硬件的交換系統(tǒng)630。交換系統(tǒng)630 —般包括諸 如通信接口 670之類的多個(gè)通信接口,用于耦合到多個(gè)其他設(shè)備。 一般而 言,每個(gè)耦合是與連接至諸如所闡述的實(shí)施例中的本地網(wǎng)絡(luò)680中的其他 設(shè)備或附接到本地網(wǎng)絡(luò)680的其他設(shè)備的網(wǎng)絡(luò)鏈路632的耦合,其中具有 其自身的處理器的各種外部設(shè)備連接至該本地網(wǎng)絡(luò)680。在一些實(shí)施例 中,輸入接口或輸出接口或者它們二者被連接至一個(gè)或多個(gè)外部網(wǎng)絡(luò)元件 中的每一個(gè)。盡管三個(gè)網(wǎng)絡(luò)鏈路632a、 632b和632c被包括在所闡述的實(shí) 施例中的網(wǎng)絡(luò)鏈路632中,但是在其他實(shí)施例中,更多或更少的鏈路被連 接至交換系統(tǒng)630。網(wǎng)絡(luò)鏈路632 —般通過一個(gè)或多個(gè)網(wǎng)絡(luò)向使用或處理 信息的其他設(shè)備提供信息通信。例如,網(wǎng)絡(luò)鏈路632b可以通過本地網(wǎng)絡(luò) 680向由互聯(lián)網(wǎng)服務(wù)提供商(ISP)操作的主計(jì)算機(jī)682或設(shè)備684提供連 接。ISP設(shè)備684又通過現(xiàn)在統(tǒng)稱為互聯(lián)網(wǎng)690的公用的、世界范圍分組 交換通信網(wǎng)絡(luò)的網(wǎng)絡(luò)來提供數(shù)據(jù)通信服務(wù)。連接至互聯(lián)網(wǎng)的計(jì)算機(jī)(稱為 服務(wù)器692)響應(yīng)于在互聯(lián)網(wǎng)上接收的信息而提供服務(wù)。例如,服務(wù)器 692提供用于交換系統(tǒng)630的路由信息。
交換系統(tǒng)630包括被配置為執(zhí)行與在網(wǎng)絡(luò)680的元件中傳遞信息(包 括傳遞沿著一條網(wǎng)絡(luò)鏈路,例如632a接收的信息,作為相同或不同網(wǎng)絡(luò)鏈 路,例如632c上的輸出)相關(guān)聯(lián)的交換功能。交換系統(tǒng)630根據(jù)預(yù)先確定 的協(xié)議和公知的慣例將在輸入接口上到達(dá)的信息量交換到輸出接口 。在一 些實(shí)施例中,交換系統(tǒng)630包括其自身的處理器和存儲(chǔ)器,以在軟件中執(zhí) 行一些交換功能。在一些實(shí)施例中,交換系統(tǒng)630依賴于處理器602、存 儲(chǔ)器604、 ROM606、存儲(chǔ)設(shè)備608或一些結(jié)合來在軟件中執(zhí)行一個(gè)或多 個(gè)交換功能。例如,與執(zhí)行特定協(xié)議的處理器604協(xié)同操作的交換系統(tǒng) 630可以確定在鏈路632a上的輸入接口上到達(dá)的數(shù)據(jù)分組的目的地并利用 鏈路632c上的輸出接口將其發(fā)送到正確的目的地。目的地可以包括主機(jī) 682、服務(wù)器692、連接至本地網(wǎng)絡(luò)680或互聯(lián)網(wǎng)690的其他終端設(shè)備、或 本地網(wǎng)絡(luò)680或互聯(lián)網(wǎng)690中的其他路由和交換設(shè)備。本發(fā)明涉及使用計(jì)算機(jī)系統(tǒng)600來實(shí)現(xiàn)本文中描述的技術(shù)。根據(jù)本發(fā)
明的一個(gè)實(shí)施例,這些技術(shù)由計(jì)算機(jī)系統(tǒng)響應(yīng)于執(zhí)行存儲(chǔ)器604中包含的 一個(gè)或多個(gè)序列的一個(gè)或多個(gè)指令的處理器602而執(zhí)行。這些指令(也稱 為軟件和程序編碼)可以被從諸如存儲(chǔ)設(shè)備608之類的另一個(gè)計(jì)算機(jī)可讀 介質(zhì)讀入存儲(chǔ)器604中。包含在存儲(chǔ)器604中的指令序列的執(zhí)行使得處理 器602執(zhí)行本文中描述的方法步驟。在替代實(shí)施例中,諸如專用集成電路 620和交換系統(tǒng)630中的電路之類的硬件可以替代軟件而被用來執(zhí)行本發(fā) 明,或者可以被與軟件結(jié)合來執(zhí)行本發(fā)明。所以,本發(fā)明的實(shí)施例不限于 硬件和軟件的任何具體結(jié)合。
通過諸如接口 670之類的通信接口在網(wǎng)絡(luò)鏈路632和其他網(wǎng)絡(luò)上傳送 的信號(hào)(該信號(hào)承載去往和來自計(jì)算機(jī)系統(tǒng)600的信息)是示例形式的載 波。計(jì)算機(jī)系統(tǒng)600可以通過網(wǎng)絡(luò)鏈路632和諸如接口 670之類的通信接 口,經(jīng)由其中的網(wǎng)絡(luò)689、 690來發(fā)送和接收包括程序編碼在內(nèi)的信息。 在使用互聯(lián)網(wǎng)690的示例中,服務(wù)器692通過交換系統(tǒng)630中的通信接 口,傳送由從計(jì)算機(jī)600通過互聯(lián)網(wǎng)690、 ISP設(shè)備684、本地網(wǎng)絡(luò)680和 網(wǎng)絡(luò)鏈路632b發(fā)送的消息所請(qǐng)求的用于特定應(yīng)用的程序編碼。所接收的 數(shù)據(jù)在被接收時(shí)可以由處理器602或交換系統(tǒng)630執(zhí)行,或者可以被存儲(chǔ) 在存儲(chǔ)設(shè)備608或者其他非易失性存儲(chǔ)器或者它們二者中用于隨后執(zhí)行。 這樣,計(jì)算機(jī)系統(tǒng)600可以以載波的形式獲取應(yīng)用程序編碼。
在向處理器602承載一個(gè)或多個(gè)序列的指令或數(shù)據(jù)或它們二者以用于 執(zhí)行時(shí)將會(huì)涉及各種形式的計(jì)算機(jī)可讀介質(zhì)。例如,指令和數(shù)據(jù)最初可以 被承載在諸如主機(jī)682之類的遠(yuǎn)程計(jì)算機(jī)的磁盤上。遠(yuǎn)程計(jì)算機(jī)將指令和 數(shù)據(jù)裝載到它的動(dòng)態(tài)存儲(chǔ)器中,并使用調(diào)制解調(diào)器在電話線路上發(fā)送指令 和數(shù)據(jù)。計(jì)算機(jī)系統(tǒng)600本地的調(diào)制解調(diào)器接收電話線路上的指令和數(shù) 據(jù),使用紅外發(fā)射機(jī)將指令和數(shù)據(jù)轉(zhuǎn)換為紅外信號(hào),其中,載波充當(dāng)網(wǎng)絡(luò) 鏈路632b。充當(dāng)交換系統(tǒng)630中的通信接口的紅外探測(cè)器接收紅外信號(hào)中 承載的指令和數(shù)據(jù),并將代表這些指令和數(shù)據(jù)的信息放置到總線610上。 總線610將信息承載到存儲(chǔ)器604,然后處理器602使用利用指令發(fā)送的 一些數(shù)據(jù)來從存儲(chǔ)器604檢索并執(zhí)行指令。在處理器602或交換系統(tǒng)603執(zhí)行之前或之后,在存儲(chǔ)器604中接收的指令和數(shù)據(jù)可以可選地被存儲(chǔ)在
存儲(chǔ)設(shè)備608上。 6.0擴(kuò)展和替代
在前述說明書中,參考具體實(shí)施例描述了本發(fā)明。但是顯然,在不脫 離本發(fā)明的更寬的精神和范圍的條件下可以對(duì)本發(fā)明進(jìn)行各種修改和改 變。因此,說明書和附圖應(yīng)該被認(rèn)為是說明性的而不是限制性的意義。
權(quán)利要求
1.一種方法,包括以下步驟在網(wǎng)絡(luò)的本地節(jié)點(diǎn)接收來自源節(jié)點(diǎn)、去往目的地節(jié)點(diǎn)的多個(gè)有序數(shù)據(jù)分組中的有序數(shù)據(jù)分組,其中所述本地節(jié)點(diǎn)將對(duì)所述有序數(shù)據(jù)分組進(jìn)行解析以確定用于描述所述多個(gè)有序數(shù)據(jù)分組的所述多個(gè)有序數(shù)據(jù)分組中的特定數(shù)據(jù)以用于網(wǎng)絡(luò)管理;基于所述有序數(shù)據(jù)分組中的序列數(shù)據(jù)確定所述有序數(shù)據(jù)分組在所述多個(gè)有序數(shù)據(jù)分組中是否順序錯(cuò)誤;以及如果確定所述有序數(shù)據(jù)分組順序錯(cuò)誤,則執(zhí)行以下步驟在解析所述有序數(shù)據(jù)分組之前向所述目的地節(jié)點(diǎn)轉(zhuǎn)發(fā)所述有序數(shù)據(jù)分組,并且在所述本地節(jié)點(diǎn)處存儲(chǔ)所述有序數(shù)據(jù)分組以用于隨后進(jìn)行解析。
2. 根據(jù)權(quán)利要求1所述的方法,其中所述方法還包括接收指示將要轉(zhuǎn)發(fā)的亂序數(shù)據(jù)的最大數(shù)量的數(shù)據(jù);以及所述轉(zhuǎn)發(fā)的歩驟還包括以下步驟確定所述多個(gè)有序數(shù)據(jù)分組中的已轉(zhuǎn)發(fā)的數(shù)據(jù)量,其屮所述已轉(zhuǎn)發(fā)的數(shù)據(jù)數(shù)量是自從接收到所述多個(gè)有序數(shù)據(jù)分組中的最早的亂序數(shù)據(jù)分組開始已轉(zhuǎn)發(fā)的數(shù)據(jù)量;確定所述已轉(zhuǎn)發(fā)的數(shù)據(jù)量是否小于所述最大數(shù)量,以及僅在所述已轉(zhuǎn)發(fā)的數(shù)據(jù)量小于所述最大數(shù)量的情況下,執(zhí)行在解析所述有序數(shù)據(jù)分組之前向所述目的地節(jié)點(diǎn)轉(zhuǎn)發(fā)所述有序數(shù)據(jù)分組的步驟。
3. 根據(jù)權(quán)利要求2所述的方法,其中所述將要轉(zhuǎn)發(fā)的亂序數(shù)據(jù)的最大數(shù)量基于對(duì)于未被描述用于網(wǎng)絡(luò)管理的有序數(shù)據(jù)分組的容限。
4. 根據(jù)權(quán)利要求1所述的方法,其中所述本地節(jié)點(diǎn)是所述網(wǎng)絡(luò)的內(nèi)容感知網(wǎng)關(guān)節(jié)點(diǎn)。
5. 根據(jù)權(quán)利要求1所述的方法,其中所述有序數(shù)據(jù)分組是傳輸控制協(xié)議(TCP)數(shù)據(jù)分組。
6. 根據(jù)權(quán)利要求5所述的方法,其中所述多個(gè)有序數(shù)據(jù)分組是TCP會(huì)話。
7. 根據(jù)權(quán)利要求1所述的方法,其中所述本地節(jié)點(diǎn)將對(duì)所述多個(gè)有序數(shù)據(jù)分組進(jìn)行解析,以確定用于確定對(duì)于所述源節(jié)點(diǎn)的用戶、所述目的地節(jié)點(diǎn)的用戶或它們二者的收費(fèi)數(shù)量的所述多個(gè)有序數(shù)據(jù)分組中的特定數(shù)據(jù)。
8. 根據(jù)權(quán)利要求1所述的方法,確定所述有序數(shù)據(jù)分組是否順序錯(cuò)誤的步驟還包括確定在所述有序數(shù)據(jù)分組之前的所述多個(gè)有序數(shù)據(jù)分組中的期望數(shù)據(jù)分組是否還沒有在所述本地節(jié)點(diǎn)處被接收。
9. 一種設(shè)備,包括用于接收來自源節(jié)點(diǎn)、去往目的地節(jié)點(diǎn)的多個(gè)有序數(shù)據(jù)分組中的有序數(shù)據(jù)分組的裝置,其中所述設(shè)備將對(duì)所述有序數(shù)據(jù)分組進(jìn)行解析以確定用于描述所述多個(gè)有序數(shù)據(jù)分組的所述多個(gè)有序數(shù)據(jù)分組中的特定數(shù)據(jù)以用于網(wǎng)絡(luò)管理;用于基于所述有序數(shù)據(jù)分組中的序列數(shù)據(jù)確定所述有序數(shù)據(jù)分組在所述多個(gè)有序數(shù)據(jù)分組中是否順序錯(cuò)誤的裝置;以及用于在確定所述有序數(shù)據(jù)分組順序錯(cuò)誤的情況下對(duì)所述有序數(shù)據(jù)分組進(jìn)行處理的裝置,包括用于在解析所述有序數(shù)據(jù)分組之前向所述目的地節(jié)點(diǎn)轉(zhuǎn)發(fā)所述有序數(shù)據(jù)分組的裝置,以及用于在所述設(shè)備處存儲(chǔ)所述有序數(shù)據(jù)分組以用于隨后進(jìn)行解析的裝置。
10. 根據(jù)權(quán)利要求9所述的設(shè)備,其中所述設(shè)備還包括用于接收指示將要轉(zhuǎn)發(fā)的亂序數(shù)據(jù)的最大數(shù)量的數(shù)據(jù)的裝置;以及所述用于轉(zhuǎn)發(fā)的裝置還包括用于確定所述多個(gè)有序數(shù)據(jù)分組中的已轉(zhuǎn)發(fā)的數(shù)據(jù)量的裝置,其中所述已轉(zhuǎn)發(fā)的數(shù)據(jù)數(shù)量是自從接收所述多個(gè)有序數(shù)據(jù)分組中的最早的亂序數(shù)據(jù)分組開始已轉(zhuǎn)發(fā)的數(shù)據(jù)量;用于確定所述己轉(zhuǎn)發(fā)的數(shù)據(jù)量是否小于所述最大數(shù)量的裝置,以及用于僅在所述已轉(zhuǎn)發(fā)的數(shù)據(jù)量小于所述最大數(shù)量的情況下執(zhí)行在對(duì)所述有序數(shù)據(jù)分組進(jìn)行解析之前向所述目的地節(jié)點(diǎn)轉(zhuǎn)發(fā)所述有序數(shù)據(jù)分組的步驟的裝置。
11. 根據(jù)權(quán)利要求IO所述的設(shè)備,其中所述將要轉(zhuǎn)發(fā)的亂序數(shù)據(jù)的最大數(shù)量基于對(duì)于未被描述用于網(wǎng)絡(luò)管理的有序數(shù)據(jù)分組的容限。
12. 根據(jù)權(quán)利要求9所述的設(shè)備,其中所述設(shè)備被配置為所述網(wǎng)絡(luò)的內(nèi)容感知網(wǎng)關(guān)節(jié)點(diǎn)。
13. —種設(shè)備,包括網(wǎng)絡(luò)接口,被配置為用于與分組交換網(wǎng)交換數(shù)據(jù)分組;編碼在一個(gè)或多個(gè)有形介質(zhì)中、并且在被執(zhí)行時(shí)可操作來執(zhí)行以下步驟的邏輯接收來自源節(jié)點(diǎn)、去往目的地節(jié)點(diǎn)的多個(gè)有序數(shù)據(jù)分組中的有序數(shù)據(jù)分組,其中所述設(shè)備將對(duì)所述多個(gè)有序數(shù)據(jù)分組進(jìn)行解析以確定用于描述所述多個(gè)有序數(shù)據(jù)分組的所述多個(gè)有序數(shù)據(jù)分組中的特定數(shù)據(jù)以用于網(wǎng)絡(luò)管理;確定所述有序數(shù)據(jù)分組在所述多個(gè)有序數(shù)據(jù)分組中是否順序錯(cuò)誤;以及如果確定所述有序數(shù)據(jù)分組順序錯(cuò)誤,則執(zhí)行以下歩驟在解析所述有序數(shù)據(jù)分組之前向所述目的地節(jié)點(diǎn)轉(zhuǎn)發(fā)所述有序數(shù)據(jù)分組,以及在所述設(shè)備處存儲(chǔ)所述有序數(shù)據(jù)分組以用于隨后進(jìn)行解析。
14. 根據(jù)權(quán)利要求13所述的設(shè)備,其中所述邏輯在被執(zhí)行時(shí),還可操作來執(zhí)行接收指示將要轉(zhuǎn)發(fā)的亂序數(shù)據(jù)的最大數(shù)量的數(shù)據(jù)的步驟;并且所述轉(zhuǎn)發(fā)歩驟還包括確定所述多個(gè)有序數(shù)據(jù)分組中的已轉(zhuǎn)發(fā)的數(shù)據(jù)量,所述已轉(zhuǎn)發(fā)的數(shù)據(jù)量是自從接收到所述多個(gè)有序數(shù)據(jù)分組中的最早的亂序數(shù)據(jù)分組開始已轉(zhuǎn)發(fā)的數(shù)據(jù)量;確定所述已轉(zhuǎn)發(fā)的數(shù)據(jù)量是否小于所述最大數(shù)量,以及僅在所述己轉(zhuǎn)發(fā)的數(shù)據(jù)量小于所述最大數(shù)量的情況下,執(zhí)行在解析所述有序數(shù)據(jù)分組之前向所述目的地節(jié)點(diǎn)轉(zhuǎn)發(fā)所述有序數(shù)據(jù)分組的步驟。
15. 根據(jù)權(quán)利要求14所述的設(shè)備,其中所述將要轉(zhuǎn)發(fā)的亂序數(shù)據(jù)的最大數(shù)量基于對(duì)于未被描述用于網(wǎng)絡(luò)管理的有序數(shù)據(jù)分組的容限。
16. 根據(jù)權(quán)利要求13所述的設(shè)備,其中所述設(shè)備被配置為所述網(wǎng)絡(luò)的內(nèi)容感知網(wǎng)關(guān)節(jié)點(diǎn)。
17. 根據(jù)權(quán)利要求13所述的設(shè)備,其中所述有序數(shù)據(jù)分組是傳輸控制協(xié)議(TCP)數(shù)據(jù)分組。
18. 根據(jù)權(quán)利要求17所述的設(shè)備,其中所述多個(gè)有序數(shù)據(jù)分組是TCP會(huì)話。
19. 根據(jù)權(quán)利要求13所述的設(shè)備,其中所述設(shè)備將對(duì)所述多個(gè)有序數(shù)據(jù)分組進(jìn)行解析以確定用于確定對(duì)于所述源節(jié)點(diǎn)的用戶、所述目的地節(jié)點(diǎn)的用戶或?qū)λ鼈兌叩氖召M(fèi)數(shù)量的所述多個(gè)有序數(shù)據(jù)分組中的特定數(shù)據(jù)。
20. 根據(jù)權(quán)利要求13所述的設(shè)備,所述確定所述有序數(shù)據(jù)分組是否順序錯(cuò)誤的步驟還包括確定在所述有序數(shù)據(jù)分組之前的所述多個(gè)有序數(shù)據(jù)分組中的期望數(shù)據(jù)分組是否還沒有在所述本地節(jié)點(diǎn)處被接收。
全文摘要
在一個(gè)實(shí)施例中,一種方法包括在網(wǎng)絡(luò)的本地節(jié)點(diǎn)處接收來自源節(jié)點(diǎn)、去往目的地節(jié)點(diǎn)的由多個(gè)有序數(shù)據(jù)分組組成的流中的有序數(shù)據(jù)分組。本地節(jié)點(diǎn)將對(duì)該流進(jìn)行解析以描述該流用于網(wǎng)絡(luò)管理?;谟行驍?shù)據(jù)分組中的序列數(shù)據(jù),確定有序數(shù)據(jù)分組在該流中是否順序錯(cuò)誤。如果確定有序數(shù)據(jù)分組順序錯(cuò)誤,則在對(duì)有序數(shù)據(jù)分組進(jìn)行解析之前向目的地節(jié)點(diǎn)轉(zhuǎn)發(fā)該有序數(shù)據(jù)分組。該順序錯(cuò)誤的有序數(shù)據(jù)分組也被存儲(chǔ)在本地節(jié)點(diǎn)處用于隨后進(jìn)行解析。
文檔編號(hào)G01R31/08GK101663590SQ200880012699
公開日2010年3月3日 申請(qǐng)日期2008年4月16日 優(yōu)先權(quán)日2007年4月20日
發(fā)明者克里斯托弗·奧魯爾克, 漢波爾托·塔瓦里斯, 沃爾特·狄克遜, 羅伯特·巴茨, 羅伯特·麥凱 申請(qǐng)人:思科技術(shù)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1