999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SDN網絡多控制器結構的失效備援設計

2016-03-08 18:46:00王鈺琪竇偉超
軟件 2016年1期

王鈺琪++竇偉超

摘要:為了提高可擴展性,軟件定義網絡出現了多控制器架構。但是多控制器架構中數據交互的復雜性也在快速增加,某個控制器故障導致網絡不可用的情況時有發生。為了提高多控制器架構下軟件定義網絡的服務可靠性,本文設計了一種多控制器失效備援方法,降低了現有多控制器架構下提升網絡可靠性的技術的復雜性,同時減少了控制器之間狀態交互消息的數量,對提升網絡服務質量,降低設備部署的成本和復雜性,保證網絡的高可用性方面具有極為重要的意義。

關鍵詞:軟件定義網絡;多控制器;失效備援

中圖分類號:TN-915

文獻標識碼:A

DOI: 10.3969/j.issn.1003-6970.2016.01.017

本文著錄格式:王鈺琪,竇偉超.SDN網絡多控制器結構的失效備援設計[J].軟件,2016,37 (01):71-75

O 引言

由于互聯網應用的爆發式增長,全球信息量每年以指數級的速度增加;目前諸如路由器的數據轉發設備將控制平面和數據轉發平面耦合在一起,導致路由器要支持新功能所需要的升級成本和難度極大,安全性也不夠高,網絡需要一種新的結構來增強可擴展性和服務能力。SDN創造性的將控制平面的邏輯和轉發平面分離,SDN中分為兩種設備,交換機和控制器。控制器通過Openflow協議向交換機下發流表規則來控制交換機的轉發能力,交換機通過流表完成數據的轉發。SDN的核心在于轉發邏輯不再固化于硬件,所有的轉發邏輯都由控制器通過Openflow協議動態下發至交換機,交換機因此可以支持各種類型的規則,極大的增強了網絡的可擴展性。

但是,現有的SDN分布式架構同樣遇到一些挑戰,控制平面的集中化使得控制器出現單點故障的危害性較大,同時單個控制器可支持的交換機數量有限,不能滿足網絡規模的不斷擴展。為了解決這個問題,SDN網絡出現了多控制器架構,現有的多控制器結構中,每個控制器會控制一部分交換機,這部分交換機作為此控制器管的一個域,各個控制器管控單獨的一個區域內的交換機。如圖1所示,控制器之間交換控制信息達到全網數據包轉發和管理的目的。相鄰的交換機之間交換拓撲狀態、交換機信息等數據,這樣使得整個網絡中任何兩個域的數據流量可以被轉發。同時這種結構也解決了聚集式控制平面出現的低擴展性和高負載的問題。

但是這種架構仍然沒有解決在某個控制器出現故障以后出現的網絡可靠性損失,當某一個控制器出現故障之后,部分交換機會失去連接導致一些服務失效。為了最小化這種故障,必須要有一種快速反應機制使失去連接的交換機與其他存活的控制器建立連接。現有的基于多控制器提出扁平化架構的失效備援解決方案中,各個控制器都維護全網絡的拓撲,某一控制器失效不會影響到網絡服務損失,但是此種方法使控制局部網絡的控制器維護全網拓撲,單個控制器維護大量狀態,負載過高導致性能下降。

l 相關研究工作

過去的幾年中,一些方法將軟件定義網絡中集中化的控制平面邏輯上分布在多個控制器上,同時也提出了控制器故障時的解決方案,但是這些方法都要在各個控制器之間產生大量控制消息的流量。如.Onix和HyperFlow。Onix作為作為一個分布式控制器,它基于扁平分布式控制器架構,通過網絡信息庫進行管理。每個控制器都有各自獨立的信息庫,并且各個控制器之間通過數據交互保持信息庫的一致性,可以實現控制器之間的數據同步和更新。HyperFlow允許部署多個控制器,并將這些控制器分布在網絡中的不同位置。控制器之間物理上分離但是邏輯上集中。HyperFlow在某控制器失效時,通過手動配置的方法將失效控制器管理的交換機重新配置到新控制器上,保證了可用性。但是使用這種方法網絡管理員工作量較大而且耗時較長。還有一種方法被提出,它在多控制器環境下能夠在一些環境下提升網絡可靠性,但是部署相對比較復雜。

上述的這些結構和方法,每個控制器雖然掌握了全網狀態信息,但只能控制局部網絡,造成了一定的資源浪費,同時一旦有一個控制器信息出現變更,就要向全部控制器傳輸更新消息,增加了網絡更新時控制器的整體負載。

