TW201607274A - 擷取封包數據方法及裝置 - Google Patents

擷取封包數據方法及裝置 Download PDF

Info

Publication number
TW201607274A
TW201607274A TW104110833A TW104110833A TW201607274A TW 201607274 A TW201607274 A TW 201607274A TW 104110833 A TW104110833 A TW 104110833A TW 104110833 A TW104110833 A TW 104110833A TW 201607274 A TW201607274 A TW 201607274A
Authority
TW
Taiwan
Prior art keywords
layer
protocol
fields
characterization
packet
Prior art date
Application number
TW104110833A
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 TW201607274A publication Critical patent/TW201607274A/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/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • 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
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • 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/03Protocol definition or specification 
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

用於擷取封包數據的裝置的實施例與可從封包擷取欄位的可程式化之層命令有關。封包被拆分成個別層。每層被給予可識別該層之唯一層類型編號。基於層類型,每層被擴展成一通用格式。每層具有該層通用的層命令集合。每個層命令的欄位是fieldOffset和fieldLen。這些層命令允許以可程式化方式擷取封包中的資訊。對來自每個協定層的擷取欄位進行級聯以形成一表徵層。對所有表徵層進行級聯以形成一最終表徵,其係用於進一步處理封包。

Description

擷取封包數據方法及裝置
本發明與網路封包有關。更具體地,本發明與一種擷取封包數據方法及其裝置有關。
為了處理網路封包(例如乙太網封包),有必要從封包擷取某些欄位。在擷取欄位中所含的值幫助決定應當如何處置封包。舉例而言,交換即是利用在乙太網標頭以內的48位MAC目的地位址來決定封包應當被發送到哪個埠。相似地,路由是利用在IPv4層內包含的32位目的地IP位址。當前硬體解決方案利用固定的擷取機制以從封包擷取這樣的資訊。在實施時間確認要將擷取的相關資訊在封包內落在何處。然而,當前硬體解決方案不能處理正在演進的連網協定。
用於從封包擷取數據的裝置的實施例涉及允許自封包擷取欄位之可程式化的層命令。封包被拆分成個別層。每層被給予識別該層的唯一的層類型編號。基於層類型,每層被擴展成通用格式。每層具有對於該層通用的層命令的集 合。每個層命令的欄位是fieldOffsetfieldLen;其中fieldOffset指定將被擷取的欄位在所述已擴展的層內開始的偏移,fieldLen指定將從該指定的偏移擷取的位元組的數量。這些層命令允許以可程式化方式擷取封包中的資訊。來自每個協定層的擷取的欄位被級聯以形成表徵層。所有表徵層被級聯以形成最終表徵,該最終表徵用於封包的進一步處理。
在一個方面中,提供一種實施解析器引擎的方法。該方法包括:識別封包的協定層;基於協定層中的每個協定層的識別將該協定層擴展成通用格式;以及從已擴展的協定層選擇內容,用以由此形成最終表徵。
在一些實施例中,封包的協定層中的每個協定層被基於協定層的唯一的層類型編號來識別。
在一些實施例中,通用格式定義協定層能夠具有的所有欄位的超集合。
在一些實施例中,擴展協定層中的每個協定層包括:維持用於已擴展的協定層的位元向量,其中位元向量包括用於擴展的協定層的每個位元組的每位元組的位元;對於每個有效欄位的每個位元組將位元標記為可用,其中每個有效欄位是在封包的協定層中存在的欄位;以及對於每個無效欄位的每個位元組將位元標記為不可用,其中每個無效欄位是在封包的協定層中不存在的欄位。
在一些實施例中,該方法也包括使用壓縮格式以表達已擴展的協定層。
在一些實施例中,該方法也包括將來自通用層命令 的集合的至少一個通用層命令應用於已擴展的協定層以從已擴展的協定層擷取欄位。用層命令中的每個通用層命令的欄位是fieldOffsetfieldLen;其中fieldOffset指定將被擷取的欄位在所述已擴展的層內開始的偏移,fieldLen指定應當從該指定的偏移擷取的位元組的數量。在一些實施例中,通用層命令中的每個通用層命令的欄位是軟體定義的。
在一些實施例中,該方法還包括:至少基於擷取的欄位形成表徵層;以及至少基於該表徵層形成最終表徵。表徵層是通過將擷取的欄位與來自已擴展的協定層的其它擷取的欄位放置在一起而無任何間隙來形成的。最終表徵是通過將表徵層與其它表徵層放置在一起而無任何間隙來形成的。最終表徵可以用於封包的進一步處理。
在另一方面,提供一種實施網路交換機的方法。該方法包括:在網路交換機的傳入埠接收封包;根據用於對應協定的通用格式來通式化封包的每個協定標頭;對於每個通式化的協定標頭,從通式化的協定標頭擷取一個或者多個欄位;對於每個通式化的協定標頭,級聯來自通式化的協定標頭的一個或者多個擷取的欄位,以形成表徵層;以及級聯所有表徵層以形成最終表徵。
在一些實施例中,網路交換機包括:解析器引擎,被配置為通式化每個協定標頭,從通式化的協定標頭擷取一個或者多個欄位,級聯來自通式化的協定標頭的一個或者多個擷取的欄位以形成表徵層,並且級聯所有表徵層以形成最終表徵。
在一些實施例中,通式化每個協定標頭包括:解析器引擎確定協定標頭的層類型和層類型的變體;解析器引擎基於層類型和變體偵測在協定標頭中缺少的欄位;以及基於偵測,解析器引擎將協定標頭擴展成通用格式。
在一些實施例中,擷取一個或者多個欄位包括將一個或者多個通用層命令應用於通式化的協定標頭。通用層命令中的每個通用層命令的欄位是fieldOffsetfieldLen;其中fieldOffset指定將被擷取的欄位在所述已擴展的層內開始的偏移,fieldLen指定應當從該指定的偏移擷取的位元組的數量。
在一些實施例中,在接收封包之前,該方法包括經由軟體對一個或者多個通用層命令中的每個通用層命令的欄位進行程式設計。
在一些實施例中,在接收封包之前,該方法包括:允許協定的通用格式的軟體定義的映射;以及在網路交換機的記憶體中儲存軟體定義的映射。
在又一方面中,提供一種網路交換機。網路交換機包括:輸入埠和輸出埠,用於接收和發送封包。網路交換機也包括:記憶體,用於儲存協定的通用格式的軟體定義的映射的集合,以及用於儲存用於擷取欄位的通用層命令的集合。網路交換機也包括:解析器引擎,用於對封包執行標頭通式化程序,用以根據軟體定義的映射中的特定於對應協定的一個軟體定義的映射來通式化封包的每個協定標頭,以及用於從通式化的協定標頭選擇內容用以由此形成最終表徵。 可以對協定的不同變體、對不同協定或者二者使用標頭通式化程序。
在一些實施例中,在封包由解析器引擎處理之後,封包包括規範化的協定層。規範化的協定層中的每個規範化的協定層是根據用於對應協定的對應通用格式擴展了的協定層。
在一些實施例中,解析器引擎還將來自通用層命令的集合之一的至少一個通用層命令應用於通式化的協定層中的每個通式化的協定層,以從通式化的協定層擷取欄位。在一些實施例中,通用層命令的集合之一是特定於對應協定的。在一些實施例中,通用層命令中的每個通用層命令的欄位是軟體定義的。
在一些實施例中,擷取的欄位被與來自通式化的協定層的其它擷取的欄位級聯以形成表徵層。在一些實施例中,表徵層與其它表徵層級聯以形成最終表徵。在一些實施例中,最終表徵被用於封包的進一步處理。
在又一方面中,提供一種解析器引擎。解析器包括電路,該電路被配置為識別封包的協定層;基於協定層中的每個協定層的識別將該協定層擴展成通用格式;以及從已擴展的協定層選擇內容,用以由此形成最終表徵。
在一些實施例中,封包的協定層中的每個協定層被基於協定層的唯一的層類型編號來識別。在一些實施例中,通用格式定義協定層能夠具有的所有欄位的超集合。
在一些實施例中,電路也被配置為將來自通用層命 令的集合的至少一個通用層命令應用於已擴展的協定層,用以從已擴展的協定層擷取欄位。在一些實施例中,通用層命令中的每個通用層命令的欄位是fieldOffsetfieldLen;其中fieldOffset指定將被擷取的欄位在所述已擴展的層內開始的偏移,fieldLen指定應當從該指定的偏移擷取的位元組的數量。在一些實施例中,通用層命令中的每個通用層命令的欄位是軟體定義的。
在一些實施例中,電路也被配置為至少基於擷取的欄位形成表徵層,以及至少基於表徵層形成最終表徵。在一些實施例中,表徵層是通過將擷取的欄位與來自擴展的協定層的其它擷取的欄位放置在一起而無任何間隙來形成的。在一些實施例中,最終表徵是通過將表徵層與其它表徵層放置在一起而無任何間隙來形成的。
100‧‧‧封包標頭
200‧‧‧封包標頭
205‧‧‧位元向量
300‧‧‧封包標頭
300’‧‧‧封包標頭
305‧‧‧位元向量
400‧‧‧封包標頭
400’‧‧‧封包標頭
405‧‧‧位元向量
500‧‧‧方法
600‧‧‧方法
700‧‧‧方法
705-715‧‧‧步驟
750‧‧‧方法
755-765‧‧‧步驟
800‧‧‧方法
805-825‧‧‧步驟
根據如附圖式中所示的本發明的示例實施例的以下更具體描述,前文將是清楚的,在附圖中,相似標號貫穿不同視圖指代相同部分。附圖未必按比例、代之以著重於說明本發明的實施例。
第一圖說明根據本發明的一些實施例之使傳入封包的層成為通用格式之標頭擴展圖。
第二A圖與第二B圖說明根據本發明的一些實施例的協定標頭的示例通式化。
第三A圖至第三C圖說明根據本發明的一些實施例的協定標頭的另一示例通式化。
第四A圖至第四C圖說明根據本發明的一些實施例的協定標頭的另一示例通式化。
第五圖說明根據本發明的一些實施例的從已擴展的層擷取數據的方塊圖。
第六圖說明根據本發明的一些實施例的來自所有層的擷取的資訊一起級聯以形成單個匯流排的方塊圖。
第七A圖與第七B圖說明根據本發明的一些實施例的解析器引擎的方法。
第八圖說明根據本發明的一些實施例的網路交換機的方法。
在以下描述中,出於說明的目的而闡述許多細節。然而,本領域普通技術入員將認識到可以在不使用這些具體細節的情況下實現本發明。因此,本發明不旨在于局限於所示實施例、而是將被賦予與這裡描述的原理和特徵一致的最寬的範圍。
用於從封包擷取數據的裝置的實施例涉及允許擷取來自封包的欄位的可程式化的層命令。封包被拆分成個別層。每層被給予識別該層的唯一的層類型編號。基於層類型,每層被擴展成通用格式。每層具有對於該層通用的層命令的集合。每個層命令的欄位是指定將被擷取的欄位在該層內開始的偏移的fieldOffset和指定將從該指定的偏移擷取的位元組的數量的fieldLen。這些層命令允許以可程式化的方式擷取封包中的資訊。來自每個協定層的擷取的欄位被級聯,以形 成表徵層。所有表徵層被級聯,以形成用於封包的進一步處理的最終表徵。
網路設備(例如網路交換機)能夠切換/路由網路流量。網路交換機包括用於接收和發送封包的至少一個輸入/傳入埠和至少一個輸出/外傳埠。在一些實施例中,網路交換機也包括解析器和重寫器。解析器可以包括用於識別網路封包的內容的一個或者多個解析器引擎,並且重寫器可以包括用於在封包從網路交換機被發送出之前修改它們的一個或者多個重寫引擎。(多個)解析器引擎和(多個)重寫引擎是靈活的並且在可程式化的基礎上操作。
網路交換機也包括用於儲存由網路交換機使用的數據的記憶體。例如記憶體儲存通用層命令的集合。簡言之,通用層命令通常被用來從協定標頭擷取欄位。對於另一示例,記憶體也儲存協定的通用格式的軟體定義的映射。簡言之,根據軟體定義的映射中特定於對應協定的一個軟體定義的映射來表示每個協定標頭。如將變得清楚的,這些映射可以在協定的不同變體上以及在包括新協定的不同協定上被使用。對於又一示例,記憶體也儲存計數器和統計量。
在乙太網中,封包包括多個協定層。每個協定層攜帶不同資訊。習知層的一些實例是:
‧乙太網
‧PBB乙太網
‧ARP
‧IPV4
‧IPV6
‧MPLS
‧FCOE
‧TCP
‧UDP
‧ICMP
‧IGMP
‧GRE
‧ICMPv6
‧VxLAN
‧TRILL
‧CNM
在理論上,協定層可以按照任何順序出現。然而,這些層的僅一些習知的組合出現。這些層的有效組合的一些實例是:
‧乙太網
‧乙太網、ARP
‧乙太網、CNM
‧乙太網、FCoE
‧乙太網、IPV4
‧乙太網、IPV4、ICMP
‧乙太網、IPV4、IGMP
對於封包解析(和重寫)操作,封包被分成層。這一拆分基於習知的層、例如以上列舉的那些層來完成。層中 的許多層具有在層內的欄位的不同類型的組合。為了有效地處置不同的可能組合,層被擴展成通用格式。這些通用格式允許使用對層內的具體欄位未知(agnostic)的命令、例如層命令。通用格式定義任何已知的層能夠具有的所有欄位的超集合。
第一圖說明根據本發明的一些實施例之使傳入封包的層擴展成為通用格式的封包標頭100的圖式。在第一圖中,傳入封包包括八個標頭協定層。每個協定層通常包括用於它的相應協定的標頭。如以上指示的那樣,更多或者更少協定層是可能的。解析器引擎能夠識別每個層及其變體。如第一圖中所示,解析器引擎基於每個協定層的識別和變體來識別該層。規範層是指已經被擴展成其通用格式的協定層。簡言之,每個規範層包括位元向量,該位元向量具有針對無效欄位標記為0的位元和針對有效欄位標記為1的位元。
假設解析器引擎已經將層識別為乙太網封包標頭。第二A圖至第四C圖說明根據本發明的一些實施例的解析器引擎如何對乙太網協定工作的示例。第二A圖至第四C圖中所示的示例示範了解析器引擎能夠對協定、例如乙太網協定的不同變體工作。每個示例舉例說明了乙太網協定的傳入標頭及其對應的通用格式。雖然未討論其它協定,但是注意,解析器引擎對其它協定類似地工作。
第二A圖說明傳入封包的示例性乙太網封包標頭200的格式。乙太網封包標頭200是22位元組的,並且包括五個欄位:源地址(SA)欄位、目的地地址(DA)欄位、 務VLAN標籤欄位、客戶VLAN標籤欄位和乙太類型欄位。SA欄位和DA欄位各自為6位元組。服務VLAN標籤欄位和客戶VLAN標籤欄位各自為4位元組。乙太類型欄位為2位元組。具有乙太網封包標頭100的封包是乙太網封包的最大變體並且具有最大22位元組的大小。
解析器引擎處理乙太網封包標頭200並且確定在乙太網封包標頭200中沒有缺少任何欄位。乙太網封包標頭200的通用格式因此與乙太網封包標頭200的通用格式相同,因為乙太網封包標頭200包含所有可能欄位。第二B圖說明位元向量205,該位元向量205表示第二A圖的乙太網封包標頭200。位元向量205的每個位元對應於乙太網封包標頭200的22位元組之一。位元向量205包含全1,因為乙太網封包標頭200的所有欄位有效,或者具有值,因為欄位在乙太網封包標頭200中存在。因而,乙太網封包標頭200由通用格式{22'b111111_111111_1111_1111_11}表示。
第三A圖說明傳入封包的另一示例乙太網封包標頭300的格式。乙太網封包標頭300為18位元組並且僅包括四個欄位:SA欄位、DA欄位、客戶VLAN標籤欄位和乙太類型(EtherType)欄位。乙太網封包標頭300缺少服務VLAN標籤欄位。具有乙太網封包標頭300的封包是乙太網封包的另一變化。
解析器引擎處理乙太網封包標頭300並且確定在乙太網封包標頭300中缺少服務VLAN標籤欄位,並且通過在乙太網封包標頭300的通用格式的適當位置包括缺少的服務 VLAN標籤欄位來將乙太網封包標頭300擴展到它的最大22位元組大小。第三B圖說明擴展的乙太網封包標頭的通用格式300’。擴展的乙太網封包標頭300’包括乙太網協定的所有可能欄位,包括缺少的服務VLAN標籤欄位。在擴展的乙太網封包標頭300’中的有效欄位是SA欄位、DA欄位、客戶VLAN標籤欄位和乙太類型欄位,因為它們在乙太網封包標頭300中存在。在擴展的乙太網封包標頭300’中的無效欄位是服務VLAN標籤欄位,因為它在乙太網封包標頭300中不存在、而是被添加在擴展的乙太網封包標頭300’中的。
第三C圖說明表示第三B圖的擴展的乙太網封包標頭300’的位元向量305。位元向量305的每個位元對應於擴展的乙太網封包標頭300’的22位元組之一。位元向量305包含用於所有有效欄位的1,這些有效欄位是SA欄位、DA欄位、客戶VLAN標籤欄位和乙太類型欄位。位元向量305包含用於所有無效欄位的0,該無效欄位僅為服務VLAN標籤欄位。因而,乙太網封包標頭300由通用格式{22'b111111_111111_0000_1111_11}表示。
第四A圖說明傳入封包的另一示例乙太網封包標頭400的格式。乙太網封包標頭400為14位元組並且僅包括三個欄位:SA欄位、DA欄位和乙太類型欄位。乙太網封包標頭400缺少服務VLAN標籤欄位和客戶VLAN標籤欄位。具有乙太網封包標頭400的封包是乙太網封包的最小變體。
解析器引擎處理乙太網標頭400並且確定在乙太網封包標頭400中缺少服務VLAN標籤欄位和客戶VLAN標籤欄 位,並且通過在乙太網封包標頭400的通用格式的適當位置處包括缺少的服務VLAN標籤欄位和缺少的客戶VLAN標籤欄位來將乙太網封包標頭400擴展到它的最大22位元組大小。第四B圖說明擴展的乙太網封包標頭的通用格式400’。擴展的乙太網封包標頭400’包括乙太網協定的所有可能欄位,包括缺少的服務VLAN標籤欄位和缺少的客戶VLAN標籤欄位。擴展的乙太網封包標頭400’中的有效欄位是SA欄位、DA欄位和乙太類型欄位,因為它們在乙太網封包標頭400中存在。擴展的乙太網封包標頭400’中的無效欄位是服務VLAN標籤欄位和客戶VLAN標籤欄位,因為它們在乙太網封包標頭400中不存在、而是被添加在擴展的乙太網封包標頭400’中的。
第四C圖說明表示第四B圖的擴展的乙太網封包標頭400’的位元向量405。位元向量405的每個位元對應於擴展的乙太網封包標頭400’的22位元組之一。位元向量405包含用於所有有效欄位的1,這些有效欄位是SA欄位、DA欄位和乙太類型欄位。位元向量405包含用於所有無效欄位的0,該無效欄位是服務VLAN標籤欄位和客戶VLAN標籤欄位。因而,乙太網封包標頭400由通用格式{22'b111111_111111_0000_0000_11}代表。
如第二A圖至第四C圖中所示,無論傳入乙太網標頭的變化如何,一旦執行將乙太網標頭擴展成通用格式,欄位偏移與最大大小的乙太網標頭(例如,第二A圖的乙太網封包標頭200)相同。標頭擴展有利地允許相同軟體命令集工作,而無論傳入乙太網標頭如何,因為乙太網標頭被擴展成 最大大小的乙太網標頭。這樣,擷取例如乙太類型欄位的層命令將總是指向相同偏移,無論接收到哪個乙太網標頭。
在一些實施例中,壓縮格式被用來表達哪些欄位在任何接收的標頭中存在。緊湊格式由兩個欄位的組合組成、即:‧contBytes:這指示多少位元組在層的開頭有效;以及‧validBytes:這是指示層中的每個位元組的有效性的位元向量。例如如果contBytes為8而validBytes為4'h0111,則相應層包括有效的位元組0-7,其後是空位元組和三個有效位元組。使用這一壓縮格式有助於節省為了展示層而需要的位元數。位元組總數可以通過表1中所示的示例偽代碼來計算。
標頭的通用格式在從封包標頭擷取欄位方面產生硬體和軟體靈活性。硬體能夠從封包標頭擷取欄位,而無論欄位在封包標頭內駐留於何處。硬體可以被軟體程式設計用以支援新協定。軟體將通用格式在硬體表中程式設計,用於各種標頭協定。
一旦協定標頭被擴展,可程式化層命令允許擷取來 自封包的欄位。每個層具有特定於對應協定的N個層命令的集合。在一些實施例中,每層具有八個可程式化的層命令。表2列出了每個層命令的欄位。這些欄位是軟體定義的。
通用層命令允許以可程式化的方式擷取封包中的資訊。例如與傳統實現方式比較,對於乙太網,為了擷取MAC DA(MAC目的地位址),層命令將指定偏移0和六個位元組的長度。這將導致攜帶MAC DA的前六個位元組要從層中被擷取。相似地,為了擷取IP DA,層命令將指定偏移16和四個位元組的長度。這將導致攜帶IP DA的在偏移16處開始的四個位元組將從層中被擷取。
[56]第五圖說明根據本發明的一些實施例的從已擴展的層擷取數據的框第五圖00。已擴展的層在第五圖中被標注為「層N標頭(規範標頭)」。解析器引擎所確定的層類型被參考(referenced)在記憶體中,該層類型指定用於從已擴展的層擷取欄位的N個層命令中的一個或者多個層命令。每個層命令包括兩個欄位:fieldOffsetfieldLen。在第五圖中,第一層命令擷取欄位0,第二層命令擷取欄位1,而第三層命令擷取欄位15。擷取的資訊被儲存在第五圖中被表示為「表徵層N」的匯流排中。擷取的欄位被依次地相互挨 著放置而在擷取的欄位之間無任何間隙,以形成表徵層。換而言之,被擷取的欄位被級聯以形成表徵層。任何層的擷取的資訊的總長度是用於該特定層的所有fieldLen層命令之和。
第六圖說明根據本發明的一些實施例的來自所有層的擷取的資訊被級聯在一起以形成單個匯流排的的框第六圖00。在第六圖中,兩個層命令(即,cmd0和cmd1)被用來從層0擷取欄位用以形成表徵層0,三個層命令(即cmd0、cmd1和cmd2)被用來從層1擷取欄位以形成表徵層1,以此類推。所有表徵層被依次地相互挨著放置而在表徵層之間無任何間隙,以形成最終表徵。換而言之,表徵層0到表徵層7被級聯以形成最終表徵。最終表徵通常被用於封包的進一步處理。
第七A圖說明根據本發明的一些實施例的解析器引擎的方法700。解析器引擎是網路交換機的部分並且識別網路封包的內容。通常,解析器引擎先通過協定層拆分封包。在步驟705,識別封包的協定層。封包的協定層中的每個協定層被基於協定層的唯一的層類型編號來識別。
在步驟710,基於協定層中的每個協定層的識別將該協定層擴展成通用格式。通用格式定義協定層能夠具有的所有欄位的超集合。為已擴展的協定層維持位元向量。位元向量包括用於擴展的協定層的每個位元組的每位元組的位元。對於每個有效欄位的每個位元組將位元標記為可用,其中每個有效欄位是在封包的協定層中存在的欄位。對於每個無效欄位的每個位元組將位元標記為不可用,其中每個無效欄位是在封包的協定層中不存在的欄位。在一些實施例中, 壓縮格式被用來表達已擴展的協定層。
在步驟715,來自已擴展的協定層的內容被選擇,用以由此形成最終表徵。
第七B圖說明根據本發明的一些實施例的解析器引擎的另一方法750。通常,解析器引擎在方法700之後執行方法750。在步驟755,將來自通用層命令的集合的至少一個通用層命令應用於已擴展的協定層以從已擴展的協定層擷取欄位。通用層命令中的每個通用層命令的欄位是指定將擷取的欄位在該層內開始的偏移的fieldOffset和指定應當從該指定的偏移擷取的位元組的數量的fieldLen。通用層命令中的每個通用層命令的欄位是軟體定義的。
在步驟760,至少基於擷取的欄位形成表徵層。表徵層是通過將擷取的欄位與來自已擴展的協定層的其它擷取的欄位放置在一起而無任何間隙而形成的。
在步驟765,基於表徵層形成最終表徵。最終表徵是通過將表徵層與其它表徵層放置在一起而無任何間隙而形成的。最終表徵通常被用於封包的進一步處理。
第八圖說明根據本發明的一些實施例的網路交換機的方法800。在一些實施例中,網路交換機允許協定的通用格式的軟體定義的映射,並且在網路交換機的記憶體中儲存軟體定義的映射。在步驟805,在網路交換機的傳入埠接收封包。
在步驟810,根據用於對應協定的通用格式來通式化封包的每個協定標頭。解析器引擎確定協定標頭的層類型和層類型的變體。解析器引擎基於層類型和變體偵測在協定 中缺少的欄位。基於偵測,解析器引擎將協定標頭擴展成通用格式。
在步驟815,對於每個通式化的協定標頭,擷取來自通式化的協定標頭的一個或者多個欄位。為了擷取一個或者多個欄位,一個或者多個通用層命令被應用於通式化的協定標頭。通用層命令中的每個通用層命令的欄位是指定將被擷取的欄位在該層內開始的偏移的fieldOffset和指定應當從該指定的偏移擷取的位元組的數量的fieldLen。通用層命令中的每個通用層命令的欄位通常在步驟805之前由軟體程式設計。
在步驟820,對於每個通式化的協定標頭,來自通式化的協定標頭的一個或者多個擷取的欄位被級聯以形成表徵層。表徵層是通過將一個或者多個擷取的欄位放置在一起而無任何間隙而形成的。
在步驟825,所有表徵層被級聯以形成最終表徵。最終表徵是通過將表徵層與其它表徵層放置在一起而無任何間隙而形成的。最終表徵通常被用於封包的進一步處理。
使用層命令來擷取來自封包的數據。層中的每個層被擴展成通用格式。標頭的通用格式在從封包標頭擷取欄位方面產生硬體和軟體靈活性,因為層命令對在封包的層內的具體欄位不知的(agnostic)。不再需要在實施時間進行對將被擷取的相關資訊在封包內落在何處的確定。
本領域普通技術人員將認識到其它使用和優點也存在。儘管已經參照許多具體細節描述本發明,但是本領域普 通技術人員將意識到可以以其它具體形式體現本發明而不脫離本發明的精神實質。因此,本領域普通技術人員將理解本發明不受前述示例細節的限制、而是實際上將由所附申請專利範圍限定。
100‧‧‧封包標頭

Claims (38)

  1. 一種用於實施一解析器引擎的方法,所述方法包括:識別一封包的協定層;基於各該協定層之識別,將各該協定層擴展成一通用格式;及從已擴展的協定層中選擇內容,以藉此形成一最終表徵。
  2. 如申請專利範圍第1項所述的方法,其中該封包的各該協定層是基於該協定層的一唯一層類型編號而予以識別。
  3. 如申請專利範圍第1項所述的方法,其中該通用格式定義該協定層所能具有的所有欄位之一超集合。
  4. 如申請專利範圍第1項所述的方法,其中擴展各該協定層係包括:維持一已擴展的協定層之一位元向量,其中該位元向量包括該已擴展的協定層的各位元組之每位元組的位元;對於各有效欄位的各位元組將一位元標記為可用,其中各有效欄位是存在於該封包的該協定層中的一欄位;以及對於各無效欄位的各位元組將一位元標記為不可用,其中各無效欄位是不存在於該封包的該協定層中的一欄位。
  5. 如申請專利範圍第4項所述的方法,進一步包括使用一壓縮格式以表達該已擴展的協定層。
  6. 如申請專利範圍第1項所述的方法,進一步包括對一已擴展的協定層應用來自一通用層命令集合的至少一個通用層命令,以從該已擴展的協定層中擷取一欄位。
  7. 如申請專利範圍第6項所述的方法,其中各該通用層命令的欄位是fieldOffsetfieldLen,其中fieldOffset係指定將被擷取的欄位在該已擴展的層內開始的偏移,fieldLen係指定應從所指定之偏移擷取的位元組數量。
  8. 如申請專利範圍第6項所述的方法,其中各該通用層命令的欄位是由軟體定義。
  9. 如申請專利範圍第6項所述的方法,進一步包括:至少基於所擷取的欄位形成一表徵層;以及至少基於該表徵層形成該最終表徵。
  10. 如申請專利範圍第9項所述的方法,其中該表徵層是藉由將所擷取的欄位與來自該已擴展的協定層的其它所擷取的欄位放置在一起而無任何間隙而形成。
  11. 如申請專利範圍第9項所述的方法,其中該最後表徵是藉由將該表徵層與其它表徵層放置在一起而無任何間隙而形成。
  12. 一種用於實施網路交換機的方法,所述方法包括:在該網路交換機的一傳入埠處接收一封包;根據一對應協定之一通用格式,通式化該封包的每一個協定標頭;對於每一個已通式化的協定標頭,從該已通式化的協定標頭中擷取一或多個欄位; 對於每一個已通式化的協定標頭,級聯來自該已通式化的協定標頭的該一或多個所擷取的欄位,以形成一表徵層;以及級聯所有表徵層以形成一最終表徵。
  13. 如申請專利範圍第12項所述的方法,其中該網路交換機包括:一解析器引擎,配置以通式化每一個協定標頭,從已通式化的協定標頭中擷取一或多個欄位,級聯來自已通式化的協定標頭的一或多個所擷取的欄位以形成一表徵層,以及級聯所有表徵層以形成一最終表徵。
  14. 如申請專利範圍第13項所述的方法,其中通式化每一個協定標頭包括:所述解析器引擎決定該協定標頭之一層類型和該層類型之一變體;所述解析器引擎基於該層類型和該變體而偵測該協定標頭中缺少的欄位;以及基於所述偵測,所述解析器引擎將該協定標頭擴展為該通用格式。
  15. 如申請專利範圍第12項所述的方法,其中擷取一或多個欄位包括對已通式化的協定標頭應用一或多個通用層命令。
  16. 如申請專利範圍第15項所述的方法,其中各該一或多個通用層命令的欄位是fieldOffsetfieldLen,其中fieldOffset係指定將被擷取的欄位在該已擴展的層內開始 的偏移,fieldLen係指定應從所指定之偏移擷取的位元組數量。
  17. 如申請專利範圍第15項所述的方法,進一步包括:在接收一封包之前,先經由軟體來程式化各該一或多個通用層命令的欄位。
  18. 如申請專利範圍第12項所述的方法,進一步包括:在接收封包之前,先進行:允許進行協定通用格式的軟體定義之映射;及將該軟體定義之映射儲存在該網路交換機的一記憶體中。
  19. 一種網路交換機,包括:一輸入埠和一輸出埠,用於接收和發送封包;一記憶體,用於儲存協定通用格式之一軟體定義映射集合及儲存用於擷取欄位的通用層命令集合;以及一解析器引擎,用於對該封包執行一標頭通式化程序,以根據所述軟體定義映射中特定於一對應協定之一個軟體定義映射通式化一封包的每一個協定標頭,及從經通式化的協定標頭中選擇內容,以藉此形成一最終表徵。
  20. 如申請專利範圍第19項所述的網路交換機,其中該標頭通式化程序係用於一協定的不同變體。
  21. 如申請專利範圍第19項所述的網路交換機,其中該標頭通式化程序係用於不同協定。
  22. 如申請專利範圍第19項所述的網路交換機,其中在該解析器引擎處理該封包之後,該封包係包括規範協定層。
  23. 如申請專利範圍第22項所述的網路交換機,其中各該規範協定層是根據用於該對應協定之對應通用格式而擴展的一協定層。
  24. 如申請專利範圍第19項所述的網路交換機,其中該解析器引擎進一步將來自該通用層命令集合中其一的至少一個層命令應用於所述通式化的協定層中的每個通式化的協定層,以從所述通式化的協定層擷取一欄位。
  25. 如申請專利範圍第24項所述的網路交換機,其中所述通用層命令集合中其一是特定於該對應協定。
  26. 如申請專利範圍第24項所述的網路交換機,其中所述通用層命令中的每個通用層命令的欄位是由軟體定義。
  27. 如申請專利範圍第24項所述的網路交換機,其中所述擷取的欄位係與來自所述通式化的協定層的其它擷取欄位級聯以形成一表徵層。
  28. 如申請專利範圍第27項所述的網路交換機,其中所述表徵層與其它表徵層級聯以形成一最終表徵。
  29. 如申請專利範圍第28項所述的網路交換機,其中所述最終表徵係用於所述封包的進一步處理。
  30. 一種包括一電路之解析器引擎,所述電路係經配置以:識別一封包的協定層;基於各該協定層之識別,將各該協定層擴展成一通用格式;以及從已擴展的協定層中選擇內容,以藉此形成一最終表徵。
  31. 如申請專利範圍第30項所述的解析器引擎,其中所述封包的各該協定層是基於該協定層的一唯一層類型編號而予以識別。
  32. 如申請專利範圍第30項所述的解析器引擎,其中所述通用格式定義該協定層所能具有的所有欄位之一超集合。
  33. 如申請專利範圍第30項所述的解析器引擎,其中該電路也配置以將一通用層命令集合中的至少一個通用層命令應用於已擴展的協定層,以從所述已擴展的協定層中擷取欄位。
  34. 如申請專利範圍第33項所述的解析器引擎,其中各該通用層命令的欄位是fieldOffsetfieldLen,其中fieldOffset係指定將被擷取的欄位在該已擴展的層內開始的偏移,fieldLen係指定應從所指定之偏移擷取的位元組數量。
  35. 如申請專利範圍第33項所述的解析器引擎,其中各該通用層命令的欄位是由軟體定義。
  36. 如申請專利範圍第33項所述的解析器引擎,其中該電路亦配置以至少基於所擷取的欄位形成一表徵層,以及至少基於該表徵層形成該最終表徵。
  37. 如申請專利範圍第36項所述的解析器引擎,其中該表徵層是藉由將所擷取的欄位與所述已擴展的協定層中的其它擷取欄位放置在一起而無任何間隙而形成。
  38. 如申請專利範圍第36項所述的解析器引擎,其中該最終表徵是藉由將該表徵層與其它表徵層放置在一起而無任何間隙而形成。
TW104110833A 2014-06-19 2015-04-02 擷取封包數據方法及裝置 TW201607274A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/309,726 US9516145B2 (en) 2014-06-19 2014-06-19 Method of extracting data from packets and an apparatus thereof

Publications (1)

Publication Number Publication Date
TW201607274A true TW201607274A (zh) 2016-02-16

Family

ID=53541505

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104110833A TW201607274A (zh) 2014-06-19 2015-04-02 擷取封包數據方法及裝置

Country Status (7)

Country Link
US (1) US9516145B2 (zh)
EP (1) EP2958285A3 (zh)
JP (1) JP6590545B2 (zh)
KR (1) KR102337516B1 (zh)
CN (1) CN105282134B (zh)
HK (1) HK1220831A1 (zh)
TW (1) TW201607274A (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10911579B1 (en) * 2016-03-01 2021-02-02 Amazon Technologies, Inc. Generating programmatically defined fields of metadata for network packets
CN111092880B (zh) * 2019-12-13 2022-08-09 支付宝(杭州)信息技术有限公司 一种网络流量数据提取方法及装置
JP7220814B1 (ja) 2022-01-21 2023-02-10 エヌ・ティ・ティ・アドバンステクノロジ株式会社 データ取得装置及びデータ取得方法
CN116156027B (zh) * 2023-04-20 2023-07-18 中国人民解放军国防科技大学 一种支持rmt的动作执行引擎及其执行方法

Family Cites Families (59)

* 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
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ä
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 日本電気株式会社 フレーム構成方法、フレーム構成装置およびフレーム構成転送システム
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識別情報の設定方法
GB0023169D0 (en) 2000-09-20 2000-11-01 Ibm Message parsing in message processing systems
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
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
US20050281281A1 (en) 2003-01-24 2005-12-22 Rajesh Nair Port input buffer architecture
US7415596B2 (en) 2003-01-24 2008-08-19 Gigafin Networks, Inc. Parser table/production rule table configuration using CAM and SRAM
US7706363B1 (en) 2003-06-11 2010-04-27 Radlan Computer Communications, Ltd Method and apparatus for managing packets in a packet switched network
JP4152412B2 (ja) * 2003-10-10 2008-09-17 富士通株式会社 統計情報採取方法及び装置
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 富士通株式会社 通信システムの制御方法、通信制御装置、プログラム
US7760719B2 (en) * 2004-06-30 2010-07-20 Conexant Systems, Inc. Combined pipelined classification and address search method and apparatus for switching environments
US7474619B2 (en) 2004-07-22 2009-01-06 International Business Machines Corporation Method and apparatus for providing fragmentation at a transport level along a transmission path
US7570661B2 (en) 2005-06-14 2009-08-04 Microsoft Corporation Script-based parser
US7603474B2 (en) 2005-10-05 2009-10-13 Microsoft Corporation Efficient endpoint matching using a header-to-bit conversion table
US9143585B2 (en) * 2006-07-07 2015-09-22 Wi-Lan Inc. Method and system for generic multiprotocol convergence over wireless air interface
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
EP3041195A1 (en) * 2007-01-12 2016-07-06 University-Industry Cooperation Group Of Kyung Hee University Packet format of network abstraction layer unit, and algorithm and apparatus for video encoding and decoding using the format
US7978700B2 (en) 2007-03-12 2011-07-12 Marvell Israel (Misl) Ltd. Apparatus for determining locations of fields in a data unit
US8825592B2 (en) 2008-03-12 2014-09-02 Web Access, Inc. Systems and methods for extracting data from a document in an electronic format
US7843919B2 (en) * 2008-03-20 2010-11-30 International Business Machines Corporation Ethernet virtualization using a network packet alteration
KR101456563B1 (ko) * 2008-05-14 2014-10-31 삼성전자주식회사 멀티 홉 릴레이 환경에서 대역폭 할당 요청과 할당 방법 및시스템
US8234369B2 (en) 2008-12-23 2012-07-31 Verizon Patent And Licensing Inc. Web page response monitoring
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
US8521905B2 (en) 2011-12-22 2013-08-27 Telefonaktiebolaget L M Ericsson (Publ) System for flexible and extensible flow processing in software-defined networks
US8711860B2 (en) 2011-12-22 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Controller 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
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
US20150373163A1 (en) 2015-12-24
HK1220831A1 (zh) 2017-05-12
EP2958285A2 (en) 2015-12-23
CN105282134A (zh) 2016-01-27
JP6590545B2 (ja) 2019-10-16
US9516145B2 (en) 2016-12-06
EP2958285A3 (en) 2016-01-27
KR20150145728A (ko) 2015-12-30
JP2016005285A (ja) 2016-01-12
KR102337516B1 (ko) 2021-12-09
CN105282134B (zh) 2020-09-25

Similar Documents

Publication Publication Date Title
US9479620B2 (en) Packet parsing and key generation in a network device
US9154586B2 (en) Method for parsing network packets having future defined tags
TW201603534A (zh) 從封包內容形成散列輸入之方法及裝置
TW201607274A (zh) 擷取封包數據方法及裝置
US7948979B2 (en) Programmable network interface card
WO2016131422A1 (en) Flow entry generating and packet processing based on flow entry
WO2017041737A1 (zh) 报文处理
US11258886B2 (en) Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
JP6678401B2 (ja) 変更のためにパケットを個々のレイヤに分割し、変更後のレイヤを情報処理で継合する方法およびその装置
TW201603537A (zh) 使用連續位元組表示通用格式標頭之方法及裝置
US10397113B2 (en) Method of identifying internal destinations of network packets and an apparatus thereof
TW201611548A (zh) 使用唯一封包識別字識別封包結構方法及裝置
TW201603535A (zh) 修改封包為可進行可程式化修改之通用格式的方法及裝置
TW201605207A (zh) 使用通用修改指令進行封包靈活修改方法及裝置