一種實現數據包轉發的方法及系統的制作方法
【專利摘要】一種實現數據包轉發的方法及系統,包括根據包含有域值范圍的流表信息,生成域值范圍檢查信息,按照生成的域值范圍檢查信息和所述流表信息轉發數據包。從本發明方法可見,通過對數據包域值范圍的流表匹配,根據域值范圍對數據包進行流量聚合,明顯減少了流表配置消息和流表條目,從而降低了SDN控制器的計算復雜性,提高了流表配置效率,節省了流表硬件資源,提高了數據包的轉發效率。
【專利說明】一種實現數據包轉發的方法及系統
【技術領域】
[0001] 本發明涉及軟件定義網絡(SDN, Software-Defined Network)架構技術,尤指一種 實現數據包轉發的方法及系統。
【背景技術】
[0002] 隨著人們對網絡性能需求的提高,網絡也暴露出了越來越多的弊病,為了克服這 些弊端,在路由器的體系結構當中會加入許多復雜功能,比如開放式最短路徑優先(0SPF, Open Shortest Path First)、邊界網關協議(BGP)、組播、區分服務、流量工程、網絡地址交 換(NAT)、防火墻、多協議標簽交換(MPLS,Multi_Protocol Label Switching)等等。這就 使得路由器等交換設備越來越臃腫而且性能提升的空間越來越小。
[0003] 然而,與網絡領域的困境截然不同的是,計算機領域實現了日新月異的發展。由 于采用一個簡單可用的硬件底層(x86指令集),計算機在軟件方面,不論是應用程序還是 操作系統都取得了飛速的發展。目前,很多主張重新設計計算機網絡體系結構的人士認 為:網絡可以復制計算機領域的成功來解決現在網絡所遇到的所有問題。在這種思想的指 導下,將來的網絡必將是這樣的:底層的數據通路(交換機、路由器)是"啞的、簡單的、最 小的",并定義一個對外開放的關于流表(FlowTable)的公用的應用程序編程接口(API, Application Programming Interface),同時采用控制器來控制整個網絡。這樣,研究人員 就可以通過在控制器上自由的調用底層的API來編程,從而實現網絡的創新。
[0004] 基于上述的理念,出現了軟件定義網絡(SDN, Software Defined Network)的概 念,其最初是由美國斯坦福大學clean slate研究組提出的一種新型網絡創新架構。目前, 其核心技術OpenFlow協議,通過將網絡設備控制面與數據面分離開來,從而實現了網絡流 量的靈活控制,為核心網絡及應用的創新提供了良好的平臺。其中,OpenFlow是一種新型 網絡交換模型。
[0005] OpenFlow協議用于描述控制器和交換機之間交互所用信息的標準,以及控制器和 交換機的接口標準。協議的核心部分是用于OpenFlow協議信息結構的集合。
[0006] 流表FlowTable,用于配置交換機轉發路徑,一個OpenFlow交換機包括一個或 者多個流表FlowTable。每個流表FlowTable中每個流條目主要包括三個部分:(1)匹配 域(Match Fields),使用入端口(ingress port),包頭(packet header)以及前一個流表 FlowTable傳遞過來的元數據(metadata) ; (2)計數器(Counters),用于對匹配成功的包進 行計數;(3)指令集(Instructions),用于修改動作集(Action Set)或者流水線處理。
[0007] 其中,Match Fields字段,是從報文的頭部中取出的信息,用于匹配一條流表; Counters字段,用于管理各種統計信息;Instructions字段,用于對報文進行操作的各種 操作指令,比如丟棄報文、轉發報文到指定端口、設置報文頭部字段值、增加封裝標簽等。動 作集(Action Set)和每個報文相關聯,它在流水線的多個流表之間傳遞并被各流表的指令 所修改,直到流水線處理結束,形成最終的動作集。具體地,Match Fields字段包括:進入接 口、元數據、以太源地址、目標地址、類型,虛擬局域網標識(vlan id),vlan優先級,MPLS標 簽、MPLS流量類(MPLS Traffic Class)、IP源地址、目標地址、協議、IP服務類型(IP ToS) 位,傳輸控制協議/用戶數據協議(TCP/UDP)源端口號、TCP/UDP目的端口號或控制報文協 議(ICMP)操作碼等。一個域包括一個確定值或者所有值(ANY),更準確的匹配可以通過掩 碼實現。
[0008] 數據包轉發中,從第一個流表FlowTable開始匹配,可能會經歷多個流表 FlowTable,這個過程稱之為流水線處理(pipeline processing)。流水線處理的好處就是 允許數據包被發送到接下來的流表中做進一步處理或者元數據信息在表中流動。首先,找 到流表FlowTable中優先級最高的流條目進行匹配,即根據入端口,包頭,以及有上一個流 表指定的元數據三類匹配域進行匹配。如果某個數據包成功匹配了流表中某個流條目,則 更新這個流條目的計數器,同時這個流條目中的指令集操作將被應用生效。流水線處理終 結于指令集中沒有指定下一個流表,這時數據包通常會被所帶有的動作集處理后轉發。
[0009] 目前,常用的openflow匹配方式采用域值及掩碼匹配方式來完成數據包的轉發, 需要更多的流表配置消息和更多的流表條目,增加了管理復雜性,也浪費了寶貴的流表硬 件資源;而且,采用掩碼方式增加了 SDN控制器的復雜性。同時也降低了數據包的轉發效 率。
【發明內容】
[0010] 本發明提供一種實現數據包轉發的方法及系統,通過對報文域值范圍的流表匹 配,能夠降低SDN控制器的計算復雜性,提高流表配置效率,節省流表硬件資源,提高數據 包的轉發效率。
[0011] 為了解決上述技術問題,本發明公開了一種實現數據包轉發的方法,包括:根據包 含有域值范圍的流表信息,生成域值范圍檢查信息;
[0012] 按照生成的域值范圍檢查信息和所述流表信息轉發數據包。
[0013] 該方法之前還包括:設置包含有域值范圍的流表信息;所述流表信息配置在流表 中。
[0014] 所述生成域值范圍檢查信息包括:
[0015] 從所述流表中獲取需要匹配的域類型及其域值范圍,設置域值范圍檢查表;
[0016] 域值范圍檢查表中包括需要檢查的域類型,及其對應的域值范圍。
[0017] 所述按照生成的域值范圍檢查信息和所述流表信息轉發數據包包括:
[0018] 確定出數據包中存在范圍檢查表中的域類型,將該域的域值在域值范圍檢查表中 對應的條目的域值范圍檢查標識設置為有效;
[0019] 通過元數據將包含有域值范圍檢查標識的域值范圍檢查結果攜帶給流表;
[0020] 匹配元數據中的域值范圍檢查結果,與流表中的鍵值及掩碼相與的結果,如果二 者一致則匹配成功;
[0021 ] 按照流表配置的對應動作,對數據包進行轉發。
[0022] 所述域值范圍檢查結果由多個所述域值范圍檢查標識組成,為二進制位流,每個 位對應域值范圍檢查表的某個條目的索引號。
[0023] 根據域值范圍檢查表的索引號確定所述Key值和掩碼。
[0024] 所述動作是現有openflow規范規定的動作集。
[0025] 所述選擇的域及其域值范圍采用擴展的OpenFlow消息攜帶;或者,通過可擴展匹 配類型-長度-值OXM TLV攜帶選擇的域及其所述域值范圍。
[0026] 所述域值范圍對應的域為現有流表的匹配域中的某域,或者各域的任意組合。
[0027] 本發明還提供一種實現數據包轉發的系統,至少包括流表處理單元,數據包處理 單元;其中,流表處理單元,用于根據包含有域值范圍的流表信息,生成域值范圍檢查信 息;
[0028] 數據包處理單元,用于按照生成的域值范圍檢查信息和所述流表信息轉發數據 包。
[0029] 該系統還包括:流表信息下發單元,用于將包含有域值范圍的流表信息配置在流 表中,并下發給所述流表處理單元。
[0030] 所述流表處理單元,具體用于從所述流表中獲取需要匹配的域類型及域值范圍, 設置域值范圍檢查表;在域值范圍檢查表中包括需要檢查的域類型,及其對應的域值范圍。
[0031] 所述數據包處理單元,具體用于確定數據包中存在范圍檢查表中的域類型時,確 定該域的域值在域值范圍檢查表中對應的索引號,并將該索引號對應的條目的域值范圍檢 查標識設置為有效;將攜帶有包含域值范圍檢查標識的域值范圍檢查結果的元數據通知給 流表;匹配元數據中的域值范圍檢查結果,與流表中的鍵Key值及掩碼相與的結果,二者一 致,則表明該數據包的域值在范圍之內;按照流表配置的對應動作,對數據包進行轉發。
[0032] 所述流表信息下發單元設置在軟件定義網絡SDN控制器中。
[0033] 所述流表處理單元和數據包處理單元設置在OpenFlow交換機中。
[0034] 本申請技術方案包括:根據包含有域值范圍的流表信息,生成域值范圍檢查信息, 按照生成的域值范圍檢查信息和所述流表信息轉發數據包。從本發明方法可見,通過對數 據包域值范圍的流表匹配,根據域值范圍對數據包進行流量聚合,明顯減少了流表配置消 息和流表條目,從而降低了 SDN控制器的計算復雜性,提高了流表配置效率,節省了流表硬 件資源,提高了數據包的轉發效率。
【專利附圖】
【附圖說明】
[0035] 此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發 明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中:
[0036] 圖1為本發明實現數據包轉發的方法的流程圖;
[0037] 圖2為本發明OPenFlow交換機處理流表的實施例的示意圖;
[0038] 圖3為本發明實現數據包轉發的系統組成結構示意圖;
[0039] 圖4為本發明實現數據包轉發的實施例的示意圖。
【具體實施方式】
[0040] 圖1為本發明實現數據包轉發的方法的流程圖,如圖1所示,包括:
[0041] 步驟100 :根據包含有域值范圍的流表信息,生成域值范圍檢查信息。
[0042] 本步驟之前還包括:設置包含有域值范圍的流表信息,流表信息配置存儲在流表 中。具體包括:對現有流表進行擴展用于保存域值范圍,具體地,可以采用擴展的OpenFlow 消息攜帶域值范圍;也可以通過現有OpenFlow可擴展匹配類型-長度-值(OXM TLV, OpenFlow Extensible Match type-length-value)攜帶選擇的域及其域值范圍等等,具體 實現方法并不用于限定本發明的保護范圍。
[0043] 根據實際情況,選擇需要進行范圍檢查的某個域或某些域及其域值范圍,選擇的 域可以是現有流表的匹配域(match field)中的任何域或者各個域的任意組合,比如vlan id、和/或TCP/UDP源端口號、和/或TCP/UDP目的端口號等;并設置所選擇出的域的域值 范圍,即域值上限和域值下限。
[0044] 本步驟根據包含有域值范圍的流表信息,生成域值范圍檢查信息,具體包括:從流 表中獲取需要匹配的域類型及域值范圍,設置域值范圍檢查表RangeTable。在域值范圍檢 查表中包括需要檢查的域,及其對應的域值范圍即域值上限和域值下限。域值范圍檢查表 可以包括多個條目,每個條目對應某需要檢查的域及其域值范圍。
[0045] 步驟101 :按照生成的域值范圍檢查信息和所述流表信息轉發數據包。
[0046] 首先,確定數據包是否存在范圍檢查表中的域類型,在存在的情況下,進一步確定 該域的域值在域值范圍檢查表中對應的條目即在哪個域值范圍內,并將該條目的域值范圍 檢查標識設置為有效如設置為1(二機制位);否則,條目的域值范圍檢查標識設置為無效 如設置為0。其中,域值范圍檢查標識用于標識數據包的域值是否在其所指示的條目,如果 域值范圍檢查標識顯示為1,則表示在該條目的范圍內;如果域值范圍檢查標識顯示為〇, 則表示不在該條目的范圍內;而多個域值范圍檢查標識組成的二級制位流是域值范圍檢查 結果,也就是一個具體的數值,域值范圍檢查結果可以是一定寬度(與流表條目對應)的二 進制位流,每個位對應域值范圍檢查表的某個條目。需要說明的是,數據包可以同時進行多 個域值范圍的檢查。
[0047] 接著,通過元數據(metadata)將域值范圍檢查結果攜帶給流表;這里,在利用流 表進行數據包轉發時,流表只能匹配具體的值而不是范圍,本發明中通過域值范圍檢查結 果將當前需要轉發的數據包的需要匹配的域值所在域值范圍告知流表,以便流表對應進行 后續匹配處理。
[0048] 然后,數據包及元數據進入流表,匹配元數據中的域值范圍檢查結果,即比較域值 范圍檢查結果,與流表中的鍵(Key)值及掩碼(Mask)相與的結果,如果二者一致則匹配成 功,表明域值在范圍之內;否則匹配失敗,域值不在范圍之內。其中,Key值和掩碼是根據域 值范圍檢查表索引號確定。
[0049] 最后,按照流表配置的對應動作對數據包進行轉發。動作可以是現有openflow規 范規定的動作集。
[0050] 圖2為本發明OPenFlow交換機處理流表的實施例的示意圖,如圖2所示,假設SDN 控制器采用擴展的openflow消息向OpenFlow交換機下發流表配置消息,指定需要范圍檢 查的某個或多個域,及其域值范圍并配置流表FlowTable,假設,需要范圍檢查的域為vlan id,其域值范圍有兩種:1-1000的位以及1001-2000的位。當OpenFlow交換機接收到該流 表FlowTable后,具體的處理如下:
[0051] 生成域值范圍檢查表,如表1所示:
[0052]
【權利要求】
1. 一種實現數據包轉發的方法,其特征在于,包括:根據包含有域值范圍的流表信息, 生成域值范圍檢查信息; 按照生成的域值范圍檢查信息和所述流表信息轉發數據包。
2. 根據權利要求1所述的方法,其特征在于,該方法之前還包括:設置包含有域值范圍 的流表信息;所述流表信息配置在流表中。
3. 根據權利要求2所述的方法,其特征在于,所述生成域值范圍檢查信息包括: 從所述流表中獲取需要匹配的域類型及其域值范圍,設置域值范圍檢查表; 域值范圍檢查表中包括需要檢查的域類型,及其對應的域值范圍。
4. 根據權利要求3所述的方法,其特征在于,所述按照生成的域值范圍檢查信息和所 述流表信息轉發數據包包括: 確定出數據包中存在范圍檢查表中的域類型,將該域的域值在域值范圍檢查表中對應 的條目的域值范圍檢查標識設置為有效; 通過元數據將包含有域值范圍檢查標識的域值范圍檢查結果攜帶給流表; 匹配元數據中的域值范圍檢查結果,與流表中的鍵值及掩碼相與的結果,如果二者一 致則匹配成功; 按照流表配置的對應動作,對數據包進行轉發。
5. 根據權利要求4所述的方法,其特征在于,所述域值范圍檢查結果由多個所述域值 范圍檢查標識組成,為二進制位流,每個位對應域值范圍檢查表的某個條目的索引號。
6. 根據權利要求5所述的方法,其特征在于,根據域值范圍檢查表的索引號確定所述 Key值和掩碼。
7. 根據權利要求4所述的方法,其特征在于,所述動作是現有openflow規范規定的動 作集。
8. 根據權利要求2?7任一項所述的方法,其特征在于,所述選擇的域及其域值范圍采 用擴展的OpenFlow消息攜帶;或者,通過可擴展匹配類型-長度-值OXM TLV攜帶選擇的 域及其所述域值范圍。
9. 根據權利要求8所述的方法,其特征在于,所述域值范圍對應的域為現有流表的匹 配域中的某域,或者各域的任意組合。
10. -種實現數據包轉發的系統,其特征在于,至少包括流表處理單元,數據包處理單 元;其中,流表處理單元,用于根據包含有域值范圍的流表信息,生成域值范圍檢查信息; 數據包處理單元,用于按照生成的域值范圍檢查信息和所述流表信息轉發數據包。
11. 根據權利要求10所述的系統,其特征在于,該系統還包括:流表信息下發單元,用 于將包含有域值范圍的流表信息配置在流表中,并下發給所述流表處理單元。
12. 根據權利要求11所述的系統,其特征在于,所述流表處理單元,具體用于從所述流 表中獲取需要匹配的域類型及域值范圍,設置域值范圍檢查表;在域值范圍檢查表中包括 需要檢查的域類型,及其對應的域值范圍。
13. 根據權利要求12所述的系統,其特征在于,所述數據包處理單元,具體用于確定 數據包中存在范圍檢查表中的域類型時,確定該域的域值在域值范圍檢查表中對應的索引 號,并將該索引號對應的條目的域值范圍檢查標識設置為有效;將攜帶有包含域值范圍檢 查標識的域值范圍檢查結果的元數據通知給流表;匹配元數據中的域值范圍檢查結果,與 流表中的鍵Key值及掩碼相與的結果,二者一致,則表明該數據包的域值在范圍之內;按照 流表配置的對應動作,對數據包進行轉發。
14. 根據權利要求11?13任一項所述的系統,其特征在于,所述流表信息下發單元設 置在軟件定義網絡SDN控制器中。
15. 根據權利要求10?13任一項所述的系統,其特征在于,所述流表處理單元和數據 包處理單元設置在OpenFlow交換機中。
【文檔編號】H04L12/947GK104158745SQ201310174979
【公開日】2014年11月19日 申請日期:2013年5月13日 優先權日:2013年5月13日
【發明者】張君輝 申請人:中興通訊股份有限公司