為了解決多控制器場景下控制器失效導致網絡服務質量降低的問題,本文提出了一種軟件定義網絡中多控制器失效備援方法,將由于控制器故障而失去連接的交換機動態切換到其他相鄰控制器上,能夠對控制器失效反應快速且保證全網的連接性。為此我們設計一個主控制器管控其他控制器,維持網絡全局信息,主控制器和其他控制器保持心跳,確保其他控制器正常工作。各個控制器向主控制器報告自己控制的交換機信息。當某控制器失效時,失去連接的交換機能夠向主控制器提出請求,主控制器選擇一個合適的控制器,保證各個控制器上交換機數量負載均衡。

2 失效備援機制

2.1 多控制器失效備援架構

本文描述的失效備援機制的架構如圖2所示,使用了層次化設計,在最頂端設計一個主控制器。主控制器的主要作用是:(1)維持各個控制器的交換機連接信息(2)和各個控制器保持心跳,確認控制器工作正常(3)在控制器故障時,將失去連接的交換機動態遷移到適合的存活控制器上。為了防止主控制器出現單點故障,我們需要對主控制器做一次熱備。

Fig.2 Failover mechanisms architecture

為了支持多控制器架構下各個層面的控制器可以協同工作,各個單個域的控制器要將各自網絡的關鍵信息傳遞給主控制器,所謂的關鍵信息包括:

控制器所管控的交換機的ID和交換機連接拓撲

各個交換機上的流量負載情況

控制器相鄰的控制器的標志和自身處理能力和負載

通過這些信息,當某一個普通控制器出現故障以后,主控制器可以全面的考察其相鄰控制器的狀態,包括流量負載,連接的交換機等數據,從故障控制器相鄰的控制器中選出負載最低的一個作為故障交換機重新連接的目標控制器。

為了統一處理層次間的消息,主控制和普通控制器利用Yang模型設計出抽象的數據傳輸接口和數據格式。Yang模型和工具就是實現XML字符信息和ODL內部Bean Object之間的轉換,無論從可擴展性、耦合、開發效率上都有優勢。同時Yang模型采用安全的面向連接的通信傳輸方式,相比起SNMP采用UDP傳輸具有更加良好的安全性,且支持更大規模的數據傳輸。

通過Yang模型定義,通用的API運行大量網絡業務傳輸數據,特別是在多控制器架構中,這些不同的普通控制器域可能是由不同的Openflow控制器,但是我們通過定義通用的接口,使得各種不同類型的Openflow控制器可以協同工作,減少因為軟件不同造成的技術障礙。我們將普通控制器發送給主控制器的消息中包括的數據利用Yang模型定義內容如下:

在本文中,接口基于REST API設計,實現數據的高速傳輸。主控制器維持其他控制器的交換機連接信息,為此主控制器內維護一個交換機信息表,保存各個普通控制器的交換機連接信息,同時和其他控制器建立socket連接,傳遞最新的交換機信息。我們定義了一種數據格式,如圖3所示,普通控制器向主控制器發送各自的交換機連接信息,此消息中包括控制器名稱和交換機標志,交換機標志使用交換機硬件地址確保唯一性。此數據包分為ADD、DEL_ MOD、RESEND四種類型,ADD表示普通控制器向主控制器發送交換機信息增加的命令;DEL表示普通控制器向主控制器發送交換機信息刪除的命令;MOD表示普通控制器向主控制器發送交換機信息更新的命令,更新交換機所屬控制器,主控制器收到消息后相應地更新交換機信息表;RESEND表示主控制器向普通控制器發送交換機信息重傳的命令,讓某控制器利用ADD消息重傳全部交換機信息。

主控制器和普通控制器之間保持心跳,每5秒鐘發送一次心跳報文,心跳報文用于主控制器確定普通控制器的存在,當主控制器發送的報文1秒沒有收到回復,則進行重發動作,當重發次數達到5次則可以確定普通控制器已經失去連接。我們在主控制器上設計失去連接表,表格會維護目前失去連接的控制器表,用于主控制器在收到交換機失去連接的消息時能夠決定是否此控制器已經故障中斷。

SDN網絡可以通過幾種方法發現有控制器已經出現故障:

主控制器和普通控制器之間的心跳

主控制器和每個控制器之間保持固定間隔的心跳,相互交換機信息,如果在一定時間段內主控制器收不到某個普通控制器的心跳返回消息,則可以判斷此普通控制器故障。

交換機發出的連接決斷消息

當某個控制器和交換機之間的連接中斷,交換機根據自身的反應機制會自動向主控制器發送故障控制器和交換機的信息,主控制器以此可以判斷故障情況。

2.2 0penflow中控制器的角色

在我們設計的分布式多控制器場景中,每個控制器對它自己域內的控制器管理和控制(這些控制器將此控制器設置為Master角色)。為了達到控制器之間的切換,一個控制器需要能和交換機保持連接,同時能夠發送Role-Reque st消息來接管交換機的管理權。

