一種軟體定義網絡控制器及其控制方法
2023-10-11 15:11:44 3
一種軟體定義網絡控制器及其控制方法
【專利摘要】本發明公開了一種軟體定義網絡控制器的控制方法,該方法包括:根據所獲取的軟體定義網絡SDN網絡拓撲和各鏈路開銷計算主路徑的備份路徑;為各備份路徑分配用於標記備份路徑的標誌位;根據備份路徑和對應標誌位向該備份路徑上各SDN轉發設備下發流表項,以使主路徑發生故障時,報文匹配所述流表項通過備份路徑進行轉發。本發明還公開了一種軟體定義網絡控制器。採用本發明能夠在網絡中轉發流量的鏈路出現了斷掉或者拓撲改變的時候,保障在SDN控制器計算處理新的流量之前流量的不丟失。
【專利說明】一種軟體定義網絡控制器及其控制方法
【技術領域】
[0001]本發明涉及網絡通信【技術領域】,特別涉及一種軟體定義網絡控制器及其控制方法。
【背景技術】
[0002]OpenFlow 是 SDN(Software Defined Network,軟體定義網絡)架構中定義的一個控制器與轉發層之間的通信接口標準。OpenFlow允許直接訪問和操作網絡設備的轉發平面,這些網絡設備可能是物理上的,也可能是虛擬的。OpenFlow的思想是分離控制平面和數據平面,二者之間使用標準的協議通信;數據平面採用基於流的方式進行轉發。OpenFlow網絡由SDN轉發設備和SDN控制器通過OpenFlow通道(OpenFlow Channel)組成。SDN控制器是控制中心,根據用戶的配置或者動態運行的協議生成流表發送到SDN轉發設備。SDN控制器上可能運行實驗程序,或者第三方開發的軟體等等。SDN轉發設備接收SDN控制器設置的流表,並根據流表進行報文處理,向SDN控制器上報設備的狀態和事件如接口 UP/DOWN。在SDN轉發設備和控制器之間通過OpenFlow通道(基於TCP或者SSL)進行通信。
[0003]OpenFlow轉發流程為:報文在進入設備後從最小的流表(Flow Table)開始查表,可以進行多個流表的查詢,一旦在某個流表匹配到後,會更新此報文的動作集(ActionSet),動作集即動作的集合,初始為空,對報文的操作都放在這個集合裡。完成最後一個流表的處理後,動作集內的所有動作會被執行,此時報文的內容會被修改,然後從指定出接口轉發出去。
[0004]在OpenFlow網絡中,有流量進入OpenFlow網絡中後,首個數據包上報SDN控制器,然後SDN控制器計算路徑後下發SDN轉發設備,指導SDN轉發設備的轉發。在現有網絡中,經常發生的是鏈路的故障或者為了調整網絡對網絡拓撲進行改造,這時當網絡中轉發流量的鏈路出現了斷掉或者拓撲改變的時候,SDN轉發設備會在和SDN控制器交互的OpenFlow報文中報告哪個埠出現問題,SDN控制器收到該報文後解析感知到埠問題後,會對經過這條鏈路的所有流量進行重新計算,計算好之後重新下發流表,指導SDN轉發設備流量的轉發。
[0005]目前的實現方法有一個缺點。當網絡中轉發流量的鏈路出現了斷掉或者拓撲改變的時候,從SDN轉發設備感知到埠問題到新的流量下發好後指導轉發這段時間只能流量都是按照原來的流量進行轉發,這會導致了在這段時間之內流量會全部丟失。即使SDN轉發設備認為流表的出接口出現故障,停止了流表的轉發,但是在新的流表計算好之前,流量是沒有辦法保障的。
【發明內容】
[0006]本發明的目的在於提供一種軟體定義網絡控制器及其控制方法,當網絡中轉發流量的鏈路出現了斷掉或者拓撲改變的時候,保障在SDN控制器計算處理新的流量之前流量的不丟失。[0007]為實現上述發明目的,本發明提供了一種軟體定義網絡控制器的控制方法,該方法包括:
[0008]根據所獲取的軟體定義網絡SDN網絡拓撲和各鏈路開銷計算主路徑的備份路徑;
[0009]為各備份路徑分配用於標記備份路徑的標誌位;
[0010]根據備份路徑和對應標誌位向該備份路徑上各SDN轉發設備下發流表項,以使主路徑發生故障時,報文匹配所述流表項通過備份路徑進行轉發。
[0011]為實現上述發明目的,本發明還提供了一種軟體定義網絡控制器,該控制器包括:
[0012]備份路徑確定單元,用於根據所獲取的軟體定義網絡SDN網絡拓撲和各鏈路開銷計算主路徑的備份路徑;
[0013]標誌位分配單元,用於為各備份路徑分配用於標記備份路徑的標誌位;
[0014]流表下發單元,用於根據備份路徑和對應標誌位向該備份路徑上各SDN轉發設備下發流表項,以使主路徑發生故障時,報文匹配所述流表項通過備份路徑進行轉發。
[0015]綜上所述,本發明實施例根據所獲取的軟體定義網絡SDN網絡拓撲和各鏈路開銷計算主路徑的備份路徑;為各備份路徑分配用於標記備份路徑的標誌位;根據備份路徑和對應標誌位向該備份路徑上各SDN轉發設備下發流表項,以使主路徑發生故障時,報文匹配所述流表項通過備份路徑進行轉發。與現有技術相比,能夠保障在SDN控制器計算出新的流量路徑之前流量不丟失的同時不影響現有流量。
【專利附圖】
【附圖說明】
[0016]圖1為本發明提供的軟體定義網絡控制器控制方法的流程示意圖。
[0017]圖2為標誌位在報文頭中的位置示意圖。
[0018]圖3為本發明實施例提供軟體定義網絡拓撲示意圖。
[0019]圖4為本發明實施例提供的軟體定義網絡控制器的結構示意圖。
【具體實施方式】
[0020]為使本發明的目的、技術方案及優點更加清楚明白,以下參照附圖並舉實施例,對本發明方案作進一步地詳細說明。
[0021]本發明的核心思想是:當網絡中轉發流量的鏈路出現了斷掉或者拓撲改變的時候,從SDN轉發設備感知到埠問題到新的流量下發好後指導轉發這段時間只能流量都是按照原來的流量進行轉發,這會導致了在這段時間之內流量會全部丟失。本發明按照網絡拓撲對轉發流量的鏈路在每臺SDN轉發設備上面的流表計算一個備份的出接口和備份路徑,當主接口出現故障的時候,SDN轉發設備自行把流量切換到備份出接口並且對流量進行標記,之後經過的SDN轉發設備也都提前下發對應的流表項匹配標記的流量進行轉發,保障在SDN控制器計算處理新的流量之前流量的不丟失。
[0022]如圖1所示,本發明提供的SDN控制器的控制方法的流程示意圖包括以下步驟:
[0023]步驟101,根據所獲取的軟體定義網絡SDN網絡拓撲和各鏈路開銷計算主路徑的備份路徑;
[0024]步驟102、為各備份路徑分配用於標記備份路徑的標誌位;[0025]步驟103、根據備份路徑和對應標誌位向該備份路徑上各SDN轉發設備下發流表項,以使主路徑發生故障時,報文匹配所述流表項通過備份路徑進行轉發。
[0026]通過圖1所示的方法,當主路徑發生故障時,直接匹配備份路徑上的流表,走備份路徑進行流量轉發,從而可以保障在SDN控制器計算處理新的流量之前流量的不丟失。
[0027]這裡,用於標記備份路徑的標誌位,一般採用IP報文頭中的閒置欄位,包括服務類型(Type of Service, T0S)欄位,填充(Padding)欄位等。標誌位在報文頭中的位置如圖2所示。本發明的標誌位,用於在主路徑故障時,報文通過匹配備份路徑上流表的標誌位,使報文從備份路徑轉發,進而起到標記備份路徑的作用。
[0028]為清楚說明本發明,下面列舉具體場景進行詳細說明。本發明實施例採用TOS欄位作為標誌位來標記備份路徑。
[0029]如圖3所示,SDN網絡拓撲包括由運行了 openflow協議的SDN控制器以及SDN轉發設備DUTA-DUTF構成。
[0030]在步驟101中,首先第一步,SDN控制器在SDN網絡通過鏈路層發現協議(LLDP)報文發現網絡拓撲結構。
[0031]當SDN控制器需要獲取當前的網絡拓撲時,先向與之連接的SDN轉發設備發送packet-out消息,攜帶的數據為SDN控制器構造的LLDP報文,動作項(action)為向所有Openflow埠發送。鄰居SDN轉發設備收到廣播過來的LLDP報文後被packet socket監聽並拷貝一份到openflow進程。Openflow進程對獲取的LLDP報文在所有實例內進行流表項匹配,如果匹配成功並且action為上送Controller,那麼就將LLDP報文入埠及LLDP報文數據封裝到packet-1n消息中發送給實例內的Controller。Controller就是通過上面所描述的:向實例內所有與之連接的SDN轉發設備發送攜帶LLDP報文的packet-out消息,及接收攜帶對應LLDP報文及入埠的packet-1n消息,來獲知哪些埠是連接的,進而能夠分析出整個網絡拓撲。
[0032]第二步,使用OpenFlow對設備中鏈路的帶寬進行統計,對每臺SDN轉發設備下發packet-out消息,讓SDN轉發設備上報每個接口的帶寬信息,從而計算各鏈路開銷(cost)值。
[0033]具體為,根據上報的一條鏈路上兩個埠的帶寬信息,確定鏈路的帶寬值,如果帶寬信息兩端一致,則取該一致的帶寬值作為鏈路帶寬值;如果帶寬信息兩端不一致,則選擇兩端最小者作為鏈路帶寬值。同時按照鏈路開銷=1000M/鏈路帶寬值,來為每一條鏈路標識鏈路開銷值。這樣就可以得到上圖所標識的DUTA-DUTC的cost為3,DUTA-DUTB的cost
為I等等。
[0034]從而,在SDN控制器上面形成一個全網絡的拓撲結構和各鏈路開銷值。
[0035]第三步,選取需要進行備份計算的主路徑。由於對所有路徑計算備份路徑並且下發備份流量的開銷比較大,因此我們這裡可以手工指定某一條流量經過的路徑需要備份或者轉發流量最大的路徑,當然也可以備份全網絡的所有路徑。本例子中我們指定主路徑從DUTA設備的INT A接口到DUTC設備的INT D接口。
[0036]第四步,使用Loop Free Alternate (LFA)算法來為主路徑計算備份路徑。具體的標準可以參考其對應的是RFC5286和RFC5715。對於Loop Free Alternate技術來說,其實就是為每條路由的下一跳找出不會形成環路的備份下一跳,因此備份下一跳的計算方法就是這種技術的核心。算法的核心思想在本例中就是對DUTA->DUTC備份的話,備份路徑假設是 DUTA->DUTB->DUTD->DUTC 的話,需要滿足 C0ST2 (DUTB-)DUTD) +COSTl (DUTC->DUTD)〈COSTl (DUTA-)DUTB) +C0ST3 (DUTA->DUTC)。通過 LFA 算法可以算出 DUTA_>DUTC鏈路的備份路徑是 DUTA->DUTB->DUTD->DUTC。
[0037]在步驟102中,對於每一條備份路徑分配一個TOS的值。如果不夠分配的話就對備份路徑進行分析,只要沒有經過同一臺SDN轉發設備的路徑就可以分配相同的TOS值。也就是說,本發明中,TOS值用於標記備份路徑,可以為每一條備份路徑分配不同的TOS值來唯一標識一條備份路徑,也可以在沒有兩條或者兩條以上備份路徑經過同一臺SDN轉發設備的情況下,為該兩條或者兩條以上備份路徑分配相同的TOS值。在第二種情況下,兩條不重疊的備份路徑,即使分配了相同的TOS值,流量也不會經過同一臺設備,轉發就不會產生衝突,這就意味著,TOS值唯一標識一條備份路徑只對本設備有效,如果本設備上設置有多條備份路徑的流表項,則TOS值必須不同,才能實現從各自對應的出接口正確轉發到不同備份路徑上,否則,備份路徑不唯一,會導致轉發衝突。本發明實施例中假設有第一主路徑DUTA->DUTC,對應的備份路徑DUTA->DUTB->DUTD->DUTC,DUTA稱為入口 SDN轉發設備,DUTB、DUTD稱為中間SDN轉發設備,DUTC稱為出口 SDN轉發設備;第二主路徑DUTC_>DUTE,對應的備份路徑DUTC->DUTD->DUTF->DUTE,DUTC稱為入口 SDN轉發設備,DUTD, DUTF稱為中間SDN轉發設備,DUTE稱為出口 SDN轉發設備。本例中由於兩條備份路徑有重疊的地方,必須分配不同的TOS值,如果備板路徑不重疊就可以分配相同TOS值,這樣就可以解決TOS值不夠用的問題。我們對備份路徑DUTA->DUTB->DUTD->DUTC分配TOS值為7,對備份路徑DUTC->DUTD->DUTF->DUTE 分配的 TOS 值為 6。
[0038]在步驟103中,根據備份路徑和對應標誌位向該備份路徑上各SDN轉發設備下發流表項的方法具體包括:
[0039]為入口 SDN轉發設備下發與所述主路徑具有相同匹配項的第一流表項,所述第一流表項的動作項為改變標誌位值為該備份路徑對應的標誌位值,出接口為備份路徑上的出接口 ;
[0040]為中間SDN轉發設備下發第二流表項,所述第二流表項的匹配項為該備份路徑對應的標誌位值,動作項為備份路徑的出接口 ;
[0041]為出口 SDN轉發設備下發第三流表項,所述第三流表項的匹配項為備份路徑的入接口,以及備份路徑對應的標誌位值,動作項為將備份路徑對應的標誌位值設置為默認值。
[0042]在本發明實施例中,對於第一主路徑DUTA_>DUTC,對應的備份路徑DUTA->DUTB->DUTD->DUTC,其中各SDN轉發設備的備份流表設置過程為:
[0043]對於入口 SDN轉發設備DUTA,需要統計DUTA上面所有出接口為INTB的所有流表項,從而下發第一流表項,該第一流表項中,匹配項與出接口為INT B的流表匹配項相同,動作項為改變TOS值為7,出接口為INT G0
[0044]對於中間SDN轉發設備DUTB和DUTD,在DUTB上面增加第二流表項為匹配TOS值為7的報文出接口為INT I ;在DUTD上面增加第二流表項為匹配TOS值為7的報文出接口為 INT K。
[0045]對於出口 SDN轉發設備DUTC,下發第三流表項,該第三流表項中,匹配項為從INTL進入,TOS值為7的流量,動作項為把TOS值設置為O (為了還原流量,防止後面還走備份路徑的時候出現混亂),這樣就完成了對鏈路DUTA->DUTC的備份。其中,TOS值設置為0,相當於設置為默認值,意味著走該備份路徑的流量在此設備上終止。
[0046]同理,第二主路徑DUTC_>DUTE鏈路的備份的方法為:
[0047]對於入口 SDN轉發設備DUTC,統計DUTC上面所有出接口為INT D的所有流表項,從而下發第一流表項,該第一流表項中,匹配項與出接口為INTD的流表匹配項相同,動作項為改變TOS值為6,出接口為INT L ;
[0048]對於中間SDN轉發設備DUTD和DUTF,在DUTD上面增加第二流表項為匹配TOS值為6的報文出接口為INT M ;在DUTF上面增加第二流表項為匹配TOS值為6的報文出接口為 INT O ;
[0049]對於出口 SDN轉發設備DUTE,在DUTE上面下發第三流表項,該第三流表項中,匹配項為從INT P進入,TOS值為6的流量,動作項為把TOS值設置為O。
[0050]由此,當DUTA到DUTC的主鏈路發生故障的時候,DUTA會馬上感知到出接口 INTB會DOWN掉,這樣報文通過DUTA時就會匹配第一流表項,將報文中的TOS值改為7,在出接口 INT G轉發。這樣就會在控制器重新計算路徑之前會把流量從出口 INT G進行轉發,後續的設備DUTB和DUTD都會匹配到TOS值為7的第二流表項進行轉發,然後流量可以安全達到DUTC,再按照DUTC上面的第三流表項,把TOS欄位進行還原為0,進行流量的轉發,這樣就可以保障流量的不丟失。從上述流量在備份路徑DUTA->DUTB->DUTD->DUTC上轉發可以看出,下發在備份路徑上各流表中的標誌位TOS值,起著引導流量路徑轉發的作用。同一臺設備上,不同備份路徑的流表項中TOS值不同,從而唯一標識一條備份路徑。
[0051]最後,當SDN控制器重新計算出入口 SDN轉發設備的轉發路徑時,指示入口 SDN轉發設備刪除第一流表項,並且下發新的流表項,指示入口 SDN轉發設備按照重新計算出的路徑轉發。具體方法為:DUTA上面取消備份的出接口 INT G和備份的Action動作為改變TOS值為7的流表項,按照控制器計算出來的路徑重新進行流量轉發。
[0052]如圖4所示,本發明實施例提供的SDN控制器包括:
[0053]備份路徑確定單元401,用於根據所獲取的軟體定義網絡SDN網絡拓撲和各鏈路開銷計算主路徑的備份路徑;
[0054]標誌位分配單元402,用於為各備份路徑分配用於標記備份路徑的標誌位;
[0055]流表下發單元403,用於根據備份路徑和對應標誌位向該備份路徑上各SDN轉發設備下發流表項,以使主路徑發生故障時,報文匹配所述流表項通過備份路徑進行轉發。
[0056]所述備份路徑上包括入口 SDN轉發設備、中間SDN轉發設備和出口 SDN轉發設備;
[0057]所述流表下發單元403具體用於:
[0058]為入口 SDN轉發設備下發與所述主路徑具有相同匹配項的第一流表項,所述第一流表項的動作項為改變標誌位值為該備份路徑對應的標誌位值,出接口為備份路徑上的出接口 ;
[0059]為中間SDN轉發設備下發第二流表項,所述第二流表項的匹配項為該備份路徑對應的標誌位值,動作項為備份路徑的出接口 ;
[0060]為出口 SDN轉發設備下發第三流表項,所述第三流表項的匹配項為備份路徑的入接口,以及備份路徑對應的標誌位值,動作項為將備份路徑對應的標誌位值設置為默認值。
[0061]當控制器重新計算出入口 SDN轉發設備的轉發路徑時,所述流表下發單元403還用於指示入口 SDN轉發設備刪除第一流表項,並且下發新的流表項,指示入口 SDN轉發設備按照重新計算出的路徑轉發。
[0062]所述標誌位分配單元402具體用於,如果其中兩條備份路徑經過同一臺轉發設備,則為這兩條備份路徑分配不同的標誌位值;如果各備份路徑通過不同的轉發設備,則為各備份路徑分配相同的標誌位值。
[0063]綜上所述,本發明實現了在OpenFlow網絡中,SDN控制器通過收集的網絡信息,包括網絡拓撲和鏈路開銷值,自動計算備份路徑,並且下發相應的流表項。當主路徑發生故障時,直接匹配備份路徑上的流表項,走備份路徑進行流量轉發,從而保障在SDN控制器計算出新的流量路徑之前流量不丟失的同時不影響現有流量。
[0064]以上,僅為本發明的較佳實施例而已,並非用於限定本發明的保護範圍。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
【權利要求】
1.一種軟體定義網絡控制器的控制方法,其特徵在於,該方法包括: 根據所獲取的軟體定義網絡SDN網絡拓撲和各鏈路開銷計算主路徑的備份路徑; 為各備份路徑分配用於標記備份路徑的標誌位; 根據備份路徑和對應標誌位向該備份路徑上各SDN轉發設備下發流表項,以使主路徑發生故障時,報文匹配所述流表項通過備份路徑進行轉發。
2.如權利要求1所述的方法,其特徵在於,所述備份路徑上包括入口SDN轉發設備、中間SDN轉發設備和出口 SDN轉發設備; 所述根據備份路徑和對應標誌位向該備份路徑上各SDN轉發設備下發流表項的方法具體包括: 為入口 SDN轉發設備下發與所述主路徑具有相同匹配項的第一流表項,所述第一流表項的動作項為改變標誌位值為該備份路徑對應的標誌位值,出接口為備份路徑上的出接Π ; 為中間SDN轉發設備下發第二流表項,所述第二流表項的匹配項為該備份路徑對應的標誌位值,動作項為備份路徑的出接口 ; 為出口 SDN轉發設備下發第三流表項,所述第三流表項的匹配項為備份路徑的入接口,以及備份路徑對應的 標誌位值,動作項為將備份路徑對應的標誌位值設置為默認值。
3.如權利要求2所述的方法,其特徵在於,當控制器重新計算出入口SDN轉發設備的轉發路徑時,指示入口 SDN轉發設備刪除第一流表項,並且下發新的流表項,指示入口 SDN轉發設備按照重新計算出的路徑轉發。
4.如權利要求1所述的方法,其特徵在於,如果其中兩條備份路徑經過同一臺轉發設備,則為這兩條備份路徑分配不同的標誌位值;如果各備份路徑通過不同的轉發設備,則為各備份路徑分配相同的標誌位值。
5.如權利要求1所述的方法,其特徵在於,所述標誌位包括服務類型ToS欄位,填充Padding 欄位。
6.一種軟體定義網絡控制器,其特徵在於,該控制器包括: 備份路徑確定單元,用於根據所獲取的軟體定義網絡SDN網絡拓撲和各鏈路開銷計算主路徑的備份路徑; 標誌位分配單元,用於為各備份路徑分配用於標記備份路徑的標誌位; 流表下發單元,用於根據備份路徑和對應標誌位向該備份路徑上各SDN轉發設備下發流表項,以使主路徑發生故障時,報文匹配所述流表項通過備份路徑進行轉發。
7.如權利要求6所述的控制器,其特徵在於,所述備份路徑上包括入口SDN轉發設備、中間SDN轉發設備和出口 SDN轉發設備; 所述流表下發單元具體用於, 為入口 SDN轉發設備下發與所述主路徑具有相同匹配項的第一流表項,所述第一流表項的動作項為改變標誌位值為該備份路徑對應的標誌位值,出接口為備份路徑上的出接Π ; 為中間SDN轉發設備下發第二流表項,所述第二流表項的匹配項為該備份路徑對應的標誌位值,動作項為備份路徑的出接口 ; 為出口 SDN轉發設備下發第三流表項,所述第三流表項的匹配項為備份路徑的入接口,以及備份路徑對應的標誌位值,動作項為將備份路徑對應的標誌位值設置為默認值。
8.如權利要求7所述的控制器,其特徵在於,當控制器重新計算出入口SDN轉發設備的轉發路徑時,所述流表下發單元還用於指示入口 SDN轉發設備刪除第一流表項,並且下發新的流表項,指示入口 SDN轉發設備按照重新計算出的路徑轉發。
9.如權利要求6所述的控制器,其特徵在於,所述標誌位分配單元具體用於,如果其中兩條備份路徑經過同一臺轉發設備,則為這兩條備份路徑分配不同的標誌位值;如果各備份路徑通過不同 的轉發設備,則為各備份路徑分配相同的標誌位值。
【文檔編號】H04L12/707GK103986651SQ201410239489
【公開日】2014年8月13日 申請日期:2014年5月30日 優先權日:2014年5月30日
【發明者】王偉, 王海, 黃李偉 申請人:杭州華三通信技術有限公司