新四季網

軟體定義的網絡中靈活的並且可擴展的流處理系統的製作方法

2023-05-31 02:56:26

軟體定義的網絡中靈活的並且可擴展的流處理系統的製作方法
【專利摘要】用於靈活的和可擴展的流處理的系統包含在軟體定義的網絡內起到控制器的作用的第一網絡裝置。第一網絡裝置接收處理定義,轉換處理定義來創建解析器配置包並且將解析器配置包傳送到多個轉發元件,並且傳送數據來填充多個轉發元件內的流表。系統還包含第二和第三網絡裝置,每個起到啟用流交換的轉發元件的作用並且能夠從第一網絡裝置接收解析器配置包。第二網絡裝置將解析器配置包編譯成機器代碼,機器代碼在處理器上執行來執行分組處理。第三網絡裝置包含協處理器來執行解析器配置包以執行分組處理。解析器配置包包含報頭、表定義和棧指令的表示。
【專利說明】軟體定義的網絡中靈活的並且可擴展的流處理系統
【技術領域】
[0001]本發明的實施例涉及連網領域;並且更具體地,涉及軟體定義的網絡的靈活的並且可擴展的流處理架構。
【背景技術】
[0002]幾十年來,傳統的基於電路的通信網絡的使用已經傾向於可以是更靈活的、有效率的和安全的基於分組的網絡。其結果是,基於分組的連網的增加的普及已經引起基於分組的網絡裝置的需求的增長。此需求主要由製造商來滿足,這些製造商創建越來越大的整體式路由器來處理網絡業務的增加的容量和複雜性。然而,此模型正接近其技術和經濟的極限。用傳統的路由器設計越來越難以滿足增加的性能要求,並且,隨著低成本數據中心硬體的出現,路由器供應商難以對相同性能的硬體的較高成本做出解釋。同時,對接入和聚集網絡中的路由和交換控制平面的需求正變得更複雜。運營商想要定製路由(用於處理接近邊緣的具體類型的業務流)、配置跨越聚集網絡的定製服務、並且實現多層集成的能力,而沒有當前網絡的典型詳細低級配置。
[0003]這些趨勢導致路由架構的不同方法(其中去耦合數據平面和控制平面)。利用此分離,控制平面可以是在邏輯上集中的並且由具有不同架構的各種硬體部件來實現。另外,數據平面可以包括由在邏輯上集中的控制器配置的簡化的交換機/路由器元件。此新的路由分割架構模型致力於來自轉發和數據處理元件的控制的分割並且在軟體定義的連網(SDN)核心處。軟體定義的網絡中的流處理的一個標準是OpenFlow,它定義用於在控制平面與轉發平面之間傳輸消息的協議並且描述用於分組處理的模型。
[0004]此軟體定義的網絡的分割架構允許在邏輯上或物理上可以分組在一起的功能性之間的分離。例如,在公共控制實體與網絡應用(例如,通用多協議標籤交換(GMPLS)、邊界網關協議(BGP)、網際網路協議安全(IPSec)等)之間可以有分割或分離。類似地,在控制與轉發/處理之間可以有分割或分離(即來自執行分組處理的網絡裝置的中央控制的分離)。也可以有數據轉發功能性、數據處理功能性和數據生成功能性(例如,深度包檢測(DPI);加密;操作、管理和維護(OAM)等)的分割或分離。
[0005]軟體定義的網絡呈現超過傳統的整體式架構網絡的許多優勢。例如,實現重要的網絡路由和交換功能性的控制平面應用與轉發平面完全分離。因此,維持集中式控制平面允許高度定製和最優化的連網服務(它們可以被調整來適應具體用戶需要)。集中式控制平面提供可高度擴展的、可靠的以及靈活的連網基礎結構(可以迎合不同用戶需要)。轉發平面(或數據平面)裝置可以是便宜以及可互換的商品連網裝置,它降低了用戶的整個配置和維護負擔。此外,整個網絡的單個管理和配置實體提升了用戶的易用性體驗。
[0006]然而,現有的SDN配置也遭受缺點。雖然系統(例如,OpenFlow)確實提出有效方式來規定分組處理模型,但是問題存在於很難根據特定路由需要來擴展或定製此模型。例如,添加對於新協議的支持要求提出對OpenFlow規格的改變,希望採納,以及等待實現。這樣的改變涉及修改分組處理模型的解析、分類(因為必須改變將被解析的欄位的數量)和動作(例如,用於修改新協議的報頭)。
[0007]現有的SDN分組處理模型的另一缺點是處理規格需要將分組分類為屬於基於一組靜態協議報頭欄位的流。例如,分類可只是以元組的形式(例如,15個元組被提取並且用於分類)使用有限的一組提取的報頭欄位而發生。然而,隨著新協議的開發,不能容易地更新此模型。此外,在一些環境中,應用可受益於只使用一小組元組的分組的僅局部分類。例如,利用MPLS分組,可僅對MPLS報頭內的短路徑標籤的內容做出分組轉發決定,而無需另外檢查分組自身。在OpenFlow中,無法使用少於15個元組來分類這些分組,這在解析努力和流表存儲器要求的方面是沒有效率的。
[0008]最後,現有的SDN模型在處理隧道的多個等級(即封裝和解封)中也很弱。例如,考慮在開放系統互連(0SI)模型數據鏈路層報頭(即,OSI層2、或L2)或網絡層報頭(即,OSI層3、或L3)的頂部上解封乙太網分組的情況,當實現層2虛擬私有網(L2VPN)或偽線(PW)時這是經常做的。在此情況下,不可能使用在超過L2或L3的第一級的報頭中找到的信息來執行更細粒度的分組處理。

【發明內容】