根據Openflow協議的定義,每個交換機可以與多個控制器相連,與交換機相連的控制器的角色分為Master,Slave,Echo。角色為Master和Echo的控制器可以向交換機下發流表等控制消息,而角色為Echo的控制器只能獲取交換機信息。每個交換機只能設置一個控制器為Master角色。

利用多控制器的角色機制,處理控制器故障最簡單的方法是為每個域設計一個備援控制器,但是此舉的配置代價和維護費用也是極其昂貴的。我們再次闡述的控制器失效備援機制中只需要對主控制器做一次主動備援,其他控制器的故障都可以通過相鄰控制器的接管完成。

如圖4所示,在我們描述的失效備援架構中,每個控制器負責的區域內的交換機都將此控制器設置為Master角色,將主控制器設置為Echo角色,同時將其他相鄰的控制器設置為Slave角色。當交換機失去連接時,會主動向主控制器發送失去連接消息,由主控制器決定哪一個普通控制器接管交換機,接管的控制器會向交換機發送標準Openflow消息Role-Request消息成為此交換機的Master控制器,保證數據流影響盡可能小。

2.3 失效備援機制流程

整個備援機制的流程可以經過如下幾個階段。

2.3.1 檢測到故障控制器的出現

這一步主要是通過主控制器和普通控制器之間的心跳消息以及交換機發送給主控制器的連接決斷消息來完成。如果主控制器和普通控制器之間的心跳中斷,或者主控制器收到交換機發送來的連接決斷消息,都會激發主控制對控制器故障的檢查流程。由于主控制器和某普通控制器的心跳中斷并不能直接說明此普通控制器已經故障,因為有可能僅僅是此普通控制器和主控制器之間網絡連接斷開等原因造成。主控制器會根據不同的情況做出不同的判斷,這部分的操作邏輻會在本文第3部分中詳細說明。

2.3.2 檢測到故障控制器的出現

當主控制器判斷某普通控制器出現故障時,會通過故障控制器相鄰的控制器發送來的各自狀態信息,計算出一個合適的控制器,算法會考察相鄰控制器的交換機連接數,數據流量負載等因素的權重,當主控制器已經決斷出一個普通控制器進行接管時,會要求此控制器發送Role-Request消息接管故障控制器的交換機,完成交換機的動態遷移。

2.3.3 域狀態更新

當切換完成時,主控制器需要獲取實時的網絡狀態信息,接管的普通控制器會將接收的交換機信息更新至主控制器的交換機連接表中,保證各個域內的交換機信息保持實時一致。

3 故障情況分析

此場景如圖5所示,控制器B和控制器A和控制器C相鄰,控制器A、B、C各管理一塊交換機區域,并和主控制器保持連接和心跳。控制器B管理的交換機將主控制器設置為Echo角色,將與控制器B相鄰的交換機設置為Slave角色。

3.1 普通控制器故障

當控制器B出現故障時,控制器B所控制的交換機失去連接,同時主控制器根據心跳判斷出控制器B出現故障,這時會將控制器B加入失去連接的控制器表。此時失去連接的交換機會向主控制器發送連接決斷消息,此消息中包含交換機信息和控制器B的標志。主控制器收到此消息后會先判斷控制器B是否在失去連接的控制器表中,如果在則根據交換機信息表中存儲的控制器B相鄰的控制器的流量負載以及交換機連接數,進行如下計算:

W=C*0.3+L*0.7

其中W標示最終加權值,C表示控制器連接的交換機數,L表示控制器上的負載流量。

對于控制器B相鄰的控制器都進行一次加權計算,將W值最低的作為交換機的接管控制器,此時主控制器會命令權值最低的控制器向交換機發送Openflow的Role-Request消息,將角色變更為Master,接管此交換機,同時此控制器向主控制器發送交換機信息MOD消息對交換機信息表更新。通過此處理,控制器B管控的交換機可以均勻的由控制器A和控制器C接管,保證網絡的負載均衡。

3.2 控制器B和交換機連接故障

此種情況下控制器B和某交換機連接故障,但是和主控制器之間保持心跳。此時交換機會向主控制器發送連接決斷消息,主控制器收到此消息后查找失去連接的控制器表失敗,則向交換機發送重新連接控制器B的命令,如果主控制器仍然收到此交換機發送的連接決斷消息,則可以判斷出控制器B和交換機連接故障,會根據上一小節所述方法選擇出一個合適的控制器接管此交換機,同時利用交換機信息MOD消息更新交換機信息表。

3.3 控制器B和主控制器連接故障

