TW201603542A - 將封包拆分為個別層以供修改及在修改後將層智慧拼接在一起之方法及裝置 - Google Patents

將封包拆分為個別層以供修改及在修改後將層智慧拼接在一起之方法及裝置 Download PDF

Info

Publication number
TW201603542A
TW201603542A TW104111756A TW104111756A TW201603542A TW 201603542 A TW201603542 A TW 201603542A TW 104111756 A TW104111756 A TW 104111756A TW 104111756 A TW104111756 A TW 104111756A TW 201603542 A TW201603542 A TW 201603542A
Authority
TW
Taiwan
Prior art keywords
packet
header
layer
protocol
network switch
Prior art date
Application number
TW104111756A
Other languages
English (en)
Inventor
區琳傑維 辛格
札希 丹尼爾
傑拉德 史密特
索林 帕托
Original Assignee
凱為公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 凱為公司 filed Critical 凱為公司
Publication of TW201603542A publication Critical patent/TW201603542A/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/321Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/165Combined use of TCP and UDP protocols; selection criteria therefor

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

本發明涉及將封包拆分成個別層以供修改,並且隨後將層拼接的方法及裝置。用於修改封包標頭的裝置的實施例涉及了用於將封包拆分成個別層及用於智慧地將它們拼接回到一起的指標結構。指標結構包括指向N+1個協定標頭的N+1個層指標。指標結構也包括所有標頭的總大小。重寫引擎使用層指標來擷取在封包內的前N個對應協定層以供修改。重寫引擎使用層指標形成尾指標,該尾指標與所有標頭的總大小一起與標頭的正文關聯。標頭的正文是標頭中的未被重寫引擎修改的部分。在執行所有修改並且壓縮經修改的標頭之後,使用經修改的層指標來將經修改的標頭與標頭的正文拼接回到一起。

Description

