專(zhuān)利名稱(chēng)::一種用于網(wǎng)絡(luò)堆棧的數(shù)據(jù)通道加速的裝置及方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及網(wǎng)絡(luò)堆桟的數(shù)據(jù)通道加速。
背景技術(shù):
:數(shù)據(jù)包可通過(guò)廣域網(wǎng)或局域網(wǎng)傳輸。使用設(shè)備來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)之間的連接,和/或?qū)崿F(xiàn)網(wǎng)絡(luò)與一個(gè)或多個(gè)設(shè)備的連接。例如,計(jì)算機(jī)網(wǎng)絡(luò)中的設(shè)備或計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)可以是一個(gè)末端節(jié)點(diǎn),用于起始和/或終結(jié)連接。計(jì)算機(jī)網(wǎng)絡(luò)中的設(shè)備或計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)也可以是中間節(jié)點(diǎn),負(fù)責(zé)將數(shù)據(jù)傳遞至該計(jì)算機(jī)網(wǎng)絡(luò)中的另一節(jié)點(diǎn)。數(shù)據(jù)包可通過(guò)這些作為中間節(jié)點(diǎn)的設(shè)備傳輸。
發(fā)明內(nèi)容下文結(jié)合附圖以及說(shuō)明書(shū)對(duì)其中一個(gè)或多個(gè)實(shí)施例進(jìn)行詳細(xì)闡述。根據(jù)本發(fā)明的一方面,本發(fā)明提出了一種裝置,用于網(wǎng)絡(luò)堆棧的數(shù)據(jù)通道加速,其包括流高速緩沖存儲(chǔ)器(flowcache)模塊,用于在運(yùn)行期間使用特定連接的第一個(gè)數(shù)據(jù)包來(lái)獲得屬于所述特定連接的數(shù)據(jù)包的代碼段的自定義序列(customsequence);禾口解析器模塊,用于使用數(shù)據(jù)包的互聯(lián)網(wǎng)協(xié)議(IP)元組(tuple)來(lái)識(shí)別屬于所述特定連接的數(shù)據(jù)包;其中,所述流高速緩沖存儲(chǔ)器模塊將所述代碼段的自定義序列應(yīng)用于所述被識(shí)別的數(shù)據(jù)包。作為優(yōu)選,所述流高速緩沖存儲(chǔ)器模塊用于構(gòu)建所述特定連接的自定義堆棧。作為優(yōu)選,所述流高速緩沖存儲(chǔ)器模塊用于使用C語(yǔ)言goto標(biāo)簽變量(gotoLabelsasValues)來(lái)構(gòu)建所述特定連接的自定義堆棧,并將此自定義堆棧作為線程代碼序列(threadedcodes叫uence)。作為優(yōu)選,所述解析器模塊用于解析數(shù)據(jù)包的包頭,以提取IP元組(IPtuple)。作為優(yōu)選,所述解析器模塊還用于檢査數(shù)據(jù)包的包頭;且所述流高速緩沖存儲(chǔ)器模塊還用于基于檢査過(guò)的包頭排除屬于所述特定連接的某些數(shù)據(jù)包類(lèi)型。作為優(yōu)選,所述IP元組包括源地址、目的地址、協(xié)議類(lèi)型、源端口和目的端口。根據(jù)本發(fā)明的又一方面,本發(fā)明提出了一種方法包括在運(yùn)行期間,使用特定連接的第一個(gè)數(shù)據(jù)包來(lái)獲得屬于所述特定連接的數(shù)據(jù)包的代碼段的自定義序列(customsequence);使用數(shù)據(jù)包的互聯(lián)網(wǎng)協(xié)議元組(IPtuple)來(lái)識(shí)別屬于所述特定連接的數(shù)據(jù)包;及將所述代碼段的自定義序列應(yīng)用于所述被識(shí)別的數(shù)據(jù)包。作為優(yōu)選,所述在運(yùn)行期間獲得代碼段的自定義序列包括構(gòu)建所述特定連接的自定義堆棧。作為優(yōu)選,所述在運(yùn)行期間獲得代碼段的自定義序列包括使用C語(yǔ)言goto標(biāo)簽變量(gotoLabelsasValues)來(lái)構(gòu)建所述特定連接的自定義堆棧,并將此自定義堆棧作為線程代碼序列(threadedcodesequence)。作為優(yōu)選,識(shí)別數(shù)據(jù)包包括解析數(shù)據(jù)包的包頭,以提取IP元組(IPtuple)。作為優(yōu)選,該方法進(jìn)一步包括檢査數(shù)據(jù)包的包頭;且基于檢查過(guò)的包頭排除屬于所述特定連接的某些數(shù)據(jù)包類(lèi)型。作為優(yōu)選,所述IP元組包括源地址。目的地址、協(xié)議類(lèi)型、源端口和目的端口。根據(jù)本發(fā)明的再一方面,提供了一種用于執(zhí)行數(shù)據(jù)包加速的計(jì)算機(jī)程序:產(chǎn)品。所述計(jì)算機(jī)程序產(chǎn)品被切實(shí)的嵌入計(jì)算機(jī)可讀媒介中,該計(jì)算機(jī)程序產(chǎn)品包括可執(zhí)行代碼。當(dāng)執(zhí)行這些可執(zhí)行代碼時(shí),使得至少一個(gè)數(shù)據(jù)處理設(shè)備執(zhí)行以下任務(wù)在運(yùn)行期間,使用特定連接的第一個(gè)數(shù)據(jù)包來(lái)獲得屬于所述特定連接的數(shù)據(jù)包的代碼段的自定義序列(customsequence);使用數(shù)據(jù)包的互聯(lián)網(wǎng)協(xié)議元組(IPtuple)來(lái)識(shí)別屬于所述特定連接的數(shù)據(jù)包;及將所述代碼段的自定義序列應(yīng)用于所述被識(shí)別的數(shù)據(jù)包。作為優(yōu)選,所述可執(zhí)行代碼被配置用于使得數(shù)據(jù)處理裝置構(gòu)建所述特定連接的自定義堆棧。作為優(yōu)選,所述可執(zhí)行代碼被配置用于使得數(shù)據(jù)處理裝置使用C語(yǔ)言goto標(biāo)簽變量(gotoLabelsasValues)來(lái)構(gòu)建所述特定連接的自定義堆棧,并將此堆棧作為線程代碼序列(threadedcodesequenced作為優(yōu)選,所述可執(zhí)行代碼被配置用于使得數(shù)據(jù)處理裝置解析數(shù)據(jù)包的包頭,以提取IP元組(IPtuple)。作為優(yōu)選,所述可執(zhí)行代碼被配置用于使得數(shù)據(jù)處理裝置檢查數(shù)據(jù)包的包頭;且基于檢査過(guò)的包頭排除屬于所述特定連接的某些數(shù)據(jù)包類(lèi)型。作為優(yōu)選,所述IP元組包括源地址。目的地址、協(xié)議類(lèi)型、源端口和目的端口。以下將結(jié)合附圖通過(guò)具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。圖1是數(shù)據(jù)包處理系統(tǒng)的示例性框圖;圖2是數(shù)據(jù)包處理過(guò)程的示例性流程圖。具體實(shí)施例方式通常,系統(tǒng)用于路由和橋接網(wǎng)絡(luò)之間通信的數(shù)據(jù)包,和/或路由和橋接網(wǎng)絡(luò)與-,個(gè)或多個(gè)設(shè)備之間通信的數(shù)據(jù)包。例如,系統(tǒng)可以對(duì)來(lái)自第一個(gè)網(wǎng)絡(luò)并輸出至第二個(gè)網(wǎng)絡(luò)的數(shù)據(jù)包進(jìn)行路由和橋接。這種系統(tǒng)包括處理器,其用于通過(guò)判斷數(shù)據(jù)包是否屬于某一特定連接來(lái)決定是否加速通過(guò)設(shè)備的數(shù)據(jù)包流,如果屬于該特定連接,則將碼段的自定義序列應(yīng)用于數(shù)據(jù)包,此處代碼段的自定義序列是在運(yùn)行期間基于對(duì)所述特定連接的第一個(gè)數(shù)據(jù)包的處理而獲得。以這種方式,被識(shí)別為屬于某一特定連接的數(shù)據(jù)包可以繞過(guò)操作系統(tǒng)網(wǎng)絡(luò)堆棧并加速通過(guò)所述設(shè)備,從而提高數(shù)據(jù)包的呑吐量。在其中一個(gè)優(yōu)選實(shí)施例中,數(shù)據(jù)包可在廣域網(wǎng)(WAN)和/或局域網(wǎng)(LAN)接口上接收。所述處理器通過(guò)使用流高速緩沖存儲(chǔ)器軟件(例如,計(jì)算機(jī)程序產(chǎn)品)來(lái)實(shí)現(xiàn)數(shù)據(jù)包的加速。該流高速緩沖存儲(chǔ)器軟件包括可執(zhí)行代碼,用于加速通過(guò)網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)包。使用流高速緩沖存儲(chǔ)器軟件來(lái)處理數(shù)據(jù)包使能數(shù)據(jù)包處理從網(wǎng)絡(luò)堆棧中卸載。流高速緩沖存儲(chǔ)器軟件被配置用于處理多數(shù)據(jù)包流和提供多種修改功能,包括網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)、以太網(wǎng)點(diǎn)對(duì)點(diǎn)協(xié)議(PPPoE)終止(termination),虛擬局域網(wǎng)(VLAN)橋接、多播、速率限制、顏色標(biāo)記和修整(shaping)。參考圖1,系統(tǒng)100用于處理數(shù)據(jù)包。系統(tǒng)100包括處理器102和網(wǎng)橋(bridge)104,網(wǎng)橋與處理器和其它組成部分通信,使得處理器和其它組成部分(未示出)之間能夠通信。處理器102包括操作系統(tǒng)106。網(wǎng)絡(luò)108與系統(tǒng)100通信。在一個(gè)優(yōu)選實(shí)施例中,系統(tǒng)100在單芯片上實(shí)現(xiàn),用于多個(gè)不同的設(shè)備和解決方案。例如,系統(tǒng)100為高集成度的單芯片綜合接入設(shè)備(IAD)解決方案,可用于網(wǎng)關(guān)、路由器、網(wǎng)橋、電纜調(diào)制解調(diào)器、數(shù)字用戶(hù)線路(DSL)調(diào)制解調(diào)器、及其它網(wǎng)絡(luò)設(shè)備和這些設(shè)備的一個(gè)或多個(gè)的任意組合。系統(tǒng)100可用于處理多數(shù)據(jù)流。在其它優(yōu)選實(shí)施例中,系統(tǒng)100在多個(gè)共同配合操作(operateinconcerttogether)的芯片上實(shí)現(xiàn)。網(wǎng)絡(luò)108包括一個(gè)或多個(gè)與系統(tǒng)100通信連接的網(wǎng)絡(luò)。例如,網(wǎng)絡(luò)108包括與系統(tǒng)100通信連接的多個(gè)不同的網(wǎng)絡(luò)。網(wǎng)絡(luò)108可包括WAN、LAN、7無(wú)源光網(wǎng)絡(luò)(PON,PassiveOpticalNetwork)、吉比特?zé)o源光網(wǎng)絡(luò)(GPON,gigabytepassiveopticalnetwork)以及任何其它類(lèi)型的網(wǎng)絡(luò)。系統(tǒng)100在不同的網(wǎng)絡(luò)108之間提供一個(gè)接口,以處理網(wǎng)絡(luò)108之間的上行數(shù)據(jù)包(例如,LAN至WAN)和下行數(shù)據(jù)包(例如,WAN至LAN)。雖然圖1示出了網(wǎng)絡(luò)108和系統(tǒng)100之間的一個(gè)入站數(shù)據(jù)通道和一個(gè)出站數(shù)據(jù)通道,可能會(huì)有多個(gè)不同的數(shù)據(jù)通道及有線和無(wú)線端口與多個(gè)不同的網(wǎng)絡(luò)108通信。處理器102包括用于處理數(shù)據(jù)包的處理器。處理器102用于處理一個(gè)或多個(gè)數(shù)據(jù)包流。在一個(gè)實(shí)施例中,處理器102包括單線程(singlethreaded)、單處理器解決方案。在另一個(gè)實(shí)施例中,處理器102包括多線程(multi-threaded)處理器解決方案。處理器102除了處理數(shù)據(jù)包外還可實(shí)現(xiàn)其它功能。處理器102包括操作系統(tǒng)(OS)106。例如,操作系統(tǒng)106包括LinuxOS、MACOS、MicrosoftOS(諸如WindowsOS或VistaOS)、嵌入式可配置操作系統(tǒng)(eCos)、VxWorks、BSD(伯克利軟件套件,BerkeleySoftwareDistribution)操作系統(tǒng)、QNX操作系統(tǒng),或任何其它類(lèi)型的操作系統(tǒng)。操作系統(tǒng)106包括接收驅(qū)動(dòng)器110、解析器模塊112、帶有表格(table)116的流高速緩沖存儲(chǔ)器(flowcache)模塊114、緩沖器日志(bufferlog)118、網(wǎng)絡(luò)堆棧120和發(fā)送驅(qū)動(dòng)器122。接收驅(qū)動(dòng)器110用于接收網(wǎng)絡(luò)108發(fā)送至系統(tǒng)100的數(shù)據(jù)包。接收驅(qū)動(dòng)器110包括用于存儲(chǔ)所接收的數(shù)據(jù)包的數(shù)據(jù)緩沖器(未示出)。例如,數(shù)據(jù)緩沖器在一些Oss中被稱(chēng)作"mbuf",或者在LinuxOS中被稱(chēng)作"skbuff"。接收驅(qū)動(dòng)器110可將數(shù)據(jù)包傳遞至解析器模塊112。解析器模塊U2使用數(shù)據(jù)包的互聯(lián)網(wǎng)協(xié)議元組(IPtuple)來(lái)識(shí)別數(shù)據(jù)包。IP元組包括一個(gè)或多個(gè)數(shù)據(jù)包域。在一個(gè)優(yōu)選實(shí)施例中,IP元組包括IP源地址、IP目的地址、IP協(xié)議類(lèi)型、源端口、目的端口。例如,源端口和目的端口是上層傳輸協(xié)議(例如,傳輸控制協(xié)議(TCP)或用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP))的源端口和目的端口。解析器模塊112用于通過(guò)快速解析所接收的數(shù)據(jù)包包頭來(lái)從數(shù)據(jù)包中提取IP元組。例如,解析器模塊112從接收的二層(layer-2)包頭中提取IP元組。解析器模塊112可對(duì)IP元組計(jì)算哈希函數(shù)(hash)。解析器模塊112使用計(jì)算得出的哈希函數(shù)來(lái)查找表格116,判斷表格116中是否存在此IP元組的記錄(entry)。表格116存儲(chǔ)其數(shù)據(jù)包可被流高速緩沖存儲(chǔ)器模塊114加速的連接,表格信息可由應(yīng)用于IP元組的哈希函數(shù)訪問(wèn)。如果表格116存在某記錄,則認(rèn)為是流緩存命中(flowcachehit);否則,認(rèn)為是流緩存丟失(flowcachemiss)。在另一個(gè)優(yōu)選實(shí)施例中,元組為一對(duì)二層域(acoupleoflayer2fields),這里的解析器模塊112用于提取這些二層域。如果表格116中不存在某記錄(entry),則數(shù)據(jù)包的信息就會(huì)被登錄入緩沖器日志118中。例如,在一個(gè)實(shí)施例中,二層包頭,所接收數(shù)據(jù)包中的IP包頭的偏移和該IP包頭的特定域隨同所接收包的IP元組哈希值一起被登錄入緩沖器日志中,這里的特定域包括生存周期(timetolive,簡(jiǎn)稱(chēng)TTL)域、DSCP域和IP元組域。所接收的數(shù)據(jù)包進(jìn)入網(wǎng)絡(luò)堆棧120并沿著網(wǎng)絡(luò)堆棧中的正常路徑到達(dá)發(fā)送驅(qū)動(dòng)器122。在發(fā)送驅(qū)動(dòng)器122中,如果數(shù)據(jù)包有相關(guān)的緩沖器日志,則此數(shù)據(jù)包將被返回至流高速緩沖存儲(chǔ)器模塊114中。流高速緩沖存儲(chǔ)器模塊114將發(fā)送包頭登錄入緩沖器日志中,使用接收和發(fā)送的已登錄(logged)包數(shù)據(jù)來(lái)計(jì)算代碼段的自定義序列,并且在表格116中創(chuàng)建與所接收的IP元組哈希函數(shù)相對(duì)應(yīng)的記錄,以包含代碼段的自定義序列以及所接受和發(fā)送包頭的緩沖器日志。之后,數(shù)據(jù)包返回至發(fā)送驅(qū)動(dòng)器122,后者將數(shù)據(jù)包轉(zhuǎn)發(fā)回網(wǎng)絡(luò)108以傳送至其下一個(gè)目的地。如果表格116中不存在記錄,那么所接收的數(shù)據(jù)包可能為一特定連接所接收的第一個(gè)數(shù)據(jù)包。如果該連接的第一個(gè)數(shù)據(jù)包被確認(rèn)為流高速緩沖存儲(chǔ)器加速的對(duì)象,則表格116中就會(huì)創(chuàng)建一條記錄,這樣當(dāng)解析器模塊112檢査該記錄是否在表格116中時(shí),此特定連接的后續(xù)數(shù)據(jù)包就是流緩存命中(flowcachehit)。在數(shù)據(jù)包由網(wǎng)絡(luò)堆棧120處理時(shí)會(huì)被打上標(biāo)記并被跟蹤,這樣可以確定該數(shù)據(jù)包處理步驟的順序。緩沖器日志118與接收的數(shù)據(jù)包直接或間接地相關(guān)。在一個(gè)實(shí)施例中,接收驅(qū)動(dòng)器110使用緩沖器日志118來(lái)存儲(chǔ)數(shù)據(jù)包。在一個(gè)直接相關(guān)的實(shí)施9例中,緩沖器日志118中有一些預(yù)留余量(headroom)。例如,如果數(shù)據(jù)緩沖器的最大緩存為1800字節(jié)(byte),那么2048字節(jié)的數(shù)據(jù)包緩存器能夠容納前248字節(jié)的緩沖器日志和所接收數(shù)據(jù)包的數(shù)據(jù)存儲(chǔ)容量。緩沖器日志118被分配2048個(gè)對(duì)齊存儲(chǔ)(alignedmemory),使得從數(shù)據(jù)緩沖器內(nèi)的指針到緩沖器日志的轉(zhuǎn)換變?yōu)楹?jiǎn)單的低11位的清除操作。在另一個(gè)可替代的優(yōu)選實(shí)施例中,緩沖器日志118能夠間接地與數(shù)據(jù)緩沖器關(guān)聯(lián)對(duì)象(contextobject)相關(guān)。在檢査IP元組流緩存擊中之前,解析器模塊112可檢查與數(shù)據(jù)包相關(guān)的其它信息。例如,解析器模塊112可檢查二/三層(layer2/3)的包頭,從是否在表格116中存在記錄的判斷中排除特定的數(shù)據(jù)包類(lèi)型。例如,解析器模塊112可檢査二/三層(layer2/3)包頭,以排除諸如廣播或多播數(shù)據(jù)包、有關(guān)二層發(fā)現(xiàn)協(xié)議(discoveryprotocol)的數(shù)據(jù)包、屬于特定段的數(shù)據(jù)包、激活控希!l協(xié)議(keepalivecontrolprotocol)數(shù)據(jù)包、分段(fragmented)數(shù)據(jù)包、和/或諸如TCP協(xié)議中RST/FIN比特的握手(in-hand)控制信令數(shù)據(jù)包。這些數(shù)據(jù)包類(lèi)型被認(rèn)為需要特定網(wǎng)絡(luò)堆棧處理和無(wú)需錄入IP元組便可直接傳遞至網(wǎng)絡(luò)堆棧120。這些數(shù)據(jù)包類(lèi)型可成為排除清單的一部分,解析器模塊112在確定是否在表格116中存在記錄之前先檢査此清單?;蛘?,解析器模塊112可以在檢査表格116中是否存在記錄的同時(shí)或臨近時(shí)刻檢査此排除清單。不屬于此排除清單的、并有與其相關(guān)的緩沖器日志的數(shù)據(jù)包被假定是流高速緩沖存儲(chǔ)器模塊114加速(例如,軟件加速)的對(duì)象。當(dāng)數(shù)據(jù)包通過(guò)了網(wǎng)絡(luò)堆棧120,這種假定就變得無(wú)效;例如如果數(shù)據(jù)包通過(guò)了諸如應(yīng)用層網(wǎng)關(guān)的特定協(xié)議處理。在這種方案下,緩沖器日志118被釋放(如果間接相關(guān)),此數(shù)據(jù)包被視作正常處理。將要傳送到下一個(gè)節(jié)點(diǎn)的數(shù)據(jù)包被傳遞至發(fā)送驅(qū)動(dòng)器122。在發(fā)送驅(qū)動(dòng)器122處,如果數(shù)據(jù)包仍然被標(biāo)記為加速的對(duì)象,則使用每個(gè)二層封裝(layer2encapsulation)的協(xié)議域來(lái)計(jì)算IP包頭的偏移。登錄過(guò)的接收包頭信息和發(fā)送包頭信息用于計(jì)算或推斷有關(guān)數(shù)據(jù)包的信息。流高速緩沖存儲(chǔ)器模塊114使用登錄過(guò)的接收包頭信息和發(fā)送包頭信息來(lái)判定有關(guān)數(shù)據(jù)包處理的信例如,如果TTL減少,流高速緩沖存儲(chǔ)器模塊114就判定數(shù)據(jù)包屬于被路由的(routed)連接。如果接收和發(fā)送的IP元組不同,流高速緩沖存儲(chǔ)器模塊114就判定數(shù)據(jù)包屬于網(wǎng)絡(luò)地址轉(zhuǎn)換(NetworkAddressTranslation,簡(jiǎn)稱(chēng)NATed)連接(即進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換處理的連接)。如果二層包頭不同并且數(shù)據(jù)包未被路由,則流高速緩沖存儲(chǔ)器模塊114就判定該數(shù)據(jù)包屬于網(wǎng)橋或交換(switch)連接。流高速緩沖存儲(chǔ)器模塊114還可判定數(shù)據(jù)包需要特定QOS二層標(biāo)識(shí)(layer-2tagging)或DSCPIP修改。流高速緩沖存儲(chǔ)器模塊114還可以判定其它信息,諸如先前端口和目的端口、信道、發(fā)送隊(duì)列等信息以及其它信息。流高速緩沖存儲(chǔ)器模塊114用于將可應(yīng)用的決定轉(zhuǎn)換為己定義操作的序列,該序列需要應(yīng)用于任何被其IP元組鑒別為屬于該特定連接的未來(lái)數(shù)據(jù)包。流高速緩沖存儲(chǔ)器模塊114在運(yùn)行期間,使用特定連接的第一個(gè)數(shù)據(jù)包信息來(lái)獲得屬于此特定連接的數(shù)據(jù)包的代碼段的自定義序列(customsequence)。操作序列和相關(guān)數(shù)據(jù)進(jìn)入流高速緩沖存儲(chǔ)器對(duì)象,并使用接收的IP元組作為哈希密鑰將其插入表格116中。以這種方式,流高速緩沖存儲(chǔ)器模塊114創(chuàng)建該特定連接的自定義堆棧。在接收驅(qū)動(dòng)器110接收的、在流緩存表格116中有IP元組擊中的任何后續(xù)數(shù)據(jù)包將會(huì)執(zhí)行存儲(chǔ)在表格116中的操作的自定義序列。這樣,這些后續(xù)的數(shù)據(jù)包不需被網(wǎng)絡(luò)堆棧120處理,將旁路(bypass)網(wǎng)絡(luò)堆棧120。在一個(gè)實(shí)施例中,代碼段的自定義序列中最后一個(gè)操作是對(duì)發(fā)送驅(qū)動(dòng)器122的數(shù)據(jù)包進(jìn)行隊(duì)列排序(enqueue)。在一個(gè)實(shí)施例中,流高速緩沖存儲(chǔ)器模塊114使用C語(yǔ)言goto標(biāo)簽變量(gotoLabelsasValues)來(lái)構(gòu)建此特定連接的自定義堆棧,并將此堆桟作為線程(threaded)代碼序列。該C語(yǔ)言編譯器支持C語(yǔ)言的擴(kuò)展,稱(chēng)作"標(biāo)簽變量(LabelsasValues)"。此構(gòu)建允許C標(biāo)簽構(gòu)建用作變量。代碼段被定義為一組C語(yǔ)句且由標(biāo)簽獨(dú)一無(wú)二地識(shí)別。然后,一列標(biāo)簽指定將要執(zhí)行的ii代碼段清單。代碼段中最后的C語(yǔ)句是專(zhuān)用gOto語(yǔ)句,它的目的標(biāo)簽是從一列標(biāo)簽中的下一個(gè)指針取得,由此來(lái)遍布(threading)代碼段。一個(gè)特定代碼段被定義為返回(return),其識(shí)別標(biāo)簽是一列標(biāo)簽中的最后一個(gè)元素。流高速緩沖存儲(chǔ)器模塊114能夠執(zhí)行幾個(gè)通用代碼段以實(shí)現(xiàn)諸如以下操作移除全部二層(layer2)包頭(headers)、插入新的二層包頭、替代特定偏移處字節(jié)、減少TTL、損毀(mangle)IPDSCP、損毀源網(wǎng)絡(luò)地址轉(zhuǎn)換(Source-NAT)、損毀目的網(wǎng)絡(luò)地址轉(zhuǎn)換(D-NAT)、遞增更新三層(layer3)校驗(yàn)和(checksum)、遞增更新四層(layer4)校驗(yàn)和、復(fù)制(replicate)數(shù)據(jù)包、數(shù)據(jù)高速緩沖存儲(chǔ)器只將涉及到的數(shù)據(jù)無(wú)效、在發(fā)送設(shè)備處排序、返回以及其它操作,和上述操作的組合。寫(xiě)入缺乏任何條件測(cè)試或功能呼叫的代碼段。使用接收和發(fā)送的包頭信息,可以推斷出一組合適的代碼序列組合,且將其標(biāo)簽的線程與每一代碼段所需要的其它信息一起保存至表格116中流高速緩沖存儲(chǔ)器的記錄里。參考圖2,處理過(guò)程200用于處理數(shù)據(jù)包。處理過(guò)程200包括在運(yùn)行期間,使用特定連接的第一個(gè)數(shù)據(jù)包來(lái)獲得屬于該特定連接的數(shù)據(jù)包的代碼段的自定義序列(customsequence)(步驟202);使用數(shù)據(jù)包的互聯(lián)網(wǎng)協(xié)議(IP)元組(tuple)來(lái)識(shí)別屬于該特定連接的數(shù)據(jù)包(步驟204);將代碼段的自定義序列應(yīng)用于該被識(shí)別的數(shù)據(jù)包(步驟206)。在一個(gè)優(yōu)選實(shí)施例中,過(guò)程200通過(guò)圖1中的解析器模塊112和流高速緩沖存儲(chǔ)器模塊114來(lái)實(shí)現(xiàn)。在一個(gè)實(shí)施例中,解析器模塊112和流高速緩沖存儲(chǔ)器模塊114通過(guò)軟件來(lái)實(shí)現(xiàn),該軟件作用在數(shù)據(jù)包上使其加速通過(guò)系統(tǒng)100。例如,流高速緩沖存儲(chǔ)器模塊114用于在運(yùn)行期間,使用特定連接的第一個(gè)數(shù)據(jù)包來(lái)獲得屬于此特定連接的數(shù)據(jù)包的代碼段的自定義序列(202)。以這種方式,流高速緩沖存儲(chǔ)器模塊114使用來(lái)自第一數(shù)據(jù)包的接收包頭和發(fā)送包頭的信息來(lái)決定代碼段的自定義序列。流高速緩沖存儲(chǔ)器模塊114構(gòu)建此特定連接的自定義堆棧,這樣使得此特定連接的后續(xù)數(shù)據(jù)包旁路(bypass)網(wǎng)絡(luò)堆棧(例如圖1中的網(wǎng)絡(luò)堆棧120)。解析器模塊112使用數(shù)據(jù)包的互聯(lián)網(wǎng)協(xié)議(IP)元組(tuple)來(lái)識(shí)別屬于特定連接的數(shù)據(jù)包(204)。解析器模塊112解析所接收數(shù)據(jù)包的包頭從而提取出IP元組。解析器模塊112使用IP元組來(lái)計(jì)算哈希密鑰,并在查找表格116中檢査此哈希密鑰,以判斷表格116中是否存在記錄。流高速緩沖存儲(chǔ)器模塊114將代碼段的自定義序列應(yīng)用于該被識(shí)別的數(shù)據(jù)包(206)。在一個(gè)優(yōu)選實(shí)施例中,在僅用網(wǎng)絡(luò)堆棧來(lái)處理數(shù)據(jù)包的系統(tǒng)上,使用包括解析器模塊112和流高速緩沖存儲(chǔ)器模塊114的系統(tǒng)100以及處理過(guò)程200可實(shí)現(xiàn)6倍(6-fold)的性能增益。動(dòng)態(tài)構(gòu)建自定義線程代碼序列的系統(tǒng)100,通過(guò)流緩存擊中將所有后續(xù)的數(shù)據(jù)包改道(redirected)至自定義堆棧,在100Mbits下游VDSL連接中能夠維持每秒123,000個(gè)數(shù)據(jù)包的有線(wireline)下行速率。使用基于軟件加速的流緩存通過(guò)DSL軟件參考(reference)中常用的網(wǎng)絡(luò)堆??梢詫?shí)現(xiàn)6倍(6-fold)的性能增益。這里描述的多種技術(shù)方案的實(shí)施例可在數(shù)字電子線路中或計(jì)算機(jī)硬件、固件、軟件及其組合中實(shí)現(xiàn)。實(shí)施例可作為計(jì)算機(jī)程序產(chǎn)品實(shí)現(xiàn),例如,計(jì)算機(jī)程序切實(shí)的嵌入信息載體(例如機(jī)器可讀存儲(chǔ)設(shè)備)。該計(jì)算機(jī)程序由數(shù)據(jù)處理裝置(例如,可編程處理器、計(jì)算機(jī)、或數(shù)個(gè)計(jì)算機(jī))執(zhí)行或者用于控制數(shù)據(jù)處理裝置的操作。諸如上述的計(jì)算機(jī)程序可用任何形式的編程語(yǔ)言編寫(xiě),包括編譯型語(yǔ)言或解釋性語(yǔ)言;并且可采用任何形式實(shí)現(xiàn),包括獨(dú)立程序(stand-aloneprogram)或模塊、部分(component)、子程序或其它適合應(yīng)用于計(jì)算機(jī)環(huán)境的單元。計(jì)算機(jī)程序可運(yùn)行于一個(gè)網(wǎng)點(diǎn)(site)的一個(gè)或多個(gè)計(jì)算機(jī),也可運(yùn)行于分布在多個(gè)網(wǎng)點(diǎn)(site)或通過(guò)通信網(wǎng)絡(luò)彼此連接的多個(gè)計(jì)算機(jī)中。方法步驟可由一個(gè)或多個(gè)編程處理器來(lái)執(zhí)行,編程處理器執(zhí)行計(jì)算機(jī)程序以對(duì)輸入數(shù)據(jù)作用并產(chǎn)生輸出來(lái)完成功能。方法步驟也可由用作專(zhuān)用邏輯電路的裝置來(lái)執(zhí)行,這里的專(zhuān)用邏輯電路諸如FPGA(FieldProgrammableGateArray)或ASIC(ApplicationSpecificIntegratedCircuit)。適合于執(zhí)行計(jì)算機(jī)程序的處理器包括諸如通用或?qū)S梦⑻幚砥?、一個(gè)或多個(gè)任意種類(lèi)的數(shù)字計(jì)算機(jī)處理器。通常地,處理器從只讀存儲(chǔ)器(ROM)13或隨機(jī)存儲(chǔ)器(RAM)或兩者中接收指令(instruction)和數(shù)據(jù)。計(jì)算機(jī)的組成部分包括至少一個(gè)執(zhí)行指令的處理器、一個(gè)或多個(gè)存儲(chǔ)指令和數(shù)據(jù)的存儲(chǔ)設(shè)備。一般地,計(jì)算機(jī)還包括或被連接以接收來(lái)自一個(gè)或多個(gè)用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)設(shè)備的數(shù)據(jù),和/或傳送數(shù)據(jù)至一個(gè)或多個(gè)用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)設(shè)備,諸如磁盤(pán)、磁光盤(pán)、或光盤(pán)。適于嵌入計(jì)算機(jī)程序指令和數(shù)據(jù)的信息載體包括任何形式的非易失性存儲(chǔ)器,包括例如半導(dǎo)體存儲(chǔ)器設(shè)備、諸如內(nèi)置硬盤(pán)或可移動(dòng)硬盤(pán)的磁盤(pán)、磁光盤(pán)、光盤(pán)只讀存儲(chǔ)器(CD-ROM)、和數(shù)字視頻光盤(pán)(DVD-ROM)。半導(dǎo)體存儲(chǔ)器設(shè)備例如可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦寫(xiě)可編程只讀存儲(chǔ)器(EEPROM)和閃存設(shè)備。處理器和存儲(chǔ)器可補(bǔ)充在或合并在專(zhuān)用邏輯電路中。實(shí)施例可通過(guò)包括后端組件的計(jì)算機(jī)系統(tǒng)來(lái)實(shí)現(xiàn),例如數(shù)據(jù)服務(wù)器;或通過(guò)包括中間件的計(jì)算機(jī)系統(tǒng)來(lái)實(shí)現(xiàn),例如應(yīng)用服務(wù)器;或通過(guò)包括前后端組件的計(jì)算機(jī)系統(tǒng)來(lái)實(shí)現(xiàn),例如具有圖形用戶(hù)界面(GUI)或Web瀏覽器的客戶(hù)計(jì)算機(jī),用戶(hù)可通過(guò)圖形用戶(hù)界面或Web瀏覽器來(lái)交流;或通過(guò)諸如后端組件、中間件、或前后端組件的任意組合的計(jì)算機(jī)系統(tǒng)來(lái)實(shí)現(xiàn)。組件可通過(guò)任意形式或方法的數(shù)字?jǐn)?shù)據(jù)通信(例如,通信網(wǎng)絡(luò))來(lái)相互連接。通信網(wǎng)絡(luò)的例子包括局域網(wǎng)和諸如因特網(wǎng)的廣域網(wǎng)。本發(fā)明是通過(guò)一些實(shí)施例進(jìn)行描述的,本領(lǐng)域技術(shù)人員知悉,在不脫離本發(fā)明的精神和范圍的情況下,可以對(duì)這些特征和實(shí)施例進(jìn)行各種改變或等同替換。另外,在本發(fā)明的教導(dǎo)下,可以對(duì)這些特征和實(shí)施例進(jìn)行修改以適應(yīng)具體的情況及材料而不會(huì)脫離本發(fā)明的精神和范圍。因此,本發(fā)明不受此處所公開(kāi)的具體實(shí)施例的限制,所有落入本申請(qǐng)的權(quán)利要求范圍內(nèi)的實(shí)施例都屬于本發(fā)明的保護(hù)范圍。權(quán)利要求1、一種裝置,用于網(wǎng)絡(luò)堆棧的數(shù)據(jù)通道加速,其特征在于,所述裝置包括流高速緩沖存儲(chǔ)器模塊,用于在運(yùn)行期間使用特定連接的第一個(gè)數(shù)據(jù)包來(lái)獲得屬于所述特定連接的數(shù)據(jù)包的代碼段的自定義序列;和解析器模塊,用于使用數(shù)據(jù)包的互聯(lián)網(wǎng)協(xié)議元組來(lái)識(shí)別屬于所述特定連接的數(shù)據(jù)包;其中,所述流高速緩沖存儲(chǔ)器模塊將所述代碼段的自定義序列應(yīng)用于所述被識(shí)別的數(shù)據(jù)包。2、根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述流高速緩沖存儲(chǔ)器模塊用于構(gòu)建所述特定連接的自定義堆棧。3、根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述流高速緩沖存儲(chǔ)器模塊用于使用C語(yǔ)言goto標(biāo)簽變量來(lái)構(gòu)建所述特定連接的自定義堆棧,并將此自定義堆棧作為線程代碼序列。4、根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述解析器模塊用于解析所述數(shù)據(jù)包的包頭,以提取互聯(lián)網(wǎng)協(xié)議元組。5、根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述解析器模塊還用于檢查數(shù)據(jù)包的包頭;且所述流高速緩沖存儲(chǔ)器模塊還用于基于檢査過(guò)的包頭排除屬于所述特定連接的某些數(shù)據(jù)包類(lèi)型。6、一種方法,用于網(wǎng)絡(luò)堆棧的數(shù)據(jù)通道加速,其特征在于,所述方法包括在運(yùn)行期間,使用特定連接的第一個(gè)數(shù)據(jù)包來(lái)獲得屬于所述特定連接的數(shù)據(jù)包的代碼段的自定義序列;使用數(shù)據(jù)包的互聯(lián)網(wǎng)協(xié)議元組來(lái)識(shí)別屬于所述特定連接的數(shù)據(jù)包;及將所述代碼段的自定義序列應(yīng)用于所述被識(shí)別的數(shù)據(jù)包。7、根據(jù)權(quán)利要求6所述的方法,其特征在于,所述在運(yùn)行期間獲得代碼段的自定義序列包括構(gòu)建所述特定連接,的自定義堆棧。8、根據(jù)權(quán)利要求6所述的方法,其特征在于,所述在運(yùn)行期間獲得代碼段的自定義序列包括使用C語(yǔ)言goto標(biāo)簽變量來(lái)構(gòu)建所述特定連接的自定義堆棧,并將此自定義堆棧作為線程代碼序列。9、根據(jù)權(quán)利要求6所述的方法,其特征在于,所述識(shí)別數(shù)據(jù)包包括解析數(shù)據(jù)包的包頭,以提取互聯(lián)網(wǎng)協(xié)議元組。10、一種用于執(zhí)行數(shù)據(jù)包加速的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)程序產(chǎn)品可被切實(shí)的嵌入計(jì)算機(jī)可讀的媒介中;所述計(jì)算機(jī)程序產(chǎn)品包括可執(zhí)行代碼;所述可執(zhí)行代碼在執(zhí)行時(shí),用于使得至少一個(gè)數(shù)據(jù)處理裝置完成以下任務(wù)在運(yùn)行期間,使用特定連接的第一個(gè)數(shù)據(jù)包來(lái)獲得屬于所述特定連接的數(shù)據(jù)包的代碼段的自定義序列;使用數(shù)據(jù)包的互聯(lián)網(wǎng)協(xié)議元組來(lái)識(shí)別屬于所述特定連接的數(shù)據(jù)包;及將所述代碼段的自定義序列應(yīng)用于所述被識(shí)別的數(shù)據(jù)包。全文摘要本發(fā)明提供一種裝置,包括流高速緩沖存儲(chǔ)器模塊,用于在運(yùn)行期間使用特定連接的第一個(gè)數(shù)據(jù)包來(lái)獲得屬于所述特定連接的數(shù)據(jù)包的代碼段的自定義序列;解析器模塊,用于使用數(shù)據(jù)包的互聯(lián)網(wǎng)協(xié)議元組來(lái)識(shí)別屬于所述特定連接的數(shù)據(jù)包;其中,流高速緩沖存儲(chǔ)器模塊將所述代碼段的自定義序列應(yīng)用于所述被識(shí)別的數(shù)據(jù)包。文檔編號(hào)H04L12/56GK101645843SQ200910159230公開(kāi)日2010年2月10日申請(qǐng)日期2009年7月30日優(yōu)先權(quán)日2008年7月31日發(fā)明者利奧·卡普蘭,費(fèi)邊·A·戈麥斯申請(qǐng)人:美國(guó)博通公司