此種情況下控制器B和主控制器連接故障,和交換機保持連接。此時主控制器會向管理員報警,當網絡連接正常以后,會將交換機信息表中與控制器B相關的交換機信息刪除,同時發送RESEND消息讓控制器重新傳輸交換機信息。

4 實驗驗證

為了驗證基于本文提出的多控制器場景下SDN網絡失效備援方法的有效性,本文對同現有的扁平結構下失效備援機制做出數據上的對比,主要包括為保證可靠性所需要的狀態信息表的內存大小和故障恢復時間。

首先是統計對比在不同數量的交換機場景下,上述兩種方法為了保證可靠性所需狀態信息表占用的內存大小。統計此項數據通過在程序運行時對狀態信息表分配內存的數值存入log完成統計。對比數據如表2所示:

網絡從發生故障到故障切換完成會造成一定的網絡服務質量降低,這一段時間越短,網絡服務質量越高。為此,本文比較了現有扁平結構的失效備援機制故障時間和本文所述備援機制的故障切換時間,此數據通過在檢查出故障到完成切換前后加入Linux定時器統計出故障切換時間。所得到實驗數據如表3所示:

通過上述數據的對比,我們可以證明本文描述的層次式多控制器失效備援機制可以減小設置的狀態信息表大小,同時切換時間在交換機數量增加時增長幅度較小,很好的提高了網絡服務質量。

5 結論

本文描述了一種軟件定義網絡中多控制器場景下失效備援機制,此失效備援機制基于層次化設計,減少各個控制器同步消息所用的帶寬,當控制器故障發生時,可以在盡量小的時間內動態恢復網絡連接,提升網絡故時的服務質量;在此基礎上設計平衡選擇策略,使交換機連接負載最小的相鄰控制器,網絡流量和交換機連接均衡分配在各個控制器上,使現有網絡穩定性較高。同時無需在各個控制器之間同步消息,使各個控制器僅僅維護局部網絡拓撲和連接信息,減少各個控制器不必要的負載。

主站蜘蛛池模板: 亚洲国产精品一区二区高清无码久久| 亚洲综合片| 97影院午夜在线观看视频| 国产精品香蕉| 日本三级欧美三级| 美女无遮挡被啪啪到高潮免费| 一级毛片免费观看不卡视频| 欧美日本在线| 在线播放国产99re| 日日摸夜夜爽无码| 日韩欧美一区在线观看| 免费a在线观看播放| 99re在线视频观看| 国模私拍一区二区| 91福利在线观看视频| 国产午夜在线观看视频| 五月婷婷伊人网| 成人毛片免费在线观看| av大片在线无码免费| 99激情网| 激情乱人伦| 超碰色了色| 成人国产精品视频频| 中文字幕日韩丝袜一区| 国产在线精彩视频二区| 国产精品久久久久久搜索| 无码国内精品人妻少妇蜜桃视频| 国产丰满大乳无码免费播放 | 九九九九热精品视频| 久久精品一卡日本电影| 无套av在线| 亚洲国产亚洲综合在线尤物| 亚洲一区二区日韩欧美gif| 四虎影视8848永久精品| 亚洲国产中文欧美在线人成大黄瓜| 青青操视频在线| 无码又爽又刺激的高潮视频| 性欧美精品xxxx| 亚洲欧美日本国产综合在线| 久久一本日韩精品中文字幕屁孩| 亚洲精品桃花岛av在线| 亚洲最大综合网| 国产女人在线视频| 久久影院一区二区h| 久久香蕉国产线看观看亚洲片| 欧美无专区| 国产浮力第一页永久地址| 伊人久久婷婷| 国产打屁股免费区网站| 国产微拍一区二区三区四区| 日本高清免费一本在线观看| 成人在线观看不卡| 国产精品99久久久| 国产正在播放| 成人免费黄色小视频| 白丝美女办公室高潮喷水视频| 国产va在线观看| 九九九精品成人免费视频7| 国产综合色在线视频播放线视| 内射人妻无套中出无码| 欧美在线伊人| 国产亚洲精品在天天在线麻豆| 亚洲swag精品自拍一区| 亚洲日本一本dvd高清| 午夜免费视频网站| 亚洲精品不卡午夜精品| 亚洲精品第五页| 久久久成年黄色视频| 欧美一级高清片久久99| 鲁鲁鲁爽爽爽在线视频观看| 国产精品第一区| 99免费在线观看视频| 久久永久免费人妻精品| 一级一级特黄女人精品毛片| 人妻精品久久久无码区色视| 久久精品电影| 亚洲无线国产观看| 伊人色综合久久天天| 久久美女精品| 欧美国产日本高清不卡| 日韩黄色在线| 色偷偷一区|