TW201603537A - 使用連續位元組表示通用格式標頭之方法及裝置 - Google Patents
使用連續位元組表示通用格式標頭之方法及裝置 Download PDFInfo
- Publication number
- TW201603537A TW201603537A TW104111572A TW104111572A TW201603537A TW 201603537 A TW201603537 A TW 201603537A TW 104111572 A TW104111572 A TW 104111572A TW 104111572 A TW104111572 A TW 104111572A TW 201603537 A TW201603537 A TW 201603537A
- Authority
- TW
- Taiwan
- Prior art keywords
- header
- field
- packet
- protocol
- 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/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/324—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
-
- 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/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- 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]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公開涉及使用連續位元組來表示通用格式標頭的方法及其裝置。用於修改封包標頭的裝置的實施例涉及重寫引擎,重寫引擎以該協定特有的通用格式表示封包的每個協定標頭,以實現封包的可程式化修改,從而產生在修改封包標頭時的硬體和軟體靈活性。軟體在用於各種協定的硬體表中對通用格式進行程式化。重寫引擎能夠從協定標頭偵測缺失欄位並且能夠將協定標頭擴展成最大大小,使得協定標頭包含該協定的所有可能欄位。無論協定標頭對應於協定的哪個變體,欄位中的每個欄位都具有相同偏移。已擴展的協定標頭由獨立於協定標頭的大小的資料結構表示
Description
本發明涉及封包標頭修改。更具體地,本發明涉及一種使用連續位元組來表示通用格式標頭的方法及其裝置。
網路封包經由網際網路使用的協定、例如傳輸控制協定/網際協定/乙太網協定(TCP/IP/乙太網)承載資料。典型交換機能夠在向目的地或者向另一交換機發送出封包之前修改傳入封包的各種欄位。出於各種原因而修改傳入封包,例如封包將被轉發到何處、目的地支援的協定、封包的優先順序、協定標頭的傳入格式等。由於網路通訊協定正在演變,協定標頭的一個或者多個欄位可以是可任選的,這使交換機的硬體變複雜,因為在協定標頭內的給定的欄位可能不總是處於固定的偏移。
在封包的修改期間,現有技術的交換機線性地處理封包中的每個協定層。這樣的處理會產生與網路有關的性能問題,包括時延,這可能使實現方式過度提供處理資源。
用於修改封包標頭的裝置的實施例涉及重寫引擎,重寫引擎以該協定特有的通用格式表示封包的每個協定標頭,以實現封包的可程式化修改,從而產生在修改封包標頭時的硬體和軟體靈活性。軟體在用於各種協定的硬體表中對通用格式進行程式化。重寫引擎能夠從協定標頭偵測缺失欄位並且能夠將協定標頭擴展成最大大小,使得協定標頭包含該協定的所有可能欄位。無論協定標頭對應於協定的哪個變體,欄位中的每個欄位都具有相同偏移。擴展的協定標頭由獨立於協定標頭的大小的資料結構表示。
在一個方面中,提供一種重寫引擎的方法。該方法包括從傳入封包的協定標頭偵測缺失欄位。基於偵測,該方法也包括將協定標頭擴展成用於對應協定的通用格式。通用格式包括對應協定可以具有的所有可能欄位。該方法也包括針對擴展的協定標頭維持資料結構。資料結構包括第一欄位和第二欄位,其中第一欄位指示從擴展的協定標頭的開始起的連續有效位元組的數目,而第二欄位是指示在擴展的協定標頭中的連續有效位元組之後的每個位元組的有效性的位元向量。
在一些實施例中,維持資料結構包括:針對在連續有效位元組之後的每個無效欄位的每個位元組,將位元向量的位元標示為不可用,以及針對在連續有效位元組之後的每個有效欄位的每個位元組,將位元向量的位元標示為可用。
在另一方面中,提供一種表示擴展的協定標頭的方
法。該方法包括取得擴展的協定標頭。擴展的協定標頭是根據用於對應協定的通用格式而被通用化的傳入封包的協定標頭。
在一些實施例中,重寫引擎通過從協定標頭偵測缺失欄位以及基於偵測根據通用格式擴展協定標頭來使協定標頭通用化。
在一些實施例中,通用格式包括協定的所有可能欄位,其中無論協定標頭對應於協定的哪個變體,欄位中的每個欄位都具有相同偏移。
該方法也包括維持擴展的協定標頭的表示。表示是包括第一欄位和第二欄位的資料結構。在一些實施例中,第一欄位是連續_位元組(continuous_byte)欄位,而第二欄位是位元向量(bitvector)欄位。
該方法也包括:將第一欄位設置成從已擴展的協定標頭的開始起的連續有效位元組的數目,針對在連續有效位元組之後的每個無效欄位的每個位元組將第二欄位的位元標示為不可用,其中每個無效欄位是在傳入封包的協定標頭中不存在的欄位,以及針對在連續有效位元組之後的每個有效欄位的每個位元組將第二欄位的位元標示為可用,其中每個有效欄位是在傳入封包的協定標頭中存在的欄位。
在又一方面中,提供一種網路交換機的方法。該方法包括:在網路交換機的傳入埠處接收封包,以及根據用於對應協定的通用格式來使封包的協定標頭通用化。
在一些實施例中,網路交換機包括被配置為使協定
標頭通用化的重寫引擎。
在一些實施例中,使協定標頭通用化包括:重寫引擎從封包的協定標頭偵測缺失欄位;以及基於偵測,重寫引擎將協定標頭擴展成通用格式。
該方法也包括在獨立於協定標頭的大小的資料結構中表示已通用化的協定標頭。在一些實施例中,資料結構包括連續_位元組(continuous_byte)欄位和位元向量(bitvector)欄位,其中連續_位元組(continuous_byte)欄位表示從協定標頭的開始起的連續有效位元組的數目,而位元向量(bitvector)欄位是協定標頭的每位元組的位元表示。
在一些實施例中,該方法還包括:通過向已通用化的協定標頭應用至少一個命令來修改已通用化的協定標頭,移除修改的協定標頭的所有無效位元組以形成新標頭,以及經由網路交換機的傳出埠發送出具有新標頭的封包。在一些實施例中,修改協定標頭包括基於傳出埠的出口埠類型向命令表進行索引以確定至少一個命令。
在一些實施例中,該方法還包括從已通用化的協定標頭擷取至少一個欄位。
在一些實施例中,該方法在接收傳入封包之前還包括:允許協定的通用格式的由軟體定義的映射;以及在網路交換機的記憶體中儲存由軟體定義的映射。
在又一方面中,提供一種網路交換機。網路交換機包括:輸入埠和輸出埠,用於接收和發送封包;記憶體,用於儲存協定的通用格式的由軟體定義的映射的集合;以及重
寫引擎,對封包執行標頭通用化程式以根據對應協定特有的由軟體定義的映射之一來使封包中的每個封包的每個協定標頭通用化。通常,在獨立於協定標頭的大小的資料結構中表示已通用化的協定標頭。
可以在協定的不同變體上使用標頭通用化程式。相似地,可以在不同協定上使用標頭通用化程式。
在一些實施例中,在封包中的每個封包由重寫引擎處理之後,封包包括規範化的協定層。規範化的協定層中的每個規範化的協定層是根據該協定的對應通用格式擴展的協定層。在一些實施例中,資料結構包括連續_位元組(continuous_byte)欄位和位元向量(bitvector)欄位,其中連續_位元組(continuous_byte)欄位表示從協定標頭的開始起的連續有效位元組的數目,而位元向量(bitvector)欄位是協定標頭的每位元組的位元表示。
在一些實施例中,重寫引擎是靈活的並且在可程式化基礎上操作。重寫引擎基於輸出埠的出口埠類型向命令表進行索引,命令表向重寫引擎告知將向每個封包的每個標頭應用的一個或者多個命令。記憶體儲存命令集合,其中在命令集合中包括該一個或者多個命令。
在一些實施例中,網路交換機也包括解析器引擎。解析器引擎識別封包的內容。解析器引擎是靈活的並且在可程式化基礎上操作。
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,經由網路交換機的傳出埠發送出具有新協定標頭的封包。
本領域普通技術人員將認識到,也存在其它使用和
優點。儘管已經參照許多具體細節描述本發明,但是本領域普通技術人員將認識到,可以在其它具體形式中體現本發明而不脫離本發明的精神實質。因此,本領域普通技術人員將理解到,本發明不受前述示例細節限制,而是將由所附申請專利範圍所限定。
1500‧‧‧方法
1505-1515‧‧‧步驟
Claims (25)
- 一種重寫引擎的方法,所述方法包括:從一傳入封包的一協定標頭偵測缺失欄位;基於所述偵測,將所述協定標頭擴展成一對應協定之一通用格式,其中所述通用格式包括所述對應協定可以具有的所有可能欄位;以及為已擴展的協定標頭維持一資料結構,其中所述資料結構包括一第一欄位和一第二欄位,其中所述第一欄位指示從所述已擴展的協定標頭的開始起的連續有效位元組的數目,並且所述第二欄位是指示在所述擴展的協定標頭中的所述連續有效位元組之後的每個位元組的有效性的位元向量。
- 如申請專利範圍第1項所述的方法,其中維持資料結構包括:針對在所述連續有效位元組之後的每個無效欄位的每個位元組,將所述位元向量的位元標示為不可用,以及針對在所述連續有效位元組之後的每個有效欄位的每個位元組,將所述位元向量的位元標示為可用。
- 一種表示已擴展的協定標頭的方法,所述方法包括:取得所述已擴展的協定標頭,其中所述已擴展的協定標頭是一傳入封包的一協定標頭,其係根據所述對應協定之一通用格式而被通用化;維持所述已擴展的協定標頭的一表示,其中所述表示是包括一第一欄位和一第二欄位之一資料結構; 將所述第一欄位設置成從所述已擴展的協定標頭的開始起的連續有效位元組的數目;以及針對在所述連續有效位元組之後的每個無效欄位的每個位元組,將所述第二欄位的位元標示為不可用,其中每個無效欄位是在所述傳入封包的所述協定標頭中不存在的欄位;以及針對在所述連續有效位元組之後的每個有效欄位的每個位元組,將所述第二欄位的位元標示為可用,其中每個有效欄位是在所述傳入封包的所述協定標頭中存在的欄位。
- 如申請專利範圍第3項所述的方法,其中所述第一欄位是一連續_位元組(continuous_byte)欄位,並且所述第二欄位是一位元向量(bitvector)欄位。
- 如申請專利範圍第3項所述的方法,其中一重寫引擎係藉由從所述協定標頭偵測缺失欄位並且基於所述偵測根據所述通用格式擴展所述協定標頭而通用化所述協定標頭。
- 如申請專利範圍第3項所述的方法,其中所述通用格式包括所述協定的所有可能欄位,其中無論所述協定標頭對應於所述協定的哪個變體,所述欄位中的每個欄位都具有相同偏移。
- 一種網路交換機的方法,所述方法包括:在所述網路交換機的一傳入埠處接收一封包; 根據一對應協定之通用格式來使所述封包的一協定標頭通用化;以及在獨立於所述協定標頭的大小的一資料結構中表示已通用化的協定標頭。
- 如申請專利範圍第7項所述的方法,其中所述網路交換機包括一重寫引擎,其係配置以使所述協定標頭通用化。
- 如申請專利範圍第8項所述的方法,其中使所述協定標頭通用化包括:所述重寫引擎從所述封包的所述協定標頭偵測缺失欄位;以及基於所述偵測,所述重寫引擎將所述協定標頭擴展成所述通用格式。
- 如申請專利範圍第7項所述的方法,其中所述資料結構包括一連續_位元組(continuous_byte)欄位和一位元向量(bitvector)欄位,其中所述連續_位元組欄位表示從所述協定標頭的開始起的連續有效位元組的數目,並且所述位元向量欄位是所述協定標頭的每位元組的位元表示。
- 如申請專利範圍第7項所述的方法,還包括:通過向所述已通用化的協定標頭應用至少一個命令來修改所述已通用化的協定標頭;移除經修改的協定標頭的所有無效位元組以形成一新標頭;以及 經由所述網路交換機的一傳出埠發送出具有所述新標頭的所述封包。
- 如申請專利範圍第11項所述的方法,其中修改所述協定標頭包括:基於所述傳出埠的出口埠類型,向一命令表進行索引以確定所述至少一個命令。
- 如申請專利範圍第7項所述的方法,進一步包括:從所述已通用化的協定標頭中擷取至少一個欄位。
- 如申請專利範圍第7項所述的方法,進一步包括:在接收一傳入封包之前,允許協定通用格式之軟體定義之映射;以及在所述網路交換機的一記憶體中儲存所述由軟體定義之映射。
- 一種網路交換機,包括:一輸入埠和一輸出埠,用於接收和發送封包;一記憶體,用於儲存協定通用格式之一軟體定義之映射之集合;以及一重寫引擎,其對所述封包執行一標頭通用化程式,以根據所述對應協定特有的所述軟體定義之映射中其一來使所述封包中的每個封包的每個協定標頭通用化,其中在獨立於所述協定標頭的大小的一資料結構中表示所述已通用化的協定標頭。
- 如申請專利範圍第15項所述的網路交換機,其中所述標頭通用化程式係用於一協定的不同變體上。
- 如申請專利範圍第15項所述的網路交換機,其中所述標頭通用化程式係使用於不同協定上。
- 如申請專利範圍第15項所述的網路交換機,其中在所述重寫引擎處理各所述封包之後,所述封包包括規範化之協定層。
- 如申請專利範圍第18項所述的網路交換機,其中各所述規範化之協定層是根據該協定的對應通用格式而擴展的一協定層。
- 如申請專利範圍第15項所述的網路交換機,其中所述資料結構包括一連續_位元組(continuous_byte)欄位和一位元向量(bitvector)欄位,其中所述連續_位元組欄位表示從所述協定標頭的開始起的連續有效位元組的數目,並且所述位元向量欄位是所述協定標頭的每位元組的位元表示。
- 如申請專利範圍第15項所述的網路交換機,其中所述重寫引擎是靈活的並且以一可程式化基礎操作。
- 如申請專利範圍第15項所述的網路交換機,其中所述重寫引擎基於所述輸出埠的一出口埠類型(portType)對一命令表進行索引,所述命令表告知所述重寫引擎將應用至每個封包的每個標頭之一或多個命令。
- 如申請專利範圍第22項所述的網路交換機,其中所述記憶體儲存一命令集合,其中在所述命令集合中包括所述一或多個命令。
- 如申請專利範圍第15項所述的網路交換機,進一步包括一解析器引擎,其中所述解析器引擎識別所述封包的內容。
- 如申請專利範圍第24項所述的網路交換機,其中所述解析器引擎是靈活的並且以一可程式化基礎操作。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/309,619 US9473601B2 (en) | 2014-06-19 | 2014-06-19 | Method of representing a generic format header using continuous bytes and an apparatus thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201603537A true TW201603537A (zh) | 2016-01-16 |
Family
ID=54870781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104111572A TW201603537A (zh) | 2014-06-19 | 2015-04-10 | 使用連續位元組表示通用格式標頭之方法及裝置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9473601B2 (zh) |
CN (1) | CN105207984B (zh) |
HK (1) | HK1219186A1 (zh) |
TW (1) | TW201603537A (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101832782B1 (ko) * | 2014-07-07 | 2018-02-27 | 엘지전자 주식회사 | 하이브리드 방송 신호 송수신 장치 및 송수신 방법 |
CN108881124B (zh) * | 2017-05-15 | 2021-02-02 | 武汉斗鱼网络科技有限公司 | 在模块间实现高性能通信的方法、***、存储介质及设备 |
CN109246150A (zh) * | 2018-11-02 | 2019-01-18 | 唐山华洋自动化有限公司 | 基于移动互联网的监测设备数据传输协议远程控制*** |
CN111953604B (zh) * | 2019-05-17 | 2023-07-18 | 华为技术有限公司 | 一种为业务流提供业务服务的方法和装置 |
CN111770055A (zh) * | 2020-05-29 | 2020-10-13 | 宁波三星医疗电气股份有限公司 | 一种应用于电能表的多协议通讯帧快速判别方法 |
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 |
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 |
US6330251B1 (en) * | 1998-05-30 | 2001-12-11 | Alcatel Canada Inc. | Method and apparatus for data extraction from a bit stream |
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ä |
US6789116B1 (en) | 1999-06-30 | 2004-09-07 | Hi/Fn, Inc. | State processor for pattern matching in a network monitor device |
US7038993B2 (en) | 1999-12-02 | 2006-05-02 | Matsushita Electric Industrial Co., Ltd. | Optical disc medium having a plurality of sector groups, a recording method thereof and recorder |
JP3613102B2 (ja) | 1999-12-14 | 2005-01-26 | 日本電気株式会社 | フレーム構成方法、フレーム構成装置およびフレーム構成転送システム |
US6591310B1 (en) * | 2000-05-11 | 2003-07-08 | Lsi Logic Corporation | Method of responding to I/O request and associated reply descriptor |
JP4099930B2 (ja) | 2000-06-02 | 2008-06-11 | 株式会社日立製作所 | ルータ装置及びvpn識別情報の設定方法 |
GB0023169D0 (en) | 2000-09-20 | 2000-11-01 | Ibm | Message parsing in message processing systems |
US6898647B2 (en) * | 2001-04-02 | 2005-05-24 | Redback Networks Inc. | Parallel byte processing engines shared among multiple data channels |
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 |
US6904057B2 (en) | 2001-05-04 | 2005-06-07 | Slt Logic Llc | Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification |
US7277957B2 (en) * | 2001-07-17 | 2007-10-02 | Mcafee, Inc. | Method of reconstructing network communications |
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 |
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 |
US7522516B1 (en) | 2004-03-30 | 2009-04-21 | Extreme Networks, Inc. | Exception handling system for packet processing system |
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 |
KR20060053425A (ko) * | 2004-11-15 | 2006-05-22 | 엘지전자 주식회사 | 데이터 스트림내의 픽처 데이터의 기록구간을 지정하고이를 이용하는 방법 및 장치 |
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 |
CN101563908B (zh) | 2006-12-19 | 2013-01-09 | 国际商业机器公司 | 分析网络流的装置和方法 |
US7822875B1 (en) | 2006-12-22 | 2010-10-26 | Marvell International Ltd. | Method for flexible modifications to a packet |
US7978700B2 (en) | 2007-03-12 | 2011-07-12 | Marvell Israel (Misl) Ltd. | Apparatus for determining locations of fields in a data unit |
CN101286215A (zh) * | 2008-02-22 | 2008-10-15 | 山东中创软件工程股份有限公司 | 同时支持人工流和自动流的工作流引擎 |
CN101237419A (zh) * | 2008-03-07 | 2008-08-06 | 北京航管科技有限公司 | 航空电信网空地通信中的报头压缩方法 |
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 | 삼성전자주식회사 | 멀티 홉 릴레이 환경에서 대역폭 할당 요청과 할당 방법 및시스템 |
US8040807B2 (en) * | 2008-09-05 | 2011-10-18 | Cisco Technology, Inc. | QoS on bonded channels of a shared access cable network |
US8234369B2 (en) | 2008-12-23 | 2012-07-31 | Verizon Patent And Licensing Inc. | Web page response monitoring |
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 |
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 |
WO2011139266A1 (en) * | 2010-05-03 | 2011-11-10 | 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 |
EP2676477B1 (en) * | 2011-02-14 | 2019-01-09 | Telefonaktiebolaget LM Ericsson (publ) | Backwards-compatible approach to fields of a protocol layer |
TW201246867A (en) | 2011-05-06 | 2012-11-16 | Ralink Technology Corp | Packet processing accelerator and method thereof |
US8645763B2 (en) * | 2011-09-12 | 2014-02-04 | Microsoft Corporation | Memory dump with expanded data and user privacy protection |
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 |
HUE034267T2 (en) * | 2012-10-17 | 2018-02-28 | Sony Corp | Data processing equipment, data processing method and program |
WO2014070883A2 (en) * | 2012-10-30 | 2014-05-08 | Jds Uniphase Corporation | 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,619 patent/US9473601B2/en active Active
-
2015
- 2015-04-10 TW TW104111572A patent/TW201603537A/zh unknown
- 2015-05-25 CN CN201510272436.0A patent/CN105207984B/zh active Active
-
2016
- 2016-06-21 HK HK16107161.0A patent/HK1219186A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN105207984A (zh) | 2015-12-30 |
US20150373169A1 (en) | 2015-12-24 |
CN105207984B (zh) | 2021-03-16 |
HK1219186A1 (zh) | 2017-03-24 |
US9473601B2 (en) | 2016-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201603537A (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 | |
TW201611548A (zh) | 使用唯一封包識別字識別封包結構方法及裝置 | |
JP6590546B2 (ja) | パケットのコンテンツからハッシュ入力を形成する方法およびその装置 | |
TW201603542A (zh) | 將封包拆分為個別層以供修改及在修改後將層智慧拼接在一起之方法及裝置 | |
TW201603535A (zh) | 修改封包為可進行可程式化修改之通用格式的方法及裝置 | |
TW201605207A (zh) | 使用通用修改指令進行封包靈活修改方法及裝置 |