本申請是于2014年5月9日提交的美國專利申請第14/273,953號的繼續(xù)申請,其公開因此而通過引用合并于此。
技術(shù)領(lǐng)域
本發(fā)明涉及用于方便地更新網(wǎng)絡(luò)協(xié)議的系統(tǒng)和方法。
背景技術(shù):
大多數(shù)的聯(lián)網(wǎng)專用集成電路(ASIC)實施用于預(yù)定義的網(wǎng)絡(luò)協(xié)議的小型的并且固定的一組分組(packet)報頭編輯能力。這樣的用于特定網(wǎng)絡(luò)協(xié)議的報頭編輯能力的示例包括通用路由封裝(GRE)隧道封裝和解封裝、虛擬局域網(wǎng)/多協(xié)議標(biāo)簽交換(VLAN/MPLS)標(biāo)記推入/彈出(tag push/pop)等等。新的網(wǎng)絡(luò)協(xié)議要么要求ASIC的重新制版(respin)要么要求ASIC的完全重新設(shè)計,其既昂貴又耗時。例如,在網(wǎng)絡(luò)中重新設(shè)計和替換ASIC可能花費若干年并且耗費數(shù)百萬美元。
技術(shù)實現(xiàn)要素:
提供了一種用于方便地更新網(wǎng)絡(luò)協(xié)議的系統(tǒng)和方法??蛇m應(yīng)未來網(wǎng)絡(luò)協(xié)議的ASIC包括協(xié)議獨立分組編輯器(PIPE),其可以被編程為支持當(dāng)前網(wǎng)絡(luò)協(xié)議和可能的未來網(wǎng)絡(luò)協(xié)議的分組報頭編輯要求。
本技術(shù)的一個方面提供了一種方法,包括:接收分組;利用一個或多個處理器對分組進(jìn)行分類,所述分類包括確定所述分組將被更新至的新的協(xié)議;利用一個或多個處理器刪除所述分組的現(xiàn)有報頭;利用一個或多個處理器,基于所述分類將新的報頭插入所述分組中;以及利用一個或多個處理器,基于所述分類來修改所述新的報頭。根據(jù)一些示例,確定所述分組將被更新至的新的協(xié)議包括識別到分組編輯程序的指針。刪除現(xiàn)有分組報頭可以包括刪除現(xiàn)有報頭的所選擇的不被新的協(xié)議使用的部分。另外,插入新的分組報頭可以包括插入基于新的協(xié)議的新的分組報頭的部分和從先前的分組報頭剩余的部分??梢酝ㄟ^基于所述新的報頭的網(wǎng)絡(luò)來發(fā)送包括所述新的報頭的分組。
本公開的另一方面提供一種系統(tǒng),包括至少一個存儲器和與所述至少一個存儲器通信的至少一個處理器。所述至少一個處理器被配置為:接收分組;對分組進(jìn)行分類,所述分類包括確定所述分組將被更新至的新的協(xié)議;刪除所述分組的現(xiàn)有報頭;基于所述分類將新的報頭插入所述分組中;以及基于所述分類修改所述新的報頭。
所述至少一個存儲器可以包括至少一個分組編輯程序,每個分組編輯程序包括到它的編輯指令的指針以及到靜態(tài)數(shù)據(jù)、共享數(shù)據(jù)、和動態(tài)數(shù)據(jù)的集合的指針。至少一個存儲器還可以包括可被編輯指令訪問的元數(shù)據(jù)和寄存器數(shù)據(jù)。另外,所述至少一個存儲器和所述至少一個處理器可以駐留在專用集成電路(ASIC)上。
本公開的又一方面提供了一種非瞬時性計算機(jī)可讀介質(zhì),其存儲可被一個或多個處理器執(zhí)行的用于執(zhí)行方法的指令,所述方法包括:接收分組;對分組進(jìn)行分類,所述分類包括確定所述分組將被更新至的新的協(xié)議;刪除所述分組的現(xiàn)有報頭;基于所述分類將新的報頭插入所述分組中;以及基于所述分類修改所述新的報頭。
附圖說明
圖1是根據(jù)本公開的一方面的系統(tǒng)示圖。
圖2是根據(jù)本公開的各方面的另一系統(tǒng)示圖。
圖3A-圖3B示出根據(jù)本公開的各方面的示例指令格式。
圖4是根據(jù)本公開的各方面的另一系統(tǒng)示圖。
圖5A-圖5F示出根據(jù)本公開的各方面的示例指令。
圖6A-圖6F示出根據(jù)本公開的各方面的示例指令。
圖7是根據(jù)本公開的各方面的另一系統(tǒng)示圖。
圖8是根據(jù)本公開的各方面的示例方法的流程圖。
具體實施方式
本公開提供用于便利地更新網(wǎng)絡(luò)協(xié)議的系統(tǒng)和方法。當(dāng)網(wǎng)絡(luò)協(xié)議被更新時,新的專用集成電路(ASIC)被設(shè)計以適應(yīng)未來網(wǎng)絡(luò)協(xié)議,而不是重新設(shè)計和替換ASIC。ASIC包括協(xié)議獨立分組編輯器(PIPE),其可以被編程以支持當(dāng)前網(wǎng)絡(luò)協(xié)議和可能的未來網(wǎng)絡(luò)協(xié)議的分組報頭編輯要求。
根據(jù)一個實施例,ASIC包括運行編輯程序以對分組報頭進(jìn)行操作的中央編輯單元(CEU)。中央編輯單元是三個區(qū)別的編輯單元——刪除單元、插入單元、和修改單元——的處理管道(processing pipeline)。每個單元對從先前單元修改的分組進(jìn)行操作。這個CEU管道利用在硅中的高效硬件實施使得能夠在高的帶寬和分組速率進(jìn)行靈活分組報頭編輯。
刪除單元使得能夠從分組中移除任意的協(xié)議報頭。插入單元使得能夠向分組中插入任意協(xié)議報頭。修改單元使得能夠靈活地重寫(要么覆寫,要么讀取-修改-寫入)報頭字段。
由CEU運行的分組編輯程序包括編輯指令(刪除、插入、和字段修改)的集合和編輯數(shù)據(jù)(配置、元的、共享的、和動態(tài)的)的集合。對于不同的分組報頭編輯能力,諸如封裝、解封裝、加密、解密等等,可以存在一個或多個不同的編輯程序。邏輯單元解析并分類傳入的分組,以確定到程序指令和相關(guān)聯(lián)的數(shù)據(jù)集合的指針。
編輯指令在長度方面可以是,例如,32字節(jié)或者64字節(jié)。編輯指令能夠被不同的編輯程序共享以用于不同的網(wǎng)絡(luò)操作。每個編輯程序可以包括到三個數(shù)據(jù)集合的指針,所述三個數(shù)據(jù)集合為:靜態(tài)數(shù)據(jù);共享數(shù)據(jù)(例如,在不同的分組編輯程序當(dāng)中共享的安全流狀態(tài)的[flowID,pkt_cnt,加密密鑰]);和動態(tài)數(shù)據(jù)(例如,對于程序的專用數(shù)據(jù))。此外,存在對于編輯指令可用的兩個全局?jǐn)?shù)據(jù)的集合:元數(shù)據(jù)和常規(guī)數(shù)據(jù)。
圖1示出根據(jù)本公開的各方面的ASIC 100。ASIC 100被適配為接收分組,諸如分組150,并且根據(jù)更新的網(wǎng)絡(luò)協(xié)議來更新所述分組。根據(jù)一些示例,更新的網(wǎng)絡(luò)協(xié)議可以是當(dāng)前沒有研發(fā)的未來網(wǎng)絡(luò)協(xié)議。在這一點上,每當(dāng)協(xié)議被更新時,ASIC和通過網(wǎng)絡(luò)發(fā)送的分組可以被高效地更新,而不是替換網(wǎng)絡(luò)中的每個ASIC。
ASIC 100可以是在網(wǎng)絡(luò)中互連的許多ASIC中的任何一個。根據(jù)另一示例,ASIC可以被指定用于協(xié)議更新。雖然ASIC 100被描述為具有特定的組件,但是應(yīng)該理解,諸如通常存在于ASIC中的組件的其它組件可以被包括。另外,雖然所述組件被示出為駐留在ASIC 100之內(nèi),但是應(yīng)該理解,所述組件可以駐留在與ASIC通信的網(wǎng)絡(luò)中的其它地方。
ASIC 100包括用戶邏輯110和分組編輯器120。分組編輯器120還包括至少一個編輯程序130和中央編輯單元140,所述至少一個編輯程序130包括編輯指令132和編輯數(shù)據(jù)134。
用戶邏輯110解析在ASIC中接收的分組,并且對所述分組進(jìn)行分類。例如,用戶邏輯110可以確定許多編輯程序中的哪一個應(yīng)該對分組150進(jìn)行操作。不同的編輯程序可以被創(chuàng)建以更新不同類型的分組。例如,第一編輯程序可以被用來將分組從第一協(xié)議更新到新的協(xié)議,而第二編輯程序被用來將分組從第二協(xié)議更新到所述新的協(xié)議。根據(jù)另一示例,第三編輯程序可以用來更新封裝的分組,而第三編輯程序被用來更新解封裝的分組。
每個編輯程序包括編輯數(shù)據(jù)和編輯指令。例如,編輯程序130包括編輯指令132和編輯數(shù)據(jù)134。下面針對圖4來描述所述編輯程序的進(jìn)一步細(xì)節(jié)。
中央編輯單元140是根據(jù)由用戶邏輯110識別的編輯程序來更新分組150的處理管道。因此,ASIC 100能夠通過網(wǎng)絡(luò)發(fā)送更新的分組150'。
圖2示出中央編輯單元140的進(jìn)一步細(xì)節(jié)。如圖所示,中央編輯單元140包括刪除單元210、插入單元220、和修改單元230。這些單元210、220、230中的每一個根據(jù)用于特定編輯程序的指令集合(諸如指令132)對傳入的分組150進(jìn)行操作。如下面針對圖4所討論的,指令132可以包括單獨的用于每個單元210、220、230的指令集合。插入單元220在分組150已經(jīng)被刪除單元210修改之后對該分組進(jìn)行操作。類似地,修改單元230在該分組已經(jīng)被插入單元220修改之后對該分組進(jìn)行操作。每個單元可以在它的操作之后并且在將該分組傳遞到下一單元之前重新排列(realign)用于該分組的字節(jié)流。這個中央編輯單元管道使得能夠在高的帶寬和分組速率進(jìn)行靈活分組報頭編輯。而且,所述管道為在硅中的高效硬件實施作了準(zhǔn)備。
刪除單元210使得能夠從分組移除任意協(xié)議報頭。例如,對于包括多個報頭(諸如隧道網(wǎng)絡(luò)中的內(nèi)層IP報頭和外層IP報頭)的分組,刪除單元210可以移除所有分組報頭或者被選擇的分組報頭。根據(jù)另一示例,刪除單元210可以刪除分組的特殊字段,同時保留與更新的網(wǎng)絡(luò)協(xié)議相關(guān)的其它字段。
插入單元220使得能夠?qū)⑷我鈪f(xié)議報頭插入分組。例如,插入單元220可以生成與更新的網(wǎng)絡(luò)協(xié)議有關(guān)的一組新的報頭字段并且將這些生成的字段添加到分組150。在只有特定字段被刪除單元210刪除的示例中,插入單元220可以確定剩余的字段不需要被重新生成,并且取而代之地,僅僅生成所需要的字段。在其它示例中,插入單元220可以整體地生成報頭。
修改單元230使能對報頭字段的靈活重寫,諸如覆寫或者讀取-修改-寫入。例如,修改單元230可以用使得分組能夠被通過更新的網(wǎng)絡(luò)適當(dāng)?shù)匕l(fā)送的信息來填充分組報頭字段。
如以上結(jié)合圖1所討論的,每個分組編輯程序包括編輯指令和編輯數(shù)據(jù)集合。例如,程序可以具有到它的編輯指令的16-比特指針。根據(jù)一些示例,編輯指令能夠被不同的編輯程序共享。例如,根據(jù)第一網(wǎng)絡(luò)協(xié)議的封裝和根據(jù)第二網(wǎng)絡(luò)協(xié)議的封裝可以利用相同的編輯指令。
圖3A和圖3B示出編輯指令的示例格式。在圖3A的示例中,指令是32B。字節(jié)0-7專用于刪除,字節(jié)8-15專用于插入,而字節(jié)16-31專用于修改。在圖3B的示例中,指令是64B。這里,類似于32B格式,字節(jié)0-7專用于刪除。然而,與32B格式相比,在64B格式中,字節(jié)8-31專用于插入,并且字節(jié)32-63專用于修改。
圖4提供編輯程序430的更詳細(xì)的例示。編輯程序430包括編輯指令440和編輯數(shù)據(jù)450。
編輯數(shù)據(jù)450包括靜態(tài)數(shù)據(jù)452、共享數(shù)據(jù)454、和動態(tài)數(shù)據(jù)456。例如,每個編輯程序可以包括到這些數(shù)據(jù)集合的指針,所述數(shù)據(jù)集合可以被存儲在與ASIC通信的存儲器中。根據(jù)一個示例,靜態(tài)數(shù)據(jù)452和共享數(shù)據(jù)454可以各自為32B,并且動態(tài)數(shù)據(jù)456可以是專用于特定編輯程序的32B-64B的數(shù)據(jù)。根據(jù)一個示例,能夠通過利用從被選擇的n元組報頭字段生成的散列來從一組共享/動態(tài)數(shù)據(jù)集合中選擇共享/動態(tài)數(shù)據(jù)集合,來支持多路徑負(fù)載均衡。
雖然未示出,但是額外的數(shù)據(jù)(諸如,元數(shù)據(jù)和寄存器數(shù)據(jù))可用于編輯指令。例如,32B的元數(shù)據(jù)可以是可用的,其中第一8x2B半字(halfword)是元數(shù)據(jù),諸如pkt_length、ip_pkt_id、flow_hash、slice_ID等等。第二8x2B半字是從分組報頭收集的2B報頭字段,例如,IP_PROTO、TTL、TOS等等。例如,通過用戶邏輯的解析,分組格式被識別并且8x2B偏移被指定以選擇期望的報頭字段。作為另一示例,利用8x8B寄存器,64B的寄存器數(shù)據(jù)對于編輯指令可以是可用的。在這個示例中,寄存器0被硬編碼為全零;寄存器1被可選地加載64比特分組計數(shù);寄存器2被可選地加載64比特時戳;而寄存器3-7被軟件配置為具有靜態(tài)數(shù)據(jù)。
編輯指令440包括刪除指令442、插入指令444、和修改指令446。特定插入指令444的示例被示出,諸如<INS NOP>和<INS MOV>,并且在圖5A-5F中被進(jìn)一步詳細(xì)描述。特定修改指令446的示例,諸如<MOD NOP>和<MODWRITE META>,也被示出,并且在圖6A-6F中被進(jìn)一步詳細(xì)描述。
刪除指令442在長度上可以是,例如,8B,其中每個比特代表128B分組報頭的2B半字。當(dāng)比特被設(shè)置時,相應(yīng)的2B半字從分組報頭被刪除。64比特的零是有效的無操作(NOP)刪除指令。
插入指令444可以由例如圖2的插入單元220執(zhí)行。根據(jù)一個示例,插入單元220維護(hù)在零處開始的活動報頭指針(例如,以2B半字為單位)。在下面針對圖5A進(jìn)一步詳細(xì)描述的MOV指令將報頭指針向前移動。插入指令在當(dāng)前活動報頭指針處插入指定的數(shù)據(jù),并且將所述報頭指針向前移動所插入的半字的數(shù)量。所有的插入指令444可以是,例如,8比特寬。
圖5A-5F示出示例插入指令444、包括移動以及對特定數(shù)據(jù)集合的操作。無操作插入指令沒有被示出。例如,8比特的零是NOP,指示插入指令的結(jié)束。
圖5A示出示例INS MOV指令。這個指令將當(dāng)前插入指針提前指定的計數(shù)(cnt)。例如,如圖所示,比特0-5包括計數(shù),而比特7-8被設(shè)置為0。
圖5B示出示例INS STATIC指令。這個指令插入來自靜態(tài)數(shù)據(jù)集合(例如,圖4的靜態(tài)數(shù)據(jù)452)的指定的(cnt)半字。如果h=0,則數(shù)據(jù)從低16B開始。如果h=1,則數(shù)據(jù)從高16B開始。
圖5C示出示例INS SHARED指令。這個指令可以以與INS STATIC指令對靜態(tài)數(shù)據(jù)集合操作的方式相同的方式對共享數(shù)據(jù)集合(例如,圖4的共享數(shù)據(jù)454)進(jìn)行操作。類似地,圖5D示出示例INS DYNAMIC L指令,其也以相同的方式對動態(tài)數(shù)據(jù)(諸如圖4的動態(tài)數(shù)據(jù)456)的第一32B進(jìn)行操作。另外,圖5E示出示例INS DYNAMIC H指令,其也以相同的方式對動態(tài)數(shù)據(jù)的第二32B進(jìn)行操作。
圖5F示出示例INS REG指令,其插入來自選擇的全局寄存器數(shù)據(jù)的cnt個半字。
修改指令446通??梢詫Π胱诌M(jìn)行操作,在一些指令中可選的比特或字節(jié)被選擇。根據(jù)一些示例,兩個修改指令可以對相同的半字進(jìn)行操作,每一個修改指令對不同的字節(jié)進(jìn)行操作。MOD NOP指示無操作修改指令,并且可以由16比特的0來表示。這指示修改指令的結(jié)束。
圖6A示出示例MOD WRITE META指令。根據(jù)這個指令,寫操作根據(jù)指定的op_code,利用來自元數(shù)據(jù)集合的所選擇的(sel[3:0])2B字段在偏移(以半字為單位)處執(zhí)行。所支持的重寫元數(shù)據(jù)的4個半字節(jié)的寫op_code的示例包括:1.ABCD>ABCD;2.ABCD>ABXX;3.ABCD>XXCD;4.ABCD>XXAB;5.ABCD>CDXX;6.ABCD>XCDX;7.ABCD>XXBC。在這些示例中,"X"指示半字節(jié)不被改變。例如,在IPv4報頭和IPv6報頭之間復(fù)制DSCP/ECN時,示例6和7可以是有用的。
圖6B示出示例MOD_CHKSUM指令。這個指令(在報頭的第一64B之內(nèi))在hdr_offset處開始針對hdr_len半字計算1的補(bǔ)碼校驗和(如在IPv4報頭中那樣),并且在相對于hdr_offset字段的指定的csum_offset位置處寫入所計算的校驗和字段。所述校驗和字段本身不被包括在校驗和累加中。
圖6C示出示例MOD_ALU指令,其對于報頭偏移處的(由字節(jié)使能"ben"指定的)字節(jié)/半字執(zhí)行由op_code指定的操作。支持的op_code的示例包括:0-設(shè)置為零;1-設(shè)置為1;2-加1;3-加1但是在8hF或者16hFF處停止;4-減1;5-減1但是在零處停止。
圖6D示出示例MOD_CKSUM_INC指令,其利用在imm_data中指定的遞增值(incremental value)執(zhí)行csum_offset處的校驗和字段的遞增校驗和更新。
圖6E示出示例MOD_WRITE_IMM指令,其利用16比特立即數(shù)據(jù)(immediate data)imm_data在偏移處覆寫報頭字段。nibble_en的每個比特使得半字中的一個半字節(jié)能夠被覆寫。
圖6F示出示例MOD_WRITE_META_IMM指令,其利用在imm_data和來自元數(shù)據(jù)的所選擇的(sel[3:0])2B字段之間的(由op_code指定的)操作的結(jié)果在偏移處(以半字為單位)進(jìn)行寫入。所支持的op_code的示例包括:0-加;1-比特寬或(Bitwide OR);2-比特寬與(Bitwide AND)。
雖然已經(jīng)說明了許多示例指令,但是應(yīng)該理解,這些示例不是窮盡的,并且額外的指令可以用來更新分組報頭。而且,應(yīng)該理解,可以修改這些示例并且同時仍然實現(xiàn)期望的效果。
圖7示出如這里描述的可以被實施來更新分組報頭的示例計算設(shè)備。所述計算設(shè)備可以是ASIC或者其它設(shè)備,或者彼此通信的多個計算設(shè)備或組件,包括處理器730和存儲器720。計算設(shè)備700還可以包括用于從其它計算設(shè)備接收數(shù)據(jù)分組或者其它信息的一個或多個輸入端口750。類似地,計算設(shè)備700可以具有用于,例如,在分組報頭已經(jīng)根據(jù)新的網(wǎng)絡(luò)協(xié)議被更新之后發(fā)送分組的一個或多個輸出端口760。
存儲器720存儲可被處理器730訪問的信息,包括可以被處理器730執(zhí)行或者另外使用的指令728和數(shù)據(jù)722。存儲器720可以是能夠存儲可被處理器訪問的信息的任何類型,包括計算機(jī)可讀介質(zhì)或者其它存儲可以在電子設(shè)備的幫助下被讀取的數(shù)據(jù)的介質(zhì),諸如,硬驅(qū)、存儲卡、ROM、RAM、DVD、或者其它光盤,以及其它能夠?qū)懭牒椭蛔x存儲器。根據(jù)一個示例,回頭參考圖4,編輯數(shù)據(jù)450和編輯指令440可以共享單一邏輯SRAM,從而能夠在編輯數(shù)據(jù)450和編輯指令440之間動態(tài)分配SRAM資源。系統(tǒng)和方法可以包括前述各項的不同組合,由此指令和數(shù)據(jù)的不同部分被存儲在不同類型的介質(zhì)上。
指令728可以是將被處理器730直接(諸如機(jī)器代碼)或者間接(諸如腳本)執(zhí)行的任何指令集。例如,所述指令可以作為計算機(jī)代碼被存儲在計算機(jī)可讀介質(zhì)上。在那個方面,術(shù)語“指令”和“程序”可以在本文中被可互換地使用。所述指令可以以用于處理器的直接處理的目標(biāo)代碼格式來存儲,或者以包括按照需求解釋的或者事先編譯的獨立源代碼模塊的腳本或者集合(collection)的任何其它計算機(jī)語言來存儲。當(dāng)接收到分組時,處理器730可以執(zhí)行指令728以便,例如,對分組進(jìn)行分類,刪除分組報頭,基于分類插入新的分組報頭,和基于分類修改分組報頭。
數(shù)據(jù)722可以被處理器730根據(jù)指令728來檢索、存儲、或者修改。例如,雖然系統(tǒng)和方法不被任何特定的數(shù)據(jù)結(jié)構(gòu)限制,但是數(shù)據(jù)可以被存儲在計算機(jī)寄存器中,作為具有多個不同的字段和記錄的表格被存儲在關(guān)系數(shù)據(jù)庫中、存儲在XML文檔中、或者存儲在扁平文件中。數(shù)據(jù)也可以以任何計算機(jī)可讀格式被格式化。所述數(shù)據(jù)可以包括足以識別相關(guān)信息的任何信息,諸如數(shù)字、描述性文本、私有代碼、對存儲在相同存儲器的其它區(qū)域或者不同存儲器(包括其它網(wǎng)絡(luò)位置)中的數(shù)據(jù)的引用、或者被函數(shù)用來計算相關(guān)數(shù)據(jù)的信息。
處理器730可以是任何傳統(tǒng)處理器,諸如在商業(yè)上可用的路由器中的處理器?;蛘撸鎏幚砥骺梢允侵T如ASIC的專用控制器或者其它基于硬件的處理器。所述處理器和存儲器可以是實際上包括可以或者可以不儲藏在相同物理外殼內(nèi)的多個處理器和存儲器。例如,存儲器可以是硬驅(qū)或位于數(shù)據(jù)中心的服務(wù)器群中的其它存儲介質(zhì)。因此,對處理器、存儲器、或者計算機(jī)的引用將被理解為包括對可以或者可以不并行操作的處理器、存儲器、或者計算機(jī)的集合的引用。
計算設(shè)備700可以,例如,通過網(wǎng)絡(luò)與其它計算設(shè)備通信。例如,設(shè)備可以經(jīng)由有線連接來通信或者無線地通信。網(wǎng)絡(luò)和插入其間的節(jié)點可以包括各種配置和協(xié)議,包括互聯(lián)網(wǎng)、萬維網(wǎng)、內(nèi)連網(wǎng)、虛擬專用網(wǎng)、廣域網(wǎng)、局域網(wǎng)、使用一個或多個公司私有的通信協(xié)議的專用網(wǎng)、以太網(wǎng)、WiFi(諸如802.11、802.11b、g、n,或者其它這樣的標(biāo)準(zhǔn))、和HTTP、以及前述各項的各種組合。能夠向和從其它計算機(jī)發(fā)送數(shù)據(jù)的任何設(shè)備,比如調(diào)制解調(diào)器(例如,撥號、線纜或光纖)以及無線接口,可以便利這樣的通信。
圖8示出更新分組以符合新的網(wǎng)絡(luò)協(xié)議的示例方法。例如,這個方法可以由計算設(shè)備(諸如上述的計算設(shè)備)執(zhí)行。應(yīng)該理解,這個方法中涉及的操作不需要按照所描述的精確次序來執(zhí)行。相反,各種操作可以按照不同的次序或者同時被處理,并且操作可以被添加或者省略。
在塊810,分組被接收。在塊820,接收到的分組被分類。例如,分類可以包括確定接收到的分組的格式以及確定接收到的分組應(yīng)該根據(jù)其來更新的協(xié)議。根據(jù)一個示例,分類包括確定接收到的分組是否包括到特定分組編輯程序和相關(guān)聯(lián)的數(shù)據(jù)集合的指針。
在塊830中,分組報頭被刪除。例如,所述報頭可以被整體刪除,或者基于新的協(xié)議報頭格式被部分地刪除。
在塊840中,新的協(xié)議報頭基于所述分類被插入。例如,所述新的報頭可以基于所述刪除而被全部地或者部分地插入??梢允褂茫?,以上結(jié)合圖4以及圖5A-圖5F描述的操作中的任何一個來插入報頭。
在塊850中,報頭可以被修改。例如,新的報頭字段可以被寫入和/或現(xiàn)有的報頭字段可以被覆寫或者修改。報頭字段的修改可以使用,例如,以上結(jié)合圖4和圖6A-圖6F描述的指令中的任何一個來執(zhí)行。一旦分組報頭被修改,更新的分組就可以,例如,通過計算設(shè)備的輸出端口被輸出。
上述的系統(tǒng)、方法、和示例的優(yōu)點在于它們?yōu)槭宫F(xiàn)有網(wǎng)絡(luò)適應(yīng)還沒有被定義的新的協(xié)議作準(zhǔn)備。替代在每次發(fā)生協(xié)議更新時重新設(shè)計和替換許多ASIC,可以修改分組報頭以供現(xiàn)有的ASIC使用。在這一點上,大量的時間、勞動、和成本被節(jié)省。
由于以上討論的特征的這些以及其它變化和組合能夠在不脫離由權(quán)利要求定義的主題的情況下被使用,前述對實施例的描述應(yīng)該以例示的方式來理解,而不是以限制由權(quán)利要求定義的主題的方式來理解。作為示例,先前的操作不必按照上述的精確次序地執(zhí)行。相反,各種步驟可以以不同的次序或者同時被處理。還能夠省略步驟,除非另有說明。此外,對這里描述的示例以及被措辭為“諸如”、“包括”等等的短語的提供不應(yīng)該被解釋為將權(quán)利要求的主題限制在特定的示例;相反,所述示例意圖示出許多可能的實施例中的僅僅一個。另外,不同的附圖中的相同的參考標(biāo)號能夠標(biāo)識相同或者相似的元素。