用于軟件定義網(wǎng)絡(luò)中的靈活和可擴展流處理的控制器的制造方法
【專利摘要】網(wǎng)絡(luò)裝置充當軟件定義網(wǎng)絡(luò)中的控制器。該網(wǎng)絡(luò)裝置接收處理定義,其包括協(xié)議的可配置定義、可配置流表定義以及用于在可配置流表定義所定義的流表之間進行選擇的可配置邏輯的表示。網(wǎng)絡(luò)裝置轉(zhuǎn)化處理定義,以創(chuàng)建解析器配置包,其被分配給多個轉(zhuǎn)發(fā)元件。這種分配使每個轉(zhuǎn)發(fā)元件基于每個可配置流表定義來創(chuàng)建流表。流表包括一個或多個可配置關(guān)鍵字列以及存儲轉(zhuǎn)發(fā)判定的一個或多個動作列的集合。網(wǎng)絡(luò)裝置傳送數(shù)據(jù)以填充在多個轉(zhuǎn)發(fā)元件的每個中創(chuàng)建的流表的可配置關(guān)鍵字列和動作列。
【專利說明】用于軟件定義網(wǎng)絡(luò)中的靈活和可擴展流處理的控制器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及聯(lián)網(wǎng)領(lǐng)域;以及更具體來說,涉及用于軟件定義網(wǎng)絡(luò)的靈活和可擴展流(flow)處理架構(gòu)。
【背景技術(shù)】
[0002]數(shù)十年來,傳統(tǒng)的基于電路的通信網(wǎng)絡(luò)的使用已經(jīng)下降而支持基于分組的網(wǎng)絡(luò),其會是更靈活、有效和安全的。因此,基于分組的網(wǎng)絡(luò)的增加普及引起對基于分組的網(wǎng)絡(luò)裝置的需求的增長。通過制造商創(chuàng)建越來越大的單片路由器以操控網(wǎng)絡(luò)業(yè)務(wù)的增加容量和復(fù)雜度,在很大程度上滿足這種需求。但是,這種模型正接近其技術(shù)和經(jīng)濟極限。越來越難以采用傳統(tǒng)路由器設(shè)計來滿足不斷增加的性能要求,以及隨著低成本數(shù)據(jù)中心硬件的出現(xiàn),路由器廠商難以對相同的性能證明較高的硬件成本是合理的。同時,對接入和聚合網(wǎng)絡(luò)中的路由選擇和交換控制平面的需求變得更為復(fù)雜。運營商需要如下能力:定制路由選擇以操控邊緣附近的特定種類的業(yè)務(wù)流的能力;配置跨越聚合網(wǎng)絡(luò)的定制服務(wù);以及實現(xiàn)多層綜合,而無需作為當今網(wǎng)絡(luò)的特征的詳細低級配置。
[0003]這些趨勢導(dǎo)致路由選擇架構(gòu)(其中數(shù)據(jù)和控制平面是分離的)的不同方式。通過這種分隔,控制平面可在邏輯上集中化,并且采用具有各種架構(gòu)的多種硬件組件來實現(xiàn)。此夕卜,數(shù)據(jù)平面可由簡化交換機/路由器元件(其由邏輯上集中的控制器所配置)組成。這種新的路由選擇分離架構(gòu)模型集中于控制與轉(zhuǎn)發(fā)和數(shù)據(jù)處理元件的分離,并且處于軟件定義網(wǎng)絡(luò)(SDN)的核心。用于軟件定義網(wǎng)絡(luò)中的流處理的一個標準是OpenFlow,其定義用來在控制平面與轉(zhuǎn)發(fā)之間傳輸消息的協(xié)議,并且描述用于分組處理的模型。
[0004]軟件定義網(wǎng)絡(luò)的分離架構(gòu)實現(xiàn)能夠在邏輯上或物理上集中在一起的功能性之間的分隔。例如,在公共控制實體與網(wǎng)絡(luò)應(yīng)用(例如通用多協(xié)議標記交換(GMPLS)、邊界網(wǎng)關(guān)協(xié)議(BGP)、因特網(wǎng)協(xié)議安全性(IPSec)等)之間能夠存在分離或分隔。類似地,在控制與轉(zhuǎn)發(fā)/處理之間能夠存在分離或分隔(即,中央控制與執(zhí)行分組處理的網(wǎng)絡(luò)裝置的分隔)。還能夠存在數(shù)據(jù)轉(zhuǎn)發(fā)功能性、數(shù)據(jù)處理功能性和數(shù)據(jù)生成功能性(例如深層分組檢查(DPI);加密;操作、管理和管理(OAM);等等)的分離或分隔。
[0005]軟件定義網(wǎng)絡(luò)提供優(yōu)于傳統(tǒng)單片架構(gòu)網(wǎng)絡(luò)的許多優(yōu)點。例如,實現(xiàn)重要網(wǎng)絡(luò)路由選擇和交換功能性的控制平面應(yīng)用與轉(zhuǎn)發(fā)平面完全分隔。因此,保持集中控制平面實現(xiàn)高度定制和優(yōu)化網(wǎng)絡(luò)服務(wù),其能夠適應(yīng)特定用戶需要。集中控制平面提供高度可縮放、可靠和靈活網(wǎng)絡(luò)基礎(chǔ)設(shè)施,其能夠迎合不同的用戶需要。轉(zhuǎn)發(fā)平面(或數(shù)據(jù)平面)裝置能夠是廉價和可互換的商品網(wǎng)絡(luò)裝置,其降低用戶的總體配置和維護負擔(dān)。另外,整個網(wǎng)絡(luò)的單個管理和配置實體增強用戶的易于使用體驗。
[0006]但是,當前SDN配置還遭受缺點。雖然系統(tǒng)、例如OpenFlow提供指定用于分組處理的模型的有效方式,但是存在的問題在于,很難按照特定路由選擇需要來擴展或定制這種模型。例如,增加對新協(xié)議的支持要求提出對OpenFlow規(guī)范的變更,期待采用,并且等待實現(xiàn)。這類變更涉及修改分組處理模型的解析、分類(因為必須改變將要解析的字段的數(shù)量)和動作(例如,用于修改新協(xié)議的報頭)。
[0007]當前SDN分組處理模型的另一個缺點在于,處理規(guī)范要求基于協(xié)議報頭字段的靜態(tài)集合來將分組分類為屬于某個流。例如,分類可以僅使用采取元組形式的所提取報頭字段的有限集合(例如15個元組被提取并且用于分類)進行。但是,當部署新協(xié)議時,這種模型不能夠易于更新。另外,在一些環(huán)境中,應(yīng)用可獲益于僅使用元組的小集合對分組的僅部分分類。例如,對于MPLS分組,分組轉(zhuǎn)發(fā)判定可以只對MPLS報頭中的短路徑標簽的內(nèi)容進行,而無需進一步檢查分組本身。在OpenFlow中,不可能使用少于15個元組來分類這些分組,這在解析工作量和流表存儲器要求方面是低效的。
[0008]最后,當前SDN模型在處理多級隧穿(即,封裝和拆封)中也較弱。例如,考慮在開放系統(tǒng)互連(OSI)模型數(shù)據(jù)鏈路層報頭(即,OSI第二層或L2)或網(wǎng)絡(luò)層報頭(即,OSI第三層或L3)之上封裝以太網(wǎng)分組的情況,這常常在實現(xiàn)第2層虛擬專用網(wǎng)絡(luò)(L2VPN)或偽線(PW)時進行。在這種情況下,不可能使用第一級的L2或L3之外的報頭中存在的信息來執(zhí)行更細粒度分組處理。
【發(fā)明內(nèi)容】
[0009]按照本發(fā)明的一個實施例,由充當軟件定義網(wǎng)絡(luò)中的控制器的網(wǎng)絡(luò)裝置所執(zhí)行的方法包括接收處理定義的步驟。處理定義包括下列項的第一表示:包含協(xié)議報頭的相關(guān)報頭字段的協(xié)議的可配置定義;包含基于第一多個相關(guān)報頭字段的關(guān)鍵字組成的可配置流表定義,其中每個流表定義的關(guān)鍵字組成識別對那個流表定義所選的相關(guān)報頭字段的一個或多個的集合;以及可配置邏輯,用于基于第二多個相關(guān)報頭字段在通過可配置流表定義所定義的流表之間進行選擇。該方法還包括轉(zhuǎn)化處理定義以創(chuàng)建解析器配置包的步驟。這個解析器配置包包括可配置流表定義和用于在流表之間進行選擇的可配置邏輯的第二表示。該方法還包括向多個轉(zhuǎn)發(fā)元件分配解析器配置包的步驟。這使多個轉(zhuǎn)發(fā)元件的每個基于每個可配置流表定義來創(chuàng)建流表。這些流表的每個包括用于由作為那個流表的基礎(chǔ)的流表定義中包含的關(guān)鍵字組成所識別的每個相關(guān)報頭字段的可配置關(guān)鍵字列。流表的每個還包括存儲轉(zhuǎn)發(fā)判定的一個或多個動作列的集合。該方法還包括傳送數(shù)據(jù)以填充在多個轉(zhuǎn)發(fā)元件的每個中創(chuàng)建的流表的可配置關(guān)鍵字列和動作列的步驟。
[0010]按照本發(fā)明的另一個實施例,網(wǎng)絡(luò)裝置充當軟件定義網(wǎng)絡(luò)中的控制器。網(wǎng)絡(luò)裝置包括可操作以接收處理定義的定義接收模塊。處理定義包括下列項的第一表示:包含協(xié)議報頭的相關(guān)報頭字段的協(xié)議的可配置定義;包含基于第一多個相關(guān)報頭字段的關(guān)鍵字組成的可配置流表定義,其中每個流表定義的關(guān)鍵字組成識別對那個流表定義所選的相關(guān)報頭字段的一個或多個的集合;以及可配置邏輯,用于基于第二多個相關(guān)報頭字段在通過可配置流表定義所定義的流表之間進行選擇。網(wǎng)絡(luò)裝置還包括轉(zhuǎn)化器,其可操作以轉(zhuǎn)化處理定義,以便創(chuàng)建解析器配置包。解析器配置包包括可配置流表定義和用于在流表之間進行選擇的可配置邏輯的第二表示。網(wǎng)絡(luò)裝置還包括分配模塊,其可操作以向多個轉(zhuǎn)發(fā)元件分配解析器配置包。這使多個轉(zhuǎn)發(fā)元件的每個基于每個可配置流表定義來創(chuàng)建流表。每個流表包括用于由作為那個流表的基礎(chǔ)的流表定義中包含的關(guān)鍵字組成所識別的每個相關(guān)報頭字段的可配置關(guān)鍵字列。流表的每個還包括存儲轉(zhuǎn)發(fā)判定的一個或多個動作列的集合。該網(wǎng)絡(luò)裝置還包括流表填充模塊,其可操作以傳送數(shù)據(jù),以便填充在多個轉(zhuǎn)發(fā)元件的每個中創(chuàng)建的流表的可配置關(guān)鍵字列和動作列。
【專利附圖】
【附圖說明】
[0011]通過參照用來示出本發(fā)明的實施例的以下描述和附圖,可以最透徹地了解本發(fā)明。附圖包括:
圖1示出按照本發(fā)明的一個實施例的示范靈活和可擴展流處理系統(tǒng);
圖2示出按照本發(fā)明的一個實施例、解析模塊中的處理配置的表示;
圖3示出按照本發(fā)明的一個實施例、充當軟件定義網(wǎng)絡(luò)的控制器的網(wǎng)絡(luò)元件中的方法的流程圖;
圖4示出按照本發(fā)明的一個實施例、充當軟件定義網(wǎng)絡(luò)的轉(zhuǎn)發(fā)元件的網(wǎng)絡(luò)元件中的方法的流程圖;
圖5示出按照本發(fā)明的一個實施例、充當軟件定義網(wǎng)絡(luò)的轉(zhuǎn)發(fā)元件的網(wǎng)絡(luò)元件中用于進行轉(zhuǎn)發(fā)判定的方法的流程圖;
圖6示出按照本發(fā)明的一個實施例、充當軟件定義網(wǎng)絡(luò)的轉(zhuǎn)發(fā)元件的網(wǎng)絡(luò)元件中用于識別流表條目的方法的流程圖;
圖7示出按照本發(fā)明的一個實施例的解析過程和關(guān)鍵字生成的表示;
圖8示出按照本發(fā)明的一個實施例的示范靈活和可擴展流處理系統(tǒng);以及圖9示出按照本發(fā)明的一個實施例、靈活和可擴展流處理系統(tǒng)中使用的處理配置的示范表示。
【具體實施方式】
[0012]在以下描述中提出許多具體細節(jié)。但是要理解,即使沒有這些具體細節(jié)也可實施本發(fā)明的實施例。在其它情況下,沒有詳細示出眾所周知的電路、結(jié)構(gòu)和技術(shù),以免影響對本描述的了解。通過所包含的描述,本領(lǐng)域的技術(shù)人員將能夠?qū)崿F(xiàn)適當?shù)墓δ苄远鵁o需過分實驗。
[0013]說明書中提到“一個實施例”、“實施例”、“一個示例實施例”等表示所述的實施例可包括特定特征、結(jié)構(gòu)或特性,但可能不一定每一個實施例都包括該特定特征、結(jié)構(gòu)或特性。此外,這類詞語不一定指同一個實施例。此外,在結(jié)合一個實施例來描述特定特征、結(jié)構(gòu)或特性時,無論是否明確描述,均認為結(jié)合其它實施例來實現(xiàn)這種特征、結(jié)構(gòu)或特性是在本領(lǐng)域的技術(shù)人員的知識范圍之內(nèi)的。
[0014]為了易于理解,虛線和/或加括號文本在附圖中用來表示某些項的可選性質(zhì)(例如不是由本發(fā)明的給定實現(xiàn)所支持的特征、由給定實現(xiàn)所支持的特征、但是用于某些情況中而不是用于其它情況中)。
[0015]在以下描述和權(quán)利要求書中,可使用術(shù)語“耦合”和“連接”及其派生。應(yīng)當理解,這些術(shù)語并不是要作為彼此的同義詞。“耦合”用于表示彼此可以有或者可以沒有直接物理或電接觸的兩個或更多元件相互配合或交互?!斑B接”用于表示相互耦合的兩個或更多元件之間的通信的建立。
[0016]本文所使用的網(wǎng)絡(luò)元件(例如路由器、交換機、橋接器)是包括硬件和軟件的一個組網(wǎng)設(shè)備,其在通信上互連網(wǎng)絡(luò)上的其它設(shè)備(例如其它網(wǎng)絡(luò)元件、端站)。一些網(wǎng)絡(luò)元件是“多服務(wù)網(wǎng)絡(luò)元件”,其提供對多個連網(wǎng)功能(例如路由選擇、橋接、交換、第2層聚合、會話邊界控制、服務(wù)質(zhì)量和/或訂戶管理)的支持,和/或提供對多個應(yīng)用服務(wù)(例如數(shù)據(jù)、語音和視頻)的支持。訂戶端站(例如服務(wù)器、工作站、膝上型、上網(wǎng)本、掌上型、移動電話、智能電話、多媒體電話、基于因特網(wǎng)協(xié)議的語音(VOIP)電話、用戶設(shè)備、終端、便攜媒體播放器、GPS單元、游戲系統(tǒng)、機頂盒)訪問通過因特網(wǎng)所提供的內(nèi)容/服務(wù)和/或覆蓋于因特網(wǎng)的虛擬專用網(wǎng)絡(luò)(VPN)上(例如通過其中隧道傳遞)提供的內(nèi)容/服務(wù)。內(nèi)容和/或服務(wù)通常由屬于服務(wù)或內(nèi)容提供商的一個或多個端站(例如服務(wù)器端站)或者參與對等服務(wù)的端站來提供,并且可包括例如公開網(wǎng)頁(例如免費內(nèi)容、店面、搜索服務(wù))、私人網(wǎng)頁(例如提供電子郵件服務(wù)的用戶名/密碼訪問網(wǎng)頁)和/或基于VPN的公司網(wǎng)絡(luò)。通常,訂戶端站(例如通過與接入網(wǎng)(有線或無線)耦合的客戶駐地設(shè)備)耦合到邊緣網(wǎng)絡(luò)元件,邊緣網(wǎng)絡(luò)元件(例如通過一個或多個核心網(wǎng)絡(luò)元件)耦合到與其它端站(例如服務(wù)器端站)耦合的其它邊緣網(wǎng)絡(luò)元件。
[0017]按傳統(tǒng),網(wǎng)絡(luò)元件能夠是多功能網(wǎng)絡(luò)元件,其將控制平面和數(shù)據(jù)平面(有時稱作轉(zhuǎn)發(fā)平面或媒體平面)集成到同一網(wǎng)絡(luò)元件中。在網(wǎng)絡(luò)元件是路由器(或者實現(xiàn)路由選擇功能性)的情況下,控制平面通常確定如何路由數(shù)據(jù)(例如分組),而數(shù)據(jù)平面負責(zé)轉(zhuǎn)發(fā)那個數(shù)據(jù)。例如,控制平面通常包括與其它網(wǎng)絡(luò)元件進行通信以便交換路由并且基于一個或多個路由選擇量度來選擇那些路由的一個或多個路由選擇協(xié)議(例如邊界網(wǎng)關(guān)協(xié)議(BGP)、內(nèi)部網(wǎng)關(guān)協(xié)議(IGP)(例如開放式最短路徑優(yōu)先(OSPF)、路由選擇信息協(xié)議(RIP)、中間系統(tǒng)到中間系統(tǒng)協(xié)議(IS-1S))、標記分布協(xié)議(LDP)、資源保存協(xié)議(RSVP))。備選地,網(wǎng)絡(luò)元件可以僅實現(xiàn)數(shù)據(jù)平面(轉(zhuǎn)發(fā)平面)或者僅實現(xiàn)控制平面的全部或部分。職責(zé)的這種分隔是分離架構(gòu)網(wǎng)絡(luò)模型中常見的。術(shù)語“分離架構(gòu)網(wǎng)絡(luò)”在很大程度上是術(shù)語“軟件寬帶網(wǎng)網(wǎng)絡(luò)”(SDN)的同義詞,以及這些術(shù)語可在本文中可互換地使用。
[0018]路由和相鄰性存儲在控制平面上的一個或多個路由選擇結(jié)構(gòu)(例如路由選擇信息庫(RIB)、標記信息庫(LIB)、一個或多個相鄰性結(jié)構(gòu))中。控制平面基于路由選擇結(jié)構(gòu)采用信息(例如相鄰性和路由信息)來對數(shù)據(jù)平面進行編程。例如,控制平面將相鄰性和路由信息編程到數(shù)據(jù)平面上的一個或多個轉(zhuǎn)發(fā)結(jié)構(gòu)(例如轉(zhuǎn)發(fā)信息庫(FIB)、標記轉(zhuǎn)發(fā)信息庫(LFIB)以及一個或多個相鄰性結(jié)構(gòu))中。數(shù)據(jù)平面在轉(zhuǎn)發(fā)業(yè)務(wù)時使用這些轉(zhuǎn)發(fā)和相鄰性結(jié)構(gòu)。
[0019]路由選擇協(xié)議的每個基于某些路由量度(量度對于不同路由選擇協(xié)議能夠是不同的)將路由條目下載到主RIB。路由選擇協(xié)議的每個能夠在本地RIB(例如OSPF本地RIB)中存儲路由條目,其中包括沒有下載到主RIB的路由條目。管理主RIB的RIB模塊從路由選擇協(xié)議所下載的路由中選擇路由(基于量度集合),并且將那些所選路由(有時稱作活動路由條目)下載到數(shù)據(jù)平面。RIB模塊還能夠使路由在路由選擇協(xié)議之間重新分布。
[0020]多功能網(wǎng)絡(luò)元件能夠包括一個或多個線路卡集合、一個或多個控制卡集合以及可選的一個或多個服務(wù)卡集合(有時稱作資源卡)。這些卡通過一個或多個機構(gòu)(例如耦合線路卡的第一全網(wǎng)格以及耦合全部卡的第二全網(wǎng)格)。線路卡集合組成數(shù)據(jù)平面,而控制卡集合提供控制平面并且通過線路卡與外部網(wǎng)絡(luò)元件交換分組。服務(wù)卡集合能夠提供專用處理(例如第4至第7層服務(wù)(例如防火墻、IPsec、IDS、P2P) ,VoIP會話邊緣控制器、移動無線網(wǎng)關(guān)(GGSN、演進分組系統(tǒng)(EPS)網(wǎng)關(guān)))。[0021]與要求復(fù)合網(wǎng)絡(luò)管理功能在整個網(wǎng)絡(luò)分布在多功能網(wǎng)絡(luò)的控制平面中并且還要求復(fù)合數(shù)據(jù)和控制平面集成到同一多功能網(wǎng)絡(luò)元件中的單片網(wǎng)絡(luò)架構(gòu)不同,基于流的軟件定義網(wǎng)絡(luò)允許網(wǎng)絡(luò)的數(shù)據(jù)平面與控制平面分隔。數(shù)據(jù)平面能夠?qū)崿F(xiàn)為分布在整個網(wǎng)絡(luò)的簡單離散流交換機(轉(zhuǎn)發(fā)元件),以及提供網(wǎng)絡(luò)的智能的控制平面在集中流控制器(其監(jiān)督流交換機)中實現(xiàn)。通過將控制功能與數(shù)據(jù)轉(zhuǎn)發(fā)功能分離,軟件定義網(wǎng)絡(luò)減輕修改網(wǎng)絡(luò)控制邏輯的任務(wù),并且提供程序接口,開發(fā)人員在其上能夠構(gòu)建大量新路由選擇和協(xié)議管理應(yīng)用。這允許數(shù)據(jù)和控制平面單獨地演進和縮放,同時降低數(shù)據(jù)平面網(wǎng)絡(luò)組件所需的管理必須性。
[0022]在軟件定義網(wǎng)絡(luò)的一個實施例中,控制平面通過轉(zhuǎn)發(fā)元件與控制器之間的安全和可靠傳輸連接、經(jīng)過控制平面信令協(xié)議來控制轉(zhuǎn)發(fā)平面??刂破魍ǔ0ú僮飨到y(tǒng),其提供基本處理、I/O和網(wǎng)絡(luò)能力。中間件層向操作系統(tǒng)提供軟件定義網(wǎng)絡(luò)控制器的上下文,并且使用控制平面信令協(xié)議與各種轉(zhuǎn)發(fā)平面元件進行通信。中間件層之上的應(yīng)用層提供各種網(wǎng)絡(luò)操作所需的智能,例如協(xié)議、網(wǎng)絡(luò)狀況感知和用戶接口。在更抽象級,應(yīng)用層與網(wǎng)絡(luò)的邏輯視圖配合工作,以及中間件層提供從邏輯視圖到物理視圖的轉(zhuǎn)換。
[0023]在軟件定義網(wǎng)絡(luò)范例的一個實施例中,各轉(zhuǎn)發(fā)元件是流交換使能網(wǎng)絡(luò)裝置。流交換使能網(wǎng)絡(luò)裝置基于各分組所屬的流而不是分組中的目標IP地址(其通常用于當前常規(guī)分組交換IP網(wǎng)絡(luò)中)來轉(zhuǎn)發(fā)分組。流可定義為其報頭與給定位模式匹配的分組集合。在這種情況下,傳統(tǒng)IP轉(zhuǎn)發(fā)也是基于流的轉(zhuǎn)發(fā),其中流僅由目標IP地址來定義。但是,不是只考慮目標IP地址或源IP地址,通用流定義允許考慮分組報頭中的許多字段(例如10個或更多)。
[0024]控制平面基于各流的應(yīng)用層計算和中間件層映射向轉(zhuǎn)發(fā)元件傳送相關(guān)消息。轉(zhuǎn)發(fā)元件處理這些消息,并且在其流表中編程適當流信息和對應(yīng)動作。轉(zhuǎn)發(fā)元件將分組映射到流,并且基于這些流表來轉(zhuǎn)發(fā)分組。當然,流表可按照多種數(shù)據(jù)結(jié)構(gòu)來實現(xiàn),例如地圖、列表、陣列、文件、表格、關(guān)系數(shù)據(jù)庫等。此外,這些表中的列和行的論述是任意的;雖然一個實現(xiàn)可選擇成將條目放入行中,但是修改數(shù)據(jù)結(jié)構(gòu)以改為將條目放入列中是不重要的。另外,轉(zhuǎn)發(fā)元件可需要具有用于諸如DP1、NetFlow數(shù)據(jù)收集、OAM等的重要操作的數(shù)據(jù)處理和數(shù)據(jù)生成能力。
[0025]流處理的標準定義用來在控制與轉(zhuǎn)發(fā)平面之間傳輸消息的協(xié)議,并且描述用于分組的處理的模型。流處理裝置中用于處理分組的這種模型包括報頭解析、分組分類并且進行轉(zhuǎn)發(fā)判定。
[0026]報頭解析描述如何基于眾所周知的協(xié)議集合(例如以太網(wǎng)、虛擬局域網(wǎng)(VLAN)、多協(xié)議標記交換(MPLS)、IPv4等)來解釋分組。報頭的一些層包含其中包含與如何對下一個報頭進行解復(fù)用有關(guān)的信息的字段。例如,以太網(wǎng)報頭包括描述哪一種類型的報頭處于下一層中的字段。一些協(xié)議字段用來構(gòu)建匹配結(jié)構(gòu)(或關(guān)鍵字),其將用于分組分類中。例如,第一關(guān)鍵字字段可能是源媒體接入控制(MAC)地址,以及第二關(guān)鍵字字段可能是目標MAC地址。
[0027]分組分類涉及運行存儲器中的查找表,以便通過基于匹配結(jié)構(gòu)或關(guān)鍵字確定哪一個是轉(zhuǎn)發(fā)表中的最佳匹配流(其對應(yīng)于這個分組),來分類分組。有可能的是,許多流能夠?qū)?yīng)于分組;在這種情況下,該系統(tǒng)通常配置成按照所定義方案從許多流來確定一個流。另外,表中的流條目能夠定義如何將分組與條目進行匹配。若干匹配標準存在,例如“完全”(關(guān)鍵字中的值必須完全匹配表中的值)、“通配符”(關(guān)鍵字中的值能夠是任何值)、“最長前綴匹配”(常用于將IP地址與路由條目進行匹配)、“位掩碼”(只有關(guān)鍵字中的位的一部分用于匹配)以及“范圍”(關(guān)鍵字中的值需要處于值的所定義限定范圍之內(nèi))。
[0028]進行轉(zhuǎn)發(fā)判定并且執(zhí)行動作基于在通過使用分組運行動作的分組分類的前一步驟所識別的流條目進行。表中的各流與將要對各對應(yīng)分組所運行的動作集合關(guān)聯(lián)。例如,動作可以是將報頭推送到分組上,使用特定端口來轉(zhuǎn)發(fā)分組,或者只是丟棄分組。因此,具有特定傳輸控制協(xié)議(TCP)目標端口的IPv4分組的流條目可能包含指定應(yīng)當丟棄這些分組的動作。
[0029]如何實現(xiàn)動作的解析、分類和執(zhí)行的描述通常在規(guī)范文檔中證明。實現(xiàn)這個規(guī)范文檔的節(jié)點能夠彼此互通。
[0030]本發(fā)明的一個實施例的一個方面描述用于描述解析、匹配和動作的新抽象。這些抽象將按照高級語言來揭示,其將用來表示轉(zhuǎn)發(fā)元件分組處理。與典型軟件定義網(wǎng)絡(luò)不同,這些抽象將用來在運行時而不僅在配置時對轉(zhuǎn)發(fā)元件進行編程。
[0031]本發(fā)明的一個實施例的另一方面將典型分組解析和分組分類階段捆綁在一起,從而通過具有解析由抽象的表示所提供的任何類型的分組的靈活性,來允許轉(zhuǎn)發(fā)元件是協(xié)議不可知的,以生成流的分類的匹配關(guān)鍵字。解析和分類的這種捆綁提供表達這類關(guān)系的更簡單方式。
[0032]本發(fā)明的一個實施例的附加方面包括使用所定義抽象、基于處理的定義來提供轉(zhuǎn)發(fā)元件的實現(xiàn)的新處理模型。按照高級語言所指定的處理定義可被變換為將要用于分組處理的解析和動作階段中的中間代碼表示。具有簡單、中間代碼表示允許全異轉(zhuǎn)發(fā)元件使用相同處理模型代碼,并且由此進一步降低控制器中用于管理具有變化配置和能力的轉(zhuǎn)發(fā)元件所需的復(fù)雜度。
[0033]本發(fā)明的實施例的方面提供修改不是嚴格地固定到正式規(guī)范中或者低級硬件實現(xiàn)細節(jié)中的轉(zhuǎn)發(fā)元件的行為的靈活方式。因此,易于使模型快速適合支持新協(xié)議或者提供定制分組處理方案。
[0034]概述
圖1示出按照本發(fā)明的一個實施例的示范靈活和可擴展流處理系統(tǒng)。在這個圖中,處理配置102的一些或所有部分的表示由控制器110和轉(zhuǎn)發(fā)元件120A來利用。雖然這個圖示隱藏一個或多個全異轉(zhuǎn)發(fā)元件120B-120N的內(nèi)部工作,但是所示轉(zhuǎn)發(fā)元件120A主要表示其特性,除非另加說明。
[0035]為了便于本公開,術(shù)語“轉(zhuǎn)發(fā)元件”120A和“全異轉(zhuǎn)發(fā)元件”120B_120N可用于某些環(huán)境中。除非另加說明或者通過環(huán)境語言清楚說明,否則與轉(zhuǎn)發(fā)元件120A有關(guān)的所述任何細節(jié)同樣可適用于全異轉(zhuǎn)發(fā)元件120B-120N,以及與全異轉(zhuǎn)發(fā)元件120B-120N有關(guān)的細節(jié)同樣可適用于轉(zhuǎn)發(fā)元件120A。
[0036]處理配置102包括三個主要抽象,其用來指定將要由轉(zhuǎn)發(fā)元件120A所實現(xiàn)的轉(zhuǎn)發(fā)處理模型。一個抽象是包含協(xié)議報頭的相關(guān)報頭字段的協(xié)議的可配置定義104。這些可配置定義104指定將由網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)元件120A和其它全異轉(zhuǎn)發(fā)元件120B-120N來解析的協(xié)議報頭的類型。因此,可配置定義104包括一個或多個分組協(xié)議報頭定義的集合,其中各協(xié)議報頭定義包括報頭名稱,并且按照報頭(其按照協(xié)議規(guī)范)中的一個或多個報頭字段來定義。這些報頭字段指示報頭中的每個所定義字段的位置和數(shù)據(jù)類型。在本發(fā)明的一個實施例中,數(shù)據(jù)類型只是通用字段,以及這個字段的長度附加到協(xié)議報頭定義。另外,在本發(fā)明的一個實施例中,報頭的可配置定義104可以不定義報頭中的每一個可能報頭字段。在這類實施例中,報頭定義包括報頭長度,其是用來基于報頭的一個或多個報頭字段中的值來計算報頭的總長度的數(shù)學(xué)表達。例如,單位為字節(jié)的報頭長度可對IPv4報頭定義為等于來自報頭中的“hlen”字段的值乘以數(shù)值四。在這個示例中,假定“hlen”字段中的值為5,則報頭長度計算為5X4字節(jié)、即20字節(jié)。
[0037]處理配置102中的第二抽象是包含關(guān)鍵字組成的可配置流表定義108,其利用包含協(xié)議報頭的相關(guān)報頭字段的協(xié)議的可配置定義104的161個方面??膳渲昧鞅矶x108用來定義將要用于分組分類中的流表140A-140N的數(shù)量以及將要用于匹配的、每個表中的可配置關(guān)鍵字列176的類型、大小和數(shù)量。另外,可配置流表定義108的表示還用來創(chuàng)建在轉(zhuǎn)發(fā)元件120A中使用的關(guān)鍵字生成邏輯158,其指定如何使用分組的解析協(xié)議報頭字段來生成關(guān)鍵字。這個關(guān)鍵字生成邏輯158可例如由控制器110上或者甚至單獨轉(zhuǎn)發(fā)元件(例如120A)上的編譯器114基于解析器配置包117在這種系統(tǒng)中的各種位置來創(chuàng)建。
[0038]包括關(guān)鍵字組成的可配置流表108定義包括將要用于轉(zhuǎn)發(fā)元件120A中的各流表140A-140N的表定義指令。每個表定義包括與特定流表(例如140A)對應(yīng)的唯一表標識符(ID)以及一個或多個字段陳述的集合。各字段陳述包括:字段ID,識別關(guān)鍵字中的關(guān)鍵字字段的相對位置(和/或流表140A中的可配置關(guān)鍵字列176之一的相對位置);匹配類型,指示如何將關(guān)鍵字字段與可配置關(guān)鍵字列進行比較以確定它們是否匹配;以及一個或多個關(guān)鍵字字段,指示解析協(xié)議報頭字段的哪一個將要用作關(guān)鍵字字段,以及指示表中的可配置關(guān)鍵字列176的對應(yīng)可配置關(guān)鍵字列的類型和大小。匹配類型指定在將關(guān)鍵字字段與可配置關(guān)鍵字列進行比較時將要使用的一個或多個匹配算法。例如,匹配算法可以是完全匹配、最長前綴匹配、掩碼或范圍。字段陳述的一個或多個關(guān)鍵字字段指示哪一個解析報頭字段將用來生成關(guān)鍵字的對應(yīng)關(guān)鍵字字段部分。
[0039]如果對某個字段陳述正好定義一個關(guān)鍵字字段,則在生成與字段陳述對應(yīng)的關(guān)鍵字的部分時使用那個關(guān)鍵字字段。但是,在本發(fā)明的一個實施例中,可對字段陳述斷言一個以上關(guān)鍵字字段。這個配置允許使用關(guān)鍵字組成變體。關(guān)鍵字組成變體指定基于特定分組中存在的報頭來構(gòu)成關(guān)鍵字的不同方式。因此,當解析兩個不同分組時,來自各分組的不同報頭字段可用來生成用于在表定義指令的表ID所指示的流表中進行匹配的關(guān)鍵字。
[0040]例如,考慮一種情況,其中表定義包括具有’ 6’的字段ID以及取決于分組中的傳輸層(L4)的兩個關(guān)鍵字字段可能性的字段陳述的表定義。如果解析分組包含TCP報頭,則TCP報頭字段將在生成關(guān)鍵字中的第六字段中使用。但是,如果分組而是包含用戶數(shù)據(jù)報協(xié)議(UDP)報頭,則UDP報頭字段將在生成關(guān)鍵字中的第六字段中使用。在這種情況下,一個關(guān)鍵字組成變體包括TCP報頭字段,以及一個關(guān)鍵字組成變體包括m)P報頭字段。不管哪一個關(guān)鍵字組成變體用來構(gòu)成關(guān)鍵字,相同流表和可配置關(guān)鍵字列將用于匹配。
[0041]包括關(guān)鍵字組成的可配置流表108定義的邏輯圖示在圖1中表示為表。對于每個表定義一通過表ID所表示一可存在一個關(guān)鍵字組成(例如I的表ID、I的關(guān)鍵字組成),或者在本發(fā)明的一些實施例中可存在一個以上關(guān)鍵字組成或者多個關(guān)鍵字組成變體(例如2的表ID、2和2’的關(guān)鍵字組成)。
[0042]處理配置102中的第三抽象是用于在流表之間進行選擇的可配置邏輯106,其利用包含協(xié)議報頭的相關(guān)報頭字段的協(xié)議的可配置定義104的160個方面。在本發(fā)明的一個實施例中,這個可配置邏輯106還在所選流表的關(guān)鍵字組成變體之間進行選擇。用于在流表之間進行選擇的可配置邏輯106定義待解析的協(xié)議報頭之間的關(guān)系和排序。這些關(guān)系可在邏輯上表示為一種類型的解析樹,其在被體現(xiàn)時示出將要按照所定義處理配置102來解析和分類的可能分組(即,協(xié)議報頭排序)。除了定義協(xié)議報頭之間的關(guān)系之外,用于在流表之間進行選擇的可配置邏輯106還基于分組中的協(xié)議報頭的順序來定義哪一個流表140A-140N將用于分組分類。因此,不同的解析路徑可引起對分類選擇不同的表。例如,一個解析路徑162可引起與其它解析路徑163或164不同的表ID被選擇。在一個實施例中,這些解析路徑還確定在構(gòu)成所選流表的關(guān)鍵字時應(yīng)當使用哪一個關(guān)鍵字組成變體。
[0043]用于在流表之間進行選擇的可配置邏輯106定義協(xié)議報頭排序關(guān)系,并且確定使用棧指令的分類的表。每個棧指令對應(yīng)于分組協(xié)議報頭,并且包括報頭名稱、關(guān)鍵字字段和一個或多個規(guī)則的集合,各規(guī)則包括關(guān)鍵字值和下一個報頭名稱。關(guān)鍵字字段是被檢查的分組報頭中的報頭字段之一,其將要與規(guī)則的關(guān)鍵字值進行比較,以嘗試確定待解析的下一個報頭。當關(guān)鍵字字段與規(guī)則的關(guān)鍵字值匹配時,解析將使用具有與匹配規(guī)則所指示的下一個報頭名稱對應(yīng)的報頭名稱的棧指令對后續(xù)分組報頭繼續(xù)進行。當關(guān)鍵字字段無法與規(guī)則的關(guān)鍵字值匹配時,按照棧指令所指示的表ID對分組分類來選擇流表。如果沒有表ID由棧指令來指示,則用于在流表之間進行選擇的可配置邏輯106可指示將采取正確動作(例如丟棄分組、向控制器傳送分組等)。
[0044]處理配置102的表示150采取處理定義112的形式來創(chuàng)建??刂破?10可從遠程用戶或裝置接收處理定義112,或者它可創(chuàng)建處理定義112。在圖1所示的實施例中,控制器110包括接收處理定義112的定義接收模塊111。將處理定義112提供151給轉(zhuǎn)化器113,以產(chǎn)生流表配置信息115A,其被提供154給流表填充模塊118并且由其用來為流表140A-140N填充流表條目。另外,轉(zhuǎn)化器113將處理定義112提供給編譯器114,其可產(chǎn)生152解析代碼116。這個解析器代碼116以及可選的流表配置信息115B的一種形式構(gòu)成解析器配置包117。
[0045]轉(zhuǎn)化器113的目的部分是將處理定義112轉(zhuǎn)化為能夠由全異轉(zhuǎn)發(fā)元件120A-120N用于處理分組的解析器配置包117。因此,通過使用其編譯器114,轉(zhuǎn)化器113通過從處理定義112所提供的正式抽象(即,一種類型的語法)生成采取解析器代碼116的形式的分組解析器的代碼,來充當解析器生成器(即,編譯器-編譯器或者編譯器生成器)。解析器代碼116還可由轉(zhuǎn)發(fā)元件(例如120A)用來對分組執(zhí)行動作。因此,作為解析器配置包117的一部分的解析器代碼116結(jié)合來自處理配置102的協(xié)議的可配置定義104、用于在流表之間進行選擇的可配置邏輯106和可配置流表定義108的表示153。在一個實施例中,解析器代碼116是使用指令的小集合(例如加載、存儲、增加、分支、比較等)和在對分組運行動作的同時將要用作暫時數(shù)據(jù)存儲裝置的虛擬寄存器的所定義集合所指定的中間級代碼。
[0046]分組處理的解析階段中使用的解析器代碼116的部分可在邏輯上表示為有向圖。這種有向圖中的各節(jié)點表示協(xié)議報頭,以及有向邊緣表示基于報頭字段中的值所采取的路徑。這種有向圖的示例在圖7中示出,圖7示出按照本發(fā)明的一個實施例的解析階段700和關(guān)鍵字生成階段701的表示,其中解析階段700可操作以解析UDP、TCP和MPLS分組。當解析以太網(wǎng)702的第一協(xié)議報頭以識別其字段時,分支判定基于以太網(wǎng)報頭702的ethertype字段的值進行。如果ethertype字段值是0x8847,則待解析的下一個報頭是MPLS報頭704。在一個實施例中,分支判定基于MPLS報頭704中的bos (棧底)字段的值進行。當bos字段值為零時,解析將對下一個報頭繼續(xù)進行,其也是MPLS報頭704。當bos字段值不為零時,解析階段700結(jié)束,并且關(guān)鍵字生成701開始。在另一個實施例中,分支判定在到達MPLS報頭704時取決于bos字段值和key_is_matchable字段值,其發(fā)信號通知關(guān)于其中更多MPLS分組704可存在于分組中的發(fā)生,但是進一步檢查是不必要的,因為分組分類的預(yù)期關(guān)鍵字已經(jīng)可生成。因此,當key_iS_matChable字段值或bos字段值不為零時,解析階段700結(jié)束,并且關(guān)鍵字生成701開始。類似地,如果以太網(wǎng)報頭702的ethertype字段值是0x8100 (而不是0x8847),則將分組的下一個字段作為IPv4報頭708來解析。在這點上,檢查IPv4報頭708的協(xié)議字段值:如果它是1x11,則解析將對作為m)P報頭710的下一個報頭繼續(xù)進行,以及如果它是0x06,則解析將對作為TCP報頭712的下一個報頭繼續(xù)進行。然后將解析UDP 710或TCP 712報頭以使其字段被識別,以及解析階段700結(jié)束,并且關(guān)鍵字生成701開始。
[0047]回到圖1,解析器配置包117中的解析器代碼116還包含用來在全異轉(zhuǎn)發(fā)元件120B-120N中的分組處理的動作運行級期間對分組執(zhí)行動作的指令。這些動作由控制器110在轉(zhuǎn)發(fā)元件120A中插入或修改流時來填充。能夠定義動作的兩個類別一與分組的協(xié)議無關(guān)的動作以及與分組的協(xié)議有關(guān)的動作。協(xié)議無關(guān)的動作的示例包括向端口輸出分組,設(shè)置分組的隊列,或者丟棄分組。另外,無關(guān)動作可包括向解析器回送分組,這通常在通過動作修改之后進行。
[0048]此外,通過利用包含在處理配置102中并且在處理定義112中所表示的、包含協(xié)議報頭的相關(guān)報頭字段的協(xié)議的可配置定義104,協(xié)議有關(guān)動作可對分組來執(zhí)行。這經(jīng)過分組處理技術(shù)的協(xié)議特定定制來提供增加的靈活性,其中具有某些協(xié)議報頭的分組可按照細粒度方式來修改。例如,協(xié)議有關(guān)動作可定義成將附加報頭推送到分組上或者從分組彈出報頭。此外,協(xié)議有關(guān)動作可按照簡單或復(fù)雜方式來改變某些分組報頭中的字段。例如,字段可通過使生存時間(TTL)字段(通常存在于IPv4報頭中的字段)遞增或遞減以數(shù)學(xué)方式來修改,或者目標地址值可基于字段中的原始值、采用完全不同的值來替代。另外,在這種修改之后,動作可計算報頭或分組的新校驗和。
[0049]通過支持當分組中存在解析循環(huán)或遞歸時、例如當分組中存在同一類型(例如MPLS等)的多個報頭或者封裝或隧道傳遞業(yè)務(wù)(例如以太網(wǎng)-MPLS-MPLS-以太網(wǎng)告示)時執(zhí)行的細粒度動作,這種配置允許對分組處理的進一步控制。在這類情況中,動作可對修改、彈出或推送分組中的目標報頭是充分智能的。然后可觸發(fā)無關(guān)動作,以又重發(fā)分組供進一步解析。當然,將要對特定協(xié)議棧所執(zhí)行的這些定制動作因解析器代碼116的性質(zhì)而是可能的,因為轉(zhuǎn)發(fā)元件120A本身沒有關(guān)于報頭如何假定為布置在分組中的知識,而是只沿用解析器代碼116所定義的過程。例如,轉(zhuǎn)發(fā)元件120A無需在根本上設(shè)計成知道L3報頭(例如因特網(wǎng)協(xié)議(IP)、IPSec、網(wǎng)間分組交換(IPX)等)假定在L2報頭(例如地址解析協(xié)議(ARP)、異步傳輸模式(ATM)、點對點協(xié)議(PPPP)等)之后出現(xiàn),而是需要僅盲依靠解析器代碼116來穿過分組的報頭。[0050]除了創(chuàng)建解析器代碼116之外,轉(zhuǎn)化器113還生成流表配置115A信息,其包括其中包含關(guān)鍵字組成的可配置流表定義108的表示。流表配置115A的一種形式115B可包含在解析器配置包117中,其被分配172給轉(zhuǎn)發(fā)元件120A-120N。在由轉(zhuǎn)發(fā)元件(例如120A)接收解析器配置包117時,配置模塊121則可利用流表配置115B向流表管理模塊126傳送信息167,從而指導(dǎo)它創(chuàng)建或修改流表140A-140N。例如,配置模塊121使用流表配置115A,以便指示167流表管理模塊126關(guān)于多少流表140A-140N是必需的、每個表的關(guān)鍵字組成(每個表的關(guān)鍵字列144A-144N將如何構(gòu)造)以及流表140A-140N中的條目179A-179N將如何構(gòu)造。另外,將轉(zhuǎn)化表113所創(chuàng)建的流表配置115A提供154給流表填充模塊118,其使用包含關(guān)鍵字組成的可配置流表定義108的表示,以便通過向流表管理模塊126發(fā)送數(shù)據(jù)173,正確地填充全異轉(zhuǎn)發(fā)元件120A-120N的流表140A-140N中的流表條目179A-179N。
[0051]因此,控制器110 (經(jīng)由流表填充模塊118)與轉(zhuǎn)發(fā)元件120A進行交互173,以便保持所需流表140A-140N的條目179A-179N??刂破?10還經(jīng)由配置模塊121與轉(zhuǎn)發(fā)元件120A進行交互167,以便創(chuàng)建或修改流表140A-140N。因此,流表140A-140N的所有這種配置和管理經(jīng)過流表管理模塊126進行。
[0052]各流表包括可配置關(guān)鍵字列176和動作列178。可配置關(guān)鍵字列176實現(xiàn)關(guān)鍵字組成,并且包括一個或多個關(guān)鍵字列144A-144N,因而通過將關(guān)鍵字的部分與關(guān)鍵字列144A-144N進行匹配來允許分組分類。如圖1所示,這些可配置關(guān)鍵字列176可包括字面值(例如80、23、10、192等)或者通配符值(例如)。動作列178包括將要對分類為屬于那個對應(yīng)流的分組所執(zhí)行的、各流條目的一個或多個動作146A-146N。如圖1所示,這些動作列178可包括大量動作,其中一部分特此一般示為DROP、OUTPUT、POP和REPARSE。在本發(fā)明的一個實施例中,這些列包含動作ID以識別位于其它位置的動作代碼,并且可包括在執(zhí)行動作時將要使用的變元值。
[0053]在一個實施例中,流表還包括一個或多個流選擇列177。一個可能的列是流ID列141,其向各流條目指配唯一標識符,以便于轉(zhuǎn)發(fā)元件120A中的模塊之間以及轉(zhuǎn)發(fā)元件120A與控制器110之間的通信。例如,當控制器110期望修改流表140A中的一個或多個動作146A-146N時,它可易于傳送流ID 141值,以快速識別將要修改哪一個條目。另一個可能的列是優(yōu)先值列142,其包括在分組的關(guān)鍵字與流表140A的一個以上條目匹配時允許流優(yōu)先化的值。這在通配符值處于可配置關(guān)鍵字列176中時發(fā)生。例如,給定圖1所示的情況,具有與關(guān)鍵字列144A對應(yīng)的‘80’的值以及與關(guān)鍵字列144N對應(yīng)的‘ 192’的值的分組關(guān)鍵字可以有可能匹配流表140A中的兩個流條目一第一所示條目179A和最后所示條目179D。假定兩個條目均匹配關(guān)鍵字,并且假定沒有第一條目179A和最后一個條目179D的其它可配置關(guān)鍵字列(例如144B)是不同的,則各條目的優(yōu)先值142用來確定要將分組分類到哪一個流。當?shù)谝涣鳁l目179A具有‘I’的優(yōu)先值142以及最后一個條目179D具有‘7’的優(yōu)先值時,本發(fā)明的一個實施例可將具有最小優(yōu)先值的記錄認為是決定性的,并且因此,分組被分類為屬于第一流條目179A。備選地,在將具有最大優(yōu)先值的記錄認為是決定性的另一個實施例中,分組被分類為屬于最后一個流條目179D。這種配置要求控制器110按照使得防止優(yōu)先平局發(fā)生的方式來保持流表140A-140N。這可按照多種方法進行,例如向每一個條目179A-179N指配不同的優(yōu)先值142,或者僅向互斥的條目指配相同優(yōu)先值142,表示具有共享優(yōu)先值142的兩個條目可能匹配一個關(guān)鍵字是不可能的。在其它實施例中,在優(yōu)先值142平局的情況下,附加平局決勝過程發(fā)生,例如選擇表中較高的條目或者具有最長前綴匹配或者最準確匹配的條目(即,可配置關(guān)鍵字列176中具有最少通配符的條目)。
[0054]表1表不按照本發(fā)明的一個實施例的流表的不例。該表包括兩個關(guān)鍵字列,一個用于第一 MPLS標簽以及一個用于第二 MPLS標簽。該表還包括流選擇列:流ID列141,存儲表中的每一個條目的唯一標識符;以及優(yōu)先列,存儲用于實體選擇的優(yōu)先值。該表還包括一個動作列,其存儲將要對具有匹配兩個關(guān)鍵字列的關(guān)鍵字并且由此被分類為屬于特定流的分組運行的動作。
[0055]表1
【權(quán)利要求】
1.一種由充當軟件定義網(wǎng)絡(luò)中的控制器的網(wǎng)絡(luò)裝置所執(zhí)行的方法,包括下列步驟: 接收處理定義,其中所述處理定義包括下列項的第一表示: 包含協(xié)議報頭的相關(guān)報頭字段的協(xié)議的可配置定義, 包含基于第一多個相關(guān)報頭字段的關(guān)鍵字組成的可配置流表定義,其中所述流表定義的每個的所述關(guān)鍵字組成識別對那個流表定義所選的所述相關(guān)報頭字段的一個或多個的集合,以及 可配置邏輯,用于基于第二多個相關(guān)報頭字段在所述可配置流表定義所定義的流表之間進行選擇; 轉(zhuǎn)化所述處理定義,以創(chuàng)建解析器配置包,其中所述解析器配置包包括所述可配置流表定義以及用于在流表之間進行選擇的所述可配置邏輯的第二表示; 將所述解析器配置包分配給多個轉(zhuǎn)發(fā)元件,以使其每個基于所述可配置流表定義的每個來創(chuàng)建流表,其中所述流表的每個包括通過那個流表所基于的所述流表定義中包含的所述關(guān)鍵字組成所識別的所述相關(guān)報頭字段的每個的可配置關(guān)鍵字列,其中所述流表的每個還包括存儲轉(zhuǎn)發(fā)判定的一個或多個動作列的集合;以及 傳送數(shù)據(jù)以填充在所述多個轉(zhuǎn)發(fā)元件的每個中創(chuàng)建的所述流表的所述可配置關(guān)鍵字列和動作列。
2.如權(quán)利要求1所述 的方法,其中: 所述解析器配置包還包括基于所述可配置流表定義的關(guān)鍵字生成邏輯;以及 分配所述解析器配置包的步驟還使所述多個轉(zhuǎn)發(fā)元件的每個安裝所述關(guān)鍵字生成邏輯,以從通過那個轉(zhuǎn)發(fā)元件的網(wǎng)絡(luò)接口所接收的分組中的值來生成關(guān)鍵字,供與那個轉(zhuǎn)發(fā)元件的所述流表的條目進行比較。
3.如權(quán)利要求1所述的方法,其中,分配所述解析器配置包的步驟還使所述多個轉(zhuǎn)發(fā)元件的每個創(chuàng)建基于所述可配置流表定義的關(guān)鍵字生成邏輯,其中所述關(guān)鍵字生成邏輯從通過那個轉(zhuǎn)發(fā)元件的網(wǎng)絡(luò)接口所接收的分組中的值來生成關(guān)鍵字,供與那個轉(zhuǎn)發(fā)元件的所述流表的條目進行比較。
4.如權(quán)利要求1所述的方法,還包括下列步驟: 接收已更新處理定義,其中所述已更新處理定義包括下列項的第三表示 包含協(xié)議報頭的相關(guān)報頭字段的協(xié)議的可配置定義, 包含基于第一多個所述相關(guān)報頭字段的關(guān)鍵字組成的可配置流表定義,其中所述流表定義的每個的所述關(guān)鍵字組成識別對那個流表定義所選的所述相關(guān)報頭字段的一個或多個的集合,以及 可配置邏輯,用于基于第二多個所述相關(guān)報頭字段在所述可配置流表定義所定義的流表之間進行選擇; 轉(zhuǎn)化所述已更新處理定義,以創(chuàng)建已更新解析器配置包,其中所述已更新解析器配置包包括所述可配置流表定義以及用于在流表之間進行選擇的所述可配置邏輯的第四表示; 將所述已更新解析器配置包分配給所述多個轉(zhuǎn)發(fā)元件,以使其每個基于所述可配置流表定義的每個來創(chuàng)建、更新或刪除流表,其中所述流表的每個包括通過那個流表所基于的所述流表定義中包含的所述關(guān)鍵字組成所識別的所述相關(guān)報頭字段的每個的可配置關(guān)鍵字列,其中所述流表的每個還包括存儲轉(zhuǎn)發(fā)判定的一個或多個動作列的集合;以及 傳送數(shù)據(jù)以填充在所述多個轉(zhuǎn)發(fā)元件的每個中創(chuàng)建的所述流表的所述可配置關(guān)鍵字列和動作列。
5.如權(quán)利要求1所述的方法,還包括下列步驟: 接收由所述多個轉(zhuǎn)發(fā)元件之一所傳送的分組;以及 將數(shù)據(jù)傳送給所述多個轉(zhuǎn)發(fā)元件的一個或多個,從而使所述多個轉(zhuǎn)發(fā)元件的一個或多個的每個修改一個或多個流表的一個或多個條目。
6.如權(quán)利要求1所述的方法,其中,所述解析器配置包包括解析器代碼,其中解析器代碼是將要由所述多個轉(zhuǎn)發(fā)元件用來解析分組的代碼。
7.如權(quán)利要求6所述的方法,其中,解析器代碼還包含將要由所述多個轉(zhuǎn)發(fā)元件用來對分組執(zhí)行動作的代碼。
8.如權(quán)利要求6所述的方法,其中,將所述解析器配置包分配給多個轉(zhuǎn)發(fā)元件的步驟還包括將解析器代碼元數(shù)據(jù)傳送給所述多個轉(zhuǎn)發(fā)元件的每個。
9.如權(quán)利要求8所述的方法,其中,所述解析器配置包元數(shù)據(jù)包括所述解析器代碼的大小。
10.如權(quán)利要求8所述的方法,其中,所述解析器配置包元數(shù)據(jù)包括所述解析器代碼所利用的虛擬寄存器的數(shù)量。
11.一種充當軟件定義網(wǎng)絡(luò)中的控制器的網(wǎng)絡(luò)裝置,包括: 定義接收模塊,可操作以接收處理定義,其中所述處理定義包括下列項的第一表示: 包含協(xié)議報頭的相關(guān)報頭字段的協(xié)議的可配置定義, 包含基于第一多個相關(guān)報頭字段的關(guān)鍵字組成的可配置流表定義,其中所述流表定義的每個的所述關(guān)鍵字組成識別對那個流表定義所選的所述相關(guān)報頭字段的一個或多個的集合,以及 可配置邏輯,用于基于第二多個相關(guān)報頭字段在所述可配置流表定義所定義的流表之間進行選擇; 轉(zhuǎn)化器,可操作以轉(zhuǎn)化所述處理定義,以創(chuàng)建解析器配置包,其中所述解析器配置包包括所述可配置流表定義以及用于在流表之間進行選擇的所述可配置邏輯的第二表示; 分配模塊,可操作以將所述解析器配置包分配給多個轉(zhuǎn)發(fā)元件,以使其每個基于所述可配置流表定義的每個來創(chuàng)建流表,其中所述流表的每個包括通過那個流表所基于的所述流表定義中包含的所述關(guān)鍵字組成所識別的所述相關(guān)報頭字段的每個的可配置關(guān)鍵字列,其中所述流表的每個還包括存儲轉(zhuǎn)發(fā)判定的一個或多個動作列的集合;以及 流表填充模塊,可操作以傳送數(shù)據(jù),以便填充在所述多個轉(zhuǎn)發(fā)元件的每個中創(chuàng)建的所述流表的所述可配置關(guān)鍵字列和動作列。
12.如權(quán)利要求11所述的網(wǎng)絡(luò)裝置,其中: 所述解析器配置包還包括基于所述可配置流表定義的關(guān)鍵字生成邏輯;以及 所述分配模塊還可操作以分配所述解析器配置包,以使所述多個轉(zhuǎn)發(fā)元件的每個安裝所述關(guān)鍵字生成邏輯,以從通過那個轉(zhuǎn)發(fā)元件的網(wǎng)絡(luò)接口所接收的分組中的值來生成關(guān)鍵字,供與那個轉(zhuǎn)發(fā)元件的所述流表的條目進行比較。
13.如權(quán)利要求11所述的網(wǎng)絡(luò)裝置,其中,所述分配模塊還可操作以分配所述解析器配置包,以使所述多個轉(zhuǎn)發(fā)元件的每個創(chuàng)建基于所述可配置流表定義的關(guān)鍵字生成邏輯,所述關(guān)鍵字生成邏輯從通過那個轉(zhuǎn)發(fā)元件的網(wǎng)絡(luò)接口所接收的分組中的值來生成關(guān)鍵字,供與那個轉(zhuǎn)發(fā)元件的所述流表的條目進行比較。
14.如權(quán)利要求11所述的網(wǎng)絡(luò)裝置,其中: 所述定義接收模塊還可操作以接收已更新處理定義,其中所述已更新處理定義包括下列項的第二表不 包含協(xié)議報頭的相關(guān)報頭字段的協(xié)議的可配置定義, 包含基于第一多個所述相關(guān)報頭字段的關(guān)鍵字組成的可配置流表定義,其中所述流表定義的每個的所述關(guān)鍵字組成識別對那個流表定義所選的所述相關(guān)報頭字段的一個或多個的集合,以及 可配置邏輯,用于基于第二多個所述相關(guān)報頭字段在所述可配置流表定義所定義的流表之間進行選擇; 轉(zhuǎn)化器還可操作以轉(zhuǎn)化所述已更新處理定義,以創(chuàng)建已更新解析器配置包,其中所述已更新解析器配置包包括所述可配置流表定義以及用于在表之間進行選擇的所述可配置邏輯的第四表示;以及 所述分配模塊還可操作以將所述已更新解析器配置包分配給所述多個轉(zhuǎn)發(fā)元件,以使其每個基于所述可配置流表定義的每個來創(chuàng)建、更新或刪除流表,其中所述流表的每個包括通過那個流表所基于的所述流表定義中包含的所述關(guān)鍵字組成所識別的所述相關(guān)報頭字段的每個的可配置關(guān)鍵字列,其中所述流表的每個還包括存儲轉(zhuǎn)發(fā)判定的一個或多個動作列的集合。
15.如權(quán)利要求11所述的網(wǎng)絡(luò)裝置,還包括可操作以接收所述多個轉(zhuǎn)發(fā)元件所傳送的分組的分組接收模塊。
16.如權(quán)利要求15所述的網(wǎng)絡(luò)裝置,其中,所述流表填充模塊還可操作以響應(yīng)從所述多個轉(zhuǎn)發(fā)元件之一接收分組而將數(shù)據(jù)傳送給所述多個轉(zhuǎn)發(fā)元件的一個或多個,從而使所述多個轉(zhuǎn)發(fā)元件的一個或多個的每個修改一個或多個流表的一個或多個條目。
17.如權(quán)利要求11所述的方法,其中,所述解析器配置包包括解析器代碼,其中解析器代碼是將要由所述多個轉(zhuǎn)發(fā)元件用來解析分組的代碼。
18.如權(quán)利要求17所述的方法,其中,解析器代碼還包含將要由所述多個轉(zhuǎn)發(fā)元件用來對分組執(zhí)行動作的代碼。
19.如權(quán)利要求17所述的方法,其中,將所述解析器配置包分配給多個轉(zhuǎn)發(fā)元件的步驟還包括將解析器代碼元數(shù)據(jù)傳送給所述多個轉(zhuǎn)發(fā)元件的每個。
20.如權(quán)利要求19所述的方法,其中,所述解析器配置包元數(shù)據(jù)包括所述解析器代碼所利用的虛擬寄存器的數(shù)量。
【文檔編號】H04L29/06GK104012063SQ201280063937
【公開日】2014年8月27日 申請日期:2012年12月20日 優(yōu)先權(quán)日:2011年12月22日
【發(fā)明者】L.貝利沃, E.迪克, R.米什拉, R.帕特尼 申請人:瑞典愛立信有限公司