專利名稱:閉合環路形成防止系統和閉合環路形成防止方法
技術領域:
本發明涉及閉合環路形成防止系統,且尤其涉及開放流(OpenFl0W)網絡中的閉合環路形成防止系統。
背景技術:
作為網絡通信的路由控制方法之一,使用開放流(OpenFLow)(其是通信裝置的控制協議)技術的路由控制方法已經被研究。其中實施開放流技術的路由控制的網絡被稱為開放流網絡。
在開放流網絡中,諸如OFC (OpenFLow控制器)的控制器通過操作交換機的開放流表,控制諸如OFS(OpenFLow交換機)的交換機的行為。控制器和交換機通過用于控制的安全通道連接,以基于開放流協議通過使用控制消息控制交換機。
開放流網絡中的交換機對開放流網絡進行配置,且是處于控制器的控制下的邊緣交換機和核心交換機。從在開放流網絡中在輸入側上的邊緣交換機中接收包(通信數據)到由輸出側邊緣交換機進行傳輸的一系列步驟被稱為流。
開放流表是其上登記了流條目的表,該流條目限定了將要針對與預定規則(匹配條件)匹配的包組(包序列)實施的預定動作(處理內容)。
流條目的規則通過目的地地址、源地址、目的地端口和源端口中的一部分或全部的各種組合限定以便進行區分,且因而能夠被識別,所述目的地地址、源地址、目的地端口和源端口包含在包的每個協議層的報頭區域中。應當注意,假設上述地址包含MAC地址(介質訪問控制地址)和IP地址(因特網協議地址)。而且,除了上述內容之外,進入端口的數據也可以用作流條目的規則。
流條目的動作示出了諸如“輸出到指定端口”、“丟棄”、“重寫報頭”之類的操作。例如,如果在流條目的動作中示出輸出端口的標識數據(出口端口號),則交換機向與此對應的端口輸出包,且如果未示出輸出端口的標識數據,則丟棄包。或者,如果在流條目的動作中示出報頭數據,則交換機基于報頭數據重寫包的報頭。
開放流網絡中的交換機針對與流條目的規則匹配的包組執行流條目的動作。
結合非專利文獻I和2來描述開放流技術的細節。
當前,開放流技術正處于從研究階段到實際使用階段的過渡時期。在這種情形中,將不會執行使用開放流網絡集體地代替現有遺留網絡。在很多情況中,利用開放流的可兼容網絡代替現有網絡的一部分,且一般地在小規模環境中實施小規模測試(Pilot test)。
而且,通常對于這種小規模測試并不投入大預算,而是以有限的預算來執行測試。在這種情形中,在“單控制器類型”的現有技術中,必須準備一個新的0FC,而這變成了成本障礙。
此外,在小規模測試步驟中,從各個銷售商購得OFC和OFS且獲得基準是常規做法。然而,由于當前在現有“路由計算設備協作方法”方面,路由計算設備的通信標準并不統一,因而不能構建其中混合各個銷售商的產品的網絡。
而且,另一方面,在當前開放流網絡環境(開放流網絡系統)中,因為用于小規模測試的小規模環境占極大部分,所以沒有充分考慮在大規模環境中可能會導致的問題。
從這種情形看,需要如下一種技術,該技術不需要新的設備,允許各個銷售商的OFC和OFS的混合,并且即使在大規模網絡中仍以輕量級處理來防止閉合環路的形成。
(網絡的配置示例)
在描述傳統問題之前,首先將參考圖1描述開放流網絡管理系統的配置示例。
在圖1所示的開放流網絡系統中,存在多個小規模網絡,在所述小規模網絡中,一個OFC管理多個0FS,且大規模網絡由所述多個小規模網絡的組合來配置。
開放流網絡系統包含主機(主計算機)10 (10-1, i = I至x:x是總數)、OFS11 (11-j, j = I 至 y:y 是總數)和 OFC 12 (12_k, k = I 至 z:z 是總數)。
在小規模網絡中,一個OFC 12管理多個OFS 11。小規模網絡中的每一個通過最上層中的OFS 11與其他小規模網絡相連,以配置大規模網絡。
主機10-1、主機10-2、主機10-3和主機10_4通過諸如LAN線纜的通信線路與OFS11-2和OFS 11-3連接。OFS 11-2和OFS 11-3使用諸如LAN線纜的通信線路與OFS 11-1連接。假設OFC 12-1實施諸如用于OFS 11-1、0FS 11_2和OFS 11_3的路由計算和流條目登記之類的管理。以相同的方式,主機10-5、主機10-6、主機10-7和主機10-8通過諸如LAN線纜的通信線路與OFS 11-5和OFS 11_6連接。OFS 11-5和OFS 11_6通過諸如LAN線纜的通信線路與OFS 11-4連接。假設OFC 12-2實施諸如用于OFS 11-4, OFS 11_5和OFS 11-6的路由計算和流條目登記之類的管理。以相同的方式,主機10-9、主機10-10、主機10-11和主機10-12通過諸如LAN線纜的通信線路與OFS 11_8和OFS 11_9連接。OFS11-8和OFS 11-9通過諸如LAN線纜的通信線路與OFS 11_7連接。假設OFC 12_3實施諸如用于OFSl 1-7、OFS 11-8、OFS 11-9的路由計算和流條目登記之類的管理。OFS 11-1和OFS 11-4通過LAN線纜與OFS 11-7連接。
在這種配置中,OFC 12-U0FC 12_2和OFC 12_3不具有用于相互交換數據的任意部件和過程。即,例如,沒有組件和過程來檢測OFC 12-3根據OFC 12-1和OFC 12_2在OFS11-7上登記的什么流條目。
(流條目的產生)
在OFS 12(12_j,j = I至y)中的每一個上登記具有圖2示出的格式的多個流條目。
(流條目的格式)
如圖2所示,當被主要地分割時,流條目具有“規則”字段(區域)、“動作”字段和“統計數據”字段這三個字段。
諸如包類型、包源主機地址以及包目的地主機地址之類的“規則”(匹配條件)被寫入規則字段中。“IPv4” (因特網協議版本4)、“IPv6” (因特網協議版本6)等數據被寫入包類型字段中。
在接收與規則匹配的包時,諸如“丟棄”和“傳輸到OFS 12-n(n是可選的)”之類示出如何進行處理的“動作”(處理內容)被寫入動作字段中。
諸如已處理包的總數之類的“統計數據”被寫入統計數據字段中。
作為第一示例,在一些OFS中,假設流條目被登記在流表中,且在流條目中,將“192.168.10.*”作為傳輸源寫入到規則字段中,且“丟棄”作為動作被寫入到動作字段中。應當注意,是通配符且表示可選長度的可選字符(字符串等于或大于O字符)。BP,的部分可以是未確定字符。在這種情況中,如果在接收包的源IP地址的報頭中包含“192.168.10”,在該接收包與流條目匹配。當來自“192.168.10.34”的包到達OFS時,包與此流條目匹配且實施丟棄處理。
作為第二示例,假設流條目登記在流表中,且流條目具有作為傳輸源寫入的 *.*.*”、在規則字段中作為目的地寫入的“192.168.20.*”、以及在動作字段中寫入的“傳輸到 OFS 12-n”。當從“192.168.10.23” 向 “192.168.20.25” 傳送的包到達該 OFS 時,包與此流條目匹配且實施傳送處理以傳送到OFS 12-n。應當注意,當接收到與在流表上登記的流條目其中任意一個均不匹配的包時,OFS請求OFC登記此流條目。OFC適當地計算高效路由且在OFS上登記限定此包的路由的流條目。OFS根據流條目處理接收的包。
(閉合環路的配置)
接下來,將參考圖3描述在圖1的網絡配置中形成閉合環路的情況。
圖3中示出的網絡3包含主機20(20_i,i = I至x)、0FS 21(21_j,j = I至y)和OFC 22(ll-k, k = I 至 z)。
主機2 0(20_i,i = I 至 X)等同于圖1 的主機 10(10-1, i = I 至 x)。0FS21(21_j,j = I 至 y)等同于于圖1 的 OFS ll(ll-j,j = I 至 y)。OFC 22(22_k,k= I 至 z)等同于圖1 的 OFC ll(ll-k,k= I 至 z)。主機 20(20-1,i = I 至 x)、0FS21 (21_j,j = I 至 y)和OFC 22(22-k,k= I至z)屬于網絡200(200-1,1 = I至w:w是小規模網絡的總數)。主機20-1、OFS 22-2 和 OFC 22-1 屬于網絡 200-1。OFC 21-2、0FC22-2、主機 20-4、主機 20-5、OFS 21-4 和 OFC 22-4 屬于網絡 200-2。主機 20-2、主機 20-3、OFS 21-3 和 OFC 22-3 屬于網絡 200-3。主機 20-6、OFS 21-5 和 OFC 22-5 屬于網絡 200-4。
假設“192.168.1.0”的網絡地址被分配給網絡200-1。假設“192.168.2.0”的網絡地址被分配給網絡200-2。假設“192.168.3.0”的網絡地址被分配給網絡200-3。假設“192.168.4.0”的網絡地址被分配給網絡200-4。假設“192.168.1.5”的網絡地址被分配給主機20-1。假設“192.168.3.10”的網絡地址被分配給主機20-2 假設“192.168.3.21”的網絡地址被分配給主機20-3。假設“192.168.4.8”的網絡地址被分配給主機20-6。而且,假設其中“目的地為“ 192.168.1.*”的包被傳送到主機而目的地為其他地址的包被傳送到OFS 21-2”的流條目登記在OFS 21-1中。而且,假設其中“目的地為“ 192.168.2.的包被傳送到主機為目的地為其他地址的包被傳送到OFS 21-3”的流條目登記在OFS 21-2中。而且,假設其中“目的地為“192.168.3.*”的包被傳送到主機”的流條目登記在OFS 21-3中。而且,假設其中“目的地為“192.168.2.*”的包被傳送到主機且目的地為其他地址的包被傳送到OFS 21-5”的流條目登記在OFS 21-4中。
在這種情況中,當發布目的地為主機20-2的包時,主機20-1首先向OFS 21-1傳送包。OFS 21-1根據流條目將目的地為主機20-2的包傳送到OFS 21_2。OFS 21_2根據流條目將目的地為主機20-2的包傳送到OFS 21-3。OFS 21-3根據流條目將目的地為主機20-2的包傳送到OFS 20-2。因而,目的地為20_2的包到達目標主機。S卩,針對從OFS 21-1到主機20-2的包建立了經過OFS 21-1, OFS 21-2和OFS 21-3的路由。
而且,當主機20-4或主機20-5發布目的地為主機20_6的包時,它首先向OFS21-4傳輸包。OFS 21-4根據流條目將目的地為主機20-6的包傳送到OFS 21-5。OFS 21-5根據流條目將目的地為主機20-6的包傳送到主機20-6。即,針對從主機20-4或主機20_5目的地為主機20-6的包建立了經過OFS 21-4和OFS 21-5的路由。
在這種情況中,考慮了從主機20-3發布的目的地為主機20-6的包如何被路由。當主機20-3發布目的地為主機20-6的包時,首先向OFS 21_3傳輸包。然而,與接收的包匹配的任意流條目并未登記在OFS 21-3上。
因此,OFS 21-3向OFC 22-3發布關于包的處理的查詢。然而,OFC 22-3并不具有組件和過程來檢測其他OFC設置到它們所管理的OFS的流條目。
當適于根據路由計算例程基于針對包的路由的計算結果向0FS21-4傳送包時,OFC 22-3向OFS 21-3新登記一個流條目,其中“目的地為“ 192.168.3.的包被傳送到主機,而目的地為其他地址的包被傳送到OFS 21-4”。在這種情況中,建立了“0FS 21-3 — OFS21-4”的路由24-1。OFC 22-3將包傳送到OFS 21-4。OFS 21-4通過OFS 21-5將包傳送到主機20-6。
另一方面,當適于根據路由計算例程基于路由的計算結果向0FS21-1傳送包時,OFC 22-3在OFS 21-3中新登記一個流條目,其中目的地為“ 192.168.3.的包被傳送到主機,而目的地為其他地址的包被傳輸到的OFS 21-1。在這種情況中,建立了 “0FS21-3 —OFS 21-1”的路由24-2。OFC 22-3將包傳送到OFS 21-1。因為包與OFS 21-1中的現有流條目中的任意一個匹配,所以OFS 21-1將包傳送到0FS21-2。因為包與現有流條目中的任意一個匹配,所以OFS 21-2將包傳送到OFS 21-3。因為包與新登記的流條目匹配,OFS 21-3 將包傳送到 OFS 21-1。這樣,因為形成“0FS 21-1 ^OFS 21-2 ^ OFS 21-3 —OFS21-1”的閉合環路25-1,包并未到達目的地主機。
從上文可知,當不存在檢測已經在通過另一 OFC管理的OFS中登記了什么流條目的組件和過程時,存在形成閉合環路的可能性。
(閉合環路的種類)
應當注意,作為閉合環路的種類,存在圖4A中示出的模式和圖4B中示出的模式這兩個種類。圖4A或圖4B中示出的主機30(30-1, i = I至x)等同于圖1的主機10(10_i,i = I至X)。圖4A和4B中示出的OFS 31(31_j,j = I至y)等同于圖1的OFS 11 (11-j,j = I 至 y)。
(模式I)`
在圖4A中示出的模式中,OFS 31_1從主機30_1接收包,且包與流條目中的任意一個匹配且然后OFS 31-1根據新登記的流條目傳送包。結果,包到達OFS 31-2。包與OFS31-2和OFS 31-3中的現有流條目中的任意一個匹配且根據匹配的流條目傳送。結果,因為包通過 OFS 31-2 和 OFS 31-3 返回到 OFS 31-1,在 OFS 31-1, OFS 31-2 和 OFS 31-3 之間形成閉合環路。
(模式2)
在圖4B中示出的模式中,OFS 31_4從主機30_2接收包,且包與新登記的流條目匹配且根據新登記的流條目被傳送。結果,包通過OFS 31-4和OFS 31-5到達OFS 31_6。包與OFS 31-6、OFS 31-7和OFS 31_8中的現有流條目匹配,且根據現有流條目傳送。結果,包通過 OFS 31-7 和 OFS 31-8 返回 OFS 31-6。因此,在 OFS 31-6,OFS 31-7 和 OFS 31-8 之間形成閉合環路。(對于閉合環路形成的傳統措施)傳統上,提出了圖5中示出的“單控制器方法”和圖6中示出的“路由計算裝置協作方法”且針對閉合環路形成問題執行這些方法。(單控制器方法)在圖5中示出的“單控制器方法”中,除了圖1的元件之外,附加地提供了 OFC 12-4以整合OFC 12-U0FC 12-2和OFC 12-3。例如,在該配置中,當計算包的路由時,OFC 12-1向OFC 12-4發布一個查詢。OFC 12-4考慮在OFC 12-3和OFC 12-4中已經設置的路由且向OFC 12-2設置流條目從而不形成閉合環路。然而,作為“單控制器方法”的缺點,如果網絡規模變大,在相應OFC中設置的流條目的數據量以及路由計算所必須的組合是巨大的,從而使得OFC 12-4的負荷變重。(路由計算設備協作方法)在圖6中示出的“路由計算裝置合作方法”中,除了圖1的組件,提供在OFC 12-1上操作的路由計算部121-1、在OFC 12-2上操作的路由計算部121-2和在OFC 12-3上操作的路由計算部121-3。路由計算部121-1、121-2、121-3交換登記的流條目的數據且添加用于計算路由的機制。例如,在該配置中,當計算包的路由時,OFC 12-1向OFC 12-2和OFC12-3查詢相關流條目的數據。然而,在“路由計算設備協作方法”中,如果網絡規模變大,通信OFC的數目和從每個OFC接收的路由數據的數目變得巨大。而且,因為計算必須針對它們的組合執行,所以OFC 12-1的負荷變重。引用列表[非專利文獻I]“開放流交換機協定”,[在線]因特網(URL:http://www.0penflowswitch.0rg/)[非專利文獻2]“開放流交換機規范,版本1.0.0”,[在線]2009年12月31日,因特網(URL:http://www.0penf lowswitch.0rg/documents/openf low-spec-vl.0.0.pdf)
發明內容
本發明的一個目可以是提供一種閉合環路形成防止系統,其中,在開放流(OpenFlow)網絡中在先地檢查閉合環路的形成且將檢查結果反映在流條目登記上。根據本發明的閉合環路形成防止系統包含:發布包的主機;接收所述包且根據流表上登記的流條目傳送所述包的交換機;以及響應于來自交換機的查詢在所述流表上登記所述流條目的控制器。該交換機包括:確認(檢查)接收的包是否是測試包的處理部;當所述接收的包不是所述測試包時確認在流表的現有流條目中是否存在與所述接收的包匹配的流條目的處理部;當不存在與所述接收的包匹配的所述流條目時向所述控制器發布查詢的處理部;基于從所述控制器臨時登記的臨時登記流條目形成所述測試包的處理部;保持接收的包、根據所述臨時登記流條目從所述控制器傳送所述測試包且檢測閉合環路形成以開始測試的處理部;當作為所述測試處理部的結果檢測到所述閉合環路形成時丟棄所述臨時登記流條目的處理部。根據本發明的閉合環路形成防止方法通過基于所述流表上登記的流條目傳送包的交換機來實施。在本發明的閉合環路形成防止方法中,確認接收包是否是測試包。當所述接收包不是測試包時,確認在所述流表的現有流條目中是否存在與所述接收包匹配的流條目。當不存在與所述接收包匹配的流條目時,向控制器發布查詢。基于從所述控制器臨時登記的所述臨時登記流條目,產生測試包。所述接收包被保持,所述測試包根據所述臨時登記流條目從所述控制器傳送,且測試開始以檢測閉合環路形成。當作為所述測試的結果檢測到所述閉合環路的形成時,丟棄從所述控制器臨時登記的所述流條目。根據本發明的程序是使得交換機執行以下步驟的程序:確認接收的包是否是測試包;當所述接收的包不是所述測試包時,確認在流表上登記的現有流條目中是否存在與所述接收的包匹配的流條目;當存在與所述接收的包匹配的所述流條目時,根據匹配的所述流條目傳送所述接收的包;當不存在與所述接收的包匹配的任何流條目時,向控制器發布查詢;基于從所述控制器臨時登記的臨時登記流條目產生所述測試包;保持所述接收的包;根據所述臨時登記流條目傳送所述測試包;開始測試以檢測閉合環路形成;在作為測試結果檢測到所述閉合環路形成時丟棄所述臨時登記流條目。應當注意,根據本發明的程序可以存儲在存儲裝置和存儲介質中。在本發明中,閉合環路的形成可以在先地防止而無需諸如OFC的控制器的協作。
圖1是示出開放流網絡系統的配置示例的圖示;圖2是示出傳統流條目的格式的圖示;圖3是示出在開放流網絡系統的配置中形成閉合環路的情形的圖示;圖4A是示出閉合環路的模式I的圖示;圖4B是示出閉合環路的模式2的圖示;圖5是示出傳統單控制器方法的圖示;圖6是示出路由計算設備的傳統協作方法的圖示;圖7是示出本發明中的流條目的格式的圖示;圖8是示出本發明中的測試包的格式的圖示;圖9是示出本發明中的測試、成功/失敗確定和結果反映的圖示;圖1OA是示出OFS的處理例程的流程圖;圖1OB是示出OFS的處理例程的流程圖;圖1OC是示出OFS的處理例程的流程圖;圖11是示出OFS的內部配置示例的圖示;圖12是示出作為OFS的內部配置之一的測試包產生部分的細節的圖示;以及圖13是示出作為OFS的內部配置之一的測試執行部分的細節的圖示。
具體實施例方式此后,將參考附圖描述本發明的示例性實施例。本發明處理如圖1所示的開放流網絡系統。在圖1中示出的開放流網絡系統中,存在多個小規模網絡,這些網絡中的每一個中,一個OFC管理多個0FS,且通過這些網絡的組合形成大規模網絡。
開放流網絡系統包含主機10(10_i,i = 1至1^是總數)、0卩511(11-」,」=I至y:y是總數)和OFC 12 (12-k, k = I至z:z是總數)。在小規模網絡中,一個OFC 12管理多個OFS 11。小規模網絡中的每一個通過最高層中的OFS 11與其他小規模網絡連接,且因而形成大規模網絡。(本發明中流條目的格式)圖7是在本發明中使用的流條目的格式。在本發明的流條目中,圖2的流條目被擴展且添加了 “測試ID”字段。如圖7所示,本發明的流條目主要分割成“規則”字段、“動作”字段、“統計數據”字段和“測試ID”字段這4個字段。在“規則”字段中寫入諸如包類型、包傳輸源主機地址以及包傳輸目的地主機地址之類的規則(匹配條件)。在包類型字段中寫入“IPv4”(因特網協議版本4)和“IPv6”(因特網協議版本6)等的數據。在“動作”字段中寫入諸如“丟棄”和“傳輸到OFS 12-n(n是可選的)”之類的動作(處理內容),在接收時將根據所述動作處理與規則匹配的包。在“統計數據”字段中寫入諸如已處理的包的數目之類的“統計數據”。在“測試ID”字段寫入“測試ID”,從而唯一地識別測試。(本發明中測試包的格式)圖8示出在本發明中使用的測試包的格式。此處,將使用示例描述測試包基于“IPv4”的情況。
測試包具有基本報頭部分和測試數據部分。測試包在基本報頭部分中包含“服務類型”(T0S:服務的類型)字段和“協議”字段。假設“服務類型”字段具有足以存儲“服務類型”數據的字段大小,當傳輸包時被認為是重要的服務可以通過該“服務類型”數據而被唯一地區分。假設“協議”字段具有足以存儲“協議號”數據的區域大小,上層協議可以通過該“協議號”數據而被唯一地區分。“服務類型”字段和“協議”字段基于相應字段中的值的組合示出該包是根據本發明的用于閉合環路檢測的測試包。即,“服務類型”字段和“協議”字段用于區分包是否是根據本發明的用于閉合環路測試的測試包。而且,測試包在測試數據部分中包含“測試ID”字段、“測試成功/失敗(S/F)標志”字段和“通過OFS數據”字段。假設“測試ID”字段具有足以存儲“測試ID”數據的字段大小,該“測試ID”數據可用于唯一地區分測試。例如,OFC從時間和OFC的MAC地址等產生唯一 “測試ID”。假設“測試成功/失敗標志”字段具有足以存儲指示4個狀態的數據(例如2 t匕特)的字段大小,這四個狀態包括:“0”示出測試未完成,“I”示出測試的成功完成,“2”示出由于測試失敗的完成,以及“3”示出由于存活時間的過期導致的路由未完成。假設“通過OFS數據”具有足以存儲多個MAC地址和多個端口號的字段大小。MAC地址和端口號是用于一個OFS的地址數據。即,針對一個OFS提供MAC地址和端口號的集合。假設在測試過程中測試包所經過的OFS的MAC地址依次存儲在“通過OFS數據”字段中。應當注意,“通過OFS數據”字段可以存儲針對在基本報頭部分中的“存活時間”(TTL:生存時間)字段的值所指示的數目的地址數據。即,“通過OFS數據”字段中地址數據的條目數量的上限通過“存活時間”字段的值示出。(操作的說明)接下來,將參考圖9依次描述(A)測試示例,(B)成功/失敗確定的示例和(C)結果反映的示例。(㈧測試示例)圖9中示出的開放流網絡系統包含主機40 (40-1, i = I至x)、0FS 41 (41-j, j =
I至 y)和 OFC 42 (42-k, k = I 至 z)。此處,主機40 (40-1, i = I至x)等同于圖1的主機10(10_i, i = I至x)。OFS41 (41-j, j = I 至 y)等同于圖1 的 OFS 11 (11-j, j = I 至 y)。OFC 42 (42-k, k = I 至 z)等同于圖1 的 OFC 11 (11-k, k = I 至 z)。主機 40 (40-1, i = I 至 x)、0FS 41 (41-j, j = I至 y)和 OFC 42 (42-k, k = I 至 z)屬于網絡 400 (400-1,I = I 至 w)。主機 40_1、0FS 41-1和OFS 41-2屬于網絡400-1,且假設OFC 42_1管理OFS 41_1和OFS 41-2。以相同的方式,OFS 41-3屬于網絡400-2,且假設OFC 42_2管理OFS 41_3。以相同的方式,主機40_2、0FS
41-4和 OFS 41-5 屬于網絡 400-3,且假設 OFC 42-3 管理 OFS 41-4 和 OFS 41-5。(I)步驟 AOl主機40-1向OFS 41-1傳輸目的地為主機40-2的包。當接收到包時,OFS 41_1確定在流表上登記的流條目中是否存在與該包中寫入的目的地地址和源地址的值匹配的流條目。(2)步驟 A02由于在現有流條目中不存在具有該包中寫入的目的地地址和源地址值的任何流條目,所以OFS 41-1向OFC 42-1發布查詢。OFC 42_1沒有組件和過程來檢測在網絡400-2和網絡400-3中設置了什么流條目。OFC 42-1根據路由計算例程計算路由。當將計算結果作為流條目登記在OFS 41-1上時,OFC 42-1將流條目處理為臨時登記的流條目。假設OFC
42-1在流條目的“動作”字段中寫入示出諸如“前向測試”的臨時登記的數據,從而使得可以區分出此流條目是處于臨時登記之中。而且,OFC 42-1從OFC 42-1的MAC地址和時間產生唯一 “測試ID”,且在“測試ID”字段中存儲“測試ID”。⑶步驟A03OFS 41-1臨時保持從主機40-接收的原始包。而且,OFS 41-1根據圖8中示出的格式形成測試包。當產生測試包時,OFS 41-1在基本報頭部分的“服務類型”字段和“協議”字段”中存儲區別性地示出該包是測試(測試包)的值,該測試(測試包)用于閉合環路形成測試的測試。而且,OFS 41-1在基本報頭部分的“存活時間”字段中復制在接收包中原始寫入的值。而且,OFS 41-1在測試數據部分的“測試ID”字段中存儲由OFC 42_1產生的“測試ID” (即,在臨時登記的流條目中描述的“測試ID”)。而且,OFS 41-1在測試數據部分的“測試成功/失敗標志”字段中存儲示出測試未完成狀態的值(例如“O”)。而且,OFS41-1在測試數據部分的“通過OFS數據”字段中存儲OFS 41-1的端口號和MAC地址的值。(4)步驟 A04OFS 41-1根據臨時登記的流條目將如上所述產生的測試包傳送到OFS 41_2。
(5)步驟 A05OFS 41-2檢查到達包的服務類型和協議類型的值以檢測測試包已經到達。OFS41-2向測試包的測試數據部分的“通過OFS數據”字段添加OFS 41-2的端口號和MAC地址的值。OFS 41-2確定它自己的流表的流條目中是否存在與測試包的目的地地址和源地址的值匹配的任何流條目。在該示例中,因為在它自己的流表的現有流條目中存在與測試包的目的地地址和源地址的值匹配的流條目,OFS 41-2檢查與測試包的“測試ID”字段的數據相同的值(測試ID)是否被寫入到此流條目的“測試ID”字段。當與測試包的“測試ID”字段的值相同的值并未被寫入到此流條目的“測試ID”字段時,OFS 41-2在此流條目的“測試ID”字段中寫入在測試包的“測試ID”字段中寫入的值(測試ID)。因為與測試包的“測試ID”字段的數據相同的值已經被寫入到流條目的“測試ID”字段這一事實示出了閉合環路形成,所以此時OFS 41-2以測試失敗完成測試。在這種測試不失敗的情況下,則測試繼續。(6)步驟 A06OFS 41-2根據現有匹配的流條目將測試包傳輸到OFS 41_3。⑵步驟A07OFS 41-3檢查到達包的服務類型和協議類型的值并檢測到測試包已經到達。OFS41-3向測試包的“通過OFS數據”字段添加OFS 41-3的端口號和MAC地址的值。OFS 41-3確定它自己的流表的現有流條目中是否存在與測試包的目的地地址和源地址的值匹配的流條目。(8)步驟 A08因為在它自己的流表的現有流條目中不存在與測試包的目的地地址和源地址的值匹配的任何流條目,OFS 41-3請求OFC 42-2設置臨時登記的流條目。OFC 42_2根據路由計算例程計算路由。當計算結果作為流條目登記在OFS 41-3上時,OFC 42-2將該流條目設置為臨時登記的流條目。而且,和步驟A03—樣,假設OFC 42-2在臨時登記的流條目的“動作”字段中寫入諸如“前向測試”的數據,以區別性地示出臨時登記。(9)步驟 A09OFS 41-3在臨時登記的流條目的“測試ID”字段中存儲在測試包的“測試ID”字段中寫入的值。(10)步驟 AlOOFS 41-3根據臨時登記的流條目將包傳送到OFS 41_4。(11)步驟 AllOFS 41-4檢查到達包的服務類型和協議類型的值并檢測到測試包已經到達。OFS41-4向測試包的“通過OFS數據”字段添加OFS 41-4的端口號和MAC地址的值。OFS 41-4判它自己的流表的現有流條目中是否存在與測試包的目的地地址和源地址的值匹配的流條目。在該示例中,和步驟A05—樣,因為存在匹配的流條目,所以OFS 41-4檢查與測試包的“測試ID”字段的數據相同的值是否未被寫入到流條目的“測試ID”字段。當與測試包的“測試ID”字段的數據相同的值未被寫入到流條目的“測試ID”字段時,OFS 41-4在流條目的“測試ID”字段中寫入在測試包的“測試ID”字段中寫入的值。當與測試包的“測試ID”字段的數據相同的值已經被寫入到流條目的“測試ID”字段時,此時OFS 41-4以測試失敗完成測試,因為這意味著閉合環路已經形成。此處,如測試沒有失敗則測試繼續。(12)步驟 A12OFS 41-4根據現有匹配的流條目將測試包傳送到OFS 41_5。(13)步驟 A13OFS 41-5檢查到達包的服務類型和協議類型的值并檢測到測試包已經到達。OFS41-5向測試測試包的“通過OFS數據”字段添加OFS 41-4的端口號和MAC地址的值。OFS41-5確定它自己的流表的現有流條目中是否存在與測試包的目的地地址和源地址的值匹配的流條目。在該示例中,和步驟A05和Al I—樣,因為存在匹配的流條目,OFS 41-5檢查與測試包的“測試ID”字段的數據相同的值是否未被寫入到流條目的“測試ID”字段。當與測試包的“測試ID”字段的數據相同的值未被寫入到流條目的“測試ID”字段時,OFS 41-5在流條目的“測試ID”字段中寫入在測試包的“測試ID”字段中寫入的值。當與測試包的“測試ID”字段的數據相同的值已經被寫入到流條目的“測試ID”字段時,此時OFS 41-5以測試失敗完成測試,因為這意味著閉合環路已經形成。此處,如認為測試被未處于測試失敗中,則測試繼續。(14)步驟 A14OFS 41-5根據現有匹配的流條目將測試包傳送到主機40-2。(⑶成功/失敗確定的示例)(A)步驟AOl至A14是未產生閉合環路的情況的示例。因為OFS可以確定包可以被傳送到不同于傳輸源主機的主機,所以在步驟A13和A14,確定此時是測試成功,且假設值“I”被存儲在測試包的“測試成功/失敗標志”字段以示出測試成功和測試完成。另一方面,在測試失敗的情況中,當在它自己的流表的現有流條目中存在與測試包匹配的流條目時,與流條目的“測試ID”字段的數據相同的值(測試ID)被寫入到測試包的“測試ID”字段中,這意味著包再次進入已經經過一次的路由。因而,閉合環路已經形成。因此,在這種情況中,OFS在測試包的“測試成功/失敗標志”字段中存儲值“2”以示出測試失敗和測試完成。而且,盡管在圖9中沒有示出,值(例如“3”)被存儲以示出由于存活時間過期導致的測試失敗,因為它示出了在測試包的傳送期間“存活時間(TTL) ”字段的值變成O的包存活時間過期。這種情況將稍后在“0FS的處理例程”中描述(見圖10A)。[(C)結果反映的示例]向上述(A)和(B)示例一樣,通過繼續傳送測試包,測試在OFS其中任意一個中以成功或失敗完成。為了反映測試結果,OFS向“測試成功/失敗標志”字段寫入測試結果值,且然后執行流條目的清除處理。(測試包的清除處理)因為它自己的MAC地址在測試包的測試數據部分的“通過OFS數據”的結尾部分中描述,所以當清潔處理的對象是測試包時,OFS刪除該MAC地址。(正常登記的流條目的清除處理)當清除處理的對象是正常登記的流條目時,OFS從流條目的“測試ID”字段刪除與之對應的測試ID,而不管測試成功/失敗,且刪除在測試期間給出的數據。
(臨時登記的流條目的清除處理)當清除處理的對象是臨時登記的流條目時,OFS根據測試的成功/失敗實施清除處理。例如,在測試失敗的情況中,OFS自己刪除臨時登記的流條目。而且,在測試成功的情況中,OFS重寫臨時登記的流條目的“動作”字段的數據以將臨時登記的流條目更新為正常登記的流條目。如上所述,OFS向測試包和流條目反映測試結果。當上述清除處理完成時,OFS基于MAC地址向具有在測試包的測試數據部分的“通過OFS數據”的結尾部分中描述的MAC地址的OFS傳送測試包。目的地OFS也實施清除處理。通過重復該處理,最后,實現在測試包中不存在任和MAC地址的狀態。此時,測試包返回到產生源0FS。此處,和上述(A)、(B)和(C) 一樣,在測試成功的情況中,OFS根據正常登記的流條目傳送在OFS中處于未決狀態的包。而且,在測試失敗情況中,OFS丟棄未決狀態的包,且向已經執行路由計算的OFC返回錯誤。上述(A)、⑶和(C)示例通過圖7中示出的流條目、圖8中示出的測試包以及圖1OA至圖1OC中示出的OFS的處理例程實現。OFS的處理例程實施為固件(FW)。(0FS的處理例程)將使用圖10A、圖1OB和圖1OC描述OFS的處理例程。(I)步驟 BOI當接收包時,OFS通過參考包的報頭部分中的“服務類型”字段和“協議”字段確認(檢查)接收的包是否是測試包。⑵步驟B02當接收的包不是測試包時,OFS基于包的報頭部分中的“源地址”字段和“目的地地址”字段的數據,確定它自己的流表的現有流條目中是否存在匹配的流條目。⑶步驟B03當在OFS中存在匹配的流條目時,根據此條目實施諸如傳送的處理。(4)步驟 B04當不存在任何匹配流條目時,OFS向OFC查詢路由。OFC計算路由且產生測試ID。(5)步驟 B05OFC基于計算結果在OFS上臨時登記流條目。OFC在臨時登記的流條目的“動作”字段中寫入基于臨時登記的流條目實施傳送的效果。而且,OFC在臨時登記流條目的“測試ID”字段中寫入產生的測試ID。(6)步驟 B06OFS產生測試包。測試包的產生如步驟A03所述。⑵步驟B07OFS保持處于未決狀態的接收的原始包,且根據在步驟B05臨時登記的流條目傳送使用步驟B06形成的測試包。因此,測試開始。⑶步驟B08而且,當在步驟BOl接收的包是測試包時,OFS基于測試成功/失敗標志值確定當前狀態是處于測試處理中還是處于測試結果的反映處理中。(9)步驟 B09
當在步驟B08在“測試成功/失敗標志”字段沒有設置任何值(或該值為O)時,OFS確定當前狀態處于測試處理中且確認“存活時間”字段的值是否為O。(10)步驟 BlO當在關于OFS的步驟B09中“存活時間”字段值滿足O時,確定已經打破了包的存活時間期限。(11)步驟 BI I當在步驟B09 “存活時間”字段的值不為O時,OFS基于包的報頭部分中的“源地址”字段和“目的地地址”字段的數據確定它自己流表的現有流條目中是否存在匹配的流條目。(12)步驟 B12當在步驟Bll存在匹配的流條目時,OFS確認在流條目的“測試ID”字段中是否存在與測試包的“測試ID”字段中寫入的值相同的值。(13)步驟 B13當在步驟B12存在相同值時,因為檢測到閉合環路,OFS確定測試失敗。(14)步驟 B14當在步驟B12不存在相同值時,OFS確定當前沒有形成閉合環路,且確認流條目的目的地是否是主機。(15)步驟 B15當在步驟B14流條目的目的地是主機時,OFS確定測試成功,因為檢測到未形成閉合環路且路由是可能的。(16)步驟 B16OFS在測試包的“測試成功/失敗標志”字段中存儲示出測試結果的值。此處,當處理流經過步驟BlO時,OFS在測試包的“測試成功/失敗標志”字段中存儲“3”,以示出由于存活時間過期而導致的測試失敗。而且,當處理流經過步驟B13時,OFS在測試包的“測試成功/失敗標志”字段中存儲“2”,以示出由于閉合環路的形成導致的測試失敗。而且,當處理流經過步驟B15時,OFS在測試包的“測試成功/失敗標志”字段中存儲“I”以示出測試成功。(17)步驟 B17OFS參考測試包的測試數據部分的“通過OFS數據”字段的結尾部分的MAC地址,且將測試包傳送到在該OFS前面一個的OFS或著緊接著位于該OFS之前的0FS,且此時完成測試。(18)步驟 B18當在步驟Bll不存在匹配的流條目時,OFS向OFC查詢路由。OFC計算路由。(19)步驟 B19OFC基于計算結果在OFS上臨時登記流條目。OFC在臨時登記的流條目的“動作”字段中寫入基于臨時登記的流條目進行傳送的效果。(20)步驟 B20OFS在流條目中存儲測試ID。此時,當另一流條目已經被存儲時,這意味著另一測試的執行狀態。一般而言,因為測試在短時間內完成,所以等待其他測試的完成,且然后,在通過清除處理刪除現有測試ID之后,存儲測試包的測試ID。此處,當經過步驟B 14時,OFS在匹配的流條目的“測試ID”字段中寫入測試包的“測試ID”字段的值。而且,當經過步驟B19時,OFS在臨時登記的流條目的“測試ID”字段中寫入在測試包的“測試ID”字段中寫入的值。(21)步驟 B21OFS在測試包的“通過OFS數據”字段中寫入OFS自身的MAC地址和端口號,從測試包的“存活時間”字段的值減去“ I ”,且根據條目傳送測試包。(22)步驟 B22而且,當在步驟B08在“測試成功/失敗標志”值中設置顯示測試成功的值或顯示測試失敗的值時(當值不同于“O”的值被設置時),這意味著測試結果的反映處理狀態。當在OFS中看到測試包的測試包數據部分的“通過OFS數據”的結尾部分的MAC地址時,應寫入OFS的MAC地址。OFS從測試包的測試數據部分的“通過OFS數據”字段的結尾部分刪除它自己的MAC地址。(23)步驟 B23OFS在它自己的流表上登記的流條目中搜索將與測試包的“測試ID”字段中所寫入的值相同的值寫入到“測試ID”字段的流條目。(24)步驟 B24OFS參考搜索到的流條目的“動作”字段,且確定流條目是臨時登記的流條目還是正常登記的流條目。(25)步驟 B25作為步驟B24的結果,當流條目是臨時登記的流條目時,OFS參考測試包的“測試成功/失敗標志”。(26)步驟 B26作為步驟B25的結果,如果在“測試成功/失敗標志”字段中存儲了示出測試成功的值,則OFS將臨時登記的流條目更新為正常登記的流條目。即,OFS在示出正常登記的數據中更新示出臨時登記且在流條目的“動作”字段中寫入的數據。例如,OFS可以從流條目的“動作”字段刪除示出臨時登記的數據。(27)步驟 B27作為步驟B25的結果,如果在“測試成功/失敗”字段中存儲了示出測試失敗的值,則OFS刪除流條目。(28)步驟 B28作為步驟B24的結果,當流條目是正常登記的流條目時,OFS從流條目的“測試ID”字段刪除在測試包的“測試ID”字段中寫入的測試ID,而不管測試的成功/失敗。(29)步驟 B29OFS參考測試包的測試數據部分的“通過OFS數據”字段且確認是否存在一個或多個MAC地址。(30)步驟 B30當在步驟B20中確認存在一個或多個MAC地址時,OFS將測試包傳送到具有“通過OFS數據”字段的結尾部分的MAC地址的OFS。
(31)步驟 B31在步驟B29中,當不存在MAC地址時,這意味著測試包返回到測試包產生源的OFS。OFS參考測試包的“測試成功/失敗標志”字段且確認測試的成功/失敗。(32)步驟 B32當在步驟B31測試成功時,OFS根據流條目傳送在步驟B07處于未決狀態的包。而且,OFS丟棄測試包。(33)步驟 B33當在步驟B31測試失敗時,OFS丟棄在步驟B07處于未決狀態的包,且向OFC返回錯誤。而且,OFS丟棄測試包。(本發明的效果) 在本發明中,通過使用測試包,可以在先地檢查閉合環路的形成,且結果可以反映在流條目登記上。因此,不需要諸如OFC的控制器進行協作且可以防止閉合環路的形成。而且,在本發明中,沒有計算元件使得在閉合環路形成測試處理中處理量線性或更快增加到OFC和OFS的數目。因此,即使網絡規模變大,閉合環路形成測試仍能夠作為輕量級處理來執行。(0FS的內部配置示例)將參考圖11描述根據本發明的閉合環路形成防止系統中的OFS的內部配置示例。OFS ll(ll_j,j = I至y)中的每一個包括測試包確認部111、流條目確認部112、查詢處理部113、測試包產生部114、測試執行部115和臨時登記條目丟棄部116。測試包確認部111確認接收的包是否是測試包。當接收的包不是測試包時,流條目確認部112確認在流表的現有流條目中是否存在與接收的包匹配的流條目。查詢處理部113向0FC(12_k,k = I至z)查詢何時不存在與接收的包匹配的流條目。測試包產生部114基于從0FC(12_k,k = I至z)臨時登記的流條目產生測試包。測試執行部115保持接收的包,通過0FC(12_k,k = I至z)根據臨時登記的流條目傳送測試包,且開始測試以檢測閉合環路產生。作為測試結果,當檢測到閉合環路產生時,臨時登記流條目丟棄部116丟棄從OFC12 (12-k, k = I至z)臨時登記的流條目。應當注意,測試包確認部111、流條目確認部112、查詢處理部113、測試包產生部114、測試執行部115和臨時登記流條目丟棄部116可以相互協作。(測試包產生部的細節)將參考圖12描述測試包產生部14的細節。測試包產生部114由字段設備部1141、測試包標識數據管理部1142、TTL管理部1143、測試ID管理部1144、測試結果數據初始化部1145和通過OFS數據管理部1146組成。字段設置部1141在產生測試包時提供用于測試包的基本報頭部分和測試數據部分。測試包標識數據管理部1142在基本報頭部分中的服務類型字段和協議類型字段中存儲示出測試包的值。
TTL管理部1143向基本報頭部分中的存活時間字段復制在接收包中寫入的值。測試ID管理部1144在測試數據部分的測試ID字段中存儲從OFC 12 (12-k, k =I至z)的臨時登記的流條目中寫入的測試ID。測試結果數據初始化部1145在測試數據部分的測試成功/失敗標記字段中存儲示出測試未完成狀態的值。通過OFS數據管理部1146在測試數據部分的通過OFS數據字段中存儲OFS111 (11-j, j = I至y)的端口號和MAC地址的值。(測試執行部中的細節)將參考圖13詳細描述測試執行部115。測試執行部115包括測試成功/失敗標志確認部1151、TTL確認部1152、測試ID確認部1153、目的地確認部1154、測試結果數據管理部1155和測試包傳送部1156。當接收的包是測試包時,測試成功/失敗標志確認部1151確認測試包的測試成功/失敗標志字段的值,且當在測試包的測試成功/失敗標記字段中未設置該值或者該值為O時,確定處于測試處理中。在處于測試處理的情況中,TTL確認部1152確認存活時間字段的值是否為O。當測試包的存活時間字段的值滿足“O”時,確定超出了包的存活時間,確定TTL確認部1152的測試失敗。而且,當測試包的存活時間字段的值不是“O”時,TTL確認部1152確認它是否與圖11的流條目確認部112協作,且確認在流表的現有流條目中是否存在與測試包匹配的流條目。當搜索到與測試包匹配的測試包時,測試ID確認部1153確認是否存在與測試包的測試ID字段中寫入的值相同的值,且當存在相同的值時,確定閉合環路產生且測試被確定為測試失敗。當不存在相同的值時,目的地確認部1154確定閉合環路仍未形成,且確認流條目的目的地是否是主機,且當流條目的目的地是主機時,確定閉合環路未形成且路由可以執行且確定測試為測試成功。測試結果數據管理部1155在測試包的“測試成功/失敗標志”字段中存儲示出測試結果的值。測試包傳送部1156參考測試包的通過OFS數據字段的結尾部分中的MAC地址且將它傳送到測試包經過的OFS 11 (11-j,j = I至y)且測試結束。(當測試包未登記時)下面將描述當測試包未登記時的處理。當不存在與測試包匹配的流條目時,圖11的查詢處理部113查詢OFC 12 (12-k, k=I 至 z)。當流條目從0FC(12_k,k = I至z)臨時登記時,圖12的測試ID管理部1144,或者當與測試包匹配的流條目的目的地不是主機時,將在測試包的測試ID字段中寫入的值寫入到流條目的測試ID字段中。圖12的通過OFS數據管理部1146在測試包的通過OFS數據字段中存儲OFS11 (11-j,j = I至y)的端口號和MAC地址的值。圖12的TTL管理部1143從測試包的存活時間字段的值減去“I”。
圖13的測試包傳送部1156根據流條目傳送測試包且繼續測試。(當已經執行測試時)下面將描述當已經執行測試時的處理。當在測試包的測試成功/失敗標志字段設置不同于“O”的值(當測試未完成)時,圖12的通過OFS數據管理部1146從測試包的通過OFS數據字段的結尾部分刪除OFS
11(11-j, j = I 至 y)的 MAC 地址。圖11的流條目確認部112在流表上登記的流條目中搜索其中與測試包的測試ID字段中寫入的值相同的值被寫入到測試ID字段的流條目。參考搜索到的流條目的動作字段且確定流條目是臨時登記的流條目還是正常登記的流條目。當流條目是臨時登記的流條目時,結合圖13的測試成功/失敗標志確認部1151,參考測試包的測試成功/失敗標志。當在測試包的測試成功/失敗標志字段中存儲了示出測試成功的值時,臨時登記的流條目被更新為正常登記的流條目。當顯示測試失敗的值被存儲在測試包的測試成功/失敗標志字段中時,刪除流條目。當流條目是正常登記的流條目時,結合圖12的測試ID管理部1144,將測試包的測試ID中寫入的測試ID的值從流條目的測試ID字段中刪除,而不管測試的成功/失敗。圖13的測試包傳送部1156參考測試包的通過OFS數據字段,且確認是否存在一個或多個MAC地址。當在測試包的通過OFS數據字段中存在一個或多個MAC地址時,測試包傳送部1156將測試包傳送到具有測試包的通過OFS數據字段的結尾部分的MAC地址的OFS ll(ll-j,j = I至y)以繼續測試。在測試包的通過OFS數據字段中,當不存在MAC地址時,測試包傳送部1156確定測試包已經返回到測試包產生源的OFS 11 (11-j, j = I至y)。此時,當已經返回到測試包產生源的OFS ll(ll-j,j = I至y)時,結合測試結果數據管理部1155,測試包傳送部1156參考測試包的測試成功/失敗標志字段,以確認測試的成功/失敗。在測試成功的情況中,測試包傳送部1156根據正常登記的流條目傳送所保持的接收包。在測試失敗的情況中,測試包傳送部1156丟棄所保持的接收包,且向OFC 12 (12-k,k = I至z)返回錯誤。此后,測試包傳送部1156丟棄測試包以完成測試。(0FC的內部配置示例)將參考圖14描述根據本發明的閉合環路形成防止系統中的OFC的內部配置示例。OFC 12 (12-k, k = I至z)中的每一個包括路由計算部121、測試ID產生部122和流條目臨時登記部123。路由計算部121在從OFS 11 (11-j, j = I至y)接收到查詢時計算路由。測試ID產生部122產生可以唯一地識別測試的測試ID。流條目臨時登記部123在OFS 11 (11-j, j = I至y)上臨時登記基于路由計算結果的流條目。此時,流條目臨時登記部123在臨時登記流條目中提供動作字段和測試ID字段。流條目臨時登記部在動作字段中存儲示出臨時登記的數據,且在測試ID字段中存儲測試ID的值。(硬件的說明)作為主機10(10-1, i = I至X)和OFC 12 (12-k, k = I至z)的示例,采用諸如PC(個人計算機)、設備、工作站、大型機和超型計算機之類的計算機。除此之外,作為主機10(10-1,i = I至X)的一個示例,示例了便攜式電話、智能電話、智能本、汽車導航系統、便攜式游戲機、家用游戲機、便攜式音樂播放器、手持式終端、小配件(電子設備)、交互式TV、數字調諧器、數字記錄器、信息家用電子設備(信息家用電器)、POS (銷售點)終端、OA (辦公自動化)設備、店面終端和高功能復印機、數字標牌(電子提示牌)等。主機io(io-1,i=I至X)和OFC 12 (12-k, k = I至Z)可以安裝在或位于諸如車輛、輪船和飛行器之類的移動主體中。應當注意,除了終端和服務器,主機10 (10-1,i = I至X)和OFC 12 (12-k, k=I至z)可以是中繼設備和外圍設備。而且,主機10(10-1,i = I至X)和OFC 12 (12-k,k = I至z)可以是安裝在計算機等上的擴展板以及物理機器上構建的虛擬機(VM)。作為OFS ll(ll_j,j = I至y)的示例,采用了網絡交換機。作為網絡交換機的示例,示例了 L3交換機(第3層交換機)、L4交換機(第4層交換機)、L7交換機/應用交換機(第7層交換機)、多層交換機(多層交換機)等。除此之外,作為OFS lKll-j, j = I至y)的示例,示例了路由器(路由器)、代理、網關、防火墻、負載均衡器(負載分配單元)、帶控制系統/安全監控器和控制設備(看門人)、基站、接入點(AP)、通信衛星(CS)、具有多個通信端口的計算機等。盡管沒有示出,上述主機10(10_i,i = I 至 x)、0FS 11 (ll_j,j = I 至 y)和 OFC
12(12-k, k= I至z)中的每一個通過基于程序操作以執行預定處理的處理器、存儲程序和所有類型數據的存儲器、用于與網絡通信的接口來實現。作為上述處理器的示例,考慮CPU(中央處理單元)、網絡處理器(NP)、微處理器、微控制器、半導體集成電路(IC)和具有排他用途的功能的類似設備。示例了諸如RAM(隨機存取存儲器)、R0M(只讀存儲器)、EEPR0M(電學可擦除和可編程只讀存儲器)和閃存的半導體存儲器設備、諸如HDD(硬盤驅動)和SSD(固態驅動)的輔助存儲器、諸如DVD (數字多功能盤)的可移動盤以及諸如SD存儲卡(安全數字存儲卡)的存儲介質。而且,可以使用緩存器和寄存器。或者,可以使用諸如DAS(直連存儲)、FC-SAN(光纖通道-存儲區域網絡)、NAS(網絡連接存儲)、IP-SAN(IP-存儲區域網絡)的存儲設備。應當注意,上述處理器和存儲器可以是聯合的。例如,近年來,在一個芯片上制造微計算機。因此,考慮安裝在電子設備等上的I芯片微處理器包括上述處理器和存儲器的情況。作為上述接口的示例,示例了基板(母版、I/O板)和諸如半導體集成電路之類遵從網絡通信的芯片、諸如NIC(網絡接口卡)和類似擴展卡的網絡適配器、諸如天線的通信設備以及諸如連接器的通信端口。而且,作為網絡的示例,示例了因特網、LAN(局域網)、無線LAN、WAN(廣域網)、主干、CATV線、固定電話網絡、移動電話網絡、WiMAX(IEEE 802.16a)、3G(第三代)、專用線(專線)、IrDA (紅外數據協議)、藍牙(注冊商標)、串行通信線、數據總線等。應當注意,主機10(10_i,i = I 至x)、0FS 11 (ll_j,j = I 至 y)和 OFC 12 (12-k,k = I至z)可以是構建在物理機器上的虛擬機(VM)。而且,主機10(10_i,i = I 至x)、0FS 11 (ll_j,j = I 至 y)和 OFC 12 (12-k, k =I至z)中的每一個的(內部配置的)每個部分可以是模塊、組件、排他用途設備或這些啟動(調用)程序。然而,本發明不限于這些示例。
(總結)如上所述,在本發明中,可以在開放流(OpenFlow)網絡中在先地防止閉合環路的形成。具體而言,在本發明中,可以在開放流網絡中在先地防止形成閉合環路的流條目的登記,而無需諸如OFC的控制器和過程的協作,在所述開放流網絡中存在多個網絡,在每個網絡中,單個OFC控制多個FS,且通過其組合形成大網絡。在本發明中,在OFS上登記通過OFC產生的流條目之前估算是否形成閉合環路。而且,在本發明中,通過使用臨時登記中的流條目和測試包來實施路由評估。而且,在本發明中,從測試開始到測試結果的確定以及測試結果的反映的路由評估可以僅通過測試包和一組OFS的交互自動地實施,而無需監控測試包的行為的組件或過程以及收集和分析監控結果的組件或過程。可以僅通過更新OFC的軟件或更新OFS的固件實現本發明。本發明可以用于開放流網絡系統中閉合環路形成的測試。如上所述,已經詳細描述了本發明的示例性實施例。然而,實際上,本發明不限于上述示例性實施例,且在不偏離本發明的范圍內的本發明的修改也包含在本發明中。本發明要求于基于日本專利申請N0.JP 2010-257781的約定的優先權。其公開通過引用結合于此。
權利要求
1.一種閉合環路形成防止系統,包括: 交換機,所述交換機被配置成接收包并且基于在流表上登記的流條目來傳送所述包;以及 控制器,所述控制器被配置成響應于來自所述交換機的查詢而在所述流表上登記所述流條目, 其中所述交換機包括: 用于確認接收的所述包是否是測試包的裝置; 用于在接收的所述包不是所述測試包時確認在所述流表的現有流條目中是否存在與接收的所述包匹配的所述流條目的裝置; 用于在不存在與接收的所述包匹配的流條目時向所述控制器進行查詢的裝置; 用于基于從所述控制器臨時登記的所述流條目來產生所述測試包的產生裝置; 用于保持接收的所述包、基于臨時登記的所述流條目來傳送所述測試包以及開始測試以用于檢測閉合環路的形成的裝置;以及 用于在作為所述測試的結果檢測到所述閉合環路的所述形成時丟棄臨時登記的所述流條目的裝置。
2.根據權利要求1所述的閉合環路形成防止系統,其中所述控制器包括: 用于在接收到來自所述交換機的查詢時計算路由的裝置; 用于產生可以唯一地識別所述測試的測試ID的裝置; 用于在所述交換機的所述流表上臨時登記基于所述路由計算的結果的所述流條目的裝置; 用于在臨時登記的所述流條目中提供動作字段和測試ID字段的裝置; 用于在所述動作字段中存儲示出臨時登記的數據;以及 用于在所述測試ID字段中存儲所述測試ID的值的裝置。
3.根據權利要求2所述的閉合環路形成防止系統,其中所述交換機還包括: 用于在產生所述測試包時提供用于所述測試包的基本報頭部分和測試數據部分的裝置; 用于在所述基本報頭部分的服務類型字段和協議類型字段中存儲示出所述測試包的值的裝置; 用于將在接收的所 述包中寫入的值復制到所述基本報頭部分的存活時間字段中的裝置; 用于在所述測試數據部分的所述測試ID字段中存儲在臨時登記的所述流條目中寫入的所述測試ID的裝置; 用于在所述測試數據部分的測試成功/失敗標志字段中存儲示出測試未完成狀態的值的裝置;以及 用于在所述測試數據部分的通過OFS數據字段中存儲所述交換機的端口號和MAC地址的值的裝置。
4.根據權利要求3所述的閉合環路形成防止系統,其中所述交換機還包括: 用于在接收的所述包是所述測試包時參考所述測試包的所述測試成功/失敗標志字段的所述值的裝置;用于在所述測試包的所述測試成功/失敗標志字段中未設置任何值時或者在所述測試成功/失敗標志字段中設置有為“O”的所述值時確定測試處理狀態、以及確認所述測試包的所述存活時間字段的值是否是O的裝置; 用于在所述測試包的所述存活時間字段的所述值是“O”時確定所述測試包的存活時間的過期以及確定測試失敗的裝置; 用于在所述測試包的所述存活時間字段的所述值不是“O”時確認在所述流表的所述現有流條目中是否存在與所述測試包匹配的流條目的裝置; 用于在存在與所述測試包匹配的所述流條目時確認在匹配的所述流條目的所述測試ID字段中是否存與在所述測試包的所述測試ID字段中寫入的所述值相同的值的裝置;用于在存在相同的所述值時確定已經形成所述閉合環路以及確定所述測試失敗的裝置; 用于在不存在相同的所述值時確定目前尚未形成所述閉合環路以及確認所述流條目的傳送目的地是否是主機的裝置; 用于在所述流條目的所述傳送目的地是所述主機時確定路由是可能的并且確定測試成功的裝置; 用于在所述測試包的所述測試成功/失敗標志字段中存儲示出測試結果的值的裝置;以及 用于參考所述測試包的所述通過OFS數據字段的結尾部分中的MAC地址以及將所述測試包傳送到所述測試包之前剛剛通過的交換機以完成所述測試的裝置。
5.根據權利要求4所述的閉合環路形成防止系統,其中所述交換機還包括: 用于在不存在與所述測試包匹配的任何流條目時向所述控制器進行查詢的裝置; 用于將所述測試包的所述測試ID字段中寫入的所述值復制到特定流條目的所述測試ID字段中的裝置,所述特定流條目是從所述控制器登記的臨時登記的所述流條目和其中所述傳送目的地不是所述主機的匹配的所述流條目中之一; 用于在所述測試包的所述通過OFS數據字段中存儲所述交換機的所述端口號和所述MAC地址的值的裝置; 用于從所述測試包的所述存活時間字段的所述值減“I”的裝置;以及 用于基于所述特定流條目來傳送所述測試包以繼續所述測試的裝置。
6.根據權利要求4或5所述的閉合環路形成防止系統,其中所述交換機還包括: 用于當在所述測試包的所述測試成功/失敗標志字段中設置為“O”的所述值時從所述測試包的所述通過OFS數據字段的所述結尾部分刪除所述交換機的所述MAC地址的裝置;用于從在所述流表上登記的所述流條目中搜索其中與所述測試包的所述測試ID字段中寫入的所述值相同的所述值被寫入到所述測試ID字段中的流條目的裝置; 用于參考搜索到的所述流條目的所述動作字段以及確定搜索到的所述流條目是臨時登記的流條目還是正常登記的流條目的裝置; 用于在搜索到的所述流條目是所述臨時登記的流條目時參考所述測試包的所述測試成功/失敗標志的裝置; 用于當在所述測試包的所述測試成功/失敗標志字段中存儲示出所述測試成功的所述值時將搜索到的所述流條目 更新為所述正常登記的流條目的裝置;用于當在所述測試包的所述測試成功/失敗標志字段中存儲示出所述測試失敗的所述值時刪除搜索到的所述流條目的裝置; 用于在搜索到的所述流條目是所述正常登記的流條目時不考慮所述測試成功/失敗而從搜索到的所述流條目的所述測試ID字段刪除在所述測試包的所述測試ID字段中寫入的所述測試ID的所述值的裝置; 用于參考所述測試包的所述通過OFS數據字段以及確認是否存在一個或多個MAC地址的裝置; 用于當在所述測試包的所述通過OFS數據字段中存在一個或多個MAC地址時將所述測試包傳送到具有所述測試包的所述通過OFS數據字段的所述結尾部分中的MAC地址的交換機以繼續所述測試的裝置; 用于當在所述測試包的所述通過OFS數據字段中不存在MAC地址時確定所述測試包已被返回到測試包產生源交換機、以及參考所述測試包的所述測試成功/失敗標志字段以確認所述測試成功/失敗的裝置; 用于在所述測試成功的情況下基于所述正常登記的流條目來傳送所保持的接收的所述包的裝置; 用于在所述測試失敗的情況下丟棄所保持的接收的所述包以及向所述控制器返回錯誤的裝置;以及 用于丟棄所述測試包以及完成所述測試的裝置。
7.一種交換機,包括: 用于確認接收的包是否是測試包的裝置; 用于在所述接收的包不是所述測試包時確認在流表的現有流條目中是否存在與所述接收的包匹配的流條目的裝置; 用于在存在與所述接收的包匹配的所述流條目時基于匹配的所述流條目來傳送所述接收的包的裝置; 用于在不存在與所述接收的包匹配的流條目時向控制器發布查詢的裝置; 用于基于從所述控制器臨時登記的流條目來產生所述測試包的裝置; 用于保持所述接收的包、根據臨時登記的所述流條目來傳送所述測試包、以及開始測試以檢測閉合環路的形成的裝置;以及 用于在作為所述測試的結果檢測到所述閉合環路形成時丟棄臨時登記的所述流條目的裝置。
8.—種控制器,包括: 用于在從交換機接收到關于接收的包的查詢時計算路由的裝置,所述交換機基于在流表上登記的流條目來傳送所述接收的包; 用于產生可以唯一地識別測試的測試ID的裝置; 用于在所述交換機上臨時登記基于計算出的所述路由的流條目的裝置; 用于在臨時登記的所述流條目中提供動作字段和測試ID字段的裝置; 用于在所述動作字段中存儲示出臨時登記的數據的裝置;以及 用于在所述測試ID字段中存儲所述測試ID的值的裝置。
9.一種由交換機執行的閉合環路形成防止方法,所述方法包括:確認接收的包是否是測試包; 在所述接收的包不是所述測試包時,確認在流表的現有流條目中是否存在與所述接收的包匹配的流條目; 在存在與所述接收的包匹配的所述流條目時,基于匹配的所述流條目來傳送所述接收的包; 在不存在與所述接收的包匹配的任何流條目時,向控制器發布查詢; 基于從所述控制器臨時登記的臨時登記的流條目來產生所述測試包; 保持所述接收的包; 基于所述臨時登記的流條目來傳送所述測試包,以便開始所述測試從而檢測閉合環路的形成;以及 在作為測試結果檢測到所述閉合環路的所述形成時,丟棄所述臨時登記的流條目。
10.一種記錄介質,所述記錄介質存儲使得交換機執行以下步驟的程序: 確認接收的包是否是測試包; 在所述接收的包不是測試包時,確認在流表的現有流條目中是否存在與所述接收的包匹配的流條目; 在存在與所述接收的包匹配的所述流條目時,基于匹配的所述流條目來傳送所述接收的包; 在不存在與所述接收的包匹配的流條目時,向控制器發布查詢; 基于從所述控制器臨時登記的臨時登記的流條目來產生測試包; 保持所述接收的包; 基于所述臨時登記的流條目來傳送所述測試包,以便開始所述測試從而檢測閉合環路的形成;以及 在作為測試結果檢測到所 述閉合環路的所述形成時,丟棄所述臨時登記的流條目。
全文摘要
在一種開放流網絡系統中,防止登記形成閉合環路的流條目而無需用于多個OFC的協作的組件和過程,其中在開放流網絡系統中存在多個網絡,在每個網絡中一個OFC(OpenFlow控制器)管理多個OFS(OpenFlow交換機),且通過它們的組合形成大網絡。具體地,在路由計算之后,OFC在OFS的流表上將計算結果的流條目臨時登記為用于測試的流條目。此后,OFS根據臨時登記的流條目流動測試包。當測試包被路由而未形成閉合環路時,OFS檢測到它且首次正常地登記該流條目。當檢測到測試包形成閉合環路時,OFS刪除臨時登記的流條目且向OFC返回錯誤。
文檔編號H04L12/721GK103210615SQ20118005371
公開日2013年7月17日 申請日期2011年8月9日 優先權日2010年11月18日
發明者小川英輝 申請人:日本電氣株式會社