將分組修改成通用格式用于實現(xiàn)可編程修改的方法及裝置的制造方法
【技術領域】
[0001] 本發(fā)明設及分組報頭修改。更具體地,本發(fā)明設及一種將分組修改成通用格式用 于實現(xiàn)可編程修改的方法及其裝置。
【背景技術】
[0002] 網(wǎng)絡分組經(jīng)由因特網(wǎng)使用的協(xié)議、比如傳輸控制協(xié)議/網(wǎng)際協(xié)議/W太網(wǎng)協(xié)議 (TCP/IP/W太網(wǎng))承載數(shù)據(jù)。典型交換機能夠在向目的地或者向另一交換機發(fā)送出分組之 前修改傳入的分組的各種字段。出于各種原因而修改傳入的分組,比如分組將被轉發(fā)到何 處、目的地支持的協(xié)議、分組的優(yōu)先級、協(xié)議報頭的傳入格式等。由于網(wǎng)絡協(xié)議正在演變,協(xié) 議報頭的一個或者多個字段可W是可任選的,運使交換機的硬件變復雜,因為在協(xié)議報頭 內(nèi)的給定的字段可能不總是處于固定的偏移。
[0003] 在分組的修改期間,現(xiàn)有技術的交換機線性地處理分組中的每個協(xié)議層。運樣的 處理會產(chǎn)生與網(wǎng)絡有關的性能問題,包括時延,運可能使實現(xiàn)方式過度提供處理資源。
【發(fā)明內(nèi)容】
[0004] 用于修改分組報頭的裝置的實施例設及重寫引擎,重寫引擎W協(xié)議特有的通用格 式表示分組的每個協(xié)議報頭,W實現(xiàn)分組的可編程修改,從而產(chǎn)生在修改分組報頭時的硬 件和軟件靈活性。軟件在用于各種協(xié)議的硬件表中對通用格式進行編程。重寫引擎能夠從 協(xié)議報頭檢測缺失字段并且能夠將協(xié)議報頭擴展成最大大小,使得協(xié)議報頭包含該協(xié)議的 所有可能字段。字段中的每個字段無論協(xié)議報頭對應于協(xié)議的哪個變體都具有相同偏移。 在位矢量中,所有新添加的字段被標注無效(由0表示),而所有現(xiàn)有字段被標注有效(由 1表示)。軟件修改命令允許數(shù)據(jù)被替換、去除和插入。 陽〇化]在一個方面中,提供一種重寫引擎的方法。該方法包括:從傳入的分組的協(xié)議報頭 檢測缺失字段;W及基于檢測,將協(xié)議報頭擴展成用于對應協(xié)議的通用格式。
[0006] 在一些實施例中,通用格式包括協(xié)議的所有可能字段,其中無論協(xié)議報頭對應于 協(xié)議的哪個變體,字段中的每個字段都具有相同偏移。
[0007] 在一些實施例中,擴展協(xié)議報頭包括:針對擴展的協(xié)議報頭維護位矢量,其中位矢 量包括用于擴展的協(xié)議報頭的每個字節(jié)的每字節(jié)的位;針對每個有效字段的每個字節(jié),將 位標注為可用,其中每個有效字段是在傳入的分組的協(xié)議報頭中存在的字段;W及針對每 個無效字段的每個字節(jié),將位標注為不可用,其中每個無效字段是在傳入的分組的協(xié)議報 頭中不存在的字段。
[0008] 在一些實施例中,對于傳入的分組的每個協(xié)議層,執(zhí)行檢測缺失字段W及基于檢 測擴展協(xié)議報頭。
[0009] 在另一方面中,提供一種重寫引擎的方法。該方法包括將分組的每個協(xié)議報頭轉 換成通用格式。通用格式通常包括對應協(xié)議可W具有的所有可能字段。在一些實施例中, 通用格式允許使用對協(xié)議層內(nèi)的具體字段無知的命令。
[0010] 在一些實施例中,轉換每個協(xié)議報頭包括參考協(xié)議的通用格式的由軟件定義的映 射的集合。
[0011] 該方法也包括針對每個經(jīng)轉換的協(xié)議報頭維護位矢量。位矢量包括針對經(jīng)轉換的 協(xié)議報頭的每個字節(jié)的每字節(jié)的位。
[0012] 該方法也包括:基于經(jīng)轉換的協(xié)議報頭的每個字段的每個字節(jié)的有效性來標注 位矢量的每個位;修改經(jīng)轉換的協(xié)議報頭;W及基于經(jīng)轉換的協(xié)議報頭的修改來更新位矢 量。
[0013]在一些實施例中,更新位矢量包括基于經(jīng)修改的協(xié)議報頭的每個字段的每個字節(jié) 的有效性來標注經(jīng)更新的位矢量的每個位。
[0014]在又一方面中,提供一種網(wǎng)絡交換機的方法。該方法包括:在網(wǎng)絡交換機的傳入端 口處接收分組;W及根據(jù)用于對應協(xié)議的通用格式來使該分組的協(xié)議報頭一般化。
[0015]在一些實施例中,網(wǎng)絡交換機包括被配置為使協(xié)議報頭一般化的重寫引擎。在一 些實施例中,使協(xié)議報頭一般化包括:重寫引擎從分組的協(xié)議報頭檢測缺失字段;W及基 于檢測,重寫引擎將協(xié)議報頭擴展成通用格式。
[0016]該方法也包括通過向經(jīng)一般化的協(xié)議報頭應用至少一個命令來修改經(jīng)一般化的 協(xié)議報頭。在一些實施例中,修改協(xié)議報頭包括基于傳出端口的出口端口類型向命令表進 行索引W確定至少一個命令。
[0017] 該方法也包括:去除經(jīng)修改的協(xié)議報頭的所有無效字節(jié)W形成新報頭;W及經(jīng)由 網(wǎng)絡交換機的傳出端口發(fā)送出具有新報頭的分組。
[0018]在一些實施例中,該方法也包括:在接收傳入的分組之前,允許協(xié)議的通用格式的 由軟件定義的映射;W及在網(wǎng)絡交換機的存儲器中存儲該由軟件定義的映射。
[0019]在又一方面中,提供一種網(wǎng)絡交換機的方法。該方法包括:配置網(wǎng)絡交換機W包括 協(xié)議的通用格式的由軟件定義的映射;在網(wǎng)絡交換機的傳入端口處接收分組;基于由軟件 定義的映射中的一個映射來使分組的協(xié)議報頭一般化;W及針對經(jīng)一般化的協(xié)議報頭維護 位矢量,其中位矢量包括針對經(jīng)一般化的協(xié)議報頭的每個字節(jié)的每字節(jié)的位。
[0020] 在一些實施例中,在網(wǎng)絡交換機的存儲器中存儲由軟件定義的映射。
[0021] 在又一方面中,提供一種網(wǎng)絡交換機。網(wǎng)絡交換機包括:輸入端口和輸出端口,用 于接收和發(fā)送分組;存儲器,用于存儲協(xié)議的通用格式的由軟件定義的映射的集合;W及 重寫引擎,對分組執(zhí)行報頭一般化過程,W基于對應協(xié)議特有的由軟件定義的映射中的一 個映射來使分組中的每個分組的每個協(xié)議報頭一般化。
[0022] 可W對協(xié)議的不同變體使用該報頭一般化過程。相似地,可W對不同協(xié)議使用該 報頭一般化過程。
[0023]在一些實施例中,在分組中的每個分組由重寫引擎處理之后,分組包括規(guī)范化的 協(xié)議層。規(guī)范化的協(xié)議層中的每個規(guī)范化的協(xié)議層是根據(jù)該協(xié)議的對應通用格式擴展的協(xié) 議層。擴展的協(xié)議報頭包括位矢量,位矢量具有針對無效字段而被標注為0的位和針對有 效字段而被標注為1的位。
[0024]在一些實施例中,重寫引擎是靈活的并且在可編程基礎上操作。重寫引擎基于輸 出端口的出口端口類型向命令表進行索引,命令表向重寫引擎告知將向每個分組的每個報 頭應用的一個或者多個命令。存儲器存儲命令集合,其中該一個或者多個命令被包括在該 命令集合中。
[00巧]在一些實施例中,網(wǎng)絡交換機也包括解析器引擎。解析器引擎標識分組的內(nèi)容。解 析器引擎是靈活的并且在可編程基礎上操作。在一些實施例中,解析器引擎也能夠執(zhí)行報 頭一般化過程。
[00%] 在又一方面中,提供一種網(wǎng)絡交換機。網(wǎng)絡交換機包括:輸入端口,用于接收分組, 其中分組包括正文和協(xié)議找;輸出端口,用于發(fā)射經(jīng)修改的分組;存儲器,用于存儲協(xié)議的 通用格式的由軟件定義的映射的集合和通用修改命令集合;W及重寫引擎。重寫引擎能夠 基于來自由軟件定義的映射的集合中的一個映射來將協(xié)議找的每個協(xié)議報頭轉換成通用 格式,針對每個經(jīng)轉換的協(xié)議報頭維護位矢量,使用通用修改命令集合來修改每個經(jīng)轉換 的協(xié)議報頭,在修改每個位矢量之后更新該位矢量W由此形成新協(xié)議找,W及向新協(xié)議找 附著正文W經(jīng)由輸出端口發(fā)射。
【附圖說明】
[0027] 前文將從如附圖中所示本發(fā)明的示例實施例的W下更具體描述中變清楚,在附圖 中,相似標號貫穿不同視圖指代相同部分。附圖未必按比例、代之W著重于圖示本發(fā)明的實 施例。
[0028] 圖1圖示分組的示例協(xié)議層組合。
[0029] 圖2圖示根據(jù)本發(fā)明的一些實施例的本地協(xié)議表的示例結構。
[0030] 圖3圖示根據(jù)本發(fā)明的一些實施例的網(wǎng)絡交換機的示例方法。
[0031] 圖4圖示根據(jù)本發(fā)明的一些實施例的網(wǎng)絡交換機的另一示例方法。
[0032] 圖5圖示根據(jù)本發(fā)明的一些實施例的將傳入的分組的層進行報頭擴展成通用格 式的圖。
[003引圖6A-她圖示根據(jù)本發(fā)明的一些實施例的協(xié)議報頭的示例一般化。
[0034] 圖7A-7C圖示根據(jù)本發(fā)明的一些實施例的協(xié)議報頭的另一示例一般化。
[0035] 圖8A-8C圖示根據(jù)本發(fā)明的一些實施例的協(xié)議報頭的又一示例一般化。
[0036] 圖9A-9F圖示根據(jù)本發(fā)明的一些實施例的協(xié)議報頭的示例修改。
[0037] 圖10A-10E圖示根據(jù)本發(fā)明的一些實施例的協(xié)議報頭的另一示例修改。
[0038] 圖11圖示根據(jù)本發(fā)明的一些實施例的重寫引擎的方法。
[0039] 圖12圖示根據(jù)本發(fā)明的一些實施例的網(wǎng)絡交換機的又一方法。
[0040] 圖13圖示根據(jù)本發(fā)明的一些實施例的網(wǎng)絡交換機的又一方法。
[0041] 圖14圖示根據(jù)本發(fā)明的一些實施例的網(wǎng)絡交換機的又一方法。
[0042] 圖15圖示根據(jù)本發(fā)明的一些實施例的網(wǎng)絡交換機的又一方法。
[0043] 圖16圖示根據(jù)本發(fā)明的一些實施例的重寫引擎的另一方法。
[0044] 圖17圖示根據(jù)本發(fā)明的一些實施例的網(wǎng)絡交換機的又一方法。
[0045] 圖18圖示根據(jù)本發(fā)明的一些實施例的重寫引擎的又一方法。
[0046] 圖19圖示根據(jù)本發(fā)明的一些實施例的網(wǎng)絡交換機的又一方法。
[0047] 圖20圖示根據(jù)本發(fā)明的一些實施例的層結構的示例圖。
[0048]圖21圖示根據(jù)本發(fā)明的一些實施例的重寫引擎交換機的又一方法。
[0049] 圖22圖示根據(jù)本發(fā)明的一些實施例的網(wǎng)絡交換機的又一方法。
【具體實施方式】
[0050] 在W下描述中,出于說明的目的而闡述許多細節(jié)。然而,本領域普通技術人員將認 識到,可W在不使用運些具體細節(jié)的情況下實施本發(fā)明。因此,本發(fā)明并不旨在于限于所示 實施例,而是將被賦予與運里描述的原理和特征一致的最廣范圍。
[0051] 引言
[0052] 網(wǎng)絡設備、比如網(wǎng)絡交換機能夠切換/路由網(wǎng)絡流量。網(wǎng)絡交換機包括用于接收 和發(fā)送分組的至少一個輸入/傳入端口和至少一個輸出/傳出端口。在一些實施例中,網(wǎng) 絡交換機也包括解析器和重寫器。解析器可W包括用于標識網(wǎng)絡分組的內(nèi)容的一個或者多 個解析器引擎,并且重寫器可W包括用于在分組從網(wǎng)絡交換機被發(fā)送出之前修改它們的一 個或者多個重寫引擎。解析器引擎和重寫引擎是靈活的并且在可編程基礎上操作。
[0053] 網(wǎng)絡交換機也包括用于存儲網(wǎng)絡交換機使用的數(shù)據(jù)的存儲器。例如存儲器存儲通 用命令集合。簡言之,通用命令通常被用來修改協(xié)議報頭。對于另一示例,存儲器也存儲協(xié) 議的通用格式的由軟件定義的映射。簡言之,根據(jù)對應協(xié)議特有的由軟件定義的映射中的 一個映射表示每個協(xié)議報頭。如將變得清楚的那樣,運些映射可W被用在協(xié)議的不同變體 上W及用在包括新協(xié)議的不同協(xié)議上。對于又一示例,存儲器也存儲協(xié)議表。簡言之,協(xié)議 表包括被編程到協(xié)議表中的每個協(xié)議層組合的每個協(xié)議層的層信息。對于又一示例,存儲 器也存儲計數(shù)器和統(tǒng)計量。
[0054] 在W太網(wǎng)中,分組包括多個協(xié)議層。每個協(xié)議層承載不同信息。公知層的一些示 例是: 陽化5] ?W太網(wǎng) 陽化6] ?PBBW太網(wǎng)
[0057] ? ARP
[0058] ? IPV4
[0059] ? IPV6
[0060] ? MPLS
[0061] .F(X)E
[0062] ? TCP
[0063] ? UDP
[0064] ? ICMP
[0065] ? IGMP
[0066] ? GRE
[0067] .ICMPvG
[0068] ?VxLAN
[0069] .TRILL
[00