本發(fā)明涉及計算機,尤其涉及一種主機智能選路的容災備用網絡構建方法。
背景技術:
1、隨著人類社會信息化的不斷發(fā)展,計算機網絡得到了越來越廣泛的應用,計算機網絡已經事實上成為了人們社會生產生活的一種重要基礎設施,人們對網絡的依賴性日益增強。然而在現(xiàn)實生活中,因為發(fā)生雷電、臺風、火災、水災、電源中斷、挖斷光纜、人為蓄意破壞以及操作失誤等各種原因導致網絡出現(xiàn)中斷的現(xiàn)象時有發(fā)生,由于網絡中斷最終導致出現(xiàn)業(yè)務中斷、造成經濟損失和其他不良影響等各種斷網危機也屢見不鮮,事實上,企業(yè)不論規(guī)模大小,都無法承受服務中斷等業(yè)務損失。
2、隨著時代的發(fā)展,人們對高可用性網絡的需求越來越強烈,以前因為高可用性網絡建設成本很高,對成本較為敏感的用戶只好選擇忍痛割愛,現(xiàn)在隨著計算機網絡技術的不斷發(fā)展,計算機網絡的建設成本越來越親民,5g/4g無線網絡現(xiàn)已廣為普及,一些電信運營商甚至還對特定用戶提供免費送寬帶服務,目前建設擁有冗余上網網絡路徑的計算機網絡已經不再遙不可及,基于冗余上網網絡路徑構建高可用性的容災備用網絡系統(tǒng)成為了一個具有較大現(xiàn)實意義和應用價值的時代課題。
3、目前市場上具有容災功能的網絡系統(tǒng),大多基于網絡端的價格較昂貴、使用難度較大、定位較高端的路由器、防火墻等設備進行構建,如采用多wan口路由器,支持vrrp協(xié)議的路由器,支持rip、ospf、bgp等動態(tài)路由協(xié)議的路由器等。然而現(xiàn)實生活中,很多中小型機構和家庭用戶又對網絡建設成本和易用性比較敏感,如果采用一般的電信運營商原配寬帶路由器或普通的家用、商用路由器來構建容災備用網絡系統(tǒng),由于設備間無法實現(xiàn)心跳機制,在主網絡路徑出現(xiàn)故障時,網絡流量需要進行一定的手動操作才能切換到備用網絡路徑上去。
4、一般情況下,用戶為了上網都會向電信運營商申請開通一條有線寬帶線路,如果為了提高網絡的可用性,又新增了一條某電信運營商免費贈送的有線寬帶,或者通過5g/4g無線網絡新增了一條無線上網線路,此時就同時擁有了兩條上網線路;如果選擇同時新增兩條上網線路,此時就同時擁有了三條上網線路,此時的網絡拓撲結構就如圖1所示。有了冗余的上網網絡路徑,在主上網網絡路徑出現(xiàn)斷網等災難事件時,就具備了把網絡流量切換到其他備用網絡路徑上去的基礎。
5、因特網主要采用tcp/ip協(xié)議進行通信,目前上網的pc機主要使用windows系列操作系統(tǒng),也有部分服務器使用windows?server系列操作系統(tǒng),windows操作系統(tǒng)使用主機路由表作為tcp/ip協(xié)議通信的基礎,通常windows操作系統(tǒng)主要基于主機路由表中的默認路由(一種靜態(tài)路由)與因特網進行通信。在基于成本考慮采用一般的電信運營商原配寬帶路由器或普通的家用、商用路由器構建的容災備用網絡系統(tǒng)中,默認情況下由于上網路由器之間及windows操作系統(tǒng)與上網路由器之間沒有路由相關報文的交互,在主網絡路徑不通時,windows操作系統(tǒng)內核無法自動地切換流量到備用網絡路徑上去,雖然網絡系統(tǒng)擁有冗余路徑,但是還是會出現(xiàn)斷網危機。
技術實現(xiàn)思路
1、本發(fā)明的目的在于提供一種主機智能選路的容災備用網絡構建方法,解決現(xiàn)有windows系列操作系統(tǒng)雖然網絡系統(tǒng)擁有冗余上網路徑,但是還是會出現(xiàn)斷網危機的技術問題。
2、為了實現(xiàn)上述目的,本發(fā)明采用的技術方案如下:
3、一種主機智能選路的容災備用網絡構建方法,所述方法包括如下步驟:
4、步驟1:對冗余網絡路徑狀態(tài)監(jiān)測的底層原理進行分析;
5、步驟2:在主機與各冗余網絡路徑之間建立心跳機制;
6、步驟3:進行主機智能選路算法設計;
7、步驟4:進行網絡負載分擔的實現(xiàn)。
8、進一步地,步驟1的具體過程為:
9、windows應用程序通過調用系統(tǒng)內核提供的tcp/ip服務來實現(xiàn)因特網通信,在通信過程中,即使在windows主機所在局域網上有若干個可達因特網的冗余網關,主機的網絡流量也只能固定通過路由表選定的那個默認網關進行傳輸,采用網絡檢測程序無法同時監(jiān)測到若干條冗余網絡路徑的線路狀態(tài),要想同時監(jiān)測若干條冗余網絡路徑的線路狀態(tài),就需要建立一種獨立于windows內核的tcp/ip通信方式;
10、tcp/ip協(xié)議簇中的因特網控制報文協(xié)議中定義了一種回送功能,使用回送請求和回送回答兩種報文來實現(xiàn),一臺主機向目的主機發(fā)送回送請求報文,目的主機收到后必須發(fā)出回送回答報文,如此就可以測試目的主機是否可達,網絡線路是否通暢,通過icmp回送詢問報文來監(jiān)測各冗余網絡路徑的線路狀態(tài);
11、根據(jù)sharppcap的.net庫和packet.net類庫設計出獨立于windows內核的tcp/ip通信程序,實現(xiàn)向遠端主機發(fā)送數(shù)據(jù)包和接收遠端主機回應數(shù)據(jù)包的功能,通過向不同的冗余網絡路徑上的因特網主機發(fā)送icmp回送請求報文,并監(jiān)測沿著不同網絡路徑返回的icmp回送回答報文的情況,監(jiān)測到各冗余網絡路徑的網絡狀態(tài);
12、主機實時感知到各冗余網絡路徑的狀態(tài),在感知到主網絡路徑出故障時,主機通過運行智能選路算法,從可用的備用網絡路徑中選出一條最優(yōu)路徑作為新的通信線路就能解決斷網危機。
13、進一步地,步驟2的具體過程為:
14、步驟2.1:構造監(jiān)測各冗余網絡路徑狀態(tài)的icmp回送請求報文;
15、步驟2.2:將icmp回送請求報文封裝成ip數(shù)據(jù)報;
16、步驟2.3:將ip數(shù)據(jù)報封裝成以太網幀并發(fā)送給指定網關;
17、步驟2.4:監(jiān)測各冗余網絡路徑icmp回送回答報文是否到達。
18、進一步地,步驟2.1的具體過程為:
19、在構造icmp回送請求報文時,將id字段用來標識各冗余網絡路徑的網關,code字段賦值為0,sequence字段用來標識通過同一個網關一次連發(fā)的若干個不同的回送請求報文,后一個回送請求報文的sequence字段值在前一個報文的sequence字段值的基礎上加1,設置一次連發(fā)報文的數(shù)量為4個或4個以上,payload字段放入相應冗余網絡路徑網關的ip地址,以用于對回送回答報文進行檢驗,判斷該報文是否是目的主機從相應的冗余網絡路徑發(fā)回的回送回答報文,以在icmp協(xié)議層實現(xiàn)判斷數(shù)據(jù)包來源網關的方法。
20、進一步地,步驟2.2的具體過程為:
21、在構造ip數(shù)據(jù)報時,將獲取到的本機ip地址作為ip數(shù)據(jù)報的源地址,選取一個因特網主機作為詢問目的主機,將主機的ip地址作為ip數(shù)據(jù)報的目的ip地址,將構造好的icmp回送請求報文數(shù)據(jù)包賦值給ip數(shù)據(jù)報的載荷字段,然后更新ip數(shù)據(jù)報的上層協(xié)議、報文長度、校驗和信息即可構造出相應的ip數(shù)據(jù)報。
22、進一步地,步驟2.3的具體過程為:
23、在構造以太網幀時,先創(chuàng)建一個sharppcap中的arp類對象,通過調用arp類對象的resolve方法將網關的ip地址進行解析得到網關的物理地址,如解析不成功,則說明該網關有故障,如能正常解析出物理地址,就將該物理地址作為要構造的以太網幀的目的地址,將本機網卡的物理地址作為以太網幀的源地址,類型字段設置成ip數(shù)據(jù)報的類型值,再將已經構造好的ip數(shù)據(jù)報賦值給以太網幀的載荷字段,將ip數(shù)據(jù)報封裝成以太網幀;
24、在把封裝好的以太網幀通過網卡發(fā)送出去后,物理地址是以太網幀的目的地址的網關就會收到該幀,網關收到以太網幀后,解封得到ip數(shù)據(jù)報,檢查ip數(shù)據(jù)報的目的地址不是自身后,將ip數(shù)據(jù)報沿著上網路徑轉發(fā)出去,最后送達給相應的因特網主機。
25、進一步地,步驟2.4的具體過程為:
26、在因特網主機收到從上網網絡路徑轉發(fā)過來的icmp回送請求報文后,會從原上網路徑發(fā)回一個icmp回送回答報文給源主機,將sharppcap.libpcap.libpcaplivedevice對象的filter屬性設置為"icmp",即可通過sharppcap捕獲到icmp流量,在給每個上網路徑的網關連發(fā)n個封裝有icmp回送請求報文的以太網幀后,n≥4,在響應超時之前,通過檢查捕獲到的icmp流量的以太網幀的源地址和目的地址、ip數(shù)據(jù)報的源ip地址和目的ip地址以及icmp報文的type、code、id、sequence、payload字段,監(jiān)測到因特網目的主機發(fā)回的針對各冗余上網路徑發(fā)送出去的icmp回送請求報文的響應情況,通過計算、統(tǒng)計相應的回送回答報文丟包率和rtt(round-trip?time,往返時間),判斷出各冗余上網路徑的狀態(tài);
27、通過創(chuàng)建system.timers.timer對象,定時周期性地通過各冗余上網路徑的網關向因特網主機發(fā)送icmp回送請求報文,以及持續(xù)性地檢查主機收到的icmp流量,監(jiān)測因特網主機發(fā)回的icmp回送回答報文情況,在上網主機與各冗余上網路徑之間建立起一種心跳機制,使主機能實時監(jiān)測到各冗余上網路徑的狀態(tài);
28、如果在某條上網路徑上監(jiān)測不到相應的icmp回送回答報文,即丟包率達100%,則說明該上網路徑已經不通,如果是主上網路徑不通,則立即運行智能選路算法,從備用上網路徑中選出可用的最優(yōu)路徑作為新的主上網路徑,將網絡流量切換到新的主上網路徑上去,以保證網絡系統(tǒng)具有很高的可用性。
29、進一步地,步驟3的具體過程為:
30、步驟3.1:設計主機智能選路系統(tǒng)初始化過程
31、windows系統(tǒng)基于默認路由從若干條冗余網絡路徑中選取一條進行通信,為了便于描述和選擇網絡路徑,在擁有若干條冗余上網路徑的容災備用網絡中,根據(jù)業(yè)務應用需要及各上網路徑的實際使用經驗,綜合考慮網絡帶寬、延遲、延遲抖動以及網絡可用性等各種因素,用量化的方式來給各上網路徑的網絡質量打分并設置到軟件中去,以此作為上網路徑選擇的優(yōu)先級;
32、在windows系統(tǒng)啟動后容災備用網絡系統(tǒng)初始化時,軟件通過心跳機制檢測到各上網路徑的狀態(tài),對能正常工作的網絡路徑按照優(yōu)先級大小排序,從中選取優(yōu)先級最高的路徑作為主網絡路徑,其他路徑作為備用網絡路徑,并在windows主機路由表中將默認路由的網關指向主網絡路徑的上網路由器,以使網絡流量通過主網絡路徑進行傳輸;
33、步驟3.2:設計主機智能選路容災方法
34、在軟件通過心跳機制監(jiān)測到主網絡路徑出現(xiàn)故障時,就從剩余的可正常工作的備用網絡路徑中選出優(yōu)先級最高的路徑作為新的主網絡路徑,如果所有網絡路徑都不通則主網絡路徑就保持不變;
35、接下來軟件修改主機路由表的默認路由,將默認路由的網關指向新選出的主網絡路徑的上網路由器,將網絡流量快速切換成通過新選出的主網絡路徑進行傳輸,具體實現(xiàn)分兩步進行:第一為軟件調用cmd.exe運行系統(tǒng)命令route?delete?0.0.0.0,刪除掉原來的默認路由,第二為軟件調用cmd.exe運行系統(tǒng)命令route?add?0.0.0.0mask0.0.0.0x.x.x.x,其中x.x.x.x為新選出的主網絡路徑的網關ip,將默認路由的網關指向新選出的主網絡路徑的路由器;
36、步驟3.3:設計主機智能選路災難恢復方法
37、在軟件通過心跳機制監(jiān)測到有備用網絡路徑從斷網災難中恢復時,將網絡路徑的優(yōu)先級與現(xiàn)有的主網絡路徑優(yōu)先級進行比較,如果高于現(xiàn)有主網絡路徑,則選取剛恢復的更高優(yōu)先級網絡路徑作為新的主網絡路徑,同時現(xiàn)有主網絡路徑轉為備用網絡路徑角色,否則系統(tǒng)的各網絡路徑主備角色保持不變;
38、如果主網絡路徑有變化,軟件接下來修改主機路由表中的默認路由網關,將其指向新選出的主網絡路徑的上網路由器,以將網絡流量切換到已恢復的更高優(yōu)先級網絡路徑上,使得容災備用網絡系統(tǒng)永遠都是選擇可用的質量最好的網絡路徑進行通信,從而保證上網主機始終能擁有最優(yōu)的上網質量,具體實現(xiàn)仍分兩步進行:第一,軟件調用cmd.exe運行系統(tǒng)命令route?delete0.0.0.0;第二,軟件調用cmd.exe運行系統(tǒng)命令route?add0.0.0.0mask?0.0.0.0x.x.x.x,其中x.x.x.x為新選出的主網絡路徑的網關ip;
39、在主機通過軟件能自動感知到網絡環(huán)境的狀態(tài)和狀態(tài)變化的基礎上,完全自動自主地完成對網絡環(huán)境變化的分析、判斷并做出正確決策和及時反應,對于每次網絡環(huán)境的變化,均能基于變化后的網絡環(huán)境自動自主地選出最優(yōu)的網絡路徑作為主網絡路徑,并管理好各冗余上網網絡路徑的主備角色切換,同時完成上網網絡流量的切換,能保證上網主機永遠都能從當前網絡環(huán)境中挑選出最優(yōu)的網絡路徑進行上網,相對于windows系統(tǒng)的默認主機路由方式,表現(xiàn)出了很強的智能性。
40、進一步地,步驟4的具體過程為:
41、在采用主備方式工作的容災備用網絡系統(tǒng)中,主機的網絡流量通過主網絡路徑進行傳輸,備用網絡路徑都處于閑置(即備用)狀態(tài),會導致整個網絡系統(tǒng)的網絡帶寬利用率不夠高,在有若干臺主機同時上網的環(huán)境中,根據(jù)既定主機智能選路算法,在不同的主機上針對相同的上網網絡路徑設置不同的優(yōu)先級,從而使得在同一時刻各主機選出的主網絡路徑不同,以實現(xiàn)同一時刻不同主機的網絡流量通過不同的網絡路徑進行傳輸,最終實現(xiàn)按照既定的主機智能選路算法進行網絡負載分擔,在保持容災備用功能的前提下,提高整個容災備用網絡系統(tǒng)的網絡帶寬利用率。
42、本發(fā)明由于采用了上述技術方案,具有以下有益效果:
43、本發(fā)明在有多條冗余上網網絡路徑的情況下,本容災備用網絡系統(tǒng)具有非常高的可用性,可解決斷網危機。本容災備用網絡系統(tǒng)創(chuàng)新性地使用主機通過軟件實時監(jiān)測各冗余網絡路徑的狀態(tài),并進行自動智能路由選路,不再依賴價格較昂貴、使用難度較大、定位較高端的路由器等硬件設備,只需使用電信運營商原配的寬帶上網路由器即可,與采用價格較昂貴、定位較高端的路由器等硬件設備來實現(xiàn)容災備用功能的方案相比,硬件方案成本較高且成本具有不可壓縮的剛性,而軟件方案的軟件成本主要集中在開發(fā)階段,且開發(fā)成本并不高,隨著軟件使用規(guī)模的不斷擴大,分攤到每臺上網主機上的軟件使用成本可以變得很低,如果軟件開源則軟件使用成本還可為0,因此本容災備用網絡系統(tǒng)具有成本很低廉的優(yōu)點。同時軟件的使用也很簡便,設置好參數(shù)后,開機自動運行即可。本容災備用網絡系統(tǒng)對于一些對成本較為敏感的中小型機構及家庭用戶,在希望以低成本完成高可用網絡計算的場合中具有較高的推廣應用價值。