本公開涉及計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種鏈路非對(duì)稱網(wǎng)閘雙機(jī)熱備系統(tǒng)及主備切換方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)經(jīng)濟(jì)的快速發(fā)展,信息化是當(dāng)今世界發(fā)展的一大趨勢(shì),也是我國產(chǎn)業(yè)結(jié)構(gòu)優(yōu)化升級(jí),實(shí)現(xiàn)工業(yè)和現(xiàn)代化、增強(qiáng)國際競(jìng)爭(zhēng)力與綜合國力的關(guān)鍵環(huán)節(jié)。信息的保密性、完整性和可用性對(duì)保持競(jìng)爭(zhēng)優(yōu)勢(shì),資金流動(dòng)、企業(yè)效益、商業(yè)形象、客戶權(quán)益和個(gè)人隱私都是至關(guān)重要的。網(wǎng)閘(netgap)全名為安全隔離網(wǎng)閘,是一種在不同等級(jí)網(wǎng)絡(luò)間借助物理隔離進(jìn)行數(shù)據(jù)安全交換的網(wǎng)絡(luò)設(shè)備。同時(shí),網(wǎng)閘也是連接不同安全等級(jí)網(wǎng)絡(luò)之間的唯一橋梁,一旦網(wǎng)閘設(shè)備出現(xiàn)單點(diǎn)故障(singlepointsoffailures,簡(jiǎn)稱spofs),整個(gè)被保護(hù)網(wǎng)絡(luò)對(duì)外的傳輸和交換業(yè)務(wù)將會(huì)受到巨大影響,甚至可能會(huì)引起整個(gè)網(wǎng)絡(luò)的癱瘓。因此,衡量一個(gè)網(wǎng)閘的負(fù)載能力和可靠性是網(wǎng)閘應(yīng)用中的一個(gè)關(guān)鍵指標(biāo)。雙機(jī)熱備技術(shù)為解決網(wǎng)閘單點(diǎn)故障
(singlepointsoffailures,簡(jiǎn)稱spofs)提供了可靠保障,研究網(wǎng)閘的雙機(jī)熱備技術(shù)對(duì)提高網(wǎng)閘的負(fù)載能力和可靠性具有非常重要的意義。
技術(shù)實(shí)現(xiàn)要素:
本公開在基于vrrp1.0協(xié)議和原網(wǎng)閘雙機(jī)熱備系統(tǒng)鏈路完全對(duì)稱結(jié)構(gòu)的基礎(chǔ)上,提出了一種鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng)以及主備切換方法,使得網(wǎng)閘的切換性能能夠得到顯著的提升。相比現(xiàn)有技術(shù)中完全對(duì)稱結(jié)構(gòu)的網(wǎng)閘解決方案,解決了鏈路切換容易“鎖死”的問題,并且還具有鏈路收斂速度快,多線程并行處理程序結(jié)構(gòu)簡(jiǎn)單等優(yōu)點(diǎn),同時(shí)還可以自主設(shè)置網(wǎng)閘組id(haid),提高網(wǎng)閘熱備組的安全性。
為了達(dá)到上述目的,根據(jù)本公開的一方面,提出一種鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng),所述系統(tǒng)包括:
主用網(wǎng)閘和至少一個(gè)備用網(wǎng)閘;所述主用網(wǎng)閘包括主用網(wǎng)閘內(nèi)端機(jī)和主用網(wǎng)閘外端機(jī);所述備用網(wǎng)閘包括備用網(wǎng)閘內(nèi)端機(jī)和備用網(wǎng)閘外端機(jī);
其中,所述主用網(wǎng)閘內(nèi)端機(jī)和主用網(wǎng)閘外端機(jī)之間、以及所述備用網(wǎng)閘內(nèi)端機(jī)和備用網(wǎng)閘外端機(jī)之間通過tcp協(xié)議進(jìn)行相互通信協(xié)商;而所述主用網(wǎng)閘內(nèi)端機(jī)和備用網(wǎng)閘內(nèi)端機(jī)之間、以及主用網(wǎng)閘外端機(jī)和備用網(wǎng)閘外端機(jī)之間通過vrrp協(xié)議進(jìn)行心跳監(jiān)測(cè);
當(dāng)所述主用網(wǎng)閘內(nèi)端機(jī)切換為備用網(wǎng)閘內(nèi)端機(jī)時(shí),通過tcp協(xié)議通知所述主用網(wǎng)閘外端機(jī)切換為備用網(wǎng)閘外端機(jī),當(dāng)所述主用網(wǎng)閘外端機(jī)切換為備用網(wǎng)閘外端機(jī)時(shí),通過tcp協(xié)議通知所述主用網(wǎng)閘內(nèi)端機(jī)切換為備用網(wǎng)閘內(nèi)端機(jī);
當(dāng)所述備用網(wǎng)閘內(nèi)端機(jī)通過所述vrrp協(xié)議檢測(cè)不到主用網(wǎng)閘內(nèi)端機(jī)的心跳,且當(dāng)所述備用網(wǎng)閘外端機(jī)通過所述vrrp協(xié)議檢測(cè)不到主用網(wǎng)閘外端機(jī)的心跳時(shí),所述備用網(wǎng)閘內(nèi)端機(jī)與所述備用網(wǎng)閘外端機(jī)之間通過tcp協(xié)議協(xié)商后,分別切換成主用網(wǎng)閘內(nèi)端機(jī)和主用網(wǎng)閘外端機(jī)。
可選地,所述主用網(wǎng)閘內(nèi)端機(jī)向所述備用網(wǎng)閘內(nèi)端機(jī)定時(shí)發(fā)送并隨時(shí)接收vrrp心跳包,所述主用網(wǎng)閘外端機(jī)向所述備用網(wǎng)閘外端機(jī)定時(shí)發(fā)送并隨時(shí)接收vrrp心跳包。
可選地,所述備用網(wǎng)閘內(nèi)端機(jī)向所述備用網(wǎng)閘內(nèi)端機(jī)定時(shí)發(fā)送vrrp心跳包,所述備用網(wǎng)閘外端機(jī)向所述備用網(wǎng)閘外端機(jī)定時(shí)發(fā)送vrrp心跳包。
可選地,所述主要網(wǎng)閘內(nèi)端機(jī)檢測(cè)到所述主用網(wǎng)閘外端機(jī)切換至備用網(wǎng)閘外端機(jī)后,切換為備用網(wǎng)閘內(nèi)端機(jī)。
可選地,在無主用網(wǎng)閘、主用網(wǎng)閘丟線或者主用網(wǎng)閘不參考vrrp協(xié)議時(shí),選擇優(yōu)先級(jí)最高的備用網(wǎng)閘切作為主用網(wǎng)閘。
可選地,所述鏈路非對(duì)稱網(wǎng)閘雙機(jī)熱備系統(tǒng)采用搶占模式和非搶占模式作為備機(jī)競(jìng)選機(jī)制,在搶占模式下,優(yōu)先級(jí)最高的備用網(wǎng)閘切換成主用網(wǎng)閘,當(dāng)前主用網(wǎng)閘切換成備用網(wǎng)閘;在非搶占模式下,只有主用網(wǎng)閘發(fā)生故障時(shí),主用網(wǎng)閘切換至備用網(wǎng)閘。
根據(jù)本公開另一方面,提供了一種鏈路非對(duì)稱網(wǎng)閘雙機(jī)熱備系統(tǒng)的主備切換方法,所述鏈路非對(duì)稱網(wǎng)閘雙機(jī)熱備系統(tǒng)包括主用網(wǎng)閘和至少一個(gè)備用網(wǎng)閘;所述主用網(wǎng)閘包括主用網(wǎng)閘內(nèi)端機(jī)和主用網(wǎng)閘外端機(jī);所述備用網(wǎng)閘包括備用網(wǎng)閘內(nèi)端機(jī)和備用網(wǎng)閘外端機(jī);所述方法包括:
在所述主用網(wǎng)閘內(nèi)端機(jī)切換為備用網(wǎng)閘內(nèi)端機(jī)時(shí),通過tcp協(xié)議通知所述主用網(wǎng)閘外端機(jī)切換為備用網(wǎng)閘外端機(jī);
在所述主用網(wǎng)閘外端機(jī)切換為備用網(wǎng)閘外端機(jī)時(shí),通過tcp協(xié)議通知所述主用網(wǎng)閘內(nèi)端機(jī)切換為備用網(wǎng)閘內(nèi)端機(jī);
在所述備用網(wǎng)閘內(nèi)端機(jī)通過所述vrrp協(xié)議檢測(cè)不到主用網(wǎng)閘內(nèi)端機(jī)的心跳,且在所述備用網(wǎng)閘外端機(jī)通過所述vrrp協(xié)議檢測(cè)不到主用網(wǎng)閘外端機(jī)的心跳時(shí),所述備用網(wǎng)閘內(nèi)端機(jī)與所述備用網(wǎng)閘外端機(jī)之間通過tcp協(xié)議進(jìn)行協(xié)商;
在寫上通過后,所述備用網(wǎng)閘內(nèi)端機(jī)與所述備用網(wǎng)閘外端機(jī)分別切換成主用網(wǎng)閘內(nèi)端機(jī)和主用網(wǎng)閘外端機(jī)。
可選地,所述主用網(wǎng)閘內(nèi)端機(jī)向所述備用網(wǎng)閘內(nèi)端機(jī)定時(shí)發(fā)送并隨時(shí)接收vrrp心跳包,所述主用網(wǎng)閘外端機(jī)向所述備用網(wǎng)閘外端機(jī)定時(shí)發(fā)送并隨時(shí)接收vrrp心跳包。
可選地,所述備用網(wǎng)閘內(nèi)端機(jī)向所述備用網(wǎng)閘內(nèi)端機(jī)定時(shí)發(fā)送vrrp心跳包,所述備用網(wǎng)閘外端機(jī)向所述備用網(wǎng)閘外端機(jī)定時(shí)發(fā)送vrrp心跳包。
可選地,所述主要網(wǎng)閘內(nèi)端機(jī)檢測(cè)到所述主用網(wǎng)閘外端機(jī)切換至備用網(wǎng)閘外端機(jī)后,切換為備用網(wǎng)閘內(nèi)端機(jī)。
本公開鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng)及數(shù)據(jù)處理方法主要通過同網(wǎng)端網(wǎng)閘間vrrp協(xié)議心跳包監(jiān)測(cè)和網(wǎng)閘內(nèi)外處理器間tcp協(xié)議雙重協(xié)商機(jī)制來確保網(wǎng)閘的主備機(jī)切換。而不是當(dāng)前如現(xiàn)有技術(shù)中所采用的完全對(duì)稱結(jié)構(gòu),通過心跳線簡(jiǎn)單監(jiān)測(cè)網(wǎng)閘內(nèi)外端機(jī)的狀態(tài)和主備網(wǎng)閘間處理機(jī)狀態(tài)。解決了網(wǎng)閘“單設(shè)備雙系統(tǒng)”特性下,目前“單設(shè)備單系統(tǒng)”高可用(highavailability)方案無法適用這一難題,并且,本公開告別了完全對(duì)稱結(jié)構(gòu)交叉切換“鎖死”的情況,使網(wǎng)閘的切換性能得到了顯著的提升。
附圖說明
圖1為根據(jù)本公開一實(shí)施例的鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng)的拓?fù)鋱D;
圖2為根據(jù)本公開一實(shí)施例的鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng)的結(jié)構(gòu)演進(jìn)圖;
圖3為根據(jù)本公開一實(shí)施例的鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng)的模塊圖;
圖4(a)-(b)為根據(jù)本公開一實(shí)施例的鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng)的主備切換數(shù)據(jù)處理方法流程圖;
圖5為根據(jù)本公開一實(shí)施例的鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備主備切換的流程圖。
具體實(shí)施方式
為使本公開的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本公開進(jìn)一步詳細(xì)說明。
已有技術(shù)中,利用熱備份路由器協(xié)議(hotstandbyrouterprotocol,hsrp)和虛擬路由器冗余協(xié)議(virtualrouterredundancyprotocol,vrrp)設(shè)計(jì)了基于網(wǎng)閘的熱備協(xié)議(gap-vrrp),實(shí)現(xiàn)對(duì)網(wǎng)閘的熱備功能,但其方案中其實(shí)只是在網(wǎng)閘內(nèi)網(wǎng)一端實(shí)現(xiàn)了熱備,主網(wǎng)閘和備網(wǎng)閘之間只有內(nèi)端機(jī)間心跳線相連,網(wǎng)閘內(nèi)外端處理器間通過心跳相互監(jiān)測(cè)(如:圖2中結(jié)構(gòu)1所示),這樣就存在一個(gè)明顯的不足,當(dāng)主備網(wǎng)閘內(nèi)網(wǎng)端間心跳線出現(xiàn)故障時(shí),將會(huì)導(dǎo)致“雙主”現(xiàn)象,有可能會(huì)導(dǎo)致系統(tǒng)崩潰。
為了解決上述提到的會(huì)導(dǎo)致“雙主”現(xiàn)象的問題,額可以增加主備網(wǎng)閘間外端機(jī)間的心跳監(jiān)測(cè),網(wǎng)閘內(nèi)外端機(jī)和主被網(wǎng)閘內(nèi)外端機(jī)間都通過心跳協(xié)議進(jìn)行檢測(cè),形成網(wǎng)閘熱備方案,如圖2中結(jié)構(gòu)2所示。但是由于這種方案協(xié)議結(jié)構(gòu)完全對(duì)稱,在兩網(wǎng)閘內(nèi)外端機(jī)同時(shí)處理數(shù)據(jù)交叉切換時(shí),容易出現(xiàn)“鎖死”現(xiàn)象。
因此,本公開公開實(shí)施例在此基礎(chǔ)上又對(duì)以上方案進(jìn)行改進(jìn),提出了鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng),如圖2中結(jié)構(gòu)3所示,本公開提出的鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng)避免了程序的“鎖死”現(xiàn)象,并且使網(wǎng)閘的切換性能上得到顯著提升。
如圖1所示,本公開實(shí)施例提出了一種鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng),該系統(tǒng)主要應(yīng)用于如圖2所示的鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘高可用拓?fù)浣Y(jié)構(gòu)中。
根據(jù)本公開一實(shí)施例的鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng),如圖1所示,所述鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng)包括:主用網(wǎng)閘和備用網(wǎng)閘,其中,主用網(wǎng)閘和備用網(wǎng)閘都由兩套獨(dú)立的高性能處理系統(tǒng)分別作為內(nèi)端機(jī)和外端機(jī),即所述主用網(wǎng)閘包括主用網(wǎng)閘內(nèi)端機(jī)和主用網(wǎng)閘外端機(jī);所述備用網(wǎng)閘包括備用網(wǎng)閘內(nèi)端機(jī)和備用網(wǎng)閘外端機(jī)。
由于網(wǎng)閘屬于“單設(shè)備雙系統(tǒng)”設(shè)備,考慮到網(wǎng)閘的雙機(jī)熱備和設(shè)計(jì),根據(jù)本公開一實(shí)施例的鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng)模塊圖,如圖2所示,整個(gè)雙機(jī)熱備系統(tǒng)包括主用網(wǎng)閘和備用網(wǎng)閘,主備網(wǎng)閘都由內(nèi)外端機(jī)構(gòu)成,主、備網(wǎng)閘間互為熱備。
其中,所述主用網(wǎng)閘內(nèi)端機(jī)和主用網(wǎng)閘外端機(jī)之間、以及所述備用網(wǎng)閘內(nèi)端機(jī)和備用網(wǎng)閘外端機(jī)之間通過tcp協(xié)議進(jìn)行相互通信協(xié)商;而所述主用網(wǎng)閘內(nèi)端機(jī)和備用網(wǎng)閘內(nèi)端機(jī)之間、以及主用網(wǎng)閘外端機(jī)和備用網(wǎng)閘外端機(jī)之間通過vrrp協(xié)議進(jìn)行心跳監(jiān)測(cè);
當(dāng)所述主用網(wǎng)閘內(nèi)端機(jī)切換為備用網(wǎng)閘內(nèi)端機(jī)時(shí),通過tcp協(xié)議通知所述主用網(wǎng)閘外端機(jī)切換為備用網(wǎng)閘外端機(jī),當(dāng)所述主用網(wǎng)閘外端機(jī)切換為備用網(wǎng)閘外端機(jī)時(shí),通過tcp協(xié)議通知所述主用網(wǎng)閘內(nèi)端機(jī)切換為備用網(wǎng)閘內(nèi)端機(jī);
當(dāng)所述備用網(wǎng)閘內(nèi)端機(jī)通過所述vrrp協(xié)議檢測(cè)不到主用網(wǎng)閘內(nèi)端機(jī)的心跳,且當(dāng)所述備用網(wǎng)閘外端機(jī)通過所述vrrp協(xié)議檢測(cè)不到主用網(wǎng)閘外端機(jī)的心跳時(shí),所述備用網(wǎng)閘內(nèi)端機(jī)與所述備用網(wǎng)閘外端機(jī)之間通過tcp協(xié)議協(xié)商后,分別切換成主用網(wǎng)閘內(nèi)端機(jī)和主用網(wǎng)閘外端機(jī)。
如圖2中網(wǎng)閘熱備系統(tǒng)中結(jié)構(gòu)3所示,可以把主用(master)網(wǎng)閘內(nèi)端機(jī)用a1表示、外端機(jī)用b1來表示,備用(backup)網(wǎng)閘內(nèi)端機(jī)按備用網(wǎng)閘內(nèi)端機(jī)a2表示、外端機(jī)按備用網(wǎng)閘外端機(jī)b2來表示,其熱備系統(tǒng)特征在于,所述方法包括:
主用網(wǎng)閘內(nèi)端機(jī)a1和主用網(wǎng)閘外端機(jī)b1之間通過開啟tcp協(xié)議來進(jìn)行相互通信協(xié)商,備用網(wǎng)閘內(nèi)端機(jī)a2和備用網(wǎng)閘外端機(jī)b2之間通過開啟tcp協(xié)議來進(jìn)行相互通信協(xié)商;主用網(wǎng)閘內(nèi)端機(jī)a1和備用網(wǎng)閘內(nèi)端機(jī)a2之間通過vrrp協(xié)議包進(jìn)行通信,主用網(wǎng)閘外端機(jī)b1和備用網(wǎng)閘外端機(jī)b2之間通過vrrp協(xié)議包進(jìn)行通信,協(xié)議規(guī)則如下:
當(dāng)自身為master時(shí),如果處理機(jī)a(主用網(wǎng)閘內(nèi)端機(jī)a1/備用網(wǎng)閘內(nèi)端機(jī)a2)成為了backup/fault,那么通知將處理機(jī)b(主用網(wǎng)閘外端機(jī)b1/備用網(wǎng)閘外端機(jī)b2)也成為backup,反之亦然;
當(dāng)自身為backup時(shí),以處理機(jī)主用網(wǎng)閘內(nèi)端機(jī)a1舉例,只有在同時(shí)滿足主用網(wǎng)閘內(nèi)端機(jī)a1、備用網(wǎng)閘內(nèi)端機(jī)a2間協(xié)商條件和主用網(wǎng)閘內(nèi)端機(jī)a1、主用網(wǎng)閘外端機(jī)b1間協(xié)商條件時(shí)才會(huì)變?yōu)閙aster(即:雙重協(xié)商條件),其他處理機(jī)亦然。
處理機(jī)處于backup狀態(tài)時(shí)只接收vrrp包,處于master狀態(tài)時(shí)定時(shí)發(fā)送,并且隨時(shí)接收vrrp包。
由此可以看出,四臺(tái)處理機(jī)熱備協(xié)議處于非對(duì)稱結(jié)構(gòu),也可以說是一種協(xié)商式的結(jié)構(gòu),解決了完全對(duì)稱結(jié)構(gòu)下交叉切換時(shí)容易“鎖死”的問題,提高了網(wǎng)閘的切換性能。
當(dāng)主用網(wǎng)閘內(nèi)端機(jī)或外端機(jī)出現(xiàn)故障或宕機(jī)時(shí),主用網(wǎng)閘變?yōu)閭溆脿顟B(tài)(backup),備用網(wǎng)閘能夠迅速轉(zhuǎn)變?yōu)橹饔脿顟B(tài)(master)并完全接管主網(wǎng)閘的現(xiàn)有全部業(yè)務(wù),保證數(shù)據(jù)安全可靠的傳輸和交換。
由于網(wǎng)閘的雙向傳輸特性,網(wǎng)閘的內(nèi)外端機(jī)都要進(jìn)行類似的數(shù)據(jù)處理和數(shù)據(jù)同步來保障網(wǎng)閘正常的數(shù)據(jù)交換。
基于網(wǎng)閘的“單設(shè)備雙系統(tǒng)”的特性,網(wǎng)閘的雙機(jī)熱備其特征下,在出現(xiàn)故障時(shí)通過網(wǎng)閘內(nèi)、外端機(jī)間協(xié)調(diào)使網(wǎng)閘內(nèi)、外端機(jī)保持統(tǒng)一的主備狀態(tài);
在網(wǎng)閘的雙機(jī)熱備協(xié)議下,網(wǎng)閘內(nèi)、外端機(jī)保持統(tǒng)一的主備狀態(tài)是通過利用網(wǎng)閘內(nèi)外端機(jī)進(jìn)行tcp通信協(xié)商機(jī)制進(jìn)行的。內(nèi)端機(jī)為主控端作tcp通信服務(wù)器端,外端機(jī)為tcp通信的客戶端,當(dāng)自身當(dāng)前要狀態(tài)改變時(shí),協(xié)議相互發(fā)送自己要變?yōu)榈臓顟B(tài),當(dāng)服務(wù)器端(客戶端)接收到客戶端(服務(wù)器端)狀態(tài)跟自己想要狀態(tài)(主/備狀態(tài))相同時(shí),則一塊變?yōu)樵摖顟B(tài),不同時(shí),則同時(shí)變?yōu)閭錂C(jī)狀態(tài)。也就是說,只要內(nèi)外端機(jī)其一為想做備機(jī),則內(nèi)外端機(jī)一塊作備機(jī)。
基于網(wǎng)閘的“單設(shè)備雙系統(tǒng)”的特性,網(wǎng)閘的雙機(jī)熱備其特征下,在出現(xiàn)故障時(shí),最短的時(shí)間內(nèi)保證主機(jī)宕機(jī)后備用網(wǎng)閘進(jìn)行向主機(jī)狀態(tài)和業(yè)務(wù)的切換;
熱備系統(tǒng)通過vrrp(virtualrouterredundancyprotocol)心跳包進(jìn)行主備網(wǎng)閘間的協(xié)議通信,主網(wǎng)閘內(nèi)端機(jī)與備網(wǎng)閘內(nèi)端機(jī)通過與內(nèi)網(wǎng)交換機(jī)相連或通過ha(心跳口)直接相連來進(jìn)行心跳監(jiān)測(cè)。心跳包包括主備機(jī)優(yōu)先級(jí)(priority)、組id(haid)、虛擬ip、虛擬mac、認(rèn)證方式、廣播間隔(adver_interval),校驗(yàn)和等內(nèi)容。通過匹配haid和優(yōu)先級(jí)信息的比較來確定網(wǎng)閘狀態(tài)為主機(jī)或備機(jī)。
在網(wǎng)閘處于備機(jī)狀態(tài)時(shí)引入了一個(gè)與優(yōu)先級(jí)相關(guān)的漂移時(shí)間t當(dāng)經(jīng)過時(shí)間t=(3×adver_interval+(256-priority)/256)秒,仍未收到主網(wǎng)閘發(fā)來的心跳包時(shí),則認(rèn)為主機(jī)宕機(jī),再經(jīng)過備用網(wǎng)閘內(nèi)外端處理機(jī)間的協(xié)商符合條件后一塊變?yōu)橹鳈C(jī)狀態(tài)。
基于網(wǎng)閘的“單設(shè)備雙系統(tǒng)”的特性,網(wǎng)閘的雙機(jī)熱備其特征下,在出現(xiàn)故障時(shí)雙機(jī)熱備下四個(gè)系統(tǒng)間的狀態(tài)監(jiān)測(cè)及切換機(jī)制;
熱備系統(tǒng)的狀態(tài)監(jiān)測(cè)主要硬件狀態(tài)監(jiān)測(cè)和主備機(jī)狀態(tài)監(jiān)測(cè)。硬件狀態(tài)監(jiān)測(cè)主要指熱備端口的狀態(tài)監(jiān)測(cè)、數(shù)據(jù)端口的狀態(tài)監(jiān)測(cè)和網(wǎng)卡的狀態(tài)監(jiān)測(cè),硬件狀態(tài)出錯(cuò)則用fault表示。主備機(jī)狀態(tài)(master/backup)監(jiān)測(cè)主要指使網(wǎng)閘主備機(jī)間的狀態(tài)變化,并通過vrrp包(網(wǎng)閘與網(wǎng)閘間的通信)和網(wǎng)閘內(nèi)外端機(jī)間通信協(xié)商機(jī)制進(jìn)行判定主備狀態(tài)的切換。
可配置的網(wǎng)閘熱備組id(haid)可以使網(wǎng)閘自動(dòng)識(shí)別是否是熱備組網(wǎng)閘發(fā)來心跳包,若匹配是則接收,不匹配則丟棄,避免了局域網(wǎng)內(nèi)其它非熱備組的vrrp包對(duì)熱備組造成干擾,提高了網(wǎng)閘熱備的可靠性和安全性。
基于網(wǎng)閘的“單設(shè)備雙系統(tǒng)”的特性,網(wǎng)閘的雙機(jī)熱備其特征下,在出現(xiàn)故障時(shí)主備網(wǎng)閘間切換和數(shù)據(jù)同步;
網(wǎng)閘業(yè)務(wù)同步包括數(shù)據(jù)同步和配置同步,當(dāng)網(wǎng)閘處于主機(jī)狀態(tài)時(shí),網(wǎng)閘的數(shù)據(jù)傳輸和交換需要把自己的配置和業(yè)務(wù)數(shù)據(jù)同步到備用網(wǎng)閘,用來防止主網(wǎng)閘出現(xiàn)故障,在主備網(wǎng)閘切換時(shí)網(wǎng)閘業(yè)務(wù)丟失的情況。網(wǎng)閘配置同步:在主網(wǎng)閘業(yè)務(wù)配置更改時(shí)會(huì)及時(shí)同步到備用網(wǎng)閘以更新備用網(wǎng)閘的配置情況;數(shù)據(jù)業(yè)務(wù)的同步:主網(wǎng)閘正在進(jìn)行業(yè)務(wù)的傳輸和交換時(shí),備用網(wǎng)閘會(huì)及時(shí)緩存所傳業(yè)務(wù)數(shù)據(jù),當(dāng)主用網(wǎng)閘出現(xiàn)故障或宕機(jī)時(shí),備用網(wǎng)閘則會(huì)切換為主機(jī)狀態(tài)并進(jìn)行數(shù)據(jù)的續(xù)傳或重傳。
由于兩臺(tái)網(wǎng)閘互為熱備時(shí),備用網(wǎng)閘突然出現(xiàn)故障或異常,必將導(dǎo)致熱備功能的作用失敗。此發(fā)明方案中熱備系統(tǒng)還配置了異常故障的警告和日志記錄功能。當(dāng)網(wǎng)閘處于熱備狀態(tài)時(shí),網(wǎng)閘出現(xiàn)異常故障則會(huì)發(fā)出警告,并自動(dòng)錄于網(wǎng)閘故障日志。
下面通過具體的實(shí)施例來闡述上述鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng)的實(shí)現(xiàn)方式。
在具體實(shí)現(xiàn)雙機(jī)備份時(shí),通過在主用網(wǎng)閘內(nèi)外端機(jī)、備用網(wǎng)閘內(nèi)外端機(jī)上分別加載下述模塊來完實(shí)現(xiàn)雙機(jī)熱備:vrrp發(fā)送模塊、vrrp接收模塊、peer_to_peer接收模塊、設(shè)備狀態(tài)監(jiān)控模塊和主程序模塊。
其中,vrrp發(fā)送模塊和vrrp接收模塊用于主、備網(wǎng)閘間用心跳線相連來監(jiān)測(cè)主備網(wǎng)閘所處優(yōu)先級(jí)、vhid等信息;peer_to_peer接收模塊屬于網(wǎng)閘內(nèi)外端機(jī)間通信模塊,主要負(fù)責(zé)網(wǎng)閘內(nèi)外網(wǎng)狀態(tài)的監(jiān)測(cè)和接收;設(shè)備狀態(tài)監(jiān)控模塊主要用于宕機(jī)監(jiān)測(cè),網(wǎng)口、網(wǎng)卡通斷監(jiān)測(cè);主程序模塊主要負(fù)責(zé)根據(jù)其它模塊的狀態(tài)變換信息來控制本端機(jī)所處狀態(tài)及狀態(tài)轉(zhuǎn)換工作。
根據(jù)本公開的另一方面,還提出一種鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備主備切換方法,該方法包括以下步驟:
在所述主用網(wǎng)閘內(nèi)端機(jī)切換為備用網(wǎng)閘內(nèi)端機(jī)時(shí),通過tcp協(xié)議通知所述主用網(wǎng)閘外端機(jī)切換為備用網(wǎng)閘外端機(jī);
在所述主用網(wǎng)閘外端機(jī)切換為備用網(wǎng)閘外端機(jī)時(shí),通過tcp協(xié)議通知所述主用網(wǎng)閘內(nèi)端機(jī)切換為備用網(wǎng)閘內(nèi)端機(jī);
在所述備用網(wǎng)閘內(nèi)端機(jī)通過所述vrrp協(xié)議檢測(cè)不到主用網(wǎng)閘內(nèi)端機(jī)的心跳,且在所述備用網(wǎng)閘外端機(jī)通過所述vrrp協(xié)議檢測(cè)不到主用網(wǎng)閘外端機(jī)的心跳時(shí),所述備用網(wǎng)閘內(nèi)端機(jī)與所述備用網(wǎng)閘外端機(jī)之間通過tcp協(xié)議進(jìn)行協(xié)商;
在協(xié)商通過后,所述備用網(wǎng)閘內(nèi)端機(jī)與所述備用網(wǎng)閘外端機(jī)分別切換成主用網(wǎng)閘內(nèi)端機(jī)和主用網(wǎng)閘外端機(jī)。
下面通過具體的實(shí)施方式說明實(shí)現(xiàn)鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備主備切換的流程,如圖5所示。
步驟1:進(jìn)行網(wǎng)閘雙機(jī)熱備系統(tǒng)vrrp發(fā)送模塊、vrrp接收模塊、peer_to_peer接收模塊、設(shè)備狀態(tài)監(jiān)控模塊的初始化工作(如圖3所示,除主程序外的其它線程的初始化)。即,以上初始化的四個(gè)模塊我們用線程來表示,并且各線程的主要工作內(nèi)容為:
線程1:vrrp發(fā)送線程(vrrp發(fā)送/接收指主備網(wǎng)閘間的通信),主要負(fù)責(zé)組建vrrp包(以太網(wǎng)頭+vrrp報(bào)文);定時(shí)發(fā)送vrrp包(間隔1秒);輸出發(fā)送狀態(tài)信息。
線程2:vrrp接收線程,主要負(fù)責(zé)接收vrrp包,設(shè)置超時(shí),判斷超時(shí)與否;接收并解析vrrp數(shù)據(jù)包,校驗(yàn)haid,并與自己優(yōu)先級(jí)進(jìn)行比較;輸出接收狀態(tài)信息(優(yōu)先級(jí)、接收超時(shí),校驗(yàn)haid(網(wǎng)閘互備組id)是否匹配,不匹配則丟棄,視為干擾包)。
線程3:peer_to_peer接收線程(peer_to_peer接收/發(fā)送指網(wǎng)閘內(nèi)部?jī)?nèi)外端機(jī)間通信),主要負(fù)責(zé)心跳監(jiān)測(cè)(監(jiān)測(cè)網(wǎng)閘內(nèi)外端機(jī)socket通信是否正常。并設(shè)置定時(shí)檢測(cè)和超時(shí));監(jiān)聽并接收peer端機(jī)(peer端機(jī)指網(wǎng)閘內(nèi)/外端機(jī)的統(tǒng)稱,內(nèi)外端機(jī)相互通信)發(fā)來的狀態(tài),給主線程狀態(tài)轉(zhuǎn)換作參考。
線程4:設(shè)備狀態(tài)監(jiān)測(cè)線程,主要負(fù)責(zé)測(cè)試應(yīng)用口(即:虛擬ip口)狀態(tài)是否正常;測(cè)試ha口(即:熱備口)狀態(tài)是否正常;測(cè)試獲取網(wǎng)卡信息是否正常。
步驟2:根據(jù)vrrp發(fā)送模塊、vrrp接收模塊、peer_to_peer接收模塊、設(shè)備狀態(tài)監(jiān)控模塊初始化反饋的信息完成雙機(jī)熱備系統(tǒng)主程序模塊的初始化工作。
主程序模塊初始化流程如圖4(a)所示,其主要負(fù)責(zé)讀取配置文件,監(jiān)測(cè)配置是否正確,初始化變量;向peer主機(jī)發(fā)送本機(jī)狀態(tài)信息(網(wǎng)閘內(nèi)外端機(jī)間的通信);根據(jù)各線程動(dòng)態(tài)進(jìn)行狀態(tài)監(jiān)控,確定當(dāng)前網(wǎng)閘自身端機(jī)的主/備狀態(tài)。最后,如果確認(rèn)自身將切換為主機(jī)狀態(tài)時(shí),則利用虛擬ip技術(shù)發(fā)送免費(fèi)arp廣播包來實(shí)現(xiàn)由備用網(wǎng)閘向主用網(wǎng)閘狀態(tài)的切換。
其中,當(dāng)網(wǎng)閘處于熱備狀態(tài)時(shí),如果主用網(wǎng)閘任意處理機(jī)(內(nèi)端機(jī)/外端機(jī))出現(xiàn)故障(網(wǎng)線斷掉、宕機(jī)重啟、內(nèi)外端機(jī)通信故障),網(wǎng)閘對(duì)端處理機(jī)都會(huì)通過tcp協(xié)議進(jìn)行通信了解對(duì)方情況,并切網(wǎng)閘兩處理機(jī)同時(shí)轉(zhuǎn)為備用狀態(tài)。備用網(wǎng)閘根據(jù)主備網(wǎng)閘間的心跳線監(jiān)測(cè)主用網(wǎng)閘出現(xiàn)故障(一般是一定時(shí)間收不到心跳包則認(rèn)定主用網(wǎng)閘同端處理器出現(xiàn)故障),然后自己再跟本網(wǎng)閘對(duì)端機(jī)進(jìn)行tcp通信,告訴對(duì)端機(jī)自己想要變?yōu)橹鳈C(jī)狀態(tài),由于網(wǎng)閘另一側(cè)也用心跳線相連,對(duì)端機(jī)也會(huì)收到主用網(wǎng)閘故障的消息,并且也會(huì)通知對(duì)端機(jī)自己也要變?yōu)橹鳈C(jī),因此,備用網(wǎng)閘的兩處理機(jī)都會(huì)收到對(duì)端機(jī)要變主機(jī)的消息,如果對(duì)端恰好和自己意愿相同,則處理機(jī)變?yōu)橹鳈C(jī),這樣兩處理器就做到了同時(shí)變?yōu)橹鳈C(jī)狀態(tài)。
步驟3:根據(jù)vrrp發(fā)送模塊、vrrp接收模塊、peer_to_peer接收模塊、設(shè)備狀態(tài)監(jiān)控模塊的實(shí)時(shí)監(jiān)控信息和主程序模塊的初始化信息完成工雙機(jī)熱備系統(tǒng)主程序模塊中主、備機(jī)狀態(tài)流程的數(shù)據(jù)處理,最終確定主備機(jī)狀態(tài)。
主程序模塊主備機(jī)狀態(tài)轉(zhuǎn)換流程如圖4(b)所示,當(dāng)網(wǎng)閘在主程序初始化流程(如圖4(a)中)初始化判定為主機(jī)狀態(tài)時(shí),主機(jī)狀態(tài)將會(huì)繼續(xù)監(jiān)測(cè)各子線程的變化,用來隨時(shí)準(zhǔn)備主/備機(jī)的切換。主機(jī)狀態(tài)程序流程如圖4(a)所示。其主要任務(wù)是:開啟數(shù)據(jù)同步;定期發(fā)送vrrp心跳包通告?zhèn)溆镁W(wǎng)閘自己處于master狀態(tài);響應(yīng)對(duì)虛擬ip地址的arp請(qǐng)求(響應(yīng)的是熱備接口的真實(shí)mac地址);接收到比自己的優(yōu)先級(jí)大的vrrp報(bào)文或自身設(shè)備不正常時(shí),才會(huì)轉(zhuǎn)為backup狀態(tài)。
當(dāng)網(wǎng)閘在主程序初始化流程(如圖4(a)中)初始化判定為備機(jī)狀態(tài)時(shí),備機(jī)狀態(tài)也將會(huì)繼續(xù)監(jiān)測(cè)各子線程的變化,用來隨時(shí)準(zhǔn)備主/備機(jī)的切換。其主要任務(wù)是:接收master發(fā)送的vrrp廣播報(bào)文,從中了解master;接收到vrrp報(bào)文,如果收到報(bào)文的優(yōu)先級(jí)為0或接收超時(shí),將狀態(tài)設(shè)置為master,開始發(fā)送報(bào)文;如果收到報(bào)文優(yōu)先級(jí)小于本地優(yōu)先級(jí)而且本地設(shè)置了搶占方式,一段時(shí)間后轉(zhuǎn)為master狀態(tài)否則正常接收;網(wǎng)閘處于backup狀態(tài),當(dāng)間隔(3×adver_interval+(256-priority)/256)秒沒有收到master發(fā)來的vrrp報(bào)文,則認(rèn)為當(dāng)前的master已經(jīng)down掉,將自己轉(zhuǎn)為master狀態(tài),發(fā)送vrrp報(bào)文。
運(yùn)行vrrp協(xié)議的vrrp網(wǎng)閘對(duì)外組成一個(gè)虛擬網(wǎng)閘,其中之一處于master狀,稱為主控網(wǎng)閘或主用網(wǎng)閘,而其它的處于backup狀態(tài),稱為備用網(wǎng)閘。起初沒有主控網(wǎng)閘,或者主控網(wǎng)閘丟線,再或者主控網(wǎng)閘不參考vrrp協(xié)議,那么將選擇一個(gè)優(yōu)選級(jí)最高的備份網(wǎng)閘成為主控網(wǎng)閘。
運(yùn)行vrrp協(xié)議的vrrp網(wǎng)閘對(duì)外組成一個(gè)虛擬網(wǎng)閘,其中之一處于master狀,稱為主控網(wǎng)閘或主用網(wǎng)閘,而其它的處于backup狀態(tài),稱為備用網(wǎng)閘。起初沒有主控網(wǎng)閘,或者主控網(wǎng)閘丟線,再或者主控網(wǎng)閘不參考vrrp協(xié)議,那么將選擇一個(gè)優(yōu)選級(jí)最高的備份網(wǎng)閘成為主控網(wǎng)閘,這需vrrp的競(jìng)選機(jī)制來維護(hù)各個(gè)vrrp網(wǎng)閘的狀態(tài)。
為強(qiáng)化熱備系統(tǒng)的可靠性和穩(wěn)定性,本公開實(shí)施例中還提供了可供選擇的雙機(jī)熱備系統(tǒng)的備機(jī)競(jìng)選機(jī)制。該競(jìng)選機(jī)制可分為搶占模式和非搶占模式。搶占模式即:嚴(yán)格按優(yōu)先級(jí)級(jí)別,優(yōu)先級(jí)高的搶占為主機(jī)(主機(jī)狀態(tài)時(shí)發(fā)送vrrp包優(yōu)先級(jí)為自己的優(yōu)先級(jí),優(yōu)先級(jí)高的做主機(jī))。非搶占模式即:設(shè)備做為主機(jī)時(shí)不再受優(yōu)先級(jí)別影響,只有在發(fā)生故障時(shí)才會(huì)轉(zhuǎn)為備機(jī)狀態(tài)。(網(wǎng)閘為主機(jī)狀態(tài)時(shí)發(fā)送vrrp包優(yōu)先級(jí)為最大值255)。
此發(fā)明方案中熱備系統(tǒng)還配置了異常故障的警告和日志記錄功能。當(dāng)網(wǎng)閘處于熱備狀態(tài)時(shí),網(wǎng)閘出現(xiàn)異常故障則會(huì)發(fā)出警告,并自動(dòng)錄于網(wǎng)閘故障日志。
為了測(cè)試本公開實(shí)施例提出的鏈路非對(duì)稱網(wǎng)閘雙機(jī)熱備系統(tǒng)的有效性,專門搭建了如圖1拓?fù)渌镜臏y(cè)試系統(tǒng),并在網(wǎng)閘、服務(wù)器、客戶端上搭建了相應(yīng)的業(yè)務(wù)環(huán)境,需要用到硬件設(shè)備如下:網(wǎng)閘2臺(tái);交換機(jī)2臺(tái);pc機(jī)兩臺(tái)(一臺(tái)作內(nèi)網(wǎng)服務(wù)器,一臺(tái)作外網(wǎng)服務(wù)器);網(wǎng)線六根。另外,測(cè)試可以分為兩類,第一類是:熱備程序的關(guān)閉、網(wǎng)線插拔等宕機(jī)測(cè)試,用來測(cè)試雙機(jī)熱備程序軟件診測(cè)和主備切換的正確性。第二類是:軟件輔助測(cè)試,用網(wǎng)閘文件共享同步功能來測(cè)試雙機(jī)在發(fā)生主/備切換時(shí)數(shù)據(jù)業(yè)務(wù)是否丟失。最后,保證業(yè)務(wù)配置和測(cè)試數(shù)據(jù)準(zhǔn)確無誤的情況下,做了如表1所示的以下測(cè)試,并給出了相應(yīng)測(cè)試結(jié)果。并且各種模擬交叉切換的故障場(chǎng)景實(shí)驗(yàn),測(cè)試結(jié)果均十分理想,程序未出現(xiàn)“鎖死”現(xiàn)象。由測(cè)試結(jié)果可知,該雙機(jī)熱備系統(tǒng)能夠?qū)ξ覀兯l(fā)生的各種故障進(jìn)行檢測(cè),并能夠相應(yīng)地完成各種故障切換,系統(tǒng)的切換時(shí)間都在和文獻(xiàn)中的故障切換時(shí)間(2-4秒)范圍之內(nèi)。由此表明該發(fā)明方案的合理性和可靠性。
表1
通過上述技術(shù)方案可知,本公開實(shí)施例中鏈路非對(duì)稱結(jié)構(gòu)網(wǎng)閘雙機(jī)熱備系統(tǒng)及數(shù)據(jù)處理方法主要通過同網(wǎng)端網(wǎng)閘間vrrp協(xié)議心跳包監(jiān)測(cè)和網(wǎng)閘內(nèi)外處理器間tcp協(xié)議雙重協(xié)商機(jī)制來確保網(wǎng)閘的主備機(jī)切換。而不是當(dāng)前如現(xiàn)有技術(shù)中所采用的完全對(duì)稱結(jié)構(gòu),通過心跳線簡(jiǎn)單監(jiān)測(cè)網(wǎng)閘內(nèi)外端機(jī)的狀態(tài)和主備網(wǎng)閘間處理機(jī)狀態(tài)。解決了網(wǎng)閘“單設(shè)備雙系統(tǒng)”特性下,目前“單設(shè)備單系統(tǒng)”高可用(highavailability)方案無法適用這一難題,并且,本公開告別了完全對(duì)稱結(jié)構(gòu)交叉切換“鎖死”的情況,使網(wǎng)閘的切換性能得到了顯著的提升。
以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。