[0009]根據本發明的實施例,靈活的和可擴展的流處理系統包含在軟體定義的網絡內起到控制器的作用的第一網絡裝置。此第一網絡裝置包含可操作來接收處理定義的定義接收模塊。處理定義包含協議的可配置的定義(包含協議報頭的有關的報頭欄位)、可配置的流表定義(包含基於第一多個有關的報頭欄位的關鍵字組分,其中每個流表定義的關鍵字組分識別為流表定義選擇的一組一個或多個有關的報頭欄位)、以及可配置的邏輯(用於基於第二多個有關的報頭欄位在由可配置的流表定義而定義的流表之間選擇)的第一表示。第一網絡裝置還包含轉換器,可操作來轉換處理定義以創建解析器配置包。解析器配置包包含可配置的流表定義和用於在流表之間選擇的可配置的邏輯的第二表示。第一網絡裝置還包含分布模塊,可操作來將解析器配置包分布到多個轉發元件。此分布使多個轉發元件中的每個基於每個可配置的流表定義來創建流表。每個流表包含由包含在流表所基於的流表定義中的關鍵字組分而識別的每個有關的報頭欄位的可配置的關鍵字列。每個流表還包含一個或多個動作列來存儲轉發決定。第一網絡裝置還包含流表填充模塊,可操作來傳送數據來填充在多個轉發元件中的每個內創建的流表的可配置的關鍵字列和動作列。除第一網絡裝置以外,系統還包含第二網絡裝置,其在軟體定義的網絡內起到啟用流交換的轉發元件的作用。第二網絡裝置用於接收來自分布模塊的解析器配置包以及來自流表填充模塊的數據。第二網絡裝置包含可操作來接收分組的網絡接口,可操作來將解析器配置包編譯成機器代碼的編譯器,以及處理器。處理器可操作來執行機器代碼以創建流表以及為網絡接口所接收的分組做出轉發決定。處理器也可操作來根據來自流表填充模塊的數據來填充流表的可配置的關鍵字列和動作列。系統還包含第三網絡裝置,其在軟體定義的網絡內起到啟用流交換的轉發元件的作用。第三網絡裝置可操作來接收來自分布模塊的解析器配置包以及來自流表填充模塊的數據。第三網絡裝置包含可操作來接收分組的網絡接口,可操作來執行解析器配置包來創建流表並且為網絡接口所接收的分組做出轉發決定的協處理器,以及可操作來根據來自流表填充模塊的數據來填充流表的可配置的關鍵字列和動作列的處理器。[0010]根據本發明的另一實施例,有形的非暫時性機器可讀存儲介質包含用於處理裝置的至少一個處理器的指令,當該指令被處理器執行時,使處理器執行操作。有形的非暫時性機器可讀存儲介質包含報頭指令,它規定協議的可配置的定義。每個協議的這些可配置的定義包含協議報頭名稱和該協議的一組一個或多個有關的報頭欄位的一組一個或多個欄位聲明。每個欄位聲明指示數據類型和有關的報頭欄位名稱。有形的非暫時性機器可讀存儲介質還包含表定義指令。表定義指令基於第一多個有關的報頭欄位來規定包含關鍵字組分的可配置的流表定義。每個表定義指令定義流表,並且每個關鍵字組分識別為該流表定義選擇的一組一個或多個有關的報頭欄位。每個表定義指令包含用於流表的唯一表ID、以及識別該流表的關鍵字組分的一組一個或多個欄位聲明。每個欄位聲明定義流表的關鍵字列的內容定義,其中內容定義將第一多個有關的報頭欄位中的至少一個識別為關鍵字列的有關的報頭欄位。每個欄位聲明也定義用於找到該關鍵字列內的流表的條目的內容與在該關鍵字列的有關的報頭欄位的分組內的內容之間的肯定的匹配的準則。有形的非暫時性機器可讀存儲介質還包含規定可配置的邏輯的棧指令,用於基於第二多個有關的報頭欄位來在由可配置的流表定義而定義的流表之間選擇。可配置的邏輯規定協議報頭如何彼此相關,如何檢查協議報頭來解析分組,以及如何在流表之間選擇以用於分組分類。每個棧指令對應於報頭指令中的一個並且包含來自該報頭指令的協議報頭名稱。每個棧指令還包含關鍵字欄位,其通過識別該報頭指令內的有關的報頭欄位名稱中的一個來識別從分組中選擇有關的報頭欄位中的哪個。另外,每個棧指令還包含一組一個或多個規則,用於基於分組的關鍵字欄位內的值來選擇用於分組分類的一個流表或者下一應用的一個棧指令。每個規則包含與分組的關鍵字欄位內的值比較的關鍵字值和下一報頭名稱,其中有效的匹配使解析繼續由匹配的規則的下一報頭名稱而指示的棧指令,並且其中每個匹配的失敗引起在該棧指令中規定其唯一表ID的流表中的一個的選擇。
【專利附圖】