將封包拆分為個別層以供修改及在修改後將層智慧拼接在一起之方法及裝置
本發明涉及封包標頭修改。更具體地,本發明涉及一種將封包拆分成個別層以進行修改,並且在修改之後智慧地將層拼接回一起的方法及其裝置。
網路封包經由網際網路使用的協定、比如傳輸控制協定/網際協定/乙太網協定(TCP/IP/乙太網)承載資料。典型交換機能夠在向目的地或者向另一交換機發送出封包之前修改傳入的封包的各種欄位。出於各種原因而修改傳入的封包,比如封包將被轉發到何處、目的地支援的協定、封包的優先順序、協定標頭的傳入格式等。由於網路通訊協定正在演變,協定標頭的一個或者多個欄位可以是可任選的,這使交換機的硬體變複雜,因為在協定標頭內的給定的欄位可能不總是處於固定的偏移。
在封包的修改期間,現有技術的交換機線性地處理封包中的每個協定層。這樣的處理會產生與網路有關的性能問題,包括時延,這可能使實現方式過度提供處理資源。
用於修改封包標頭的裝置的實施例涉及用於將封包拆分成個別層並且用於智慧地將它們拼接回到一起的指標結構。指標結構包括指向N+1個協定標頭的N+1個層指標。指標結構也包括所有標頭的總大小。重寫引擎使用層指標來擷取在封包內的前N個對應協定層以供修改。重寫引擎使用層指標來形成尾指標,該尾指標與所有標頭的總大小一起與標頭的正文關聯。標頭的正文是標頭中的未被重寫引擎修改的部分。在執行所有修改並且壓縮經修改的標頭之後,使用經修改的層指標來將經修改的標頭與標頭的正文拼接回到一起。
在一個方面中,提供一種重寫引擎的方法。該方法包括針對每個封包維持指標結構。指標結構包括層指標和封包的所有標頭的總大小。層指標中的每個層指標對應於封包中的關聯層的起始定位。
在一些實施例中,指標結構包括N+1個層指標,並且重寫引擎修改封包的N個層。在一些實施例中,層指標形成尾指標。具有總大小的尾指標指示標頭的正文。標頭的正文是標頭中的未被重寫引擎修改的部分。
該方法也包括基於層指標拆分封包的層以供層修改。在一些實施例中,拆分封包的層包括:偵測封包的協定標頭 之缺失欄位,基於偵測,將協定標頭擴展成用於對應協定的通用格式,以及使用來自通用命令集合的至少一個命令來修改已通用化的協定標頭。
在一些實施例中,通用格式包括協定的所有可能欄位。無論協定標頭對應於協定的哪個變體,欄位中的每個欄位都具有相同偏移。
在一些實施例中,擴展協定標頭包括:針對已通用化的協定標頭維持位元向量,其中位元向量包括用於已通用化的協定標頭的每個位元組之每位元組的位元,針對每個有效欄位的每個位元組將位元標示為可用,以及針對每個無效欄位的每個位元組將位元標示為不可用。
在一些實施例中,使用至少一個命令包括在修改之後更新位元向量。
該方法也包括基於層修改來更新層指標。
該方法也包括基於已更新的層指標將層拼接回到一起。
在另一方面中,提供一種網路交換機的方法。該方法包括:在網路交換機的傳入埠處接收封包;以及使用指標結構來分離封包的協定層。在一些實施例中,在使用指標結構之前,基於封包的經解析的資料來初始化指標結構。
在一些實施例中,指標結構包括指向封包的N+1個位置的N+1個層指標和封包的所有標頭的總大小。位置包括協定層的起始定位。
該方法也包括使已分離的協定層通用化以供修改。 在一些實施例中,使已分離的協定層通用化以供修改包括:針對每個層,擷取層的大小以確定大小是否超過用於修改層的硬體能力。在一些實施例中,通過將指標結構中的兩個相鄰層指標相減來擷取大小。基於確定,使用兩個相鄰層指標中的第一層指標並且形成正文。
該方法也包括:基於修改來更新指標結構,使用已更新的指標結構來智慧地將經修改的協定層拼接回到一起,以形成新協定標頭;以及經由網路交換機的傳出埠發送出具有新協定標頭的封包。
在又一方面中,提供一種網路交換機。網路交換機包括:輸入埠和輸出埠,用於接收和發送封包;解析器引擎,用於解析封包;以及指標結構,與封包關聯。指標結構是以解析器引擎解析的資料予以初始化。
在一些實施例中,指標結構包括層指標和封包的標頭堆疊的總大小。每個層指標指向封包中的層。
網路交換機也包括重寫引擎,用於使用指標結構來將封包拆分成個別層,以進行已通用化的協定層的修改,並且隨後拼接經修改的層以形成新協定標頭堆疊。
在一些實施例中,重寫引擎在修改之後更新指標結構。在一些實施例中,新協定標頭堆疊基於已更新的指標結構而形成。
在一些實施例中,網路交換機也包括記憶體。在一些實施例中,記憶體儲存用於使各個層通用化的、協定的通用格式的軟體定義映射集合。在一些實施例中,記憶體儲存 通用命令集合,其中通用命令集合被用於標頭修改,其與傳入的標頭無關。
在又一方面中,提供一種網路交換機。網路交換機包括用於接收封包的輸入埠,其中封包包括正文和協定堆疊。網路交換機也包括用於發送經修改的封包的輸出埠。
網路交換機也包括用於儲存協定的通用格式的軟體定義映射集合和通用修改命令集合的記憶體,其中通用命令集合被用於標頭修改,其與傳入的標頭無關。
網路交換機也包括用於解析封包的解析器引擎和與封包關聯的指標結構。指標結構通常是以解析器引擎解析的資料予以初始化。
網路交換機也包括重寫引擎。重寫引擎使用指標結構來基於協定層拆分封包,使得封包的每個協定層被分離。在一些實施例中,指標結構包括指向封包的N+1個位置的N+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命令從SourceSourceOffset向當前已通用化的標頭層的DestinationOffset複製Size個位元組的資料。COPY命令根據資料的有效性在Source中是否有效來使得對應目的地位元組有效或者無效。將表示無效位元組的位元向量的位元標示為0。將表示有效位元組的位元向量的位元標示為1。COPY命令也可以使用Bitmask用於位元掩碼操作。COPY命令也可以使用copyConstantBitMaskcopyConstantData。如果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,經由網路交換機的傳出埠發送出具有新協定標頭的封包。
本領域普通技術人員將認識到,也存在其它使用和 優點。儘管已經參照許多具體細節描述本發明,但是本領域普通技術人員將認識到,可以在其它具體形式中體現本發明而不脫離本發明的精神實質。因此,本領域普通技術人員將理解到,本發明不受前述示例細節限制,而是將由所附申請專利範圍所限定。
2100‧‧‧方法
2105-2120‧‧‧步驟

