TWI664843B - 使用位元向量進行封包內標頭層擴展塌縮方法及裝置 - Google Patents
使用位元向量進行封包內標頭層擴展塌縮方法及裝置 Download PDFInfo
- Publication number
- TWI664843B TWI664843B TW104111755A TW104111755A TWI664843B TW I664843 B TWI664843 B TW I664843B TW 104111755 A TW104111755 A TW 104111755A TW 104111755 A TW104111755 A TW 104111755A TW I664843 B TWI664843 B TW I664843B
- Authority
- TW
- Taiwan
- Prior art keywords
- bit vector
- header
- protocol header
- layer
- packet
- 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
- 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/04—Protocols for data compression, e.g. ROHC
-
- 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/08—Protocols for interworking; Protocol conversion
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本發明涉及允許標頭層的擴展和塌縮以實現靈活修改的方法及其裝置。用於修改封包標頭的裝置的實施例涉及使用位元向量來允許封包內的協定標頭的擴展和塌縮,以進行靈活修改。重寫引擎將每個協定標頭擴展成通用格式並且應用各種命令來修改已通用化的協定標頭。重寫引擎維持已通用化的協定標頭之位元向量,其中在位元向量中的每個位元表示已通用化的協定標頭的一個位元組。在位元向量中被標示為0的位元對應於無效位元組,而在位元向量中被標示為1的位元對應於有效位元組。重寫引擎使用位元向量來移除在已經對已通用化的協定標頭操作所有命令之後的所有無效位元組,以由此形成新協定標頭。
Description
本發明涉及封包標頭修改。更具體地,本發明涉及一種使用位元向量來允許封包內的標頭層的擴展和塌縮以實現靈活修改的方法及其裝置。
網路封包經由網際網路使用的協定、比如傳輸控制協定/網際協定/乙太網協定(TCP/IP/乙太網)承載資料。典型交換機能夠在向目的地或者向另一交換機發送出封包之前修改傳入的封包的各種欄位。出於各種原因而修改傳入的封包,比如封包將被轉發到何處、目的地支援的協定、封包的優先順序、協定標頭的傳入格式等。由於網路通訊協定正在演變,協定標頭的一個或者多個欄位可以是可任選的,這使交換機的硬體變複雜,因為在協定標頭內的給定的欄位可能不總是處於固定的偏移。
在封包的修改期間,現有技術的交換機線性地處理
封包中的每個協定層。這樣的處理會產生與網路有關的性能問題,包括時延,這可能使實現方式過度提供處理資源。
用於修改封包標頭的裝置的實施例涉及使用位元向量來允許封包內的協定標頭的擴展和塌縮,以進行靈活修改。重寫引擎將每個協定標頭擴展成通用格式,並且應用各種命令來修改已通用化的協定標頭。重寫引擎針對已通用化的協定標頭維持位元向量,其中在位元向量中的每個位元表示已通用化的協定標頭的位元組。在位元向量中被標示為0的位元對應於無效位元組,而在位元向量中被標示為1的位元對應於有效位元組。重寫引擎使用位元向量來移除在已經對已通用化的協定標頭操作所有命令之後的所有無效位元組,以藉此形成新協定標頭。
在一個方面中,提供一種重寫引擎的方法。該方法包括針對已通用化的協定標頭維持位元向量。已通用化的協定標頭是被擴展成通用格式的封包的協定標頭。通用格式包括協定的所有可能欄位。無論協定標頭對應於協定的哪個變體,欄位中的每個欄位都具有相同偏移。位元向量包括已通用化的協定標頭的每個位元組之每位元組的位元。
該方法也包括基於對至少一個已通用化的協定標頭的修改來更新位元向量。在一些實施例中,修改使用來自在網路交換機的記憶體中儲存的通用命令集合的至少一個命令來修改至少一個已通用化的協定標頭。
該方法也包括使用已更新的位元向量來壓縮至少一
個已通用化的協定標頭。在一些實施例中,在使用已更新的位元向量之前,對位元向量和已更新的位元向量執行XOR操作以確定多少位元被改變,這使得重寫引擎能考慮被刪除和添加的位元組。
在另一方面中,提供一種網路交換機的方法。該方法包括在網路交換機的傳入埠處接收封包,並且根據封包的每個協定標頭之通用格式來使該協定標頭通用化。偵測封包的協定標頭的缺失欄位。基於偵測,藉由包含缺失欄位來將協定標頭擴展成通用格式。
該方法也包括針對每個已通用化的協定標頭維持位元向量。位元向量包括針對無效欄位而被標示為0的位元和針對有效欄位而被標示為1的位元。
該方法也包括:修改已通用化的協定標頭中的至少一個已通用化的協定標頭,藉此更新位元向量。在一些實施例中,修改使用來自在網路交換機的記憶體中儲存的通用命令集合的至少一個命令,來修改至少一個已通用化的協定標頭。在一些實施例中,對至少一個已通用化的協定標頭的修改是基於網路交換機的傳出埠的出口埠類型。
該方法也包括使已更新的位元向量塌縮。在一些實施例中,通過移位已更新的位元向量以移除在已更新的位元向量中被標示為0的每個位元,來使已更新的位元向量塌縮。
該方法也包括基於經塌縮的位元向量形成緊湊的協定標頭。經由網路交換機的傳出埠發送至少具有緊湊的協定標頭的封包。在一些實施例中,在發送封包之前,對針對執
行的所有操作而添加或者刪除的位元組的數目進行計數。
在又一方面中,提供一種網路交換機。網路交換機包括:輸入埠,用於接收封包;以及記憶體,儲存通用命令集合。通用命令集合被用於標頭修改,而與傳入標頭無關。在一些實施例中,通用命令集合包括刪除(Delete)命令、複製(Copy)命令和移動(Move)命令。
網路交換機也包括重寫引擎。重寫引擎使用位元向量以允許封包的協定標頭的擴展和塌縮,藉此,藉由使用通用命令集合來進行封包的靈活修改。
在一些實施例中,協定標頭中的每個協定標頭根據一對應協定特有的軟體定義映射中的一個映射而通用化。在一些實施例中,軟體定義映射是儲存在記憶體中。
每個已通用化的協定標頭包括位元向量,位元向量具有針對無效欄位而被標示為0的位元和針對有效欄位而被標示為1的位元。在一些實施例中,重寫引擎在已通用化的協定標頭被修改之後更新位元向量。在一些實施例中,重寫引擎移除在已更新的位元向量中被標示為0的每個位元,以使已更新的位元向量塌縮。新標頭基於經塌縮的位元向量而形成。
在一些實施例中,網路交換機也包括用於發送具有新標頭的封包的傳出埠。
在又一方面中,提供一種網路交換機。網路交換機包括用於接收封包的輸入埠,其中封包包括正文和協定標頭。網路交換機也包括用於發送經修改的封包的輸出埠。網路交
換機也包括用於儲存協定通用格式的軟體定義映射集合和通用修改命令集合的記憶體。通常,通用修改命令集合被用於標頭修改,而與傳入標頭無關。
網路交換機也包括重寫引擎。重寫引擎基於來自由軟體定義的映射的集合的軟體定義映射,將協定堆疊的每個協定標頭轉換成通用格式,並且針對每個經轉換的協定標頭維持位元向量。位元向量包括針對經轉換的協定標頭的每個位元組的每位元組的位元。位元向量包括針對經轉換的協定標頭的無效欄位而被標示為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,經由網路交換機的傳出埠發送出具有新協定標頭的封包。
本領域普通技術人員將認識到,也存在其它使用和優點。儘管已經參照許多具體細節描述本發明,但是本領域普通技術人員將認識到,可以在其它具體形式中體現本發明而不脫離本發明的精神實質。因此,本領域普通技術人員將理解到,本發明不受前述示例細節限制,而是將由所附申請專利範圍所限定。
Claims (25)
- 一種網路交換機的重寫引擎的方法,所述方法包括:維持一封包的一已通用化的協定標頭層之一位元向量,其中該位元向量包括複數個值,其各表示該已通用化的協定標頭層的不同部分;基於對該已通用化的協定標頭層的修改,藉由調整所述複數個值中的一或多個值來更新所述位元向量;以及基於已更新的位元向量的該複數個值,藉由移除該已通用化的協定標頭層中的欄位而使用已更新的位元向量來壓縮所述已通用化的協定標頭層。
- 一種網路設備的重寫引擎的方法,該方法包括:維持一封包的一已通用化的協定標頭層之一位元向量;基於對該已通用化的協定標頭層的修改來更新該位元向量;以及使用已更新的位元向量來壓縮所述已通用化的協定標頭層,其中該已通用化的協定標頭層是擴展為一通用格式的封包的一協定標頭層,且其中所述通用格式包括所述協定標頭層的一協定所支援的所有可能欄位,其中無論所述協定標頭層對應於所述協定的哪個變體,所述欄位中的每個欄位都具有相同偏移。
- 如申請專利範圍第1或2項所述的方法,其中所述位元向量包括所述已通用化的協定標頭層的每一個位元組之每位元組的位元。
- 如申請專利範圍第1或2項所述的方法,其中所述修改使用來自一通用命令集合中的至少一個命令來修改所述已通用化的協定標頭層,所述通用命令集合是儲存在所述網路交換機的一記憶體中。
- 一種網路設備的重寫引擎的方法,該方法包括:維持一已通用化的協定標頭之一位元向量;基於對至一個已通用化的協定標頭的修改來更新該位元向量;使用已更新的位元向量來壓縮所述已通用化的協定標頭;以及在使用所述已更新的位元向量之前,對所述位元向量和所述已更新的位元向量執行一XOR操作以確定有多少位元被改變。
- 一種網路交換機的重寫引擎的方法,所述方法包括:在所述網路交換機的一傳入埠處接收一封包,該封包具有包含複數個協定標頭層之一標頭;通用化所述封包的每一個所述協定標頭層,其是根據所述協定標頭層之一通用格式而進行,從而形成已通用化的協定標頭層;維持每一個所述已通用化的協定標頭層之一位元向量,其中所述位元向量包括複數個值,其各表示所述已通用化的協定標頭層的一不同部分,而且其中所述位元向量包括針對無效欄位而被標示為一第一值的位元和針對有效欄位而被標示為一第二值的位元;修改所述已通用化的協定標頭層中的至少一個已通用化的協定標頭層,並且更新與該至少一個已通用化的協定標頭層相關聯之所述位元向量,從而形成一已更新的位元向量;使該已更新的位元向量塌縮,形成一已壓縮的位元向量;以及基於該已壓縮的位元向量來形成一新協定標頭。
- 如申請專利範圍第6項所述的方法,其中通用化每一個所述協定標頭層包括:偵測所述封包的所述協定標頭層之缺失欄位;以及基於所述偵測,藉由包括所述缺失欄位來將所述協定標頭層擴展成所述通用格式。
- 如申請專利範圍第6項所述的方法,其中所述修改使用來自一通用命令集合中的至少一個命令來修改所述已通用化的協定標頭層中的至少一個已通用化的協定標頭層,所述通用命令集合是儲存在所述網路交換機的一記憶體中。
- 如申請專利範圍第6項所述的方法,其中所述已通用化的協定標頭層中的所述至少一個已通用化的協定標頭層的所述修改是基於所述網路交換機的所述傳出埠的出口埠類型(portType)。
- 一種網路交換機的重寫引擎的方法,該方法包括:在所述網路交換機的一傳入埠處接收一封包,該封包具有包含複數個協定標頭層之一標頭;通用化所述封包的每一個所述協定標頭層,其是根據所述協定標頭層之一通用格式而進行,從而形成已通用化的協定標頭層;維持每一個所述已通用化的協定標頭層之一位元向量,其中所述位元向量包括針對無效欄位而被標示為一第一值的位元和針對有效欄位而被標示為一第二值的位元;修改所述已通用化的協定標頭層中的至少一個已通用化的協定標頭層,並且更新所述位元向量,從而形成一已更新的位元向量;使該已更新的位元向量塌縮,形成一已壓縮的位元向量;以及基於該已壓縮的位元向量來形成一新協定標頭,其中使所述已更新的位元向量塌縮包括藉由移除在所述已更新的位元向量中被標示為該第一值的每個位元來移位所述已更新的位元向量。
- 如申請專利範圍第10項所述的方法,進一步包括:經由所述網路交換機的一傳出埠發送至少具有所述新協定標頭的所述封包。
- 一種網路交換機的重寫引擎的方法,該方法包括:在所述網路交換機的一傳入埠處接收一封包,該封包具有包含複數個協定標頭層之一標頭;通用化所述封包的每一個所述協定標頭層,其是根據所述協定標頭層之一通用格式而進行,從而形成已通用化的協定標頭層;維持每一個所述已通用化的協定標頭層之一位元向量,其中所述位元向量包括針對無效欄位而被標示為一第一值的位元和針對有效欄位而被標示為一第二值的位元;修改所述已通用化的協定標頭層中的至少一個已通用化的協定標頭層,並且更新所述位元向量,從而形成一已更新的位元向量;使該已更新的位元向量塌縮,形成一已壓縮的位元向量;以及基於該已壓縮的位元向量來形成一新協定標頭,其中在發送至少具有所述新協定標頭的所述封包之前,計數為執行的所有操作而添加或刪除的位元組數目。
- 一種網路交換機,包括:一輸入埠,用於接收一封包;一記憶體,其儲存一通用命令集合,其中所述通用命令集合被用於協定標頭層修改,與傳入的協定標頭層是哪種支援協定變體的變體無關;以及一重寫引擎,其使用位元向量以允許對所述封包的協定標頭層進行擴展和塌縮,藉此,藉由使用所述通用命令集合來進行所述封包的靈活修改,其中所述位元向量各包括複數個值,其各表示該位元向量所對應的一個所述協定標頭層的一不同部分。
- 如申請專利範圍第13項所述的網路交換機,其中所述通用命令集合包括一刪除(Delete)命令、一複製(Copy)命令和一移動(Move)命令。
- 如申請專利範圍第13項所述的網路交換機,其中各所述協定標頭層係根據該協定標頭層中的一協定特有的複數個軟體定義映射中的一個映射而通用化。
- 如申請專利範圍第13項所述的網路交換機,其中所述軟體定義映射是被儲存在所述記憶體中。
- 如申請專利範圍第15項所述的網路交換機,其中每個已通用化的協定標頭層包括一位元向量,所述位元向量具有針對無效欄位被標示為一第一值的位元和針對有效欄位被標示為一第二值的位元。
- 如申請專利範圍第17項所述的網路交換機,其中所述重寫引擎在所述已通用化的協定標頭層被修改之後更新所述位元向量。
- 如申請專利範圍第18項所述的網路交換機,其中所述重寫引擎藉由移除在所述已更新的位元向量中被標示為該第一值的每個位元,而使所述已更新的位元向量塌縮。
- 如申請專利範圍第19項所述的網路交換機,其中一新協定標頭層是基於所述已塌縮的位元向量而形成。
- 如申請專利範圍第19項所述的網路交換機,進一步包括一傳出埠,用於傳輸具有所述新協定標頭層的所述封包。
- 如申請專利範圍第13項所述的網路交換機,其中該重寫引擎係配置以擴展所述協定標頭層中的每一個協定標頭層為一通用格式,該通用格式係對應於所述協定標頭層中的一協定且包括由所述協定標頭層中的該協定所支援的所有欄位,其中所述欄位中的每一個欄位具有相同偏移,與該協定標頭層對應哪個協定變體無關。
- 一種網路交換機,包括:一輸入埠,用於接收封包,其中所述封包包括一正文和一標頭,該標頭具有形成一協定堆疊的複數個協定層;一輸出埠,用於傳輸已修改的封包;一記憶體,用以儲存一協定通用格式的軟體定義映射集合和一通用修改命令集合,其中所述通用修改命令集合是用於協定標頭層修改,而與傳入的協定標頭層是哪種支援協定變體的變體無關;以及一重寫引擎,用以:基於所述軟體定義映射集合中的一個映射,將所述協定堆疊的所述協定標頭層中的每一個協定標頭層轉換成一通用格式,從而形成經轉換的協定標頭層;維持所述經轉換的協定標頭層中的每一個經轉換的協定標頭層之一位元向量,其中所述位元向量中的每一個位元向量包括複數個值,其各表示所述位元向量所對應的一個所述經轉換的協定標頭層的一不同部分;使用所述通用修改命令集合來修改所述經轉換的協定標頭層中的每一個經轉換的協定標頭層的一或多個部分;基於對所述一或多個部分的所述修改,藉由調整該位元向量的所述複數個值中的一或多個值來更新所述位元向量的每一個位元向量,從而形成已更新的位元向量;使所述已更新的位元向量中的每一個位元向量塌縮為已壓縮的位元向量,並且基於所述已壓縮的位元向量形成新協定標頭,其中所述新協定標頭一起藉此形成一新協定堆疊;以及對所述新協定堆疊附加所述正文以經由所述輸出埠傳輸。
- 如申請專利範圍第23項所述的網路交換機,其中所述位元向量包括所述經轉換的協定標頭的每一個位元組之每位元組的位元。
- 如申請專利範圍第24項所述的網路交換機,其中所述位元向量包括針對所述經轉換的協定標頭的無效欄位而被標示為一第一值的位元、以及針對所述經轉換的協定標頭的有效欄位而被標示為一第二值的位元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/309,659 | 2014-06-19 | ||
US14/309,659 US9635146B2 (en) | 2014-06-19 | 2014-06-19 | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201613316A TW201613316A (en) | 2016-04-01 |
TWI664843B true TWI664843B (zh) | 2019-07-01 |
Family
ID=53541503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104111755A TWI664843B (zh) | 2014-06-19 | 2015-04-13 | 使用位元向量進行封包內標頭層擴展塌縮方法及裝置 |
Country Status (6)
Country | Link |
---|---|
US (4) | US9635146B2 (zh) |
EP (1) | EP2958287B1 (zh) |
KR (1) | KR102388450B1 (zh) |
CN (1) | CN105282033B (zh) |
HK (1) | HK1220827A1 (zh) |
TW (1) | TWI664843B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3385918B1 (en) * | 2017-04-06 | 2024-03-06 | Kapsch TrafficCom AG | Vehicle identification system and method |
US11284298B2 (en) * | 2019-10-11 | 2022-03-22 | Qualcomm Incorporated | Header compression and decompression management |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020163935A1 (en) * | 2001-05-04 | 2002-11-07 | Terago Communications, Inc. | System and method for providing transformation of multi-protocol packets in a data stream |
US20100329255A1 (en) * | 2009-06-26 | 2010-12-30 | Abhishek Singhal | Multiple Compression Techniques For Packetized Information |
US8705533B1 (en) * | 2010-12-10 | 2014-04-22 | Juniper Networks, Inc. | Fast packet encapsulation using templates |
Family Cites Families (153)
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 |
FI98027C (fi) * | 1995-01-10 | 1997-03-25 | Nokia Telecommunications Oy | Pakettiradiojärjestelmä ja päätelaitteisto pakettiradiojärjestelmää varten |
US5793954A (en) | 1995-12-20 | 1998-08-11 | Nb Networks | System and method for general purpose network analysis |
US5729712A (en) * | 1996-01-26 | 1998-03-17 | Unisys Corporation | Smart fill system for multiple cache network |
US6088356A (en) | 1997-06-30 | 2000-07-11 | Sun Microsystems, Inc. | System and method for a multi-layer network element |
US5951651A (en) | 1997-07-23 | 1999-09-14 | Lucent Technologies Inc. | Packet filter system using BITMAP vector of filter rules for routing packet through network |
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
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ä |
US6442169B1 (en) | 1998-11-20 | 2002-08-27 | Level 3 Communications, Inc. | System and method for bypassing data from egress facilities |
JP2000196672A (ja) | 1998-12-28 | 2000-07-14 | Toshiba Corp | ネットワ―ク間中継装置 |
JP2000253061A (ja) | 1999-03-01 | 2000-09-14 | Hitachi Ltd | データ配送方法 |
US6606301B1 (en) | 1999-03-01 | 2003-08-12 | Sun Microsystems, Inc. | Method and apparatus for early random discard of packets |
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 |
JP4708650B2 (ja) | 1999-12-02 | 2011-06-22 | パナソニック株式会社 | 光ディスク媒体およびその記録方法、記録装置 |
JP3613102B2 (ja) | 1999-12-14 | 2005-01-26 | 日本電気株式会社 | フレーム構成方法、フレーム構成装置およびフレーム構成転送システム |
ATE319249T1 (de) | 2000-01-27 | 2006-03-15 | Ibm | Verfahren und vorrichtung für klassifizierung von datenpaketen |
JP4099930B2 (ja) | 2000-06-02 | 2008-06-11 | 株式会社日立製作所 | ルータ装置及びvpn識別情報の設定方法 |
US20020076142A1 (en) | 2000-08-21 | 2002-06-20 | Song Qi Wang | Optical switch and switching network |
GB0023169D0 (en) | 2000-09-20 | 2000-11-01 | Ibm | Message parsing in message processing systems |
DE60120466T2 (de) | 2000-10-11 | 2007-01-18 | Broadcom Corp., Irvine | Effiziente Übertragung von RTP Paketen in einem Netzwerk |
US6952425B1 (en) | 2000-11-14 | 2005-10-04 | Cisco Technology, Inc. | Packet data analysis with efficient and flexible parsing capabilities |
GB2371705B (en) | 2001-01-30 | 2003-04-23 | 3Com Corp | Network switch with mutually coupled look-up engine and network processor |
GB0107882D0 (en) | 2001-03-29 | 2001-05-23 | Ibm | Parsing messages with multiple data formats |
CN101026586A (zh) * | 2001-04-06 | 2007-08-29 | 艾利森电话股份有限公司 | 用于voip无线终端的系统和方法 |
US6904057B2 (en) | 2001-05-04 | 2005-06-07 | Slt Logic Llc | Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification |
DE10131561A1 (de) * | 2001-06-29 | 2003-01-16 | Nokia Corp | Verfahren zur Übertragung von Anwendungspaketdaten |
US7017162B2 (en) | 2001-07-10 | 2006-03-21 | Microsoft Corporation | Application program interface for network software platform |
US7277957B2 (en) | 2001-07-17 | 2007-10-02 | Mcafee, Inc. | Method of reconstructing network communications |
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 |
US20030195973A1 (en) | 2002-04-11 | 2003-10-16 | Raymond Savarda | Methods, systems, and computer program products for processing a packet with layered headers using a data structure that positionally relates the layered headers |
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 |
US7277426B2 (en) | 2002-05-24 | 2007-10-02 | Mosaid Technologies, Inc. | Method and apparatus for reordering entries in a multi probe lookup |
US7408957B2 (en) | 2002-06-13 | 2008-08-05 | International Business Machines Corporation | Selective header field dispatch in a network processing system |
WO2004006080A2 (en) | 2002-07-04 | 2004-01-15 | Koninklijke Philips Electronics N.V. | Automatically adaptable virtual keyboard |
US6996651B2 (en) | 2002-07-29 | 2006-02-07 | Freescale Semiconductor, Inc. | On chip network with memory device address decoding |
AU2002334571A1 (en) | 2002-09-06 | 2004-03-29 | Infineon Technologies Ag | A parser for parsing data packets |
US7191241B2 (en) | 2002-09-27 | 2007-03-13 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding to a TCP connection |
US7367052B1 (en) | 2002-12-04 | 2008-04-29 | Cisco Technology, Inc. | Access list key compression |
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 |
US7293113B1 (en) | 2003-05-28 | 2007-11-06 | Advanced Micro Devices, Inc. | Data communication system with hardware protocol parser and method therefor |
US7706363B1 (en) | 2003-06-11 | 2010-04-27 | Radlan Computer Communications, Ltd | Method and apparatus for managing packets in a packet switched network |
US20050047406A1 (en) | 2003-08-25 | 2005-03-03 | Susan Hares | Nested components for network protocols |
GB0320957D0 (en) | 2003-09-08 | 2003-10-08 | Qinetiq Ltd | Document authentication |
US7685436B2 (en) | 2003-10-02 | 2010-03-23 | Itt Manufacturing Enterprises, Inc. | System and method for a secure I/O interface |
WO2005036834A1 (ja) | 2003-10-10 | 2005-04-21 | Fujitsu Limited | 統計情報採取方法及び装置 |
US7085907B2 (en) | 2004-02-17 | 2006-08-01 | International Business Machines Corporation | Dynamic reconfiguration of memory in a multi-cluster storage control unit |
US7411957B2 (en) | 2004-03-26 | 2008-08-12 | Cisco Technology, Inc. | Hardware filtering support for denial-of-service attacks |
US7646770B1 (en) | 2004-03-30 | 2010-01-12 | Extreme Networks, Inc. | Systems for supporting packet processing operations |
US7385984B2 (en) | 2004-03-30 | 2008-06-10 | Extreme Networks, Inc. | Packet processing system architecture and method |
US7822032B1 (en) | 2004-03-30 | 2010-10-26 | Extreme Networks, Inc. | Data structures for supporting packet data modification operations |
US8289973B2 (en) | 2004-04-05 | 2012-10-16 | Verizon Business Global Llc | System and method for indicating classification of a communications flow |
US7586851B2 (en) | 2004-04-26 | 2009-09-08 | Cisco Technology, Inc. | Programmable packet parsing processor |
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 |
EP1844583B1 (en) * | 2005-01-31 | 2009-12-16 | BRITISH TELECOMMUNICATIONS public limited company | Control of data flow in a network |
US7463630B2 (en) | 2005-02-18 | 2008-12-09 | Broadcom Corporation | Multi-part parsing in a network device |
US7756124B2 (en) | 2005-03-23 | 2010-07-13 | Hewlett-Packard Development Company, L.P. | Encapsulating packets for network chip conduit port |
US7414975B2 (en) | 2005-03-24 | 2008-08-19 | Ixia | Protocol stack |
US20060268913A1 (en) * | 2005-05-27 | 2006-11-30 | Utstarcom, Inc. | Streaming buffer system for variable sized data packets |
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 |
JP4340653B2 (ja) | 2005-12-16 | 2009-10-07 | 日本電信電話株式会社 | 通信処理装置及び通信処理方法 |
JP4887897B2 (ja) | 2006-05-12 | 2012-02-29 | 富士通株式会社 | パケット伝送装置、パケット転送方法及びパケット伝送システム |
US8437369B2 (en) | 2006-05-19 | 2013-05-07 | Integrated Device Technology, Inc. | Packets transfer device that intelligently accounts for variable egress channel widths when scheduling use of dispatch bus by egressing packet streams |
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 |
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 |
EP1994721A4 (en) | 2007-01-12 | 2013-09-25 | Univ Kyung Hee Univ Ind Coop Group | PACKET FORMAT OF A NETWORK ABSTRACTION LAYER UNIT, ALGORITHM AND VIDEO ENCODING AND DECODING APPARATUS USING THE SAME, QOS CONTROL ALGORITHM AND IPV6 LABEL SWITCHING APPARATUS USING THE FORMAT |
IL220238A (en) | 2007-03-12 | 2014-03-31 | Marvell Israel Misl Ltd | A method and system for determining the location of fields in information units |
US7802009B2 (en) | 2007-06-26 | 2010-09-21 | Microsoft Corporation | Automatic reverse engineering of message formats from network traces |
US8054744B1 (en) | 2007-10-25 | 2011-11-08 | Marvell International Ltd. | Methods and apparatus for flow classification and flow measurement |
US8112800B1 (en) | 2007-11-08 | 2012-02-07 | Juniper Networks, Inc. | Multi-layered application classification and decoding |
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 |
JP4962394B2 (ja) | 2008-04-21 | 2012-06-27 | 富士通株式会社 | パケット転送制御装置およびパケット転送制御方法 |
JP2009272912A (ja) | 2008-05-08 | 2009-11-19 | Fujitsu Ltd | Ipデータ処理装置 |
KR101456563B1 (ko) | 2008-05-14 | 2014-10-31 | 삼성전자주식회사 | 멀티 홉 릴레이 환경에서 대역폭 할당 요청과 할당 방법 및시스템 |
US8059546B2 (en) | 2008-09-05 | 2011-11-15 | Cisco Technology, Inc. | Traffic flow scheduling techniques implemented on bonded channels of a shared access cable network |
CN101686102A (zh) * | 2008-09-27 | 2010-03-31 | 上海瑞高信息技术有限公司 | 移动多媒体广播的数据压缩 |
US7979844B2 (en) | 2008-10-14 | 2011-07-12 | Edss, Inc. | TICC-paradigm to build formally verified parallel software for multi-core chips |
US7872993B2 (en) | 2008-10-30 | 2011-01-18 | Alcatel Lucent | Method and system for classifying data packets |
WO2010075426A1 (en) | 2008-12-23 | 2010-07-01 | Movik Networks | Transparent interaction with multi-layer protocols via selective bridging and proxying |
US8234369B2 (en) | 2008-12-23 | 2012-07-31 | Verizon Patent And Licensing Inc. | Web page response monitoring |
US9064058B2 (en) | 2008-12-24 | 2015-06-23 | Nuon, Inc. | Virtualized PCI endpoint for extended systems |
US8902886B2 (en) | 2009-04-23 | 2014-12-02 | International Business Machines Corporation | Canonicalization of network protocol headers |
CN101621469B (zh) | 2009-08-13 | 2012-01-04 | 杭州华三通信技术有限公司 | 数据报文存取控制装置和方法 |
CN101694627B (zh) | 2009-10-23 | 2013-09-11 | 天津大学 | 基于可配置处理器的编译器系统 |
US9008082B2 (en) | 2009-12-07 | 2015-04-14 | Telefonaktiebolaget L M Ericsson (Publ) | Handling data packets received at a routing node |
EP2337274B1 (en) | 2009-12-17 | 2014-03-05 | Alcatel Lucent | Method for processing a plurality of data and switching device for switching communication packets |
CN101777791B (zh) | 2009-12-18 | 2012-05-23 | 深圳市科陆电子科技股份有限公司 | 一种同时兼容多种电力负控系统通信协议的方法及其系统 |
US8743877B2 (en) | 2009-12-21 | 2014-06-03 | Steven L. Pope | Header processing engine |
WO2011078108A1 (ja) | 2009-12-21 | 2011-06-30 | 日本電気株式会社 | マルチプロセッサ環境におけるパターンマッチング方法、及び装置 |
JP5588019B2 (ja) | 2010-01-28 | 2014-09-10 | トムソン ライセンシング | 信頼性のあるデータ通信のためにネットワーク抽象化レイヤを解析する方法および装置 |
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 |
US8576713B2 (en) | 2010-04-23 | 2013-11-05 | Ixia | Traffic generator with priority flow control |
WO2011139266A1 (en) | 2010-05-03 | 2011-11-10 | Nokia Corporation | Protocol overhead reduction |
CN101854361B (zh) * | 2010-05-21 | 2012-09-26 | 南京邮电大学 | 一种基于物联网的下一代互联网协议报头压缩方法 |
US8804733B1 (en) | 2010-06-02 | 2014-08-12 | Marvell International Ltd. | Centralized packet processor for a network |
US8537815B2 (en) | 2010-06-17 | 2013-09-17 | Apple Inc. | Accelerating data routing |
US9525647B2 (en) | 2010-07-06 | 2016-12-20 | Nicira, Inc. | Network control apparatus and method for creating and modifying logical switching elements |
CN102377803B (zh) | 2010-08-12 | 2013-02-27 | 华为技术有限公司 | 一种数据处理方法、装置和系统 |
CN101958902B (zh) | 2010-09-30 | 2013-11-27 | 北京锐安科技有限公司 | 一种网络数据包的解析方法 |
US8854996B2 (en) | 2010-12-16 | 2014-10-07 | International Business Machines Corporation | Accelerating data packet parsing |
EP2676477B1 (en) | 2011-02-14 | 2019-01-09 | Telefonaktiebolaget LM Ericsson (publ) | Backwards-compatible approach to fields of a protocol layer |
EP2690831A4 (en) | 2011-03-23 | 2014-12-10 | Nec Corp | COMMUNICATION CONTROL SYSTEM, COMMUNICATION NODES AND COMMUNICATION CONTROL METHOD |
US8873557B2 (en) | 2011-04-08 | 2014-10-28 | Gigamon Inc. | Systems and methods for packet de-duplication |
TW201246867A (en) | 2011-05-06 | 2012-11-16 | Ralink Technology Corp | Packet processing accelerator and method thereof |
CA2837716A1 (en) | 2011-06-01 | 2012-12-06 | Security First Corp. | Systems and methods for secure distributed storage |
US8570713B2 (en) | 2011-06-29 | 2013-10-29 | General Electric Company | Electrical distribution system including micro electro-mechanical switch (MEMS) devices |
CN102353894B (zh) * | 2011-08-26 | 2013-08-14 | 哈尔滨工业大学 | 基于参考向量和位掩码的soc的测试方法 |
CN102970150A (zh) | 2011-09-01 | 2013-03-13 | 日电(中国)有限公司 | 用于数据中心的可扩展组播转发方法和设备 |
US9590820B1 (en) | 2011-09-02 | 2017-03-07 | Juniper Networks, Inc. | Methods and apparatus for improving load balancing in overlay networks |
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 |
US9565120B2 (en) | 2012-01-30 | 2017-02-07 | Broadcom Corporation | Method and system for performing distributed deep-packet inspection |
CN103597794B (zh) | 2012-02-16 | 2016-08-17 | 阿尔卡特朗讯公司 | 用于提供关于数据数组关联的信息以及用于转发数据数组的设想 |
US9282173B2 (en) | 2012-02-17 | 2016-03-08 | Viavi Solutions Inc. | Reconfigurable packet header parsing |
US9225635B2 (en) | 2012-04-10 | 2015-12-29 | International Business Machines Corporation | Switch routing table utilizing software defined network (SDN) controller programmed route segregation and prioritization |
US8929220B2 (en) * | 2012-08-24 | 2015-01-06 | Advanced Micro Devices, Inc. | Processing system using virtual network interface controller addressing as flow control metadata |
US9065780B2 (en) | 2012-09-18 | 2015-06-23 | Cisco Technology, Inc. | Low latency networking device using header prediction |
CN104106266B (zh) | 2012-10-17 | 2019-06-14 | 索尼公司 | 数据处理装置、数据处理方法以及程序 |
US9438517B2 (en) | 2012-10-30 | 2016-09-06 | Viavi Solutions Inc. | Method and system for identifying matching packets |
US20140153443A1 (en) | 2012-11-30 | 2014-06-05 | International Business Machines Corporation | Per-Address Spanning Tree Networks |
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 |
US20140369363A1 (en) | 2013-06-18 | 2014-12-18 | Xpliant, Inc. | Apparatus and Method for Uniquely Enumerating Paths in a Parse Tree |
CN103347013B (zh) | 2013-06-21 | 2016-02-10 | 北京邮电大学 | 一种增强可编程能力的OpenFlow网络系统和方法 |
US9444914B2 (en) | 2013-09-16 | 2016-09-13 | Annapurna Labs Ltd. | Configurable parser and a method for parsing information units |
US9590914B2 (en) | 2013-11-05 | 2017-03-07 | Cisco Technology, Inc. | Randomized per-packet port channel load balancing |
US9363178B2 (en) | 2013-12-18 | 2016-06-07 | Telefonaktiebolaget L M Ericsson (Publ) | Method, apparatus, and system for supporting flexible lookup keys in software-defined networks |
US9620213B2 (en) | 2013-12-27 | 2017-04-11 | Cavium, Inc. | Method and system for reconfigurable parallel lookups using multiple shared memories |
US9379963B2 (en) | 2013-12-30 | 2016-06-28 | Cavium, Inc. | Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine |
US9628382B2 (en) | 2014-02-05 | 2017-04-18 | Intel Corporation | Reliable transport of ethernet packet data with wire-speed and packet data rate match |
US9823925B2 (en) | 2014-03-28 | 2017-11-21 | Intel Corporation | Instruction and logic for a logical move in an out-of-order processor |
CN104010049B (zh) | 2014-04-30 | 2017-10-03 | 易云捷讯科技(北京)股份有限公司 | 基于sdn的以太网ip报文封装方法及网络隔离和dhcp实现方法 |
US9742694B2 (en) | 2014-06-19 | 2017-08-22 | Cavium, Inc. | Method of dynamically renumbering ports and an apparatus thereof |
US9274799B1 (en) | 2014-09-24 | 2016-03-01 | Intel Corporation | Instruction and logic for scheduling instructions |
US20170048144A1 (en) | 2015-08-13 | 2017-02-16 | Futurewei Technologies, Inc. | Congestion Avoidance Traffic Steering (CATS) in Datacenter Networks |
-
2014
- 2014-06-19 US US14/309,659 patent/US9635146B2/en active Active
-
2015
- 2015-04-13 TW TW104111755A patent/TWI664843B/zh active
- 2015-05-25 CN CN201510272409.3A patent/CN105282033B/zh active Active
- 2015-06-17 KR KR1020150086042A patent/KR102388450B1/ko active IP Right Grant
- 2015-06-19 EP EP15172929.0A patent/EP2958287B1/en active Active
-
2016
- 2016-07-26 HK HK16108884.4A patent/HK1220827A1/zh unknown
-
2017
- 2017-03-13 US US15/457,970 patent/US11050859B2/en active Active
-
2021
- 2021-05-26 US US17/330,782 patent/US11799989B2/en active Active
-
2023
- 2023-09-20 US US18/370,821 patent/US20240022652A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020163935A1 (en) * | 2001-05-04 | 2002-11-07 | Terago Communications, Inc. | System and method for providing transformation of multi-protocol packets in a data stream |
US20100329255A1 (en) * | 2009-06-26 | 2010-12-30 | Abhishek Singhal | Multiple Compression Techniques For Packetized Information |
US8705533B1 (en) * | 2010-12-10 | 2014-04-22 | Juniper Networks, Inc. | Fast packet encapsulation using templates |
Also Published As
Publication number | Publication date |
---|---|
EP2958287B1 (en) | 2019-05-15 |
US20210329104A1 (en) | 2021-10-21 |
CN105282033B (zh) | 2021-03-12 |
US20240022652A1 (en) | 2024-01-18 |
TW201613316A (en) | 2016-04-01 |
KR20150146421A (ko) | 2015-12-31 |
US9635146B2 (en) | 2017-04-25 |
EP2958287A1 (en) | 2015-12-23 |
US20150373160A1 (en) | 2015-12-24 |
US11799989B2 (en) | 2023-10-24 |
CN105282033A (zh) | 2016-01-27 |
US20170244816A1 (en) | 2017-08-24 |
KR102388450B1 (ko) | 2022-04-19 |
US11050859B2 (en) | 2021-06-29 |
HK1220827A1 (zh) | 2017-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
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 | |
CN105207984B (zh) | 使用连续字节来表示通用格式报头的方法及其装置 | |
JP6678401B2 (ja) | 変更のためにパケットを個々のレイヤに分割し、変更後のレイヤを情報処理で継合する方法およびその装置 | |
JP6608628B2 (ja) | パケットの固有の識別子を用いて、パケットの構造を特定する方法およびその装置 | |
JP6594671B2 (ja) | パケットを汎用フォーマットに変更して、プログラマブルな変更を可能にする方法およびその装置 | |
JP6594672B2 (ja) | 汎用的な変更の指示を用いて、パケットの柔軟な変更を可能にする方法およびその装置 |