一種基于自適應(yīng)超時(shí)時(shí)間的sdn控制器故障檢測(cè)方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明屬于軟件定義網(wǎng)絡(luò)(SDN)領(lǐng)域,尤其涉及一種基于自適應(yīng)超時(shí)時(shí)間的SDN控制器故障檢測(cè)方法。
【背景技術(shù)】
[0002]SDN架構(gòu)不可忽視的問(wèn)題是隨著各種應(yīng)用和業(yè)務(wù)的精確化、復(fù)雜化,將要求SDN架構(gòu)有更強(qiáng)的可擴(kuò)展性和可靠性。這也是目前SDN集中控制帶來(lái)的難題,集中控制要求所有的網(wǎng)絡(luò)服務(wù)及功能的實(shí)現(xiàn)都必須依靠控制器來(lái)集中處理,這就要求控制器要具有很高的性能。首先,隨著業(yè)務(wù)復(fù)雜度、精確度不斷的提高,指向控制器的請(qǐng)求和事件將大大增加,單個(gè)控制器很難完成相應(yīng)的操作,即使可以完成也不能保證網(wǎng)絡(luò)性能。再者,網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)展,進(jìn)一步限制了集中控制的性能。因?yàn)闊o(wú)論控制器性能多么優(yōu)秀,網(wǎng)絡(luò)規(guī)模的增大使得邊緣交換機(jī)到控制器的距離非常遙遠(yuǎn),這種延遲總是無(wú)可避免的。最后,如果控制器故障將形成單點(diǎn)故障,導(dǎo)致整個(gè)網(wǎng)絡(luò)癱瘓。因此,有必要建立一個(gè)邏輯集中但物理分布的架構(gòu),這種架構(gòu)可以有效的利用分布式架構(gòu)的可靠性和可擴(kuò)展性等優(yōu)點(diǎn)。該架構(gòu)的具體實(shí)現(xiàn)方式為,在網(wǎng)絡(luò)中放置多個(gè)控制器,每個(gè)控制器負(fù)責(zé)一個(gè)區(qū)域且控制器之間相互通信、備份。這樣有效的解決了大規(guī)模網(wǎng)絡(luò)的延遲問(wèn)題,同時(shí)實(shí)現(xiàn)網(wǎng)絡(luò)的可靠控制,避免了單點(diǎn)故障。分布式控制器的使用可以有效地避免網(wǎng)絡(luò)的單點(diǎn)故障,通過(guò)分布式控制器之間的備份可以將故障的控制器切換到正常工作的控制器。因此如何快速準(zhǔn)確的發(fā)現(xiàn)控制器是否故障成為我們研究中不可忽視的一點(diǎn),基于此本發(fā)明在分析以往的故障發(fā)現(xiàn)基礎(chǔ)上,提出了一種基于自適應(yīng)超時(shí)時(shí)間的SDN控制器故障檢測(cè)方法。
【發(fā)明內(nèi)容】
[0003]目前關(guān)于控制器的故障檢測(cè)方法大都采用固定周期的心跳檢測(cè)技術(shù),也就是說(shuō)主控制器定期向從控制器發(fā)送一個(gè)心跳消息以證明其存活。另一種故障檢測(cè)技術(shù)則是在第一種的基礎(chǔ)上改進(jìn)的,依然是主控制器以固定周期向從控制發(fā)送心跳消息,此時(shí)從控制器開(kāi)啟一個(gè)定時(shí)器并主動(dòng)向主控制器發(fā)送一個(gè)詢(xún)問(wèn)消息并要求主控制器回答,若在定時(shí)器時(shí)間內(nèi)主控制有響應(yīng)則說(shuō)明主控制正常工作;反之則認(rèn)為主控器已經(jīng)失效。此兩種方法均采用固定超時(shí)時(shí)間的心跳技術(shù)來(lái)檢測(cè)控制器,均不能快速精確的檢測(cè)出故障的控制器,為此本發(fā)明了一種基于自適應(yīng)超時(shí)時(shí)間的SDN控制器故障檢測(cè)方法,它可以有效的提高檢測(cè)準(zhǔn)確率并降低檢測(cè)時(shí)間。
[0004]本發(fā)明解決技術(shù)問(wèn)題的技術(shù)方案如下:一種基于自適應(yīng)超時(shí)時(shí)間的SDN控制器故障檢測(cè)方法,包含如下步驟:
1)根據(jù)流量負(fù)載工程,定義流量負(fù)載等級(jí)分別為最小級(jí)min、正常級(jí)normal、平均級(jí)average、高級(jí)high、最高級(jí)very high,并根據(jù)這些等級(jí)定義相應(yīng)的超時(shí)時(shí)間Ato;
2)將控制器的流量負(fù)載等級(jí)定義為min,并設(shè)置相應(yīng)的超時(shí)時(shí)間△to;控制器進(jìn)程P主動(dòng)向心跳檢測(cè)進(jìn)程q發(fā)送心跳消息,若在該超時(shí)時(shí)間A to內(nèi)沒(méi)有收到任何心跳消息,將該控制器進(jìn)程P放入懷疑列表,否則控制器為正常狀態(tài)。
[0005]3)將控制器的流量負(fù)載等級(jí)逐級(jí)升高,并判斷在該等級(jí)所對(duì)應(yīng)的超時(shí)時(shí)間內(nèi)心跳檢測(cè)進(jìn)程q是否收到來(lái)自控制器進(jìn)程P的心跳消息,若收到說(shuō)明控制器進(jìn)程P正常工作跳轉(zhuǎn)到步驟5);若沒(méi)有收到則循環(huán)執(zhí)行步驟3)。
[0006]4)當(dāng)流量負(fù)載等級(jí)升到very high時(shí)依然沒(méi)有收到控制器的消息,心跳檢測(cè)進(jìn)程q主動(dòng)向控制器進(jìn)程P發(fā)送一個(gè)ping消息,并啟動(dòng)定時(shí)器,若在定時(shí)器內(nèi)收到來(lái)自控制器進(jìn)程P的響應(yīng),跳轉(zhuǎn)到步驟5);否則,則判定該控制器進(jìn)程故障,跳轉(zhuǎn)到步驟6)。
[0007]5)將控制器進(jìn)程P從懷疑列表移除,并輸出此時(shí)該進(jìn)程的流量負(fù)載等級(jí)及其超時(shí)檢測(cè)的實(shí)際時(shí)間;繼續(xù)執(zhí)行步驟2)至步驟4)。
[0008]6)心跳檢測(cè)模塊立即通知共享數(shù)據(jù)庫(kù)并根據(jù)先前共享數(shù)據(jù)庫(kù)的信息立即由備用控制器接管工作。
[0009]進(jìn)一步地,veryhigh級(jí)別所代表的網(wǎng)絡(luò)流量和負(fù)載值可以根據(jù)設(shè)備生產(chǎn)商的規(guī)格說(shuō)明書(shū)得到,其他級(jí)別所代表的網(wǎng)絡(luò)流量和負(fù)載值可通過(guò)分析計(jì)算流量和負(fù)載工程得至1J。超時(shí)時(shí)間Δ t0的最大值由very high級(jí)別設(shè)定。
[0010]進(jìn)一步地,如果某控制器節(jié)點(diǎn)在最長(zhǎng)超時(shí)時(shí)間內(nèi)依然沒(méi)有響應(yīng),則由心跳檢測(cè)模塊主動(dòng)向控制器節(jié)點(diǎn)發(fā)送ping消息并要求回應(yīng),同時(shí)啟動(dòng)定時(shí)器;若在定時(shí)器時(shí)間內(nèi)依然沒(méi)有收到來(lái)自控制器的回應(yīng),則判定該控制節(jié)點(diǎn)失效,啟動(dòng)備用控制器接管相應(yīng)工作。
[0011]本發(fā)明的有益效果是:針對(duì)目前大多采用固定超時(shí)時(shí)間的心跳檢測(cè)不能有效降低檢測(cè)時(shí)間和提高檢測(cè)準(zhǔn)確率的情況。本發(fā)明提出了一種基于自適應(yīng)超時(shí)時(shí)間的SDN控制器故障檢測(cè)方法,本方法方法可以有效的提高檢測(cè)準(zhǔn)確率并降低檢測(cè)時(shí)間。
【附圖說(shuō)明】
[0012]圖1為本發(fā)明方法流程圖;
圖2為超時(shí)時(shí)間△ to和平均錯(cuò)誤率的關(guān)系;
圖3為超時(shí)時(shí)間和平均檢測(cè)時(shí)間的關(guān)系;
圖4為自適應(yīng)算法與經(jīng)典算法的對(duì)比。
【具體實(shí)施方式】
[0013]下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明。
[0014]如圖1所示,本發(fā)明提供的一種基于自適應(yīng)超時(shí)時(shí)間的SDN控制器故障檢測(cè)方法,包含如下步驟:
1)根據(jù)流量負(fù)載工程,定義流量負(fù)載等級(jí)分別為最小級(jí)min、正常級(jí)normal、平均級(jí)average、高級(jí)high、最高級(jí)very high,并根據(jù)這些等級(jí)定義相應(yīng)的超時(shí)時(shí)間Ato;
2)將控制器的流量負(fù)載等級(jí)定義為min,并設(shè)置相應(yīng)的超時(shí)時(shí)間△to;控制器進(jìn)程P主動(dòng)向心跳檢測(cè)進(jìn)程q發(fā)送心跳消息,若在該超時(shí)時(shí)間A to內(nèi)沒(méi)有收到任何心跳消息,將該控制器進(jìn)程P放入懷疑列表,否則控制器為正常狀態(tài)。
[0015]3)將控制器的流量負(fù)載等級(jí)逐級(jí)升高,并判斷在該等級(jí)所對(duì)應(yīng)的超時(shí)時(shí)間內(nèi)心跳檢測(cè)進(jìn)程q是否收到來(lái)自控制器進(jìn)程P的心跳消息,若收到說(shuō)明控制器進(jìn)程P正常工作跳轉(zhuǎn)到步驟5);若沒(méi)有收到則循環(huán)執(zhí)行步驟3)。
[0016]4)當(dāng)流量負(fù)載等級(jí)升到very high時(shí)依然沒(méi)有收到控制器的消息,心跳檢測(cè)進(jìn)程q主動(dòng)向控制器進(jìn)程P發(fā)送一個(gè)ping消息,并啟動(dòng)定時(shí)器,若在定時(shí)器內(nèi)收到來(lái)自控制器進(jìn)程P的響應(yīng),跳轉(zhuǎn)到步驟5);否則,則判定該控制器進(jìn)程故障,跳轉(zhuǎn)到步驟6)。
[0017]5)將控制器進(jìn)程P從懷疑列表移除,并輸出此時(shí)該進(jìn)程的流量負(fù)載等級(jí)及其超時(shí)檢測(cè)的實(shí)際時(shí)間;繼續(xù)執(zhí)行步驟2)至步驟4)。
[0018]6)心跳檢測(cè)模塊立