TW201605207A - 使用通用修改指令進行封包靈活修改方法及裝置 - Google Patents
使用通用修改指令進行封包靈活修改方法及裝置 Download PDFInfo
- Publication number
- TW201605207A TW201605207A TW104111753A TW104111753A TW201605207A TW 201605207 A TW201605207 A TW 201605207A TW 104111753 A TW104111753 A TW 104111753A TW 104111753 A TW104111753 A TW 104111753A TW 201605207 A TW201605207 A TW 201605207A
- Authority
- TW
- Taiwan
- Prior art keywords
- header
- packet
- protocol
- bit
- contract
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本發明涉及使用通用修改指令來實現封包的靈活修改的方法及其裝置。用於修改封包標頭的裝置的實施例涉及藉由對已通用化的協定標頭應用命令來對封包進行可程式化修改。以該協定特有的通用格式表示傳入的封包的每個協定標頭以實現對封包標頭的修改。偵測協定標頭的缺失欄位,並且將協定標頭擴展成最大大小,使得協定標頭包含該協定的所有可能欄位,包括缺失欄位。無論協定標頭對應於協定的哪個變體,欄位中的每個欄位都具有相同偏移。修改使用向擴展的協定標頭應用的命令集合。所有命令因此通用,因為這些命令都是獨立於傳入的標頭(例如大小和協定)。
Description
本發明涉及封包標頭修改。更具體地,本發明涉及一種使用通用修改指令來實現封包靈活修改的方法及其裝置。
網路封包經由網際網路使用的協定、比如傳輸控制協定/網際協定/乙太網協定(TCP/IP/乙太網)承載資料。典型交換機能夠在向目的地或者向另一交換機發送出封包之前修改傳入的封包的各種欄位。出於各種原因而修改傳入的封包,比如封包將被轉發到何處、目的地支援的協定、封包的優先順序、協定標頭的傳入格式等。由於網路通訊協定正在演變,協定標頭的一個或者多個欄位可以是可任選的,這使交換機的硬體變複雜,因為在協定標頭內的給定的欄位可能不總是處於固定的偏移。
在封包的修改期間,現有技術的交換機線性地處理
封包中的每個協定層。這樣的處理會產生與網路有關的性能問題,包括時延,這可能使實現方式過度提供處理資源。
用於修改封包標頭之裝置的實施例涉及通過向已通用化的協定標頭應用命令來對封包進行可程式化修改。以該協定特有的通用格式表示傳入的封包的每個協定標頭以實現對封包標頭的修改。偵測協定標頭的缺失欄位,並且將協定標頭擴展成最大大小,使得協定標頭包含該協定的所有可能欄位,包括缺失欄位。無論協定標頭對應於協定的哪個變體,欄位中的每個欄位都具有相同偏移。修改對已擴展的協定標頭應用的命令集合。所有命令因此通用,因為這些命令係獨立於傳入的標頭(例如大小和協定)。
在一個方面中,提供一種網路設備的重寫引擎的方法。該方法包括根據用於封包的每個協定標頭的通用格式來通用化該協定標頭。通用格式包括協定的所有可能欄位。在此,無論協定標頭對應於協定的哪個變體,欄位中的每個欄位都具有相同偏移。每個已通用化的協定標頭包括一位元向量。位元向量包括針對已通用化的協定標頭的每個位元組的每位元組的位元。位元向量包括針對無效欄位而被標示為0的位元和針對有效欄位而被標示為1的位元。在此,無效欄位是在接收的封包的協定標頭中不存在的欄位,而有效欄位是在接收的封包的協定標頭中存在的欄位。
該方法也包括使用來自在網路交換機的記憶體中儲存的通用命令集合的至少一個命令來修改至少一個已通用化
的協定標頭。至少一個已通用化的協定標頭的修改是基於網路交換機的傳出埠的出口埠類型。至少一個已通用化的協定標頭的修改造成位元向量被更新。在一些實施例中,該方法也包括對位元向量和更新的位元向量執行XOR操作,以確定有多少位元被改變。
由於通用命令集合被用於標頭修改,而不管傳入的封包的標頭如何,所以通用命令集合可以被用來修改協定的第一變體的封包標頭和修改協定的第二變體的封包標頭。類似地,通用命令集合可以被用來修改協定的第一變體的封包標頭和修改協定的第二變體的封包標頭。
在另一方面中,提供一種網路交換機的方法。該方法包括在網路交換機的記憶體中維持通用命令集合。在一些實施例中,在通用命令集合中的每個通用命令表現為軟體程式化的微代碼。
在一些實施例中,通用命令集合包括刪除(Delete)命令,其中刪除命令的參數包括起始(Start)和大小(Size)。刪除命令通過將位元向量中的與已通用化的協定標頭內的從Start定位起的Size個位元組對應的位元標示為0來刪除這些位元組。
在一些實施例中,通用命令集合包括複製(Copy)命令,其中複製命令的參數包括來源(Source)、來源偏移(SourceOffset)、大小(Size)、目的地偏移(DestinationOffset)、位元掩碼(Bitmask)、複製常數位元掩碼(copyConstantBitMask)和複製常數資料(copyConstantData)。複製命令從已通用化
的協定標頭的來源(Source)的來源偏移(SourceOffset)向目的地偏移(DestinationOffset)複製Size個位元組的資料。
在一些實施例中,複製命令使用位元掩碼(Bitmask)用於位元掩碼操作。在一些實施例中,當複製常數位元掩碼(copyConstantBitMask)在位元位置處包含“1”時,在對應定位處向已通用化的協定標頭中複製來自複製常數資料(copyConstantData)中的對應定位的位元組。在一些實施例中,複製常數資料(copyConstantData)被儲存在記憶體中並且由軟體定義。對應目的地位元組的有效性依賴於在Source中的資料的有效性,其中將位元向量中的表示無效位元組的位元標示為0,並且將位元向量中的表示有效位元組的位元標示為1。
在一些實施例中,通用命令集合包括移動命令,其
中移動命令的參數包括起始偏移(StartOffset)、目的地偏移(DestinationOffset)和大小(Size)。移動命令將已通用化的協定標頭內的Size個位元組從起始偏移(StartOffset)移動到目的地偏移(DestinationOffset)。對應的目的地位元組的有效性依賴於在來源(Source)中的資料的有效性,其中對應來源位元組變成無效,其中將位元向量中的表示無效位元組的位元標記為0,並且將位元向量中的表示有效位元組的位元標記為1。
該方法也包括在網路交換機的傳入埠處接收封包並且根據封包的每個協定標頭之通用格式來使協定標頭通用化。使每個協定標頭通用化包括:偵測封包的協定標頭的缺失欄
位;以及基於偵測,藉由包括缺失欄位來將協定標頭擴展成通用格式。每個已通用化的協定標頭包括一位元向量,該位元向量具有針對無效欄位而被標示為0的位元和針對有效欄位而被標示為1的位元。
該方法也包括藉由對已通用化的協定標頭中的至少
一個已通用化的協定標頭應用來自通用命令集合的至少一個命令,以修改已通用化的協定標頭,藉此更新位元向量。
該方法也包括:基於更新的位元向量來形成新協定
標頭;以及經由網路交換機的傳出埠發送具有新協定標頭的封包。在一些實施例中,在發送具有新協定標頭的封包之前,計數為執行的所有操作而添加或者刪除的位元組的數目。
在又一方面中,提供一種網路交換機。網路交換機包括用於接收和發送封包的輸入埠和輸出埠。
網路交換機也包括用於儲存通用命令集合的記憶體。通用命令集合被用於標頭修改,而不管傳入的標頭如何。在一些實施例中,通用命令集合包括刪除命令、複製命令和移動命令。
網路交換機也包括重寫引擎,用於處理封包以使封包中的每個封包的每個協定標頭通用化,以便藉由使用來自通用命令集合的至少一個命令來進行修改。
在一些實施例中,每個協定標頭是根據對應協定特有的軟體定義映射中的其中一個而被通用化。在一些實施例中,每個已通用化的協定標頭包括一位元向量,該位元向量具有針對無效位元組而被標示為0的位元和針對有效位元組
而被標示為1的位元。
100‧‧‧協定層組合
200‧‧‧本地協定表
300‧‧‧方法
305-315‧‧‧步驟
400‧‧‧方法
405-420‧‧‧步驟
500‧‧‧通用格式圖
600‧‧‧封包標頭
605‧‧‧位元向量
700‧‧‧封包標頭
700’‧‧‧通用格式
705‧‧‧位元向量
800‧‧‧封包標頭
800’‧‧‧通用格式
805‧‧‧位元向量
900‧‧‧封包標頭
905‧‧‧已擴展的標頭
910‧‧‧位元向量
915‧‧‧標頭
920‧‧‧位元向量
925‧‧‧新標頭
1000‧‧‧協定標頭
1005‧‧‧位元向量
1010‧‧‧標頭
1015‧‧‧位元向量
1020‧‧‧新標頭
1100‧‧‧方法
1105-1110‧‧‧步驟
1200‧‧‧方法
1205-1225‧‧‧步驟
1300‧‧‧方法
1305-1320‧‧‧步驟
1400‧‧‧方法
1405-1425‧‧‧步驟
1500‧‧‧方法
1505-1515‧‧‧步驟
1600‧‧‧方法
1605-1610‧‧‧步驟
1700‧‧‧方法
1705-1730‧‧‧步驟
1800‧‧‧方法
1805-1815‧‧‧步驟
1900‧‧‧方法
1905-1930‧‧‧步驟
2100‧‧‧方法
2105-2120‧‧‧步驟
2200‧‧‧方法
2205-2230‧‧‧步驟
前文將從如附圖式中所示本發明的下述示例實施例之更具體描述中變得清楚,在圖式中,相似標號貫穿不同視圖指代相同部分。圖式未必按比例、代之以著重於說明本發明的實施例。
第一圖說明封包的示例協定層組合。
第二圖說明根據本發明的一些實施例的本地協定表的示例結構。
第三圖說明根據本發明的一些實施例的網路交換機的示例方法。
第四圖說明根據本發明的一些實施例的網路交換機的另一示例方法。
第五圖說明根據本發明的一些實施例的將傳入封包的層進行標頭擴展成通用格式的圖。
第六A圖與第六B圖說明根據本發明的一些實施例的協定標頭的示例通用化。
第七A圖至第七C圖說明根據本發明的一些實施例的協定標頭的另一示例通用化。
第八A圖至第八C圖說明根據本發明的一些實施例的協定標頭的又一示例通用化。
第九A圖至第九F圖說明根據本發明的一些實施例的協定標頭的示例修改。
第十A圖至第十E圖說明根據本發明的一些實施例
的協定標頭的另一示例修改。
第十一圖說明根據本發明的一些實施例的重寫引擎的方法。
第十二圖說明根據本發明的一些實施例的網路交換機的又一方法。
第十三圖說明根據本發明的一些實施例的網路交換機的又一方法。
第十四圖說明根據本發明的一些實施例的網路交換機的又一方法。
第十五圖說明根據本發明的一些實施例的網路交換機的又一方法。
第十六圖說明根據本發明的一些實施例的重寫引擎的另一方法。
第十七圖說明根據本發明的一些實施例的網路交換機的又一方法。
第十八圖說明根據本發明的一些實施例的重寫引擎的又一方法。
第十九圖說明根據本發明的一些實施例的網路交換機的又一方法。
第二十圖說明根據本發明的一些實施例的層結構的示例圖。
第二十一圖說明根據本發明的一些實施例的重寫引擎交換機的又一方法。
第二十二圖說明根據本發明的一些實施例的網路交
換機的又一方法。
在以下描述中,出於說明的目的而闡述許多細節。然而,本領域普通技術人員將認識到,可以在不使用這些具體細節的情況下實施本發明。因此,本發明並不旨在於限於所示實施例,而是將被賦予與這裡描述的原理和特徵一致的最廣範圍。
網路設備、例如網路交換機能夠切換/路由網路流量。網路交換機包括用於接收和發送封包的至少一個輸入/傳入埠和至少一個輸出/傳出埠。在一些實施例中,網路交換機也包括解析器和重寫器。解析器可以包括用於識別網路封包的內容的一個或者多個解析器引擎,並且重寫器可以包括用於在封包從網路交換機被發送出之前修改它們的一個或者多個重寫引擎。解析器引擎和重寫引擎是靈活的並且在可程式化基礎上操作。
網路交換機也包括用於儲存網路交換機使用的資料的記憶體。例如記憶體儲存通用命令集合。簡言之,通用命令通常被用來修改協定標頭。對於另一示例,記憶體也儲存協定的通用格式的由軟體定義的映射。簡言之,根據對應協定特有的由軟體定義的映射中的一個映射表示每個協定標頭。如將變得清楚的那樣,這些映射可以被用在協定的不同變體上以及用在包括新協定的不同協定上。對於又一示例,記憶體也儲存協定表。簡言之,協定表包括被程式化到協定表中
的每個協定層組合的每個協定層的層資訊。對於又一示例,記憶體也儲存計數器和統計量。
在乙太網中,封包包括多個協定層。每個協定層承載不同資訊。習知層的一些示例是:
‧乙太網
‧PBB乙太網
‧ARP
‧IPV4
‧IPV6
‧MPLS
‧FCOE
‧TCP
‧UDP
‧ICMP
‧IGMP
‧GRE
‧ICMPv6
‧VxLAN
‧TRILL
‧CNM
在理論上,協定層可以按照任何順序出現。然而,這些層的僅一些習知組合出現。這些層的有效組合的一些示例是:
‧乙太網
‧乙太網、ARP
‧乙太網、CNM
‧乙太網、FCoE
‧乙太網、IPV4
‧乙太網、IPV4、ICMP
‧乙太網、IPV4、IGMP
唯一封包識別字
在一些實施例中,網路交換機支援17個協定和八個協定層。因此有817個可能協定層組合。第一圖說明封包的示例協定層組合。例如封包可以包括三協定層組合例如乙太網、IPv4和ICMP。對於另一示例,封包可以包括七協定層組合例如乙太網、IPv4、UDP、VxLAN、乙太網和ARP。
雖然有817個可能協定層組合,但是這些層中的僅一些習知組合出現。所有已知協定層組合被唯一地識別和翻譯成稱為封包識別字(PktID)的唯一編號。在網路交換機的記憶體中儲存的協定表被程式化為包括每個已知協定層組合的每層的層資訊。在實踐中,本地協定表包括少於256個協定層組合。在一些實施例中,這一本地表包括212個已知協定層組合。本地表被程式化為包括或多或少協定層組合。
第二圖說明根據本發明的一些實施例的本地協定表200的示例結構。在本地協定表200中的使用PktID索引的每個協定層組合包括用於該協定層組合的每個協定層的資訊,該資訊被示出為層0資訊、層1資訊和層N資訊。通過對PktID
進行索引,可以存取或者獲取用於封包的所有N層的資訊。
用於每個協定層的資訊至少包括以下資訊:層類型、
層資料偏移和雜項資訊。然而,更多資訊可以被儲存在本地協定表200中。簡言之,層類型是指協定層的關聯協定(例如IP/TCP/UDP/乙太網),層資料偏移提供協定層中的層資料的開始位置,並且雜項資訊包括例如校驗和和長度資料之類的資料。
通常,解析器引擎能夠識別在網路交換機處接收的
傳入封包的PktID。重寫引擎使用PktID作為至協定表的金鑰,該協定表向重寫引擎提供為了使用於修改的封包的每個協定層通用化而需要的所有資訊。換而言之,重寫引擎使用PktID從協定表存取或者獲取用於封包中的協定層中的每個協定層的資訊,而不是從解析器引擎接收解析結果。
層類型。層類型和對封包的一個或者多個欄位的散
列的唯一組合向重寫引擎提供用於每個協定層的“通用格式”。在一些實施例中,這一唯一組合指定在記憶體中儲存的協定的通用格式的由軟體定義的映射中的一個映射。通用格式由重寫引擎用來擴展協定層並且使用軟體命令來修改協定層。這一資訊也向重寫引擎告知每個協定層在封包內何處開始。
層資料偏移。重寫引擎使用資料修改傳入標頭層。
這一資料可以在封包中任何處被擴展。由於層大小可以變化,所以向重寫引擎在修改期間需要使用的資料的偏移可以變化,這限制對重寫引擎可以從何處拾取什麼資料的硬體靈活性。
以分層方式佈置來自傳入封包標頭的擷取的資料。
佈置擷取的資料結構,使得層資料結構的開始偏移每PktID是唯一的。每層的層資料偏移用來識別用於修改的擷取的資料的位置。由於通過封包的PktID識別在封包內的層的結構和來自層的擷取的資料的位置,所以軟體和硬體使用相同唯一識別字來管理擷取的資料,這簡化重寫引擎中的命令。
雜項資訊。例如校驗和和長度資料之類的資訊向重
寫引擎告知對於關聯協定層的特殊處置要求,例如校驗和重新計算以及標頭長度更新。
封包通用化方案允許軟體定義通用命令的小集合,
該集合完全地基於給定的協定層並且獨立於在這一協定層之前或者之後的層。封包通用化方案也提供硬體靈活性以使自身針對協定改變和添加而不會過時。
第三圖說明根據本發明的一些實施例的網路交換機
的示例方法300。網路交換機通常包括解析器引擎和重寫引擎。
在步驟305,解析器引擎檢查傳入封包以識別封包
的PktID。在一些實施例中,解析器引擎向重寫引擎傳遞PktID,而不是向重寫引擎傳遞封包的解析的資料。
在步驟310,重寫引擎參考協定表,該協定表定義
網路交換機接收的封包的不同封包結構。重寫引擎使用PktID作為至協定表的金鑰,以擷取修改所必需的用於封包的每個協定層的資訊。
在步驟315,重寫引擎基於在協定表中儲存的資料
修改封包。通常,重寫引擎在修改封包之前擴展封包的每個協定層。協定層擴展和修改在別處討論。
第四圖說明根據本發明的一些實施例的網路交換機
的另一示例方法400。網路交換機通常包括記憶體和至少一個傳入埠。
在步驟405,在記憶體中儲存協定表。協定表定義
封包的不同封包結構。封包結構中的每個封包結構由PktID進行索引。封包結構中的每個封包結構表示協定層組合並且包括協定層組合的每個協定層的層資訊。協定表可以被更新以添加表示新協定的新封包結構。協定表也可以被更新以回應於協定的改變來修改封包結構。
在步驟410,在傳入埠處接收封包。
在步驟415,識別封包的PktID。在一些實施例中,解析器引擎識別封包的PktID。
在步驟420,存取用於封包的每個協定層的資訊。通常,資訊位元於協定表中。在一些實施例中,資訊被用來根據用於對應協定的通用格式使封包的協定標頭通用化。通用格式在記憶體中由軟體定義。
如別處說明的那樣,已通用化的協定標頭可以通過將至少一個命令應用於已通用化的協定標頭來修改。在一些實施例中,通過使用資訊確定用來修改已通用化的協定標頭的資料的位置,由此修改已通用化的協定標頭。網路交換機的重寫引擎通常使協定標頭通用化並且修改已通用化的協定標頭。
如以上簡要地說明的那樣,重寫引擎以對應協定特
有的通用格式表示封包的每個協定標頭,以實現封包的可程式化修改,從而產生在修改封包標頭時的硬體和軟體靈活性。
第五圖說明根據本發明的一些實施例的將傳入封包
的層進行標頭擴展成通用格式圖500。在第五圖中,傳入封包包括八個協定層。每個協定層具有用於相應協定的標頭。更多或者更少協定層如以上指示的那樣是可能的。重寫引擎能夠如第五圖中所示從協定標頭中的任何協定標頭偵測缺失欄位並且將每個協定標頭擴展成它的通用格式。規範層是指已已擴展成它的通用格式的協定層。簡言之,每個規範層包括位元向量(bitvector),該位元向量具有對於無效欄位標示為0的位元和對於有效欄位標示為1的位元。
第六A圖至第八C圖說明根據本發明的一些實施例
的重寫引擎如何對乙太網協定工作的示例。第六A圖至第八C圖中所示示例證明,重寫引擎能夠對例如乙太網協定之類的協定的不同變體工作。每個示例舉例說明乙太網協定的傳入標頭及其對應通用格式。雖然未討論其它協定,但是注意重寫引擎對其它協定相似地工作。
第六A圖說明傳入封包的示例乙太網封包標頭600
的格式。乙太網封包標頭600是22位元組並且包括五個欄位:來源地址(SA)欄位、目的地地址(DA)欄位、服務VLAN標記欄位、客戶VLAN標記欄位和乙太類型欄位。SA欄位和
DA欄位各自為6位元組。服務VLAN標記欄位和客戶VLAN標記欄位各自為4位元組。乙太類型欄位為2位元組。具有乙太網封包標頭600的封包是乙太網封包的最大變體並且具有最大大小22位元組。
重寫引擎處理乙太網封包標頭600並且確定沒有任
何欄位從乙太網封包標頭600缺失。乙太網封包標頭600的通用格式因此與乙太網封包標頭600的通用格式相同,因為乙太網封包標頭600包含所有可能欄位。第B六圖說明表示第六A圖的乙太網封包標頭600的位元向量605。位元向量605的每個位元對應於乙太網封包標頭600的22位元組的一個位元組。位元向量605包含所有1,因為乙太網封包標頭600的所有欄位由於欄位在乙太網封包標頭600中存在而都為有效或者具有值。因而,乙太網封包標頭600由通用格式{22'b111111_111111_1111_1111_11}表示。
第七A圖說明傳入封包的另一示例乙太網封包標頭
700的格式。乙太網封包標頭700為18位元組並且僅包括四個欄位:SA欄位、DA欄位、客戶VLAN標記欄位和乙太類型欄位。乙太網封包標頭700缺失服務VLAN標記欄位。具有乙太網封包標頭700的封包是乙太網封包的另一變體。
重寫引擎處理乙太網封包標頭700,並且確定服務
VLAN標記欄位從乙太網封包標頭700缺失,並且通過在乙太網封包標頭700的通用格式的適當位置處包括缺失的服務VLAN標記欄位來將乙太網封包標頭700擴展成它的最大大小22位元組。第七B圖說明擴展的乙太網封包標頭的通用格
式700’。擴展的乙太網封包標頭700’包括乙太網協定的包括缺失的服務VLAN標記欄位的所有可能欄位。在擴展的乙太網封包標頭700’中的有效欄位是SA欄位、DA欄位、客戶VLAN標記欄位和乙太類型欄位,因為它們在乙太網封包標頭700中存在。在擴展的乙太網封包標頭700’中的無效欄位是服務VLAN標記欄位,因為它在乙太網封包標頭700中不存在、而是被添加在擴展的乙太網封包標頭700’中。
第七C圖說明表示第七B圖的已擴展乙太網封包標
頭700’的位元向量705。位元向量705的每個位元對應於擴展的乙太網封包標頭700’的22位元組中的一個位元組。位元向量705包含用於所有有效欄位的1,這些欄位是SA欄位、DA欄位、客戶VLAN標記欄位和乙太類型欄位。位元向量705包含用於所有無效欄位的0,這些欄位僅為服務VLAN標記欄位。因而,乙太網封包標頭700由通用格式{22'b111111_111111_0000_1111_11}表示。
第八A圖說明傳入封包的另一示例乙太網封包標頭
800的格式。乙太網封包標頭800為14位元組並且僅包括三個欄位:SA欄位、DA欄位和乙太類型欄位。乙太網封包標頭800缺失服務VLAN標記欄位和客戶VLAN標記欄位。具有乙太網封包標頭800的封包是乙太網封包的最小變體。
重寫引擎處理乙太網標頭800,並且確定服務VLAN
標記欄位和客戶VLAN標記欄位從乙太網封包標頭800缺失,並且通過在乙太網封包標頭800的通用格式的適當位置處包括缺失的服務VLAN標記欄位和缺失的客戶VLAN標記欄位
來將乙太網封包標頭800擴展成它的最大大小22位元組。第八B圖說明擴展的乙太網封包標頭的通用格式800’。擴展的乙太網封包標頭800’包括乙太網協定的包括缺失的服務VLAN標記欄位和缺失的客戶VLAN標記欄位的所有可能欄位。在擴展的乙太網封包標頭800’中的有效欄位是SA欄位、DA欄位和乙太類型欄位,因為它們在乙太網封包標頭800中存在。在擴展的乙太網封包標頭800’中的無效欄位是服務VLAN標記欄位和客戶VLAN標記欄位,因為它們在乙太網封包標頭800中不存在、而是被添加在擴展的乙太網封包標頭800’中。
第八C圖說明表示第八B圖的已擴展的乙太網封包
標頭800’的位元向量805。位元向量805的每個位元對應於擴展的乙太網封包標頭800’的22位元組中的一個位元組。
位元向量805包含用於所有有效欄位的1,這些欄位是SA欄位、DA欄位和乙太類型欄位。位元向量805包含用於所有無效欄位的0,這些欄位是服務VLAN標記欄位和客戶VLAN標記欄位。因而,乙太網封包標頭800由通用格式{22'b111111_111111_0000_0000_11}表示。
如第六A圖至第八C圖中所示,無論傳入乙太網標
頭的變化如何,一旦執行將乙太網標頭擴展成通用格式,欄位偏移與最大大小的乙太網標頭(例如第六A圖的乙太網封包標頭600)相同。標頭擴展有利地無論傳入乙太網標頭如何都允許相同軟體命令集合工作,因為乙太網標頭被擴展成最大大小的乙太網標頭。這樣,例如修改乙太類型欄位的命令
將無論接收到哪個乙太網標頭都總是指向相同偏移。
標頭的通用格式產生在修改封包標頭方面的硬體和軟體靈活性。硬體能夠修改封包標頭,而不管欄位在封包標頭內駐留於何處。硬體可以通過軟體被程式化以支援新協定。軟體在用於各種標頭協定的硬體表中對通用格式進行程式化。
假設1(傳入封包是單標記的乙太網封包,傳出的封包是無標記的乙太網封包):假設網路交換機的輸入乙太網埠正在接收具有客戶VLAN標記的封包,並且封包需要無標記地被轉發到輸出乙太網埠。第九A圖說明在這一傳入乙太網埠處接收的封包的示例乙太網封包標頭900的格式。對於在這一傳入乙太網埠處接收的封包,軟體將乙太網標頭的通用格式程式化為{22'b111111_111111_0000_1111_11}。重寫引擎接收標頭協定層並且向記憶體進行索引,該記憶體向硬體告知用於這一標頭協定的通用格式是{22'b111111_111111_0000_1111_11}。在這一情況下,硬體預期前12個連續位元組(各自標示為1)和將被移位元四個位元組的接下來六個位元組(各自標示為1)。與位元向量中標示為0的四個位元對應的四個位元組無效。
基於通用格式{22'b111111_111111_0000_1111_11},重寫引擎將傳入標頭協定層擴展成第九B圖中所示的擴展的標頭905並且維持針對已擴展的標頭905的層的每個位元組的每位元組的位元。在第九C圖中示出用於已擴展的標頭905的對應位元向量910。位元向量910向硬體告知哪些位元組有
效而哪些無效。
基於轉發判決,在這一假設1中,需要無標記地轉
發封包。硬體基於傳出乙太網埠的出口埠類型向命令表進行索引,該命令表告知硬體刪除客戶VLAN標記。客戶VLAN標記總是在固定的偏移、即16處開始。由於命令被應用於通用格式,所以用於刪除客戶VLAN標記的命令是“從位置16開始刪除(客戶VLAN標記的)4個位元組”。硬體簡單地標示這四個位元組為無效並且刪除它們。第九D圖說明在通用格式中的無標記的乙太網標頭915。第九E圖說明用於無標記的乙太網標頭915的位元向量920。在移除所有無效位元組之後,硬體形成第九F圖中所示的新標頭925。經由傳出乙太網埠發送出具有新標頭925的封包。
假設2(傳入封包是雙標記的乙太網封包,傳出的封包是無標記的乙太網封包):假設網路交換機的輸入乙太網埠接收具有服務VLAN標記和客戶VLAN標記的封包,並且封包需要無標記地被轉發到輸出乙太網埠。第十A圖說明在這一傳入乙太網埠處接收的封包的示例乙太網封包標頭的格式1000。對於在這一傳入乙太網埠處接收的封包,軟體將乙太網標頭的通用格式程式化為{22'b111111_111111_1111_1111_11}。重寫引擎接收標頭協定層並且向記憶體進行索引,該記憶體向硬體告知用於這一標頭協定的通用格式是{22'b111111_111111_1111_1111_11}。在這一情況下,硬體預期所有22個連續位元組(各自標示為1)
基於通用格式{22'b111111_111111_1111_1111_11},
重寫引擎無需擴展傳入標頭協定層,因為標頭協定已經處於它的最大大小。在第十B圖中示出用於標頭1000的對應位元向量1005。位元向量1005向硬體告知哪些位元組有效而哪些無效。
基於轉發判決,在這一假設2中,需要無標記地轉
發封包。硬體基於傳出乙太網埠的出口埠類型向命令表進行索引,該命令表告知硬體刪除客戶VLAN標記和服務VLAN標記。客戶VLAN標記總是在固定的偏移、即16處開始。相似地,服務VLAN標記總是在固定的偏移、即12處開始。由於命令被應用於通用格式,所以用於刪除客戶VLAN標記的命令是“從位置16開始刪除(客戶VLAN標記的)4個位元組”,而用於刪除服務VLAN標記的命令是“從位置12開始刪除(服務VLAN標記的)4個位元組”。硬體簡單地標示這八個位元組為無效並且刪除它們。第十C圖說明通用格式中的無標記的乙太網標頭1010。第十D圖說明用於無標記的乙太網標頭1010的位元向量1015。在移除所有無效位元組之後,硬體形成第十E圖中所示的新標頭1020。經由傳出乙太網埠發送出具有新標頭1020的封包。
假設3(傳入封包是無標記、單標記或者雙標記的
乙太網封包,傳出的封包是雙標記的乙太網封包):假設網路交換機的輸入乙太網埠正在接收無標記、具有服務VLAN標記、客戶VLAN標記或者兩個標記的封包,並且封包需要被作為雙標記、但是具有新標記而轉發到輸出乙太網埠。如果傳入封包是雙標記的,則軟體將乙太網標頭的通用格式程
式化為{22'b111111_111111_1111_1111_11}。如果傳入封包是無標記的,則軟體將乙太網標頭的通用格式程式化為{22'b111111_111111_0000_0000_11}。如果傳入封包是單標記的,則軟體將乙太網標頭的通用格式程式化為{22'b111111_111111_0000_1111_11}。
基於轉發判決,在這一假設3中,需要雙標記地轉
發封包。硬體基於傳出乙太網埠的出口埠類型向命令表進行索引,該命令表告知硬體替換客戶VLAN標記和服務VLAN標記。客戶VLAN標記總是在固定的偏移、即16處開始。相似地,服務VLAN標記總是在固定的偏移、即12處開始。對於這些情況中的每個情況,命令相同。由於命令被應用於通用格式,所以命令是“從層資料.位置X向開始位置=12複製4個位元組(用於服務VLAN標記)”和“從層資料.位置Y向開始位置=16複製4個位元組(用於客戶VLAN標記)”,其中從層資料.位置X和層資料.位置Y指定的位置複製內容。
如在假設1-3中證明的那樣,重寫引擎在硬體上被
簡化並且保持記憶體中的軟體命令集合為小。因而,為了保持命令而需要的硬體記憶體淺。
第十一圖說明根據本發明的一些實施例的重寫引擎
的方法1100。在步驟1105,重寫引擎從傳入封包的協定標頭偵測缺失欄位。
在步驟1110,基於偵測,重寫引擎將協定標頭擴展
成用於對應協定的通用格式。通用格式包括協定的所有欄位。
欄位中的每個欄位無論協定標頭對應於協定的哪個變體都具有相同偏移。重寫引擎針對已擴展的協定標頭維持位元向量,其中位元向量包括針對已擴展的協定標頭的每個位元組的每位元組的位元。重寫引擎對於每個有效欄位的每個位元組標示位元為可用,其中每個有效欄位是在傳入封包的協定標頭中存在的欄位。重寫引擎對於每個無效欄位的每個位元組標示位元為無效,其中每個無效欄位是在傳入封包的協定標頭中不存在的欄位。
在一些實施例中,對於傳入封包的每個協定層執行
步驟1105和1110。
第十二圖說明根據本發明的一些實施例的網路交換
機的又一方法1200。在一些實施例中,網路交換機允許協定的通用格式的由軟體定義的映射並且在網路交換機的記憶體中儲存由軟體定義的映射。網路交換機包括用於使協定標頭通用化的重寫引擎。在步驟1205,在網路交換機的傳入埠處接收封包。
在步驟1210,根據用於對應協定的通用格式來使封
包的協定標頭通用化。如以上說明的那樣,硬體根據在網路交換機的記憶體中儲存的映射中的一個映射來擴展協定標頭。
用於已擴展的協定標頭的位元向量向硬體告知哪些位元組有效而哪些位元組無效。
在步驟1215,通過將至少一個命令應用於已通用化
的協定標頭來修改已通用化的協定標頭。如以上說明的那樣,硬體基於傳出乙太網埠的出口埠類型向命令表進行索引,以
確定用於向協定標頭應用的至少一個命令。
在步驟1220,移除經修改的協定標頭的所有無效位元組以形成新標頭。
在步驟1225,經由網路交換機的傳出埠發送出具有新標頭的封包。
第十三圖說明根據本發明的一些實施例的網路交換機的又一方法1300。在步驟1305,網路交換機被配置為包括協定的通用格式的由軟體定義的映射。在網路交換機的記憶體中儲存由軟體定義的映射。
在步驟1310,在網路交換機的傳入埠處接收封包。
在步驟1315,基於由軟體定義的映射中的一個映射使封包的協定標頭通用化。
在步驟1320,針對已通用化的協定標頭維持位元向量。位元向量包括針對已通用化的協定標頭的每個位元組的每位元組的位元。
每個傳入層可以包含任何數目的位元組,例如64位元組或者128位元組或者甚至更大數目的位元組。在以上示例中,擴展的乙太網標頭具有22位元組。在位元向量中表示協定層的所有位元組不是高效的,因為為最壞情況的協定的分配是記憶體密集的。在現代片上系統(SOC)設計中,嵌入式記憶體的面積和功率預算通常主導整個晶片預算。作為結果,高效地利用有限的記憶體資源是關鍵的。
如果多數協定具有少數“空洞”或者無效位元組,
則用連續位元組的計數器和表示非連續位元組的更小位元向量表示通用格式標頭是成本更低的。在一些實施例中,這一更小位元向量的大小通常是固定的,但是大小是可程式化的。
可以基於協定的統計量調整大小,這些統計量確定為了表示協定而必須儲存的非連續位元組的最大數目。
在一些實施例中,在使用包括兩個欄位的資料結構
的最佳化方式中表示封包的每個通用格式標頭:連續_位元組(continuous_byte)欄位和位元向量欄位。連續_位元組(continuous_byte)欄位表示從協定層的開始起的連續有效位元組的數目。位元向量欄位是協定層的每位元組的位元表示。
位元向量欄位示出“空洞”或者無效位元組。位元向量欄位如果不能容納所有協定則能夠容納多數協定。因此,最佳化的表示可以由{連續_位元組,位元向量}表示。該資料結構獨立於協定標頭的大小。
例如第六B圖的位元向量605的緊湊表示是{22,
0000 0000_0000_000},這表示從第六A圖的乙太網封包標頭600的開始起的22個連續位元組。位元向量欄位包含全0,因為沒有無效位元組。
對於另一示例,第七C圖的位元向量705的緊湊表
示是{12,0000 1111_1100_000},這表示從第七B圖的擴展的乙太網封包標頭300’的開始起的12個連續位元組、繼而為四個無效位元組、然後六個有效位元組。
對於又一示例,第八C圖的位元向量805的緊湊表
示是{12,0000 0000_1100_0000),這表示從第八B圖的擴展
的乙太網封包標頭800’的開始起的12個連續位元組、繼而為八個無效位元組、然後兩個有效位元組。
第十四圖說明根據本發明的一些實施例的網路交換機的又一方法1400。在步驟1405,取得已擴展的協定標頭。如以上討論的那樣,已擴展的協定標頭是根據用於對應協定的通用格式而被通用化的傳入封包的協定標頭。通常,重寫引擎通過從協定標頭偵測缺失欄位並且基於偵測根據通用格式擴展協定標頭來使協定標頭通用化。通用格式包括協定的所有可能欄位,其中無論協定標頭對應於協定的哪個變體,欄位中的每個欄位都具有相同偏移。
在步驟1410,維持已擴展的協定標頭的表示。該表示是包括連續_位元組(continuous_byte)欄位和位元向量欄位的資料結構。
在步驟1415,將連續_位元組(continuous_byte)欄位設置成從已擴展的協定標頭的開始起的連續有效位元組的數目。
在步驟1420,針對在連續有效位元組之後的每個無效欄位的每個位元組,將位元向量欄位的位元標示為不可用。每個無效欄位是在傳入封包的協定標頭中不存在的欄位。
在步驟1425,針對在連續有效位元組之後的每個有效欄位的每個位元組,將位元向量欄位的位元標示為可用。每個有效欄位是在傳入封包的協定標頭中存在的欄位。
第十五圖說明根據本發明的一些實施例的網路交換機的又一方法1500。在步驟1505,在網路交換機的傳入埠處
接收封包。
在步驟1510,根據用於對應協定的通用格式使封包
的協定標頭通用化。通常,重寫引擎被配置為使協定標頭通用化。
在步驟1515,在獨立於協定標頭的大小的資料結構
中表示已通用化的協定標頭。在一些實施例中,資料結構包括連續_位元組(continuous_byte)欄位和位元向量欄位,其中連續_位元組(continuous_byte)欄位表示從協定標頭的開始起的連續有效位元組的數目,而位元向量欄位是協定標頭的每位元組的位元表示。
這一資料結構有助於使用於各種協定層的表示通用
化並且移除對協定標頭層的大小的依賴性。位元向量的緊湊表示有利地減少硬體成本。
修改使用向擴展的協定標頭應用的通用命令的集合。
所有命令因此通用,因為這些命令獨立於傳入標頭(例如大小和協定)。
表1列舉重寫引擎用於協定標頭修改的通用命令。
通用命令的這一小集合被用於標頭修改,無論傳入封包標頭(例如大小、協定)如何,因為在修改之前封包標頭被通用化。通常,通用命令表現為軟體程式化的微代碼。
DELETE命令通過使在當前已通用化的協定層內的
從Start定位開始的Size個位元組無效來刪除這些位元組。標示表示那些位元組的位元向量的位元為0。
COPY命令從Source的SourceOffset向當前已通用
化的標頭層的DestinationOffset複製Size個位元組的資料。
COPY命令根據資料的有效性在Source中是否有效來使得對應目的地位元組有效或者無效。將表示無效位元組的位元向量的位元標示為0。將表示有效位元組的位元向量的位元標示為1。COPY命令也可以使用Bitmask用於位元掩碼操作。COPY命令也可以使用copyConstantBitMask和copyConstantData。
如果copyConstantBitMask在位元位置處包含“1”,則在對應定位處將來自copyConstantData中的對應定位的位元組複製到當前已通用化的標頭層中。在一些實施例中,在表中儲存常數資料。在一些實施例中,常數資料是由軟體定義的。
MOVE命令將當前已通用化的協定層內的Size個位
元組從StartOffset移動到DestinationOffset。MOVE命令根據資料的有效性在Source中是否有效來使對應目的地位元組有效或者無效,並且使來源位元組無效。將表示無效位元組的位元向量的位元標示為0。將表示有效位元組的位元向量的位元標示為1。
通過使用至少一個計數器,針對執行的所有操作,
對添加或者刪除的位元組的數目進行計數。至少一個計數器是硬體計數器。備選地,至少一個計數器是軟體計數器。至少一個計數器出於統計目的和出於其它原因而保持跟蹤計數。
在一些實施例中,重寫引擎對兩個位元向量執行XOR操作--原有的位元向量和修改的位元向量--以向硬體告知多少位元改變,這用於考慮刪除或者添加的位元組的數目。
第十六圖說明根據本發明的一些實施例的重寫引擎
的另一方法1600。重寫引擎是網路交換機的部分並且在封包從網路交換機被發送出之前修改它們。在步驟1605,根據用於封包的每個協定標頭的通用格式使該協定標頭通用化。通用格式包括協定的所有可能欄位。這樣,無論協定標頭對應於協定的哪個變體,欄位中的每個欄位都具有相同偏移。每個已通用化的協定標頭包括位元向量。位元向量包括針對已通用化的協定標頭的每個位元組的每位元組的位元。位元向量包括對於無效欄位而被標示為0的位元和對於有效欄位而被標示為1的位元。這裡,無效欄位是在接收的封包的協定標頭中不存在的欄位,而有效欄位是在接收的封包的協定標頭中存在的欄位。
在步驟1610,使用來自在網路交換機的記憶體中儲
存的通用命令集合的至少一個命令以修改至少一個已通用化的協定標頭。對至少一個已通用化的協定標頭的修改是基於網路交換機的傳出埠的出口埠類型。對至少一個已通用化的協定標頭的修改造成位元向量被更新。
由於不管傳入封包標頭如何,通用命令集合都被用
於標頭修改,所以通用命令集合可以被用來修改協定的第一變體的封包標頭和修改協定的第二變體的封包標頭。相似地,通用命令集合可以被用來修改第一協定的封包標頭和修改第二協定的封包標頭。
第十七圖說明根據本發明的一些實施例的網路交換
機的又一方法1700。在步驟1705,在網路交換機的記憶體中維持通用命令集合。
在步驟1710,在網路交換機的傳入埠處接收封包。
在步驟1715,根據用於封包的每個協定標頭的通用
格式使該協定標頭通用化。偵測從封包的協定標頭的缺失欄位。基於偵測,通過包括缺失欄位來將協定標頭擴展成通用格式。每個已通用化的協定標頭包括位元向量,該位元向量具有對於無效欄位被標示為0的位元和對於有效欄位被標示為1的位元。這裡,無效欄位是在接收的封包的協定標頭中不存在的欄位,而有效欄位是在接收的封包的協定標頭中存在的欄位。
在步驟1720,通過向已通用化的協定標頭中的至少
一個已通用化的協定標頭應用來自通用命令集合的至少一個命令,來修改已通用化的協定標頭,由此更新位元向量。
在步驟1725,基於更新的位元向量,形成新協定標
頭。
在步驟1730,經由網路交換機的傳出埠發射具有新
協定標頭的封包。在一些實施例中,在發射具有新協定標頭
的封包之前,針對執行的所有操作,對添加或者刪除的位元組的數目進行計數。
重寫引擎不僅使用用於每個協定標頭的位元向量來允許修改基於通用格式的協定標頭的擴展,重寫引擎也使用位元向量來允許將協定標頭從通用格式塌縮成“規則”標頭。通常,在位元向量中的每個位元表示已通用化的協定標頭的位元組。在位元向量中被標示為0的位元對應於無效位元組,而在位元向量中被標示為1的位元對應於有效位元組。重寫引擎使用位元向量來移除在已經對已通用化的協定標頭操作所有命令之後的所有無效位元組,以由此形成新協定標頭。重寫引擎因此使用位元向量來允許封包的協定標頭的擴展和塌縮,由此通過使用通用命令集合而實現封包的靈活修改。
例如回顧假設1,第九E圖的位元向量920表示在已經向第九B圖的已通用化的協定標頭905應用刪除命令之後的第九D圖的修改的協定標頭915。在這一假設1中,刪除客戶VLAN標記,由此使客戶VLAN標記的四個位元組無效。這樣,將位元向量920中的與客戶VLAN標記對應的位元標示為0。在已經操作所有命令、即在假設1中的刪除命令之後,重寫引擎使用位元向量920來移除所有無效位元組,由此使位元向量920塌縮。基於塌縮的位元向量形成新協定標頭。第九F圖說明在移除所有無效位元組之後的新協定標頭925。經由傳出乙太網埠發送出具有新標頭925的在假設1中的封包。
對於另一示例,回顧假設2,第十D圖的位元向量
1015表示在已經向第十A圖的協定標頭1000應用刪除命令之後的第十C圖的修改的協定標頭1010。在這一假設2中,刪除服務VLAN標記和客戶VLAN標記,由此使服務VLAN標記的四個位元組和客戶VLAN標記的四個位元組無效。這樣,將位元向量1015中的與服務VLAN標記和客戶VLAN標記對應的位元標示為0。在已經操作所有命令、即在假設2中的兩個刪除命令之後,重寫引擎使用位元向量1015來移除所有無效位元組,由此使位元向量1015塌縮。基於塌縮的位元向量形成新協定標頭。第十E圖說明在移除所有無效位元組之後的新協定標頭1020。經由傳出乙太網埠發送出具有新標頭1020的在假設2中的封包。
第十八圖說明根據本發明的一些實施例的重寫引擎
的又一方法1800。重寫引擎是網路交換機的部分並且在封包從網路交換機被發送出之前修改它們。在步驟1805,針對每個已通用化的協定標頭維持位元向量。已通用化的協定標頭是擴展成通用格式的封包的協定標頭。通用格式包括協定的所有可能欄位。無論協定標頭對應於協定的哪個變體,欄位中的每個欄位都具有相同偏移。位元向量包括針對已通用化的協定標頭的每個位元組的每位元組的位元。
在步驟1810,基於對至少一個已通用化的協定標頭
的修改來更新位元向量。該修改使用來自在網路交換機的記憶體中儲存的通用命令集合的至少一個命令來修改至少一個已通用化的協定標頭。
在步驟1815,使用已更新的位元向量來壓縮至少一
個已通用化的協定標頭。在一些實施例中,在步驟1815之前,對位元向量和更新的位元向量執行XOR操作以確定多少位元改變,這允許重寫引擎考慮刪除和添加的位元組。
第十九圖說明根據本發明的一些實施例的網路交換
機的又一方法1900。在步驟1905,在網路交換機的傳入埠處接收封包。
在步驟1910,根據用於封包的每個協定標頭的通用
格式使該協定標頭通用化。偵測從封包的協定標頭的缺失欄位。基於偵測,通過包括缺失欄位來將協定標頭擴展成通用格式。
在步驟1915,針對每個已通用化的協定標頭維持位
元向量。位元向量包括對於無效欄位而標示為0的位元和對於有效欄位而標示為1的位元。
在步驟1920,修改已通用化的協定標頭中的至少一
個已通用化的協定標頭,由此更新位元向量。該修改使用來自在網路交換機的記憶體中儲存的通用命令集合的至少一個命令以修改至少一個已通用化的協定標頭。對至少一個已通用化的協定標頭的修改是基於網路交換機的傳出埠的出口埠類型。
在步驟1925,通過移位元已更新的位元向量來移除
在已更新的位元向量中的標示為0的每個位元,由此使已更新的位元向量塌縮。
在步驟1930,基於塌縮的位元向量形成緊湊協定標
頭。經由網路交換機的傳出埠發射至少具有緊湊協定標頭的封包。在一些實施例中,在發射封包之前,對針對執行的所有操作而添加或者刪除的位元組數目進行計數。
指標結構可以被用來擷取在用於已通用化的傳入封
包內的不同協定層並且在協定層的修改之後重建封包。指標結構包括N+1個層指針和封包的所有標頭的總大小。通常,指標結構初始地用如下資料來更新,該資料由解析器引擎提供以供重寫引擎用來將封包拆分成各個層並且隨後智慧地將它們拼接回到一起。在封包被拆分成各個層之後,重寫引擎使協定標頭通用化、修改已通用化的協定標頭並且通過移除所有無效欄位來壓縮已通用化的協定標頭。層指針在每個層被修改之後由重寫引擎更新。這些更新的層指標被用來在從網路交換機發送出封包之前將不同協定層拼接回到一起。
第二十圖說明根據本發明的一些實施例的層結構的
示例圖2000。假設傳入封包包括以下協定層:專有標頭、乙太網、IPv4、UDP、VxLAN和乙太網。也假設網路交換機的解析器引擎能夠解析上至八層而重寫引擎僅能修改前N個、例如N=4個協定層(因為軟體要求和/或硬體能力)。在一些實施例中,解析器引擎向重寫引擎提供資料,諸如封包的每個協定標頭的開始位置。
由於重寫引擎能夠修改封包的前四個協定層,所以
重寫引擎僅使用來自解析器引擎的相關資料、即關於如下前四個協定層的資料:專有標頭、乙太網、IPv4和UDP。使用
這一資料,初始化用於封包的指標結構:設置為0的層指針0,這是在封包內的用於專有標頭的起始位置(即層0),設置為16的層指針1,這是在封包內的用於乙太網標頭的起始位置(即層1),設置成36的層指針2,這是在封包內的用於IPv4標頭的起始位置(即層2),設置成48的層指針3,這是在封包內的用於UDP標頭的起始位置(即層3),以及設置成56的層指標4,這是用於重寫引擎不修改的標頭的剩餘部分的起始位置。在一些實施例中,重寫引擎計算標頭的大小並且將標頭大小(即所有標頭的總大小)設置成223。
通過使用層指標,重寫引擎如以上討論的那樣通用
化前四個協定層(即專用標頭、乙太網、IPv4、UDP)以供修改。在修改之後,重寫引擎通過移除所有無效位元組來壓縮修改的協定標頭。通常,在修改協定標頭之後更新層指標。
層指針形成尾指針。尾指針與標頭大小一起與標頭
的正文關聯,該正文是標頭的未修改的並且向前輸送的用於隨後拼接的部分。在執行所有修改並且壓縮修改的協定標頭之後,修改的層指針用來將修改的標頭與標頭的正文拼接回到一起。
重寫引擎可以限於重寫引擎可以修改的層數。在一
些實施例中,重寫引擎也可以限於重寫引擎可以將任何給定的協定層擴展成多少。在這樣的實施例中,重寫引擎通過將兩個相鄰層指標相減來擷取協定層的大小。如果層大小超過重寫引擎的硬體能力,則重寫引擎簡單地使用先前的層指針並且智慧地形成正文。
假設協定層不能被擴展多於40位元組,但是關聯協
定的最大變體是64位元組。在一些實施例中,重寫引擎將標頭協定擴展成最大40位元組以供修改。在修改之後,使用層指標,重寫引擎能夠相似地將剩餘位元組拼接到修改的位元組。
使用層指標顯著地減少硬體邏輯和複雜性,因為它
僅需應對一個給定的協定層。硬體命令的範圍限於給定的層。
由於命令引擎對先前層和在它之後的層無依賴性,所以如果每層需要更多命令則可以用多通過方式使用命令硬體。換而言之,由於命令沒有與命令關聯的內部狀態,所以可以並行地使用多個命令。相似地,可以並行地修改多層。
第二十一圖說明根據本發明的一些實施例的重寫引
擎的又一方法2100。重寫引擎是網路交換機的部分並且在封包從網路交換機被發送出之前修改它們。在步驟2105,針對每個封包維持指標結構。指標結構包括層指標和封包的所有標頭的總大小。層指標中的每個層指標對應于封包中的關聯層的開始位置。
指標結構包括N+1個層指針。重寫引擎修改封包的
N個層。層指針形成尾指針。有總大小的尾指針指示標頭的正文。標頭的正文是標頭的未被重寫引擎修改的部分。
在步驟2110,基於層指標拆分封包的層以供層修改。
偵測從封包的協定標頭的缺失欄位。基於偵測,將協定標頭擴展成用於對應協定的通用格式。通用格式包括協定的所有可能欄位。無論協定標頭對應於協定的哪個變體,欄位中的
每個欄位都具有相同偏移。每個已通用化的協定標頭包括位元向量,該位元向量具有對於無效欄位被標示為不可用或者0的位元和對於有效欄位被標示為可用或者1的位元。使用來自通用命令集合的至少一個命令來修改已通用化的協定標頭。通常,在修改之後更新位元向量。
在步驟2115,基於層修改來更新層指針。
在步驟2120,基於已更新的層指針將層拼接回到一起。
第二十二圖說明根據本發明的一些實施例的網路交換機的又一方法2200。在步驟2205,在網路交換機的傳入埠處接收封包。
在步驟2210,使用指標結構來分離封包的協定層。指標結構包括指向封包的N+1個位置的N+1個層指針和封包的所有標頭的總大小。位置包括協定層的起始定位。基於封包的解析的資料來初始化指標結構。
在步驟2215,使經分離的協定層通用化以進行修改。對於每層,擷取層的大小以確定該大小是否超過用於修改該層的硬體能力。通過將在指標結構中的兩個相鄰層指標相減來擷取該大小。基於該確定,使用兩個相鄰層指標中的第一層指標並且形成正文。
在步驟2220,基於修改來更新指標結構。
在步驟2225,使用已更新的指標結構來智慧地將經修改的協定層拼接回到一起以形成新協定標頭。
在步驟2230,經由網路交換機的傳出埠發送出具有
新協定標頭的封包。
本領域普通技術人員將認識到,也存在其它使用和優點。儘管已經參照許多具體細節描述本發明,但是本領域普通技術人員將認識到,可以在其它具體形式中體現本發明而不脫離本發明的精神實質。因此,本領域普通技術人員將理解到,本發明不受前述示例細節限制,而是將由所附申請專利範圍所限定。
1600‧‧‧方法
1605-1610‧‧‧步驟
Claims (27)
- 一種網路設備的重寫引擎之方法,所述方法包括:通用化一封包之各協定標頭,其是根據該協定標頭之一通用格式而進行,其中各已通用化的協定標頭包括一位元向量,所述位元向量具有針對無效欄位而被標示為0的位元和針對有效欄位而被標示為1的位元;以及使用來自一通用命令集合中的至少一個命令修改至少一個已通用化的協定標頭,所述通用命令集合是儲存在網路交換機的一記憶體中。
- 如申請專利範圍第1項所述的方法,其中所述通用格式包括所述協定的所有可能欄位,其中無論所述協定標頭對應於所述協定的哪個變體,所述欄位中的每個欄位都具有相同偏移。
- 如申請專利範圍第1項所述的方法,其中所述位元向量包括所述已通用化的協定標頭的每個位元組之每位元組的位元。
- 如申請專利範圍第1項所述的方法,其中所述至少一個已通用化的協定標頭的所述修改是基於所述網路交換機的一傳出埠的出口埠類型。
- 如申請專利範圍第1項所述的方法,其中所述至少一個已通用化的協定標頭的所述修改係導致所述位元向量被更新。
- 如申請專利範圍第5項所述的方法,進一步包括對所述位元向量和已更新的位元向量執行一XOR操作,以確定有多少位元被改變。
- 如申請專利範圍第1項所述的方法,其中所述通用命令集合係用以修改一協定的一第一變體的一封包標頭,及修改所述協定的一第二變體的一封包標頭。
- 如申請專利範圍第1項所述的方法,其中使用所述通用命令集合來修改一第一協定的一封包標頭,及修改一第二協定的一封包標頭。
- 一種網路交換機的方法,所述方法包括:在所述網路交換機的一記憶體中維持一通用命令集合;在所述網路交換機的一傳入埠處接收一封包;通用化所述封包的每個協定標頭,其是根據所述協定標頭之一通用格式而進行,其中每個已通用化的協定標頭包括一位元向量,所述位元向量具有針對無效欄位而被標示為0的位元和針對有效欄位而被標示為1的位元;藉由對所述已通用化的協定標頭中至少其一應用來自所述通用命令集合的至少一個命令來修改所述已通用化的協定標頭,藉此更新所述位元向量;基於已更新的位元向量來形成一新協定標頭;以及經由所述網路交換機的一傳出埠發送具有所述新協定標頭的所述封包。
- 如申請專利範圍第9項所述的方法,其中在所述通用命令集合中的每個通用命令係表現為軟體程式化之一微代碼。
- 如申請專利範圍第9項所述的方法,其中所述通用命令集合包括一刪除(Delete)命令,其中所述刪除命令的參數包括起始(Start)和大小(Size)。
- 如申請專利範圍第11項所述的方法,其中所述刪除命令是藉由將所述位元向量中與所述已通用化的協定標頭內從起始(Start)位置起的Size個位元組對應的位元標示為0來刪除這些位元組。
- 如申請專利範圍第9項所述的方法,其中所述通用命令集合包括複製(Copy)命令,其中所述複製命令的參數包括來源(Source)、來源偏移(SourceOffset)、大小(Size)、目的地偏移(DestinationOffset)、位元掩碼(Bitmask)、複製常數位元掩碼(copyConstantBitMask)和複製常數資料(copyConstantData)。
- 如申請專利範圍第13項所述的方法,其中所述複製命令是從所述已通用化的協定標頭的來源(Source)的來源偏移(SourceOffset)複製Size個位元組的資料到目的地偏移(DestinationOffset)。
- 如申請專利範圍第13項所述的方法,其中所述複製命令是使用掩碼(Bitmask)進行位元掩碼操作。
- 如申請專利範圍第13項所述的方法,其中當複製常數位元掩碼(copyConstantBitMask)在一位元位置處包含“1” 時,來自複製常數資料(copyConstantData)中的一對應定位處之一位元組即被複製到在一對應定位處之所述已通用化的協定標頭中。
- 如申請專利範圍第13項所述的方法,其中複製常數資料(copyConstantData)是被儲存在所述記憶體中並且由軟體定義。
- 如申請專利範圍第13項所述的方法,其中對應的目的地位元組的有效性係與在來源(Source)中的資料的有效性有關,其中表示所述位元向量中無效位元組的位元是被標示為0,且表示所述位元向量中有效位元組的位元是被標示為1。
- 如申請專利範圍第9項所述的方法,其中所述通用命令集合包括一移動(Move)命令,其中所述移動命令的參數包括起始偏移(StartOffset)、目的地偏移(DestinationOffset)和大小(Size)。
- 如申請專利範圍第19項所述的方法,其中所述移動命令將所述通用化的協定標頭內的Size個位元組從起始偏移(StartOffset)移動到目的地偏移(DestinationOffset)。
- 如申請專利範圍第19項所述的方法,其中對應的目的地位元組的有效性係與在來源(Source)中的資料的有效性有關,其中對應的來源位元組變成無效,其中表示所述位元向量中無效位元組的位元被標示為0,且表示所述位元向量中有效位元組的位元被標示為1。
- 如申請專利範圍第9項所述的方法,其中使每個協定標頭通用化包括:從所述封包的所述協定標頭中偵測缺失欄位;以及基於所述偵測,藉由包括所述缺失欄位來將所述協定標頭擴展成所述通用格式。
- 如申請專利範圍第22項所述的方法,進一步包括:在發送具有所述新協定標頭的所述封包之前,計數針對執行的所有操作而添加或者刪除的位元組的數目。
- 一種網路交換機,包括:一輸入埠和一輸出埠,用於接收和發送封包;一記憶體,用於儲存一通用命令集合,其中所述通用命令集合係用於標頭修改,而與傳入的標頭無關;以及一重寫引擎,用於處理所述封包,以使各所述封包的每個協定標頭通用化,以供藉由使用來自所述通用命令集合的至少一個命令來進行修改。
- 如申請專利範圍第24項所述的網路交換機,其中每個協定標頭是根據一對應協定特有的軟體定義映射中的其中一個而被通用化。
- 如申請專利範圍第24項所述的網路交換機,其中每個已通用化的協定標頭包括一位元向量,所述位元向量具有針對無效位元組而被標示為0的位元和針對有效位元組而被標示為1的位元。
- 如申請專利範圍第24項所述的網路交換機,其中所述通用命令集合包括一刪除(Delete)命令、一複製(Copy)命令和一移動(Move)命令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/309,650 US9531848B2 (en) | 2014-06-19 | 2014-06-19 | Method of using generic modification instructions to enable flexible modifications of packets and an apparatus thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201605207A true TW201605207A (zh) | 2016-02-01 |
Family
ID=53541502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104111753A TW201605207A (zh) | 2014-06-19 | 2015-04-13 | 使用通用修改指令進行封包靈活修改方法及裝置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9531848B2 (zh) |
EP (1) | EP2958286B1 (zh) |
JP (1) | JP6594672B2 (zh) |
KR (1) | KR102368166B1 (zh) |
CN (1) | CN105282136B (zh) |
HK (1) | HK1220835A1 (zh) |
TW (1) | TW201605207A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110471776B (zh) * | 2019-06-27 | 2022-02-08 | 浙江口碑网络技术有限公司 | 应用数据通信方法、装置及系统 |
Family Cites Families (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805808A (en) | 1991-12-27 | 1998-09-08 | Digital Equipment Corporation | Real time parser for data packets in a communications network |
US5793954A (en) * | 1995-12-20 | 1998-08-11 | Nb Networks | System and method for general purpose network analysis |
US6088356A (en) | 1997-06-30 | 2000-07-11 | Sun Microsystems, Inc. | System and method for a multi-layer network element |
US6341129B1 (en) | 1998-04-03 | 2002-01-22 | Alteon Networks, Inc. | TCP resegmentation |
US7333484B2 (en) | 1998-08-07 | 2008-02-19 | Intel Corporation | Services processor having a packet editing unit |
FI106504B (fi) | 1998-10-06 | 2001-02-15 | Nokia Networks Oy | Datan segmentointimenetelmä tietoliikennejärjestelmässä |
US6356951B1 (en) * | 1999-03-01 | 2002-03-12 | Sun Microsystems, Inc. | System for parsing a packet for conformity with a predetermined protocol using mask and comparison values included in a parsing instruction |
US6789116B1 (en) | 1999-06-30 | 2004-09-07 | Hi/Fn, Inc. | State processor for pattern matching in a network monitor device |
AU1555501A (en) | 1999-12-02 | 2001-06-12 | Matsushita Electric Industrial Co., Ltd. | Optical disc medium, recording method thereof and recorder |
JP3613102B2 (ja) | 1999-12-14 | 2005-01-26 | 日本電気株式会社 | フレーム構成方法、フレーム構成装置およびフレーム構成転送システム |
JP4099930B2 (ja) | 2000-06-02 | 2008-06-11 | 株式会社日立製作所 | ルータ装置及びvpn識別情報の設定方法 |
GB0023169D0 (en) | 2000-09-20 | 2000-11-01 | Ibm | Message parsing in message processing systems |
EP1348290B1 (en) * | 2000-10-11 | 2007-09-05 | Broadcom Corporation | Method for dynamically mixing header suppression techniques |
US6904057B2 (en) | 2001-05-04 | 2005-06-07 | Slt Logic Llc | Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification |
US6944168B2 (en) * | 2001-05-04 | 2005-09-13 | Slt Logic Llc | System and method for providing transformation of multi-protocol packets in a data stream |
JP4460195B2 (ja) * | 2001-08-06 | 2010-05-12 | 株式会社日立製作所 | パケット転送装置およびルーティング制御装置 |
US20030037154A1 (en) * | 2001-08-16 | 2003-02-20 | Poggio Andrew A. | Protocol processor |
US7580408B2 (en) | 2001-11-21 | 2009-08-25 | Alcatel Lucent | Configurable packet processor |
US7236501B1 (en) | 2002-03-22 | 2007-06-26 | Juniper Networks, Inc. | Systems and methods for handling packet fragmentation |
US7187694B1 (en) | 2002-03-29 | 2007-03-06 | Pmc-Sierra, Inc. | Generic packet parser |
JP2003308206A (ja) | 2002-04-15 | 2003-10-31 | Fujitsu Ltd | プロセッサ装置 |
US20050232303A1 (en) | 2002-04-26 | 2005-10-20 | Koen Deforche | Efficient packet processing pipeline device and method |
US7408957B2 (en) | 2002-06-13 | 2008-08-05 | International Business Machines Corporation | Selective header field dispatch in a network processing system |
US7415596B2 (en) | 2003-01-24 | 2008-08-19 | Gigafin Networks, Inc. | Parser table/production rule table configuration using CAM and SRAM |
US20050281281A1 (en) | 2003-01-24 | 2005-12-22 | Rajesh Nair | Port input buffer architecture |
US7706363B1 (en) | 2003-06-11 | 2010-04-27 | Radlan Computer Communications, Ltd | Method and apparatus for managing packets in a packet switched network |
GB0320957D0 (en) * | 2003-09-08 | 2003-10-08 | Qinetiq Ltd | Document authentication |
US7411957B2 (en) | 2004-03-26 | 2008-08-12 | Cisco Technology, Inc. | Hardware filtering support for denial-of-service attacks |
US7822032B1 (en) * | 2004-03-30 | 2010-10-26 | Extreme Networks, Inc. | Data structures for supporting packet data modification operations |
US7385984B2 (en) * | 2004-03-30 | 2008-06-10 | Extreme Networks, Inc. | Packet processing system architecture and method |
US7606263B1 (en) | 2004-03-30 | 2009-10-20 | Extreme Networks, Inc. | Packet parser |
US7568047B1 (en) | 2004-04-30 | 2009-07-28 | Nortel Networks Limited | Method and apparatus for adaptive service label management |
JP4392294B2 (ja) | 2004-06-15 | 2009-12-24 | 株式会社日立製作所 | 通信統計収集装置 |
JP4156568B2 (ja) | 2004-06-21 | 2008-09-24 | 富士通株式会社 | 通信システムの制御方法、通信制御装置、プログラム |
US7474619B2 (en) | 2004-07-22 | 2009-01-06 | International Business Machines Corporation | Method and apparatus for providing fragmentation at a transport level along a transmission path |
US7570661B2 (en) | 2005-06-14 | 2009-08-04 | Microsoft Corporation | Script-based parser |
US7603474B2 (en) | 2005-10-05 | 2009-10-13 | Microsoft Corporation | Efficient endpoint matching using a header-to-bit conversion table |
US9143585B2 (en) | 2006-07-07 | 2015-09-22 | Wi-Lan Inc. | Method and system for generic multiprotocol convergence over wireless air interface |
US7710959B2 (en) * | 2006-08-29 | 2010-05-04 | Cisco Technology, Inc. | Private VLAN edge across multiple switch modules |
CA2669932A1 (en) | 2006-12-19 | 2008-06-26 | International Business Machines Corporation | Apparatus and method for analysing a network flow |
US7822875B1 (en) | 2006-12-22 | 2010-10-26 | Marvell International Ltd. | Method for flexible modifications to a packet |
IL190134A (en) | 2007-03-12 | 2012-07-31 | Marvell Israel Misl Ltd | Method and system for determining the location of fields in information units |
US8825592B2 (en) | 2008-03-12 | 2014-09-02 | Web Access, Inc. | Systems and methods for extracting data from a document in an electronic format |
US7843919B2 (en) | 2008-03-20 | 2010-11-30 | International Business Machines Corporation | Ethernet virtualization using a network packet alteration |
KR101456563B1 (ko) | 2008-05-14 | 2014-10-31 | 삼성전자주식회사 | 멀티 홉 릴레이 환경에서 대역폭 할당 요청과 할당 방법 및시스템 |
US8234369B2 (en) | 2008-12-23 | 2012-07-31 | Verizon Patent And Licensing Inc. | Web page response monitoring |
WO2010075426A1 (en) * | 2008-12-23 | 2010-07-01 | Movik Networks | Transparent interaction with multi-layer protocols via selective bridging and proxying |
US8902886B2 (en) | 2009-04-23 | 2014-12-02 | International Business Machines Corporation | Canonicalization of network protocol headers |
US8111704B2 (en) | 2009-06-26 | 2012-02-07 | Intel Corporation | Multiple compression techniques for packetized information |
US9008082B2 (en) | 2009-12-07 | 2015-04-14 | Telefonaktiebolaget L M Ericsson (Publ) | Handling data packets received at a routing node |
CN101777791B (zh) * | 2009-12-18 | 2012-05-23 | 深圳市科陆电子科技股份有限公司 | 一种同时兼容多种电力负控系统通信协议的方法及其系统 |
US8472438B2 (en) | 2010-04-23 | 2013-06-25 | Telefonaktiebolaget L M Ericsson (Publ) | Efficient encapsulation of packets transmitted on a packet-pseudowire over a packet switched network |
US20130039278A1 (en) | 2010-05-03 | 2013-02-14 | Nokia Corporation | Protocol overhead reduction |
US8537815B2 (en) | 2010-06-17 | 2013-09-17 | Apple Inc. | Accelerating data routing |
US8705533B1 (en) | 2010-12-10 | 2014-04-22 | Juniper Networks, Inc. | Fast packet encapsulation using templates |
TW201246867A (en) | 2011-05-06 | 2012-11-16 | Ralink Technology Corp | Packet processing accelerator and method thereof |
US8711860B2 (en) | 2011-12-22 | 2014-04-29 | Telefonaktiebolaget L M Ericsson (Publ) | Controller for flexible and extensible flow processing in software-defined networks |
US8521905B2 (en) | 2011-12-22 | 2013-08-27 | Telefonaktiebolaget L M Ericsson (Publ) | System for flexible and extensible flow processing in software-defined networks |
US9282173B2 (en) | 2012-02-17 | 2016-03-08 | Viavi Solutions Inc. | Reconfigurable packet header parsing |
JP6186355B2 (ja) | 2012-10-17 | 2017-08-23 | サターン ライセンシング エルエルシーSaturn Licensing LLC | データ処理装置、データ処理方法、及び、プログラム |
EP2915287B1 (en) | 2012-10-30 | 2018-12-05 | Viavi Solutions Inc. | Method and system for identifying matching packets |
US9219694B2 (en) | 2013-03-15 | 2015-12-22 | Wisconsin Alumni Research Foundation | Content addressable memory with reduced power consumption |
US9769701B2 (en) | 2013-06-14 | 2017-09-19 | Texas Instruments Incorporated | Header compression for wireless backhaul systems |
US9444914B2 (en) * | 2013-09-16 | 2016-09-13 | Annapurna Labs Ltd. | Configurable parser and a method for parsing information units |
US9628382B2 (en) | 2014-02-05 | 2017-04-18 | Intel Corporation | Reliable transport of ethernet packet data with wire-speed and packet data rate match |
-
2014
- 2014-06-19 US US14/309,650 patent/US9531848B2/en active Active
-
2015
- 2015-04-13 TW TW104111753A patent/TW201605207A/zh unknown
- 2015-05-25 CN CN201510272670.3A patent/CN105282136B/zh active Active
- 2015-06-15 KR KR1020150084526A patent/KR102368166B1/ko active IP Right Grant
- 2015-06-18 JP JP2015122561A patent/JP6594672B2/ja active Active
- 2015-06-19 EP EP15172917.5A patent/EP2958286B1/en active Active
-
2016
- 2016-07-26 HK HK16108894.2A patent/HK1220835A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
JP2016005283A (ja) | 2016-01-12 |
KR20150146406A (ko) | 2015-12-31 |
KR102368166B1 (ko) | 2022-02-25 |
EP2958286B1 (en) | 2019-05-01 |
HK1220835A1 (zh) | 2017-05-12 |
CN105282136A (zh) | 2016-01-27 |
EP2958286A1 (en) | 2015-12-23 |
JP6594672B2 (ja) | 2019-10-23 |
CN105282136B (zh) | 2020-05-05 |
US20150373159A1 (en) | 2015-12-24 |
US9531848B2 (en) | 2016-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201603537A (zh) | 使用連續位元組表示通用格式標頭之方法及裝置 | |
TW201611548A (zh) | 使用唯一封包識別字識別封包結構方法及裝置 | |
TW201603542A (zh) | 將封包拆分為個別層以供修改及在修改後將層智慧拼接在一起之方法及裝置 | |
US20240022652A1 (en) | A method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof | |
JP6590546B2 (ja) | パケットのコンテンツからハッシュ入力を形成する方法およびその装置 | |
TW201603535A (zh) | 修改封包為可進行可程式化修改之通用格式的方法及裝置 | |
TW201605207A (zh) | 使用通用修改指令進行封包靈活修改方法及裝置 |