Claims (28)

  1. 一種重寫引擎的方法,所述方法包括:維持每個封包之一指標結構,其中所述指標結構包括層指標和所述封包的所有標頭的一總大小,其中各所述層指標係對應於所述封包中的一關聯層的一起始定位;基於所述層指標來拆分所述封包的所述層,以用於層修改;基於層修改來更新所述層指標;以及基於已更新的層指標將所述層拼接回一起。
  2. 如申請專利範圍第1項所述的方法,其中所述指標結構包括N+1個層指標,且其中所述重寫引擎修改所述封包的N個層。
  3. 如申請專利範圍第1項所述的方法,其中所述層指標形成一尾指標,其中具有所述總大小的所述尾指標指示所述標頭的一正文,其中所述標頭的所述正文是所述標頭中未被所述重寫引擎修改的部分。
  4. 如申請專利範圍第1項所述的方法,其中拆分所述封包的所述層包括:偵測所述封包的一協定標頭之缺失欄位;基於所述偵測,將所述協定標頭擴展成一對應協定之一通用格式;以及使用來自一通用命令集合中的至少一個命令來修改已通用化的協定標頭。
  5. 如申請專利範圍第4項所述的方法,其中所述通用格式包括所述協定的所有可能欄位,其中無論所述協定標頭對應於所述協定的哪個變體,所述欄位中的每個欄位都具有相同偏移。
  6. 如申請專利範圍第4項所述的方法,其中擴展所述協定標頭包括:維持所述已通用化的協定標頭之一位元向量,其中所述位元向量包括所述已通用化的協定標頭的每個位元組之每位元組的位元;對於每個有效欄位的每個位元組,將一位元標示為可用;以及對於每個無效欄位的每個位元組,將一位元標示為不可用。
  7. 如申請專利範圍第6項所述的方法,其中使用至少一個命令包括在所述修改之後更新所述位元向量。
  8. 一種網路交換機的方法,所述方法包括:在所述網路交換機的一傳入埠處接收一封包;使用一指標結構來分離所述封包的協定層;使已分離的協定層通用化以供修改;基於所述修改來更新所述指標結構;使用已更新的指標結構來智慧地將經修改的協定層拼接回到一起,以形成一新協定標頭堆疊;以及經由所述網路交換機的一傳出埠發送出具有所述新協定標頭堆疊的所述封包。
  9. 如申請專利範圍第8項所述的方法,其中所述指標結構包括指向所述封包的N+1個位置的N+1個層指標和所述封包的所有標頭的一總大小。
  10. 如申請專利範圍第9項所述的方法,其中所述位置包括所述協定層的起始定位。
  11. 如申請專利範圍第8項所述的方法,進一步包括:在使用一指標結構之前,基於所述封包的已解析資料來初始化所述指標結構。
  12. 如申請專利範圍第8項所述的方法,其中使所述各個協定層通用化以供修改包括:對於每個層,擷取所述層的大小以確定所述大小是否超過用於修改所述層的硬體能力。
  13. 如申請專利範圍第12項所述的方法,其中所述大小是藉由將所述指標結構中的兩個相鄰層指標相減而被擷取。
  14. 如申請專利範圍第13項所述的方法,其中基於所述確定,使用所述兩個相鄰層指標中的第一個層指標並且形成一正文。
  15. 一種網路交換機,包括:一輸入埠和一輸出埠,用於接收和發送封包;一解析器引擎,用於解析一封包;一指標結構,其與所述封包關聯,其中所述指標結構示是以所述解析器引擎所解析的資料予以初始化;以及 一重寫引擎,用於使用所述指標結構來將所述封包拆分成個別層以用於已通用化的協定層的修改,並且隨後拼接已修改的層以形成一新協定標頭堆疊。
  16. 如申請專利範圍第15項所述的網路交換機,其中所述指標結構包括層指標和所述封包的一標頭堆疊的一總大小。
  17. 如申請專利範圍第16項所述的網路交換機,其中每個層指標指向所述封包中的層。
  18. 如申請專利範圍第15項所述的網路交換機,其中所述重寫引擎在修改之後更新所述指標結構。
  19. 如申請專利範圍第18項所述的網路交換機,其中所述新協定標頭堆疊是基於已更新的指標結構而形成。
  20. 如申請專利範圍第15項所述的網路交換機,進一步包括一記憶體。
  21. 如申請專利範圍第20項所述的網路交換機,其中所述記憶體儲存用於通用化所述個別層之協定通用格式之一軟體定義映射集合。
  22. 如申請專利範圍第20項所述的網路交換機,其中所述記憶體儲存一通用命令集合,其中所述通用命令集合係用於標頭修改,其與傳入的標頭無關。
  23. 一種網路交換機,包括:一輸入埠,用於接收封包,其中所述封包包括一正文和一協定堆疊;一輸出埠,用於發送經修改的封包; 一記憶體,用以儲存協定通用格式的一軟體定義映射集合和一通用修改命令集合,其中所述通用修改命令集合用於標頭修改,其與傳入的標頭無關;一解析器引擎,用於解析一封包;一指標結構,與所述封包關聯,其中所述指標結構是以所述解析器引擎所解析的資料予以初始化;以及一重寫引擎,用以:使用所述指標結構以基於協定層來拆分所述封包,使得所述封包的每個協定層都被分離;基於所述軟體定義映射集合中其一,將每個協定標頭轉換成一通用格式;使用所述通用修改命令集合來修改已轉換的協定標頭;以及拼接已修改的協定標頭,以形成一新協定標頭堆疊。
  24. 如申請專利範圍第23項所述的網路交換機,其中所述指標結構包括指向所述封包的N+1個位置的N+1個層指標和所述封包的所有標頭的一總大小。
  25. 如申請專利範圍第24項所述的網路交換機,其中所述位置包括所述協定層的起始定位。
  26. 如申請專利範圍第23項所述的網路交換機,其中所述重寫引擎也維持每個已轉換的協定標頭之位元向量。
  27. 如申請專利範圍第26項所述的網路交換機,其中所述位元向量包括所述已轉換的協定標頭的每個位元組之每位元組的位元。
  28. 如申請專利範圍第23項所述的網路交換機,其中所述重寫引擎對所述新協定標頭堆疊附加所述正文以經由所述輸出埠發送。