【附圖說明】
[0011]通過參考用於圖示本發明的實施例的下文的描述和附圖可以最好地理解本發明。在圖中:
圖1圖示根據本發明的一個實施例的示範性的靈活的和可擴展的流處理系統;
圖2圖示根據本發明的一個實施例的解析模塊內的處理配置的表示;
圖3圖示根據本發明的一個實施例的在軟體定義的網絡中起到控制器的作用的網絡元件中的方法的流程圖;
圖4圖示根據本發明的一個實施例的在軟體定義的網絡中起到轉發元件的作用的網絡元件中的方法的流程圖;
圖5圖示根據本發明的一個實施例的用於做出轉發決定的在軟體定義的網絡中起到轉發元件的作用的網絡元件中的方法的流程圖;
圖6圖示根據本發明的一個實施例的用於識別流表條目的在軟體定義的網絡中起到轉發元件的作用的網絡元件中的方法的流程圖;
圖7圖示根據本發明的一個實施例的解析過程和關鍵字生成的表示;
圖8圖示根據本發明的一個實施例的示範性的靈活的和可擴展的流處理系統;以及 圖9圖示根據本發明的一個實施例的用於靈活的和可擴展的流處理系統的處理配置的示範性表示。
【具體實施方式】
[0012]在下文的描述中,闡述許多具體細節。然而,要理解的是可實踐本發明的實施例而沒有這些具體細節。在其它實例中,沒有詳細示出熟知電路、結構和技術以便不模糊此描述的理解。利用包含的描述,本領域技術人員將能夠實現適當的功能性而沒有不適當的實驗。
[0013]說明書中的對「 一個實施例」、「實施例」、「示例實施例」等的提及指示描述的實施例可包含特定特徵、結構或特性,但是每一個實施例可不必包含特定特徵、結構或特性。此夕卜,這樣的短語不一定提及相同的實施例。另外,當結合實施例來描述特定特徵、結構或特性時,這表示連同其它實施例(無論是否明確描述)來影響這樣的特徵、結構或特性是在本領域技術人員的知識內。
[0014]為易於理解,圖中使用虛線和/或括號的文本來表明某些項目的可選性質(例如,本發明的給定實現所不支持的特徵;給定實現所支持的特徵,但是在一些情況中使用並且在其它情況中不使用)。
[0015]在下文的描述和權利要求中,可使用術語「耦合」和「連接」連同它們的衍生詞。應該理解,這些術語不旨在作為彼此的同義詞。「耦合」用於指示兩個或者更多元件,它們可以或可以不彼此直接物理或電接觸,彼此協作或交互。「連接」用於指示彼此耦合的兩個或者更多元件之間的通信的建立。
[0016]如本文所使用的,網絡元件(例如,路由器、交換機、網橋)是包含硬體和軟體的連網設備,它在通信上互連網絡上的其它設備(例如,其它網絡元件、終端站)。一些網絡元件是「多個服務網絡元件」,它們為多個連網功能(例如,路由、橋接、交換、層2聚集、會話邊界控制、服務質量和/或訂戶管理)提供支持,和/或為多個應用服務(例如,數據、語音和視頻)提供支持。訂戶終端站(例如,伺服器、工作站、膝上型設備、上網本、掌上電腦、行動電話、智慧型電話、多媒體電話、網際網路語音協議(VOIP)電話、用戶設備、終端、可攜式媒體播放器、GPS單元、遊戲系統、機頂盒)接入在網際網路上提供的內容/服務和/或在網際網路上覆蓋(例如,通過隧道)的虛擬私有網(VPN)上提供的內容/服務。內容和/或服務通常是由屬於參與對等服務的服務或內容提供商或終端站的一個或多個終端站(例如,伺服器終端站)來提供,並且可包含(例如)公用網頁(例如,免費內容、商店前臺頁面、搜索服務)、私有網頁(例如,提供電子郵件服務的用戶名/密碼接入的網頁)、和/或VPN上的企業網絡。通常,訂戶終端站是耦合到邊緣網絡元件(例如,通過耦合到接入網絡(有線或無線地)的用戶終端設備),邊緣網絡元件耦合到其它邊緣網絡元件(例如,通過一個或多個核心網絡元件),其它邊緣網絡元件耦合到其它終端站(例如,伺服器終端站)。
[0017]傳統上,網絡元件可以是將控制平面和數據平面(有時被稱作轉發平面或媒體平面)兩者整合到相同的網絡元件的多功能網絡元件。在網絡元件是路由器(或實現路由功能)的情況下,控制平面通常確定將如何路由數據(例如,分組)(例如,數據的下一跳和那個數據的外出埠),並且數據平面負責轉發那個數據。例如,控制平面通常包含一個或多個路由協議(例如,邊界網關協議(BGP)、內部網關協議(IGP)(例如,開放式最短路徑優先(0SPF)、路由信息協議(RIP)、中間系統到中間系統(IS-1S))、標籤分發協議(LDP)、資源保留協議(RSVP)),它們與其它網絡元件通信來交換路由並且基於一個或多個路由指標來選擇那些路由。備選地,網絡元件可只實現數據平面(轉發平面)或只實現所有或部分控制平面。此責任分離在分割架構網絡模型中是常見的。術語「分割架構網絡」在很大程度上是術語「軟體定義的網絡」(SDN)的同義,並且本文可互換使用這些術語。
[0018]路由和鄰接存儲在控制平面上的一個或多個路由結構(例如,路由信息表(RIB)、標籤信息表(LIB)、一個或多個鄰接結構)中。控制平面基於路由結構利用信息(例如,鄰接和路由信息)來編程數據平面。例如,控制平面將鄰接和路由信息編程為數據平面上的一個或多個轉髮結構(例如,轉發信息表(FIB)、標籤轉發信息表(LFIB)、和一個或多個鄰接結構)。當轉發業務時,數據平面使用這些轉發和鄰接結構。
[0019]每個路由協議基於某些路由指標(不同的路由協議的指標可以是不同的)將路由條目下載到主RIB。每個路由協議可以將路由條目(包含沒有下載到主RIB的路由條目)存儲在本地RIB (例如,OSPF本地RIB)中。管理主RIB的RIB模塊從由路由協議下載(基於一組指標)的路由中選擇路由並且將那些選擇的路由(有時被稱作有效路由條目)下載到數據平面。RIB模塊還可使路由在路由協議之間重新分配。
[0020]多功能網絡元件可以包含一組一個或多個線路卡、一組一個或多個控制卡、以及可選地一組一個或多個服務卡(有時被稱作資源卡)。這些卡是通過一個或多個機制(例如,耦合線路卡的第一全網孔和耦合所有卡的第二全網孔)而耦合到一起。一組線路卡組成數據平面,而一組控制卡通過線路卡用外部網絡元件來提供控制平面和交換分組。一組服務卡可以提供特別處理(例如,層4到層7服務(例如,防火牆、IPsec, IDS、P2P)、VoIP會話邊界控制器、移動無線網關(GGSN、演進型分組系統(EPS)網關))。
[0021]不像整體式網絡架構(它們需要將複雜的網絡管理功能分布在遍及網絡的多功能網絡元件的控制平面中,並且還需要整合到相同的多功能網絡元件中的複雜的數據和控制平面),基於流的軟體定義的網絡允許網絡的數據平面與控制平面分離。數據平面可以被實現為遍及網絡分布的簡單的離散流交換機(轉發元件),並且提供網絡情報的控制平面是在監督流交換機的集中式流控制器中實現。通過從數據轉發功能中解耦合控制功能,軟體定義的連網簡化修改網絡控制邏輯的任務並且提供可編程接口(開發者可以在其上構造各種新的路由和協議管理應用)。這允許數據和控制平面獨立地發展並且測量,同時減少數據平面網絡部件的管理必要性。
[0022]在軟體定義的網絡的一個實施例中,控制平面在轉發元件與控制器之間的安全和可靠的傳輸連接上通過控制平面信令協議來控制轉發平面。控制器通常包含提供基本處理、I/o、以及連網能力的作業系統。中間件層將軟體定義的網絡控制器的上下文提供到作業系統並且使用控制平面信令協議來與各種轉發平面元件通信。中間件層上的應用層提供各種網絡操作所需要的情報(例如,協議、網絡情況感知、以及用戶界面)。在更抽象的層次上,應用層使用網絡的邏輯觀點來工作並且中間件層提供從邏輯觀點到物理觀點的轉變。
[0023]在軟體定義的網絡範例的一實施例中,每個轉發元件是啟用流交換的網絡裝置。啟用流交換的網絡裝置基於每個分組所屬的流(而不是分組內的目的地IP位址,它們通常用於目前傳統的分組交換IP網絡)來轉發分組。流可被定義為一組分組(它們的報頭匹配位的給定圖案)。在這個意義上,傳統的IP轉發也是基於流的轉發,其中只由目的地IP位址來定義流。雖然,代替只考慮目的地IP位址或源IP位址,一般的流定義允許考慮分組報頭中的許多欄位(例如,10個或者更多)。[0024]控制平面基於應用層計算和為每個流映射的中間件層來將有關的消息傳送到轉發元件。轉發元件處理這些消息並且編程適當的流信息和其流表中的對應動作。轉發元件基於這些流表來將分組映射到流並且轉發分組。當然,流表可實現在各種數據結構中(例如,圖、列表、數組、文件、表、關係資料庫等)。另外,這些表內的列和行的討論是任意的;而一個實現可選擇將條目放在行中,相反修改數據結構來將條目放在列中是微不足道的。此夕卜,轉發元件可需要具有這樣的輸入操作(例如,DP1、NetFlow數據收集、OAM等)的數據處理和數據生成能力。
[0025]流處理的標準定義用於在控制平面與轉發平面之間傳輸消息的協議並且描述分組處理的模型。流處理裝置中的用於處理分組的此模型包含報頭解析、分組分類、以及做出轉發決定。
[0026]報頭解析描述如何基於已知的一組協議(例如,乙太網、虛擬區域網(VLAN)、多協議標籤交換(MPLS)、IPv4等)來解釋分組。報頭的一些層包括包含關於如何解復用下一報頭的信息的欄位。例如,乙太網報頭包含描述在下一層中有什麼類型的報頭的欄位。一些協議欄位用於構造將在分組分類中使用的匹配結構(或關鍵字)。例如,第一關鍵字欄位可以是源媒體接入控制(MAC)地址,並且第二關鍵字欄位可以是目的地MAC地址。
[0027]分組分類包括在存儲器中執行查找來分類分組(通過確定什麼是基於匹配結構或關鍵字而對應於此分組的轉發表中的最佳匹配流)。許多流可以對應於分組是有可能的;在此情況下系統通常配置為根據定義的方案來從許多流中確定一個流。此外,表中的流條目可以定義如何匹配分組與條目。若干匹配準則存在,例如「精確」(關鍵字中的值必須精確地匹配表中的值)、「通配符」(關鍵字中的值可以是任何東西)、「最長前綴匹配」(通常用於匹配IP位址與路由條目)、「位掩碼」(只有關鍵字中的一些位用於匹配)、和「範圍」(關鍵字中的值需要在值的定義的界限範圍內)。
[0028]做出轉發決定並且執行動作是通過使用分組來執行動作,基於在分組分類的先前步驟中識別的流條目而發生。表中的每個流與為每個對應分組執行的一組動作關聯。例如,動作可以是將報頭推到分組上,使用特定埠轉發分組,或簡單地丟棄分組。因此,具有特定傳送控制協議(TCP)目的地埠的IPv4分組的流條目可以包括規定應該丟棄這些分組的動作。
[0029]如何實現解析、分類、以及動作的執行的描述通常是記錄在規格文檔中。實現本規格文檔的節點可以與彼此內部操作。
[0030]本發明的實施例的一個方面描述用於描述解析、匹配、和動作的新穎的抽象概念。將用高級語言(它將用於表示轉發元件分組處理)來公開這些抽象概念。不像典型的軟體定義的網絡,這些抽象概念將用於在運行時並且不只在配置時間處編程轉發元件。
[0031]本發明的實施例的另一方面將典型的分組解析和分組分類階段聯繫在一起,它允許轉發元件是協議無關的(通過具有靈活性來解析由抽象概念的表示提供的任何類型的分組來為流的分類生成匹配關鍵字)。解析和分類的此聯繫提供表達這樣的關係的更簡單方式。
[0032]本發明的實施例的附加方面包含新的處理模型,它使用定義的抽象基於處理的定義來提供轉發元件的實現。在高級語言中規定的處理定義可被轉變成將在分組處理的解析和動作階段兩者中使用的中間代碼表示。具有簡單的中間代碼表示允許全異的轉發元件使用相同的處理模型代碼並且由此進一步降低用於管理具有變化的配置和能力的轉發元件的控制器內所需的複雜性。
[0033]本發明的實施例的方面提出修改轉發元件的行為的靈活方式,它沒有被嚴格固定為正式的規格或在低級硬體實現細節內。因此,很容易快速適應模型來支持新協議或提供定製的分組處理方案。
[0034]鍵
圖1圖示根據本發明的一個實施例的示範性的靈活的和可擴展的流處理系統。在此圖表中,控制器Iio和轉發元件120A利用處理配置102的一些或所有部分的表示。雖然此圖示模糊了一個或多個全異的轉發元件120B-120N的內部工作,但是描繪的轉發元件120A很大程度上代表了它們的特性(除非以其它方式提到)。
[0035]為了本公開的目的,可在某些情況下使用術語「轉發元件」 120A和「全異的轉發元件」120B-120N。除非以其它方式提到或通過環境語言明確表示,關於轉發元件120A描述的任何細節同樣適用於全異的轉發元件120B-120N,並且關於全異的轉發元件120B-120N的細節類似地適用於轉發元件120A。
[0036]處理配置102包含用於規定由轉發元件120A實現的轉發處理模型的三個主要抽象概念。一個抽象概念是包含協議報頭的有關的報頭欄位的協議的可配置的定義104。這些可配置的定義104規定將由轉發元件120A和網絡內的其它全異的轉發元件120B-120N解析的協議報頭的類型。因此,可配置的定義104包含一組一個或多個分組協議報頭定義,其中每個協議報頭定義包含報頭名稱並且是根據協議規格根據報頭內的一個或多個報頭欄位而定義。這些報頭欄位指示報頭內的每個定義的欄位的位置和數據類型。在本發明的實施例中,數據類型是簡單的一般欄位,並且此欄位的長度被附加到協議報頭定義。此外,在本發明的一實施例中,報頭的可配置的定義104可不定義報頭內的每一個可能的報頭欄位。在這樣的實施例中,報頭定義包含報頭長度,它是用於基於報頭的一個或多個報頭欄位內的值而計算報頭的總長度的數學表達。例如,IPv4報頭的字節中的報頭長度可被定義為等於來自報頭內的「hlen」欄位乘以數字4的值。在此示例中,假設「hlen」欄位內的值是5,報頭長度會被計算為5*4位元組、或20位元組。
[0037]處理配置102中的第二抽象概念是包含關鍵字組分的可配置的流表定義108,它利用161包含協議報頭的有關的報頭欄位的協議的可配置的定義104的方面。可配置的流表定義108用於定義將用於分組分類的流表140A-140N的數量以及用於匹配的每個表中的可配置的關鍵字列176的類型、大小、和數量。此外,可配置的流表定義108的表示也用於創建在轉發元件120A內使用的關鍵字生成邏輯158,它規定如何使用分組的解析的協議報頭欄位來生成關鍵字。此關鍵字生成邏輯158可在這樣的系統內的各處(例如,基於解析器配置包117由控制器110或甚至個別轉發元件(例如,120A)上的編譯器114)創建。
[0038]包含關鍵字組分的可配置的流表定義108包含在轉發元件120A中使用的每個流表140A-140N的表定義指令。每個表定義包含對應於特定流表(例如,140A)的唯一表標識符(ID),和一組一個或多個欄位聲明。每個欄位聲明包含欄位ID (識別關鍵字內的關鍵字欄位的相對位置(和/或流表140A內的可配置的關鍵字列176中的一個的相對位置))、匹配類型(指示如何比較關鍵字欄位與可配置的關鍵字列來確定它們是否匹配)、和一個或多個關鍵字欄位(指示哪個解析的協議報頭欄位被用作關鍵字欄位以及指示表內的可配置的關鍵字列176的對應一個的類型和大小)。當比較關鍵字欄位與可配置的關鍵字列時,匹配類型規定將使用的一個或多個匹配算法。例如,匹配算法可以是精確匹配、最長前綴匹配、掩碼、或範圍。欄位聲明的一個或多個關鍵字欄位指示將使用哪個解析的報頭欄位來生成關鍵字的對應關鍵字欄位部分。
[0039]如果精確地為欄位聲明定義一個關鍵字欄位,則當生成對應於欄位聲明的關鍵字的部分時,使用那個關鍵字欄位。然而,在本發明的一實施例中,多於一個關鍵字欄位可被宣告用於欄位聲明。此配置允許關鍵字組分變量的使用。關鍵字組分變量指定不同的方式來基於存在於特定分組內的報頭而構造關鍵字。因此,當解析兩個不同的分組時,可使用來自每個分組的不同的報頭欄位來生成用於由表定義指令的表ID指示的流表內的匹配的關鍵字。
[0040]例如,考慮表定義包含具有欄位ID 「6」的欄位聲明並且兩個關鍵字欄位可能性取決於分組中的傳輸層(L4)報頭的場景。如果所解析的分組包括TCP報頭,則TCP報頭欄位將用於生成關鍵字內的第六欄位。然而,如果分組改為包括用戶數據報協議(UDP)報頭,則UDP報頭欄位將用於生成關鍵字內的第六欄位。在此場景中,一個關鍵字組分變量包含TCP報頭欄位,並且一個關鍵字組分變量包含UDP報頭欄位。不論哪個關鍵字組分變量用於構造關鍵字,相同的流表和可配置的關鍵字列將用於匹配。
[0041]如圖1中表格那樣表示了包含關鍵字組分的可配置的流表定義108的邏輯描繪。對於每個表定義(由表ID表示的),可有一個關鍵字組分(例如,表ID 1,關鍵字組分I)或在本發明的一些實施例中,有多於一個關鍵字組分,或多個關鍵字組分變量(例如,表ID 2,關鍵字組分2和2』)。
[0042]處理配置102中的第三抽象概念是用於在流表之間選擇的可配置的邏輯106,它利用160包含協議報頭的有關的報頭欄位的協議的可配置的定義104的方面。在本發明的實施例中,此可配置的邏輯106也在選擇的流表的關鍵字組分變量之間選擇。用於在流表之間選擇的可配置的邏輯106定義將被解析的協議報頭之間的關係和次序。這些關係可以在邏輯上表示為解析樹的類型,其如果被物化則會根據定義的處理配置102來圖示將被解析並且分類的可能分組(即,協議報頭次序)。除定義協議報頭之間的關係以外,用於在流表之間選擇的可配置的邏輯106還基於分組中的協議報頭的次序來定義哪個流表140A-140N將用於分組分類。因此,不同的解析路徑可帶來為分類選擇的不同的表。例如,一個解析路徑162可帶來選擇不同於其它解析路徑163或164的表ID。在一實施例中,當構造所選擇的流表的關鍵字時,這些解析路徑也確定應該使用哪個關鍵字組分變量。
[0043]用於在流表之間選擇的可配置的邏輯106定義協議報頭次序關係並且使用棧指令來確定用於分類的表。每個棧指令對應於分組協議報頭並且包含報頭名稱、關鍵字欄位、和一組一個或多個規則,每個規則包含關鍵字值和下一報頭名稱。關鍵字欄位是被檢查的分組報頭內的報頭欄位中的一個,它將與規則的關鍵字值比較來嘗試確定將解析的下一報頭。當關鍵字欄位匹配規則的關鍵字值時,解析將繼續到隨後的分組報頭(使用棧指令,它具有對應於由匹配的規則指示的下一報頭名稱的報頭名稱)。當關鍵字欄位無法匹配規則的關鍵字值時,根據由棧指令指示的表ID來選擇用於分組分類的流表。如果棧指令沒有指示表ID,則用於在流表之間選擇的可配置的邏輯106可指示將採取的糾正動作(例如,丟棄分組、將分組傳送到控制器等)。[0044]以處理定義112的形式創建處理配置102的表示150。控制器110可接收來自遠程用戶或裝置的處理定義112,或它可創建處理定義112。在圖1中圖示的實施例中,控制器110包含定義接收模塊111來接收處理定義112。處理定義112被提供151到轉換器113來產生流表配置信息115A(它被提供154到並且被流表填充模塊118用於用流表條目來填充流表140A-140N)。此外,轉換器113將處理定義112提供到可產生152解析器代碼116的編譯器114。此解析器代碼116 (和可選地流表配置信息115B的版本)組成解析器配置包 117。
[0045]部分地,轉換器113的目的是將處理定義112轉換成全異的轉發元件120A-120N能夠用於處理分組的解析器配置包117。因此,通過其編譯器114的使用,通過從由處理定義112提供的正式的抽象(即,語法的類型)以解析器代碼116的形式來生成分組解析器的代碼,轉換器113起到解析器生成器(即,編譯器-編譯器、或編譯器生成器)的作用。轉發元件(例如,120A)還可利用解析器代碼116來對分組執行動作。因此,解析器代碼116 (它是解析器配置包117的一部分)合併協議的可配置的定義104、用於在流表之間選擇的可配置的邏輯106、以及來自處理配置102的可配置的流表定義108的表示153。在一實施例中,解析器代碼116是使用一小組指令(例如,加載、存儲、增加、分支、比較等)以及一組定義的虛擬寄存器(當用分組執行動作時被用作臨時數據存儲)來規定的中間級代碼。
[0046]在分組處理的解析階段中使用的解析器代碼116的一部分可在邏輯上表示為有向圖。這樣的有向圖中的每個節點表示協議報頭並且有向邊表示基於報頭的欄位內的值而採取的路徑。在圖7中呈現這樣的有向圖的示例,它圖示根據本發明的一個實施例的解析階段700和關鍵字生成階段701的表示,其中解析階段700可操作來解析UDP、TCP、和MPLS分組。當解析乙太網702的第一協議報頭來識別其欄位時,基於乙太網報頭702的ether_type欄位值而發生分支決定。如果ether_type欄位值是0x8847,則將被解析的下一報頭是MPLS報頭704。在一實施例中,基於MPLS報頭704內的bos欄位(棧的底部)的值而發生分支決定。當bos欄位值是零時,解析將繼續到下一報頭,它也是MPLS報頭704。當bos欄位值不是零時,解析階段700結束並且關鍵字生成701開始。在另一實施例中,到達MPLS報頭704的分支決定依賴於bos欄位值和key_is_matchable欄位值兩者,它發出其中更多的MPLS分組704可存在於分組內的事件信號,但是另外檢查是不必要的,因為可已經生成分組分類的所希望的關鍵字。因此,當key_is_matchable欄位值或bos欄位值不為零時,解析階段700結束並且關鍵字生成701開始。類似地,如果乙太網報頭702的ether_type欄位值是0x8100 (而不是0x8847),則分組的下一報頭將被解析為IPv4報頭708。在此點上,檢查IPv4報頭708的協議欄位值:如果它是0x11,則解析將以UDP報頭710為下一報頭而繼續,並且如果它是0x06,則解析將以TCP報頭712為下一報頭而繼續。然後將解析UDP710或TCP712報頭來識別其欄位,並且解析階段700結束並且關鍵字生成701開始。
[0047]轉回圖1,解析器配置包117內的解析器代碼116也包括用於在全異的轉發元件120B-120N內的分組處理的動作執行階段期間對分組執行動作的指令。當在轉發元件120A中插入或修改流時,控制器110填充這些動作。動作的兩個類別可以定義為獨立於分組的協議的動作、和依賴於分組的協議的動作。協議獨立的動作的示例包含將分組輸出到埠、為分組設置隊列、或丟棄分組。此外,獨立的動作可包含將分組發送回到解析器,它通常在它已經被動作修改之後發生。[0048]另外,通過利用協議的可配置的定義(包含處理配置102內的協議報頭104的有關的報頭欄位並且表示在處理定義112內),可對分組執行協議依賴的動作。這通過分組處理技術的協議具體的定製而提供增加的靈活性,其中可以用細粒度的方式來修改具有某些協議報頭的分組。例如,協議依賴的動作可被定義為將附加的報頭推進分組或從分組彈出報頭。另外,協議依賴的動作可以用簡單或複雜的方式來改變某些分組報頭內的欄位。例如,可通過將時間遞增或遞減為實況(TTL)欄位(通常在IPv4報頭中找到的欄位)在數學上修改欄位,或基於欄位中的原始值用完全不同的值來替換目的地地址值。此外,在這樣的修改之後,動作可為報頭或分組計算新的校驗和。
[0049]當分組內有解析迴路或遞歸時(例如,當分組中有相同類型(例如,MPLS等)的多個報頭、或封裝或隧道的業務(例如,乙太網MPLS-MPLS乙太網等)),通過支持所執行的細粒度動作,此配置允許分組處理的另外控制。在這樣的情況下,動作可足夠智能來修改、彈出、或推進分組內的目標的報頭。然後可觸發獨立的動作來將分組重新發送回去用於進一步解析。當然,因為解析器代碼116的特性,將對特定協議棧執行的這些定製的動作是可行的(因為轉發元件120A自身對應該如何在分組中布局報頭沒有認識,而是僅僅跟隨由解析器代碼116定義的過程)。例如,轉發元件120A不需要從根本上被設計為知道L3報頭(例如,網際網路協議(IP)、IPSec、內部網絡分組交換(IPX)等)應該出現在L2報頭(例如,地址解析協議(ARP)、異步傳輸模式(ATM)、點到點協議(PPP)等)之後,而是相反只需要盲目地信賴解析器代碼116來通過分組的報頭而移動。
[0050]除創造解析器代碼116以外,轉換器113還生成包含可配置的流表定義(包含關鍵字組分)108的表示的流表配置115A信息。流表配置115A的版本115B可包含在解析器配置包117內(被分發172到轉發元件120A-120N)。當被轉發元件(例如,120A)的解析器配置包117接收時,配置模塊121則可利用流表配置115B來將信息167傳送到流表管理模塊126以指示它創建或修改流表140A-140N。例如,配置模塊121使用流表配置115A以指示167流表管理模塊126多少流表140A-140N是必要的,每個表的關鍵字組分(如何構造每個表的關鍵字列144A-144N),以及如何構造流表140A-140N中的條目179A-179N。此外,由轉換器113創建的流表配置115A被提供154到流表填充模塊118,它使用包含關鍵字組分的可配置的流表定義108的表示以便通過將數據173發送到流表管理模塊126來正確填充全異的轉發元件120A-120N的流表140A-140N中的流表條目179A-179N。
[0051]因此,控制器110 (經由流表填充模塊118)與轉發元件120A交互173來維持必要的流表140A-140N的條目179A-179N。控制器110也經由配置模塊121與轉發元件120A交互167來創建或修改流表140A-140N。因此,流表140A-140N的所有這樣的配置和管理通過流表管理模塊126而發生。
[0052]每個流表包含可配置的關鍵字列176和動作列178。可配置的關鍵字列176實現關鍵字組分並且包含一個或多個關鍵字列144A-144N,因此通過將部分關鍵字匹配到關鍵字列144A-144N來允許分組分類。如圖1中描繪的,這些可配置的關鍵字列176可包含字面值(例如,80、23、10、192等)或通配值(例如,「*」)。動作列178包含將對分類為屬於那個對應流的分組執行的每個流條目的一個或多個動作146A-146N。如圖1中描繪的,這些動作列178可包含多種動作,此處一些動作被一般圖示為丟棄、輸出、彈出、以及重新解析。在本發明的實施例中,這些列包含動作ID來識別位於別處的動作代碼,並且可包含當執行動作時使用的變元值。
[0053]在一實施例中,流表還包含一個或多個流選擇列177。一個可能的列是流ID列141,為了在轉發元件120A內的模塊之間和在轉發元件120A與控制器110之間的通信的方便,它將唯一標識符分配到每個流條目。例如,當控制器110希望修改流表140A中的一個或多個動作146A-146N時,它可容易地傳送流ID 141值來快速地識別將修改哪個條目。另一可能的列是優先級值列142,當分組的關鍵字匹配流表140A的多於一個條目時,它包含允許流優先級的值。當通配值在可配置的關鍵字列176內時,這通常發生。例如,給定圖1中描繪的場景,具有對應於關鍵字列144A的值「80」和對應於關鍵字列144N的值「192」的分組關鍵字可能匹配流表140A中的兩個流條目(第一描繪的條目179A和最後描繪的條目179D)。假設兩個條目都匹配關鍵字,並且假設沒有第一條目179A和最後條目179D的其它可配置的關鍵字列(例如,144B)是不同的,然後每個條目的優先級值142用於確定哪個流來分類分組。因為第一流條目179A具有優先級值142為「I」並且最後的條目179D具有優先級值142為「7」,本發明的一個實施例可認為具有最小的優先級值的記錄是決定性的,並且因此分組會被分類為屬於第一流條目179A。備選地,在認為具有最大優先級值的記錄是決定性的另一實施例中,分組會被分類為屬於最後的流條目179D。此配置需要控制器110以這樣的方式維持流表140A-140N來防止優先級限制發生。這可以用各種方式來完成,例如將不同的優先級值142分配到每一個條目179A-179N,或只將相同的優先級值142分配到互相排斥的條目,意味著具有共享優先級值142的兩個條目無法匹配一個關鍵字。在其它實施例中,在優先級值142限制的情況下,附加的決勝過程發生,例如選擇表中更高的條目或具有最長前綴匹配或最精確匹配的條目(即,具有可配置的關鍵字列176內的最少通配符的條目)。
[0054]表1呈現根據本發明的一個實施例的流表的不例。表包含兩個關鍵字列,一個用於第一 MPLS標籤和一個用於第二 MPLS標籤。表還包含流選擇列:為表中的每一個條目存儲唯一標識符的流ID列141,和存儲用於實體選擇的優先級值的優先級列。表還包含一個動作列,它存儲對具有匹配兩個關鍵字列並且由此被分類為屬於特定流的關鍵字的分組執行的動作。
【權利要求】
1.一種用於靈活的和可擴展的流處理的系統,包括: 第一網絡裝置,在軟體定義的網絡內起到控制器的作用,包括: 定義接收模塊,可操作來接收處理定義,其中所述處理定義包含以下的第一表示: 協議的可配置的定義,包含協議報頭的有關的報頭欄位, 可配置的流表定義,包含基於第一多個所述有關的報頭欄位的關鍵字組分,其中每個所述流表定義的所述關鍵字組分識別對於所述流表定義選擇的一組一個或多個所述有關的報頭欄位,以及 可配置的邏輯,用於基於第二多個所述有關的報頭欄位在由所述可配置的流表定義而定義的流表之間進行選擇, 轉換器,可操作來轉換所述處理定義來創建解析器配置包,其中所述解析器配置包包含所述可配置的流表定義和用於在流表之間進行選擇的所述可配置的邏輯的第二表示,分布模塊,可操作來將所述解析器配置包分布到多個轉發元件來使每個轉發元件:基於每個所述可配置的流表定義來創建流表,其中每個所述流表包含由包含在所述流表所基於的所述流表定義中的所述關鍵字組分識別的每個所述有關的報頭欄位的可配置的關鍵字列,其中每個所述流表還包含一個或多個動作列來存儲轉發決定,以及 流表填充模塊,可操作來傳送數據來填充在所述多個轉發元件中的每個轉發元件內創建的所述流表的所述可配置的關鍵字列和動作列; 第二網絡裝置,在所述軟體定義的網絡內起到啟用流交換的轉發元件的作用並且可操作來接收來自所述分布模塊的所述解析器配置包以及來自所述流表填充模塊的數據,包括: 網絡接口,可操作來接收分組, 編譯器,可操作來將所述解析器配置包編譯成機器代碼,以及 處理器,可操作來: 執行所述機器代碼來創建所述流表以及為所述網絡接口所接收的分組做出轉發決定,以及 根據來自所述流表填充模塊的數據來填充流表的可配置的關鍵字列和動作列;以及第三網絡裝置,在所述軟體定義的網絡內起到啟用流交換的轉發元件的作用並且可操作來接收來自所述分布模塊的所述解析器配置包以及來自所述流表填充模塊的數據,包括: 網絡接口,可操作來接收分組, 協處理器,可操作來執行所述解析器配置包來創建所述流表並且為所述網絡接口所接收的分組做出轉發決定,以及 處理器,可操作來根據來自所述流表填充模塊的數據來填充所述流表的所述可配置的關鍵字列和動作列。
2.如權利要求1所述的系統,其中: 所述定義接收模塊還可操作來接收更新的處理定義,其中所述更新的處理定義包含以下的第三表示: 協議的可配置的定義,包含協議報頭的有關的報頭欄位, 可配置的流表定義,包含基於第一多個所述有關的報頭欄位的關鍵字組分,其中每個所述流表定義的所述關鍵字組分識別對於所述流表定義選擇的一組一個或多個所述有關的報頭欄位,以及 可配置的邏輯,用於基於第二多個所述有關的報頭欄位來在由所述可配置的流表定義而定義的流表之間進行選擇; 所述轉換器還可操作來轉換所述更新的處理定義來創建更新的解析器配置包,其中所述更新的解析器配置包包含所述可配置的流表定義和用於在流表之間進行選擇的所述可配置的邏輯的第四表示; 所述分布模塊還可操作來將所述更新的解析器配置包分布到所述多個轉發元件來使每個轉發元件:基於每個所述可配置的流表定義來創建、更新或刪除流表,其中每個所述流表包含由包含在所述流表所基於的所述流表定義中的所述關鍵字組分識別的每個所述有關的報頭欄位的可配置的關鍵字列,其中每個所述流表還包含一個或多個動作列來存儲轉發決定;以及 所述流表填充模塊還可操作來傳送數據來填充在所述多個轉發元件中的每個內創建的或更新的所述流表的所述可配置的關鍵字列和動作列。
3.如權利要求1所述的系統,其中: 所述解析器配置包還包含基於所述可配置的流表定義的關鍵字生成邏輯;以及 當將所述解析器配置包分布到多個轉發元件時,所述分布模塊還可操作來使所述多個轉發元件中的每個轉發元件安裝所述關鍵字生成邏輯來從在所述轉發元件的網絡接口上接收的分組中的值來 生成關鍵字,用於與所述轉發元件的所述流表的條目進行比較。
4.如權利要求1所述的系統,其中,當將所述解析器配置包分布到多個轉發元件時,所述第一網絡裝置的所述分布模塊還可操作來使所述多個轉發元件中的每個轉發元件創建基於所述可配置的流表定義的關鍵字生成邏輯,其中所述關鍵字生成邏輯將要從在所述轉發元件的網絡接口上接收的分組中的值來生成關鍵字,用於與所述轉發元件的所述流表的條目進行比較。
5.如權利要求1所述的系統,其中,當將所述解析器配置包分布到多個轉發元件時,所述第一網絡裝置的所述分布模塊還可操作來將解析器配置包元數據傳送到所述多個轉發元件中的每個轉發元件。
6.如權利要求5所述的系統,其中所述解析器配置包元數據包含由所述解析器配置包利用的虛擬寄存器的數量。
7.如權利要求1所述的系統,其中: 所述第二網絡裝置可操作來通過以下步驟而為由其網絡接口所接收的分組做出轉發決定: 基於所述可配置的邏輯和在用於所述選擇的所述可配置的邏輯所要求的所述第二多個有關的報頭欄位中的一些的每個分組的值來為每個分組選擇所述流表中的一個, 從由所選擇的流表的所述關鍵字組分識別的所述有關的報頭欄位中的所述分組的值來為每個分組生成關鍵字, 至少基於比較所述關鍵字與所選擇的流表中的所填充的關鍵字來識別所選擇的流表的一個條目,以及 執行由所識別條目規定的一組一個或多個行動;以及所述第三網絡裝置可操作來通過以下步驟而為由其網絡接口接收的分組做出轉發決定: 基於所述可配置的邏輯和在用於所選擇的所述可配置的邏輯所要求的所述第二多個有關的報頭欄位中的一些的每個分組的值來為每個分組選擇所述流表中的一個, 從由所選擇的流表的所述關鍵字組分識別的所述有關的報頭欄位中的所述分組的值來為每個分組生成關鍵字, 至少基於比較所述關鍵字與所選擇的流表中的所填充的關鍵字來識別所選擇的流表的一個條目,以及 執行由所識別的條目規定的一組一個或多個行動。
8.如權利要求7所述的系統,其中: 所述第二網絡裝置配置為:當比較所述關鍵字與所選擇的流表中的所填充的關鍵字時,響應於匹配所選擇的流表的零條目,將所述分組傳送到所述第一網絡裝置;以及 所述第三網絡裝置配置為:當比較所述關鍵字與所選擇的流表中的所填充的關鍵字時,響應於匹配所選擇的流表的零條目,將所述分組傳送到所述第一網絡裝置。
9.如權利要求8所述的系統,其中所述第一網絡裝置可操作來: 接收由所述多個轉發元 件中的一個傳送的分組;以及 響應於來自所述多個轉發元件中的一個轉發元件的所述分組的所述接收,將數據傳送到所述多個轉發元件中的一個或多個來使每個轉發元件修改一個或多個流表的一個或多個條目。
10.如權利要求9所述的系統,其中所述多個轉發元件中的所述一個或多個對一個或多個流表的一個或多個條目的所述修改將使每個轉發元件:響應於再次接收所述分組,匹配所述流表中的一個流表的一個或多個條目。
11.一種有形的非暫時性機器可讀存儲介質,包括用於處理裝置的至少一個處理器的指令,當所述指令被所述處理器執行時,使所述處理器執行操作,所述有形的非暫時性機器可讀存儲介質包括: 報頭指令,規定協議的可配置的定義,其中每個協議的所述可配置的定義包含協議報頭名稱和所述協議的一組一個或多個有關的報頭欄位的一組一個或多個欄位聲明,每個所述欄位聲明指示數據類型和有關的報頭欄位名稱; 表定義指令,基於第一多個所述有關的報頭欄位來規定包含關鍵字組分的可配置的流表定義,其中每個所述表定義指令定義流表,其中每個所述關鍵字組分識別對於所述流表定義選擇的一組一個或多個所述有關的報頭欄位,其中每個所述表定義指令包含, 所述流表的唯一表1D,以及 一組一個或多個欄位聲明,識別所述流表的所述關鍵字組分,其中每個所述欄位聲明定義: 所述流表的關鍵字列的內容定義,其中所述內容定義將所述第一多個有關的報頭欄位中的至少一個識別為所述關鍵字列的有關的報頭欄位,以及 準則,用於找到所述關鍵字列內的所述流表的條目的內容與在所述關鍵字列的所述有關的報頭欄位處的分組內的內容之間的肯定的匹配;以及 棧指令,規定可配置的邏輯,用於基於第二多個所述有關的報頭欄位來在由所述可配置的流表定義而定義的所述流表之間進行選擇,其中所述可配置的邏輯規定所述協議報頭如何與彼此相關,如何檢查所述協議報頭來解析分組,以及如何在所述流表之間選擇用於分組分類,每個所述棧指令對應於報頭指令中的一個並且包含, 來自所述報頭指令的所述協議報頭名稱, 關鍵字欄位,通過識別所述報頭指令內的所述有關的報頭欄位名稱中的一個來識別從分組中選擇所述有關的報頭欄位中的哪個,以及 一組一個或多個規則,用於基於分組的所述關鍵字欄位內的值來選擇用於分組分類的一個所述流表或者下一應用的一個所述棧指令,其中每個所述規則包含與分組的所述關鍵字欄位內的值比較的關鍵字值和下一報頭名稱,其中有效的匹配使解析繼續於由所述匹配的規則的下一報頭名稱而指示的所述棧指令,並且其中每個匹配的失敗引起在所述棧指令中規定其唯一表1D的所述流表中的一個的選擇。
12.如權利要求11所述的有形的機器可讀介質,其中所述棧指令的關鍵字值能夠是通配符,其中所述通配符匹配由所述關鍵字欄位指示的分組的報頭欄位的每一個可能的值。
13.如權利要求11所述的有形的機器可讀介質,其中棧指令還包含指示所述對應報頭的多於一個實例出現在連續的序列中的可堆疊關鍵字。
14.如權利要求11所述的有形的機器可讀介質,其中每個所述棧指令還包含表1D,其中所述表1D指示哪個流表用於匹配以及如果解析在所述棧中結束則哪個表定義指令用於構造關鍵字。
15.如權利要求14所述的有形的機器可讀介質,其中每個所述棧指令還包含遞歸計數,其中所述遞歸計數指示在解析將停止之前在分組的解析期間返回所述對應報頭的次數。
16.如權利要求11所述的有形的機器可讀介質,其中一個或多個所述表定義指令的一組欄位聲明中的一個或多個的所述內容定義將所述第一多個有關的報頭欄位中的兩個或者更多識別為作為所述關鍵字列的有關的報頭欄位的候選者。
17.如權利要求16所述的有形的機器可讀介質,其中所述第一多個有關的報頭欄位中的所述兩個或者更多中的一個是基於哪個報頭存在於分組中而被選擇作為所述關鍵字列的有關的報頭欄位。
18.如權利要求11所述的有形的機器可讀介質,其中所述報頭指令內的所述一組報頭欄位中的每個報頭欄位被排序來指示根據所述協議的所述報頭內的每個報頭欄位的位置。
19.如權利要求18所述的有形的機器可讀介質,其中所述報頭指令中的一個或多個內的所述一組報頭欄位不完全定義根據所述協議的所述報頭的所有報頭欄位。
20.如權利要求19所述的有形的機器可讀介質,其中由所述報頭指令中的一個或多個規定的協議的所述可配置的定義還包含長度,其中所述長度是用於基於所述報頭的一個或多個欄位而計算被解析的所述分組報頭的總長度的數學表達。
【文檔編號】H04L12/859GK103999431SQ201280063821
【公開日】2014年8月20日 申請日期:2012年12月20日 優先權日:2011年12月22日
【發明者】L.貝利沃, E.迪克, R.米什拉, R.帕特尼 申請人:瑞典愛立信有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