TW104111756A 2014-06-19 2015-04-13 將封包拆分為個別層以供修改及在修改後將層智慧拼接在一起之方法及裝置 TW201603542A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/309,679 US9531849B2 (en) 2014-06-19 2014-06-19 Method of splitting a packet into individual layers for modification and intelligently stitching layers back together after modification and an apparatus thereof

Publications (1)

Publication Number Publication Date
TW201603542A true TW201603542A (zh) 2016-01-16

Family

ID=53546503

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104111756A TW201603542A (zh) 2014-06-19 2015-04-13 將封包拆分為個別層以供修改及在修改後將層智慧拼接在一起之方法及裝置

Country Status (7)

Country Link
US (1) US9531849B2 (zh)
EP (1) EP2958282A1 (zh)
JP (1) JP6678401B2 (zh)
KR (1) KR102368168B1 (zh)
CN (1) CN105282137B (zh)
HK (1) HK1220825A1 (zh)
TW (1) TW201603542A (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106790762B (zh) * 2017-01-11 2022-05-24 腾讯科技(深圳)有限公司 域名解析方法和装置
CN110611625B (zh) * 2018-11-27 2020-11-06 新华三技术有限公司 网络设备及应用于网络设备的逻辑装置
US11284298B2 (en) * 2019-10-11 2022-03-22 Qualcomm Incorporated Header compression and decompression management
CN111245809A (zh) * 2020-01-07 2020-06-05 北京同有飞骥科技股份有限公司 跨层数据处理方法及系统

Family Cites Families (64)

* Cited by examiner, † Cited by third party
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
JPH05191474A (ja) * 1992-01-10 1993-07-30 Mitsubishi Electric Corp 通信プロトコル処理装置
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ä
US6606301B1 (en) * 1999-03-01 2003-08-12 Sun Microsystems, Inc. Method and apparatus for early random discard of packets
JP2000253061A (ja) * 1999-03-01 2000-09-14 Hitachi Ltd データ配送方法
US6789116B1 (en) 1999-06-30 2004-09-07 Hi/Fn, Inc. State processor for pattern matching in a network monitor device
CN101312052B (zh) * 1999-12-02 2011-04-06 松下电器产业株式会社 制造光记录媒体的方法以及记录方法、再生方法
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
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
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
GB2406663B (en) * 2003-10-01 2006-03-22 Toshiba Res Europ Ltd Flexible protocol stack
US7685436B2 (en) 2003-10-02 2010-03-23 Itt Manufacturing Enterprises, Inc. System and method for a secure I/O interface
US7411957B2 (en) 2004-03-26 2008-08-12 Cisco Technology, Inc. Hardware filtering support for denial-of-service attacks
US7554978B1 (en) * 2004-03-30 2009-06-30 Extreme Networks, Inc. System for accessing content-addressable memory in packet processor
US7822032B1 (en) 2004-03-30 2010-10-26 Extreme Networks, Inc. Data structures for supporting packet data modification operations
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
US7414975B2 (en) * 2005-03-24 2008-08-19 Ixia Protocol stack
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
US8054744B1 (en) 2007-10-25 2011-11-08 Marvell International Ltd. Methods and apparatus for flow classification and flow measurement
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 삼성전자주식회사 멀티 홉 릴레이 환경에서 대역폭 할당 요청과 할당 방법 및시스템
US7872993B2 (en) * 2008-10-30 2011-01-18 Alcatel Lucent Method and system for classifying data packets
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
RU2549159C2 (ru) 2010-05-03 2015-04-20 Нокиа Корпорейшн Сокращение служебной информации протокола
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
WO2014061488A1 (ja) 2012-10-17 2014-04-24 ソニー株式会社 データ処理装置、データ処理方法、及び、プログラム
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
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

Also Published As

Publication number Publication date
CN105282137B (zh) 2020-03-17
JP6678401B2 (ja) 2020-04-08
KR20150146422A (ko) 2015-12-31
JP2016005284A (ja) 2016-01-12
KR102368168B1 (ko) 2022-02-25
HK1220825A1 (zh) 2017-05-12
CN105282137A (zh) 2016-01-27
US20150373161A1 (en) 2015-12-24
US9531849B2 (en) 2016-12-27
EP2958282A1 (en) 2015-12-23

Similar Documents

Publication Publication Date Title
TW201603537A (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
TW201611548A (zh) 使用唯一封包識別字識別封包結構方法及裝置
TW201603534A (zh) 從封包內容形成散列輸入之方法及裝置
TW201603535A (zh) 修改封包為可進行可程式化修改之通用格式的方法及裝置
TW201605207A (zh) 使用通用修改指令進行封包靈活修改方法及裝置