亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于集群路由器結(jié)構(gòu)的高可用分布式邊界網(wǎng)關(guān)協(xié)議系統(tǒng)的制作方法

文檔序號(hào):7612527閱讀:176來源:國知局
專利名稱:基于集群路由器結(jié)構(gòu)的高可用分布式邊界網(wǎng)關(guān)協(xié)議系統(tǒng)的制作方法
技術(shù)領(lǐng)域
基于集群路由器結(jié)構(gòu)的高可用分布式邊界網(wǎng)關(guān)協(xié)議系統(tǒng)屬于路由協(xié)議系統(tǒng)結(jié)構(gòu)領(lǐng)域,尤其涉及雙節(jié)點(diǎn)備份技術(shù)和多節(jié)點(diǎn)分布式計(jì)算系統(tǒng)。
背景技術(shù)
Internet的飛速發(fā)展對(duì)網(wǎng)絡(luò)設(shè)備的計(jì)算能力、轉(zhuǎn)發(fā)能力和端口密度都提出了更高的要求。單個(gè)路由節(jié)點(diǎn)在可靠性、性能可擴(kuò)展性、規(guī)模可擴(kuò)展性和服務(wù)可擴(kuò)展性等方面有其難以逾越的障礙,已經(jīng)不能滿足下一代Internet發(fā)展需要。核心路由器技術(shù)正在經(jīng)歷著巨大的變化,以T比特核心路由器為代表,路由器體系結(jié)構(gòu)向著路由器群集、分布式、可擴(kuò)展方向發(fā)展。
路由器硬件體系結(jié)構(gòu)從集中控制方式發(fā)展到集群結(jié)構(gòu)下的分布式并行處理方式,路由器軟件技術(shù)的發(fā)展則相對(duì)比較滯后。在傳統(tǒng)的路由器中,所有路由協(xié)議、路由策略相關(guān)的計(jì)算功能還只能在單個(gè)節(jié)點(diǎn)上運(yùn)行,其他節(jié)點(diǎn)只是作為備份節(jié)點(diǎn),并沒有真正實(shí)現(xiàn)軟件系統(tǒng)可擴(kuò)展和高可用。
邊界網(wǎng)關(guān)協(xié)議(BGP)作為Internet域間網(wǎng)絡(luò)協(xié)議,負(fù)責(zé)自治域間的路由可達(dá)信息的交互。BGP協(xié)議對(duì)等體之間相互建立連接,通過發(fā)送路由更新(UPDATE)報(bào)文通知路由信息的變化。每個(gè)BGP實(shí)體根據(jù)自己的策略計(jì)算路由信息的優(yōu)先級(jí),并選擇出最優(yōu)的路由。
Internet核心路由器控制平面的BGP協(xié)議性能面臨新的挑戰(zhàn)。目前Internet骨干結(jié)點(diǎn)的BGP路由表容量呈現(xiàn)出線性增長與指數(shù)增長交替的趨勢(shì),在大容量路由表?xiàng)l件下,路由器需要消耗更多的存儲(chǔ)空間,造成路由更新處理變慢,增加BGP協(xié)議的計(jì)算開銷。傳統(tǒng)單進(jìn)程集中控制的BGP實(shí)現(xiàn)在可靠性、路由表容量、路由計(jì)算能力和支持的鄰居規(guī)模上都無法滿足未來Internet的發(fā)展需求。
本發(fā)明充分利用集群結(jié)構(gòu)路由器硬件平臺(tái)所提供的分布式計(jì)算資源與存儲(chǔ)能力,設(shè)計(jì)了合理的劃分算法,將BGP實(shí)現(xiàn)分布到各個(gè)節(jié)點(diǎn)并行運(yùn)行,使各節(jié)點(diǎn)的計(jì)算負(fù)載和內(nèi)存消耗得到均衡,從而提高BGP系統(tǒng)的整體效率。同時(shí),對(duì)系統(tǒng)中可能存在的單一失效點(diǎn)實(shí)現(xiàn)冗余備份,達(dá)到提高整體系統(tǒng)可靠性的目的。

發(fā)明內(nèi)容
本發(fā)明的目的在于克服傳統(tǒng)的單節(jié)點(diǎn)BGP實(shí)現(xiàn)的計(jì)算能力、存儲(chǔ)能力以及可靠性的不足,提供一種基于集群路由器結(jié)構(gòu)的高可用分布式的BGP實(shí)現(xiàn)方案。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是如圖1所示,在集群結(jié)構(gòu)中,一個(gè)節(jié)點(diǎn)為連接節(jié)點(diǎn),一個(gè)節(jié)點(diǎn)作為主控節(jié)點(diǎn),另一個(gè)節(jié)點(diǎn)為主控節(jié)點(diǎn)的備份節(jié)點(diǎn),其他節(jié)點(diǎn)作為從節(jié)點(diǎn)。連接節(jié)點(diǎn)負(fù)責(zé)與外部Internet的連接,在外部Internet和內(nèi)部節(jié)點(diǎn)之間轉(zhuǎn)發(fā)數(shù)據(jù)。主控節(jié)點(diǎn)負(fù)責(zé)管理從節(jié)點(diǎn)以及與對(duì)等體建立連接,并根據(jù)劃分算法,將對(duì)等體的路由更新(UPDATE)報(bào)文分配給從節(jié)點(diǎn)處理,從節(jié)點(diǎn)對(duì)UPDATE報(bào)文進(jìn)行解析后計(jì)算路由。
基于集群路由器結(jié)構(gòu)高可用分布式BGP系統(tǒng)由兩部分組成主控節(jié)點(diǎn)子系統(tǒng)和從節(jié)點(diǎn)子系統(tǒng)。主控節(jié)點(diǎn)子系統(tǒng)運(yùn)行在主控節(jié)點(diǎn)上,實(shí)現(xiàn)與接對(duì)等體建立連接、對(duì)從節(jié)點(diǎn)的管理以及負(fù)載的分配,同時(shí),將重要信息發(fā)送給備份節(jié)點(diǎn);從節(jié)點(diǎn)子系統(tǒng)運(yùn)行在從節(jié)點(diǎn)上,用于解析UPDATE報(bào)文以及路由計(jì)算。
通過主控節(jié)點(diǎn)的集中控制,使分布式BGP系統(tǒng)便于管理,通過對(duì)主控節(jié)點(diǎn)的備份,使系統(tǒng)沒有單一失效點(diǎn),提高了系統(tǒng)的可靠性;通過劃分算法的合理分配,使各從節(jié)點(diǎn)的負(fù)載均衡,提高了整體BGP系統(tǒng)的性能。
本發(fā)明的特征在于在集群路由器結(jié)構(gòu)中,選取一個(gè)節(jié)點(diǎn)作為主控節(jié)點(diǎn),另一個(gè)節(jié)點(diǎn)為主控節(jié)點(diǎn)的備份節(jié)點(diǎn),構(gòu)成主控節(jié)點(diǎn)子系統(tǒng);一個(gè)連接節(jié)點(diǎn);其他節(jié)點(diǎn)作為從節(jié)點(diǎn),構(gòu)成從節(jié)點(diǎn)子系統(tǒng);主控節(jié)點(diǎn)、從節(jié)點(diǎn)和連接節(jié)點(diǎn)通過高速交換網(wǎng)組成所述基于集群路由器結(jié)構(gòu)的高可用分布式邊界網(wǎng)關(guān)協(xié)議系統(tǒng),所述系統(tǒng)基于網(wǎng)絡(luò)傳輸控制協(xié)議通過連接節(jié)點(diǎn)和對(duì)等體建立連接,所述對(duì)等體是指與所述系統(tǒng)交互協(xié)議信息的邊界網(wǎng)關(guān)協(xié)議系統(tǒng);其中,A.主控節(jié)點(diǎn)子系統(tǒng)運(yùn)行在所述主控節(jié)點(diǎn)上,負(fù)責(zé)以下任務(wù)與所述對(duì)等體建立連接;根據(jù)劃分算法把從對(duì)等體接收的載有路由更新消息的路由更新報(bào)文發(fā)送給相應(yīng)的從節(jié)點(diǎn)處理,所述的路由更新消息用“UPDATE消息”表示;接收各從節(jié)點(diǎn)UPDATE消息處理后的局部最優(yōu)路由并從中選擇出全局最優(yōu)路由;將UPDATE消息通告給所述對(duì)等體;管理從節(jié)點(diǎn)以及把重要消息發(fā)送給所述備份節(jié)點(diǎn);在所述主控節(jié)點(diǎn)上維護(hù)以下數(shù)據(jù)庫全局最優(yōu)路由數(shù)據(jù)信息庫保存路由計(jì)算得到的路由器全局最優(yōu)路由信息;從節(jié)點(diǎn)數(shù)據(jù)庫保存分布式BGP系統(tǒng)中工作的從節(jié)點(diǎn)ID,每個(gè)從節(jié)點(diǎn)的工作負(fù)責(zé)情況,以及主控節(jié)點(diǎn)與從節(jié)點(diǎn)的通訊操作備份,所述BGP系統(tǒng)指的是邊界網(wǎng)關(guān)協(xié)議系統(tǒng);輸出路由信息庫保存發(fā)送給對(duì)等體的路由更新信息;在所述主控節(jié)點(diǎn)上配置了以下軟件模塊(1)分布式劃分算法模塊當(dāng)所述BGP系統(tǒng)與新的對(duì)等體建立連接后,主控節(jié)點(diǎn)選擇負(fù)載最小的從節(jié)點(diǎn)來處理新的對(duì)等體的UPDATE消息;(2)從節(jié)點(diǎn)管理模塊該模塊包括以下各子模塊(2.1)從節(jié)點(diǎn)加入子模塊新加入節(jié)點(diǎn)由管理員配置ID和主控節(jié)點(diǎn)ID,當(dāng)新節(jié)點(diǎn)加入Cluster時(shí),立即發(fā)送消息通告主控節(jié)點(diǎn),主控節(jié)點(diǎn)回應(yīng)這個(gè)消息,確認(rèn)新節(jié)點(diǎn)的加入,并將新節(jié)點(diǎn)的信息加入到從節(jié)點(diǎn)信息庫中,所述Cluster即集群路由器結(jié)構(gòu);(2.2)從節(jié)點(diǎn)退出子模塊主控節(jié)點(diǎn)刪除從節(jié)點(diǎn)信息庫中退出從節(jié)點(diǎn)的信息,并按照劃分算法把這個(gè)從節(jié)點(diǎn)上處理的對(duì)等體重新分配給其他的從節(jié)點(diǎn)處理;
(2.3)從節(jié)點(diǎn)狀態(tài)監(jiān)控子模塊主控節(jié)點(diǎn)周期性的向其他所有從節(jié)點(diǎn)發(fā)送詢問消息,收到詢問消息的從節(jié)點(diǎn)向主控節(jié)點(diǎn)回復(fù)消息,沒有回復(fù)消息的從節(jié)點(diǎn)將被認(rèn)為故障;(2.4)從節(jié)點(diǎn)故障處理子模塊主控節(jié)點(diǎn)通過狀態(tài)監(jiān)控發(fā)現(xiàn)某個(gè)從節(jié)點(diǎn)出現(xiàn)故障,主控節(jié)點(diǎn)刪除從節(jié)點(diǎn)信息庫中這個(gè)從節(jié)點(diǎn)的信息,并按照劃分算法把這個(gè)從節(jié)點(diǎn)上處理的對(duì)等體重新分配給其他的從節(jié)點(diǎn)處理;(3)與對(duì)等體建立連接模塊該模塊依次按以下步驟實(shí)現(xiàn)與對(duì)等體的連接步驟3-1啟動(dòng)與對(duì)等體的連接;步驟3-2啟動(dòng)TCP連接;步驟3-3建立BGP連接,按以下步驟進(jìn)行步驟3-3-1向?qū)Φ润w發(fā)送用來建立BGP對(duì)等體連接的問訊消息,稱為OPEN消息;步驟3-3-2接收到對(duì)等體的OPEN消息后,向?qū)Φ润w回復(fù)保持BGP連接的通告消息稱為KEEPALIVE消息,同時(shí)等待對(duì)等體的KEEPALIVE消息,連接狀態(tài)設(shè)置為OpenConfirm;步驟3-3-3接收對(duì)等體的KEEPALIVE消息,完成與對(duì)等體的連接,連接狀態(tài)設(shè)置為Established;步驟3-4主控節(jié)點(diǎn)根據(jù)所述分配算法選出負(fù)載最小的從節(jié)點(diǎn),由該從節(jié)點(diǎn)處理該對(duì)等體的UPDATE消息;(4)處理BGP消息模塊該模塊按以下步驟實(shí)現(xiàn)消息處理步驟4-1主控節(jié)點(diǎn)調(diào)用TCP socket讀函數(shù)得到BGP消息;步驟4-2主控節(jié)點(diǎn)處理不同類型消息步驟4-2-1處理OPEN消息從OPEN消息中讀取版本號(hào)、自治域號(hào)、超時(shí)時(shí)間、BGP標(biāo)識(shí)符四個(gè)域的值,并分別予以檢驗(yàn);根據(jù)自治域號(hào)和BGP標(biāo)識(shí)符判斷OPEN消息是否來自管理員設(shè)置的鄰居節(jié)點(diǎn)若不是,則發(fā)送用NOTIFICATION表示的故障消息與對(duì)等體中斷連接;若是,則進(jìn)行以下檢測(cè);根據(jù)BGP協(xié)議的連接沖突檢測(cè)定義進(jìn)行沖突檢測(cè)若有沖突并需關(guān)閉該連接便發(fā)送故障消息以中斷與該對(duì)等體的連接;若無沖突,便執(zhí)行以下檢測(cè)檢測(cè)版本號(hào)是否正確若不正確,發(fā)送故障消息給該對(duì)等體以中斷連接;若正確,便執(zhí)行以下檢測(cè);檢測(cè)超時(shí)時(shí)間是否為零或者小于3秒若不是,發(fā)送故障消息以中斷與該對(duì)等體的連接;否則,便執(zhí)行以下檢測(cè);比較本路由器BGP實(shí)體設(shè)置的超時(shí)時(shí)間置和接收的OPEN消息中的超時(shí)時(shí)間值,以值小的作為這個(gè)連接的超時(shí)時(shí)間值,設(shè)置保持BGP連接的通告消息定時(shí)器的值為所述連接超時(shí)時(shí)間值的三分之一;
發(fā)送保持BGP連接的通告消息給該對(duì)等體確認(rèn)接收OPEN消息,連接狀態(tài)設(shè)置為OpenConfirm狀態(tài);步驟4-2-2處理保持BGP連接的通告消息當(dāng)連接狀態(tài)為OpenConfirm狀態(tài)時(shí),主控節(jié)點(diǎn)把連接狀態(tài)變?yōu)镋stablished狀態(tài)并向?qū)Φ润w發(fā)送保持BGP連接的通告消息;當(dāng)連接狀態(tài)為Established狀態(tài)時(shí),增加保持BGP連接的通告消息接收計(jì)數(shù),重置超時(shí)時(shí)間定時(shí)器;步驟4-2-3處理從對(duì)等體接收到的路由更新消息主控節(jié)點(diǎn)收到路由更新消息后,把路由更新消息發(fā)送給相應(yīng)的從節(jié)點(diǎn);由從節(jié)點(diǎn)作以下檢查;對(duì)整個(gè)屬性長度作檢查,若超過規(guī)定長度,通過故障消息通告對(duì)等體,丟棄該路由更新消息;若路由更新消息中包括不可用路由,檢查該路由長度是否正確,若超過規(guī)定值,向?qū)Φ润w發(fā)送故障消息并丟棄該路由更新消息;否則,對(duì)該不可用路由進(jìn)行語法檢查,若有錯(cuò)誤,便丟棄該路由更新消息;若正確,便獲取不可用路由的值存入變量中;若路由更新消息中包含可用路由,則檢查該路由的長度,若超過規(guī)定值,向?qū)Φ润w發(fā)送故障消息并丟棄該路由更新消息;否則,對(duì)該可用路由的路徑屬性的每個(gè)域進(jìn)行檢查,若有錯(cuò)誤,便丟棄該路由更新消息;若正確,便獲取路由屬性各個(gè)域的值存入一個(gè)結(jié)構(gòu)變量中;對(duì)于不可用路由,從輸入路由信息庫中刪除該路由,啟動(dòng)分布式BGP路由計(jì)算;對(duì)于可用路由,更新輸入路由信息庫,保存路徑屬性,啟動(dòng)分布式BGP路由計(jì)算;步驟4-2-4處理故障消息主控節(jié)點(diǎn)獲取該故障消息中各個(gè)域的值,顯示錯(cuò)誤信息,斷開與故障對(duì)等體的連接;接著,通知該對(duì)等體UPDATE消息的處理從節(jié)點(diǎn)刪除包括故障對(duì)等體所發(fā)布的路由以及路由屬性在內(nèi)的所有相關(guān)信息;(5)雙節(jié)點(diǎn)冗余備份模塊主控節(jié)點(diǎn)和備份節(jié)點(diǎn)形成雙節(jié)點(diǎn)備份的硬件環(huán)境,但是節(jié)點(diǎn)之間不提供相互的軟硬件失效的硬件檢測(cè)機(jī)制,它們通過心跳算法實(shí)現(xiàn)雙機(jī)的狀態(tài)監(jiān)測(cè);主控節(jié)點(diǎn)和備份節(jié)點(diǎn)都運(yùn)行主控節(jié)點(diǎn)子系統(tǒng),當(dāng)主控節(jié)點(diǎn)正常工作時(shí),備份節(jié)點(diǎn)只能接收主控節(jié)點(diǎn)的備份消息,并把備份消息中的備份數(shù)據(jù)備份到相應(yīng)的數(shù)據(jù)庫中;當(dāng)主控節(jié)點(diǎn)出現(xiàn)故障時(shí),備份節(jié)點(diǎn)接替主控節(jié)點(diǎn)的工作;為實(shí)現(xiàn)這種失效轉(zhuǎn)移,采用了的方法是進(jìn)行檢查點(diǎn)(CheckPoint)狀態(tài)備份,然后進(jìn)行狀態(tài)回滾恢復(fù);該模塊按以下步驟實(shí)現(xiàn)步驟1.雙節(jié)點(diǎn)備份的狀態(tài)檢測(cè)主控節(jié)點(diǎn)定時(shí)發(fā)送查詢消息給備份節(jié)點(diǎn),備份節(jié)點(diǎn)回復(fù)消息;當(dāng)主控節(jié)點(diǎn)收不到備份節(jié)點(diǎn)的回復(fù)消息時(shí),就認(rèn)為備份節(jié)點(diǎn)故障,這時(shí)主控節(jié)點(diǎn)將不會(huì)向備份節(jié)點(diǎn)發(fā)送備份消息;當(dāng)備份節(jié)點(diǎn)不能收到主控節(jié)點(diǎn)的查詢消息時(shí),就認(rèn)為主控節(jié)點(diǎn)出現(xiàn)故障,這時(shí)備份節(jié)點(diǎn)將進(jìn)行狀態(tài)回滾恢復(fù),接替主控節(jié)點(diǎn)的工作;步驟2.狀態(tài)備份在主控節(jié)點(diǎn)模塊中,需要備份的狀態(tài)信息可以分為兩類,一類是通訊相關(guān)的狀態(tài)信息,包括主控節(jié)點(diǎn)與從節(jié)點(diǎn)的通訊信息;另一類是應(yīng)用相關(guān)的狀態(tài)數(shù)據(jù),包括對(duì)等體連接狀態(tài)、全局最優(yōu)路由信息庫、輸出路由信息庫、從節(jié)點(diǎn)信息庫;對(duì)于通訊相關(guān)的狀態(tài)數(shù)據(jù)來說,任何一次操作都可能涉及到從節(jié)點(diǎn)的狀態(tài)變化,所以它們的狀態(tài)備份必須做到小粒度的備份,在每一次主控節(jié)點(diǎn)與從節(jié)點(diǎn)進(jìn)行通訊后進(jìn)行相應(yīng)的狀態(tài)備份;當(dāng)主控節(jié)點(diǎn)與從節(jié)點(diǎn)通訊時(shí),主控節(jié)點(diǎn)同時(shí)將通訊數(shù)據(jù)讀寫操作備份到備份節(jié)點(diǎn)中,備份的讀寫操作中包括讀寫操作的讀取和寫入數(shù)據(jù),數(shù)據(jù)長度,以及操作返回的結(jié)果;而對(duì)于應(yīng)用相關(guān)的狀態(tài)數(shù)據(jù),數(shù)據(jù)量大,備份粒度較大,主控節(jié)點(diǎn)每隔一段的時(shí)間把這些應(yīng)用相關(guān)數(shù)據(jù)發(fā)送給備份節(jié)點(diǎn);步驟3.狀態(tài)回滾恢復(fù)當(dāng)主控節(jié)點(diǎn)出現(xiàn)故障時(shí),備份節(jié)點(diǎn)接替主控節(jié)點(diǎn)工作,這時(shí)應(yīng)用相關(guān)的狀態(tài)數(shù)據(jù)已經(jīng)保存在備份節(jié)點(diǎn)的相應(yīng)數(shù)據(jù)庫中,備份節(jié)點(diǎn)上的主控節(jié)點(diǎn)子系統(tǒng)可以直接使用這些狀態(tài)數(shù)據(jù)啟動(dòng),然后重復(fù)進(jìn)行通訊數(shù)據(jù)讀寫操作,但是通訊數(shù)據(jù)讀寫操作不是在進(jìn)行實(shí)際的數(shù)據(jù)讀寫操作,而是從備份的讀寫操作中返回相應(yīng)的數(shù)據(jù)和結(jié)果;B.從節(jié)點(diǎn)子系統(tǒng),負(fù)責(zé)路由更新消息處理,局部最優(yōu)路由選擇,還要配合主控節(jié)點(diǎn)進(jìn)行全局最優(yōu)路由選擇;該從節(jié)點(diǎn)子系統(tǒng)僅有分布式BGP路由計(jì)算子模塊,按以下步驟以完成從節(jié)點(diǎn)子系統(tǒng)的任務(wù)(1)優(yōu)先級(jí)計(jì)算當(dāng)從節(jié)點(diǎn)對(duì)UPDATE報(bào)文解析后,發(fā)現(xiàn)有可用路由,觸發(fā)優(yōu)先級(jí)計(jì)算過程;在優(yōu)先級(jí)計(jì)算過程中,鎖定輸入路由信息庫,根據(jù)預(yù)先設(shè)定好的策略,對(duì)新的可用路由或者是替代路由計(jì)算一個(gè)優(yōu)先級(jí);計(jì)算完成后,解開輸入路由信息庫,觸發(fā)路由選擇過程;(2)路由選擇在分布式BGP系統(tǒng)中,路由選擇分為兩步完成,第一步是從節(jié)點(diǎn)選擇局部最優(yōu)路由,第二步是主控節(jié)點(diǎn)選擇全局最優(yōu)路由;當(dāng)優(yōu)先級(jí)計(jì)算過程完成后,首先激活從節(jié)點(diǎn)路由選擇;從節(jié)點(diǎn)路由選擇過程鎖定輸入路由信息庫,從所有與新的可用路由目的地相同的路由中選出優(yōu)先級(jí)最高的一條路由,如果選出的路由與局部最優(yōu)路由信息庫中保存的路由相同,結(jié)束路由選擇過程;否則,更新局部最優(yōu)信息庫,解開輸入路由信息庫,同時(shí)通過系統(tǒng)的分布式消息機(jī)制把這條路由信息發(fā)送給主控節(jié)點(diǎn),激活主控節(jié)點(diǎn)全局路由選擇過程;主控節(jié)點(diǎn)上保存著所有從節(jié)點(diǎn)的局部最優(yōu)路由,當(dāng)收到一條從節(jié)點(diǎn)發(fā)送來的新的路由時(shí),鎖定全局最優(yōu)路由信息庫,從所有與新的可用路由目的地相同的路由中選出優(yōu)先級(jí)最高的一條路由,更新全局最優(yōu)路由信息庫,解開全局最優(yōu)路由信息庫,觸發(fā)路由分發(fā)過程;(3)路由分發(fā)路由分發(fā)過程被路由選擇過程激活,將全局最優(yōu)路由信息庫的更新路由包裝到UPDATE消息中,發(fā)送給每個(gè)對(duì)端,同時(shí)在每個(gè)對(duì)等體的輸出路由信息庫中記錄發(fā)送的路由;本發(fā)明所提出的基于集群路由器結(jié)構(gòu)高可用分布式BGP系統(tǒng),克服了傳統(tǒng)的單節(jié)點(diǎn)BGP系統(tǒng)性能和可靠性的不足,提供了一種新的BGP系統(tǒng)實(shí)現(xiàn)方案,通過構(gòu)建一個(gè)集群結(jié)構(gòu)分布式處理系統(tǒng),可以實(shí)現(xiàn)BGP報(bào)文的快速處理和BGP的可靠服務(wù)。


圖1.基于集群路由器結(jié)構(gòu)分布式BGP系統(tǒng)結(jié)構(gòu)圖2.從節(jié)點(diǎn)狀態(tài)信息查詢示意3.主控節(jié)點(diǎn)子系統(tǒng)與對(duì)等體建立連接流程4.分布式BGP路由計(jì)算示意5.容錯(cuò)應(yīng)用系統(tǒng)的狀態(tài)備份和回滾恢復(fù)示意圖具體實(shí)施方式
基于集群路由器結(jié)構(gòu)高可用分布式BGP系統(tǒng)主要由兩個(gè)子系統(tǒng)構(gòu)成主控節(jié)點(diǎn)子系統(tǒng)和從節(jié)點(diǎn)系統(tǒng)子系統(tǒng)。
●主要功能主控節(jié)點(diǎn)子系統(tǒng)與對(duì)等體建立連接;根據(jù)劃分算法把接收的路由更新報(bào)文發(fā)送給相應(yīng)的從節(jié)點(diǎn)處理;接收各從節(jié)點(diǎn)BGP消息處理后的局部最優(yōu)路由并選出全局最優(yōu)路由;將路由更新通告給對(duì)等體;管理從節(jié)點(diǎn)。
從節(jié)點(diǎn)子系統(tǒng)對(duì)UPDATE消息進(jìn)行解析;計(jì)算各條路由的優(yōu)先級(jí);選出局部最優(yōu)路由。
●幾個(gè)重要概念BGP實(shí)體路由器上運(yùn)行的BGP系統(tǒng)。
BGP對(duì)等體與當(dāng)前系統(tǒng)交互協(xié)議消息的BGP系統(tǒng)。
BGP定義了4種報(bào)文□OPEN消息用來建立BGP對(duì)等體連接的問訊消息;□UPDATE消息路由更新消息;□KEEPALIVE消息保持BGP連接的通告消息;□NOTIFICATION消息故障通告消息;同時(shí)BGP定義了六種與對(duì)等體連接狀態(tài)啟動(dòng)對(duì)等體連接即Idle狀態(tài),啟動(dòng)TCP連接即Connect狀態(tài)、等待TCP連接即Active狀態(tài)、發(fā)送Open消息即OpenSent狀態(tài)、等待接收OPEN消息確認(rèn)即OpenConfirm狀態(tài)、BGP連接成功即Established狀態(tài),用來描述與BGP對(duì)等體連接建立過程中的不同階段。在每個(gè)連接狀態(tài),需要接收的BGP消息不同,并且,會(huì)根據(jù)接收到的BGP消息改變連接狀態(tài)主控節(jié)點(diǎn)子系統(tǒng)維護(hù)的數(shù)據(jù)庫□全局最優(yōu)路由信息庫保存路由計(jì)算得到的路由器全局最優(yōu)路由信息;□從節(jié)點(diǎn)數(shù)據(jù)庫保存分布式BGP系統(tǒng)中工作的從節(jié)點(diǎn)ID,以及每個(gè)從節(jié)點(diǎn)的工作負(fù)載情況。
□輸出路由信息庫保存發(fā)送給對(duì)等體的路由更新報(bào)文信息;
從節(jié)點(diǎn)子系統(tǒng)維護(hù)的數(shù)據(jù)庫輸入路由信息庫保存接收到的對(duì)等體更新報(bào)文信息。
局部最優(yōu)路由信息庫保存從節(jié)點(diǎn)路由計(jì)算得到的本節(jié)點(diǎn)最優(yōu)路由信息。
●分布式劃分算法主控子系統(tǒng)維護(hù)的從節(jié)點(diǎn)信息庫中記錄了當(dāng)前有哪些從節(jié)點(diǎn),每個(gè)從節(jié)點(diǎn)上分配了多少個(gè)對(duì)等體報(bào)文的處理工作,當(dāng)BGP系統(tǒng)與新的對(duì)等體建立連接后,主控子系統(tǒng)選擇負(fù)載最小的從節(jié)點(diǎn)處理新的對(duì)等體的UPDATE消息。這個(gè)分配算法能夠保證各從節(jié)點(diǎn)的負(fù)載比較均衡。
●從節(jié)點(diǎn)管理□從節(jié)點(diǎn)的加入1.配置從節(jié)點(diǎn)的標(biāo)識(shí)號(hào)和主控節(jié)點(diǎn)的標(biāo)識(shí)號(hào)。
2.向主控節(jié)點(diǎn)發(fā)送加入通告消息,等待主控節(jié)點(diǎn)回應(yīng)消息;3.主控節(jié)點(diǎn)收到從節(jié)點(diǎn)的加入通告消息,將新節(jié)點(diǎn)的信息加入到從節(jié)點(diǎn)庫中,發(fā)送回應(yīng)消息給從節(jié)點(diǎn)。
□從節(jié)點(diǎn)的退出1.主控節(jié)點(diǎn)刪除從節(jié)點(diǎn)庫中退出從節(jié)點(diǎn)的信息;2.按照劃分算法把退出從節(jié)點(diǎn)上處理的負(fù)載重新分配給其他的從節(jié)點(diǎn)處理;□從節(jié)點(diǎn)的狀態(tài)檢查主控節(jié)點(diǎn)周期性的向所有從節(jié)點(diǎn)發(fā)送詢問消息,收到詢問消息的節(jié)點(diǎn)向主控節(jié)點(diǎn)回復(fù)消息,沒有回復(fù)消息的從節(jié)點(diǎn)將被認(rèn)為故障。主從節(jié)點(diǎn)狀態(tài)信息查詢流程如圖2所示。
□從節(jié)點(diǎn)的故障處理1.主控節(jié)點(diǎn)通過從節(jié)點(diǎn)狀態(tài)檢查發(fā)現(xiàn)故障從節(jié)點(diǎn);2.主控節(jié)點(diǎn)等待從節(jié)點(diǎn)恢復(fù),等待時(shí)間由管理員設(shè)定,緩存由故障從節(jié)點(diǎn)處理的UPDATE消息;3.如果在等待時(shí)間內(nèi)從節(jié)點(diǎn)沒有恢復(fù)工作,主控節(jié)點(diǎn)刪除從節(jié)點(diǎn)庫中故障從節(jié)點(diǎn)的信息,按照劃分算法把故障從節(jié)點(diǎn)上處理的負(fù)載重新分配給其他的從節(jié)點(diǎn)處理。
4.如果在等待時(shí)間內(nèi)故障從節(jié)點(diǎn)恢復(fù)工作,主控節(jié)點(diǎn)將緩存的UPDATE消息發(fā)送給它處理。
●與對(duì)等體建立連接當(dāng)前路由器BGP實(shí)體首先要和對(duì)等體建立連接,流程如圖3所示。BGP是基于網(wǎng)絡(luò)傳輸控制協(xié)議(TCP)之上的路由協(xié)議。因此,與對(duì)等體建立連接可以分為兩個(gè)步驟先建立TCP連接,再建立BGP連接。與對(duì)等體建立連接之前將連接狀態(tài)設(shè)置為Idle。
□建立TCP連接有兩種模式主動(dòng)模式和被動(dòng)模式主動(dòng)模式主控節(jié)點(diǎn)子系統(tǒng)主動(dòng)向?qū)Φ润w發(fā)起TCP連接請(qǐng)求,通過三次握手與對(duì)等體被動(dòng)模塊主控節(jié)點(diǎn)子系統(tǒng)監(jiān)聽TCP的179端口,對(duì)等體請(qǐng)求建立TCP連接,通過三次握手與對(duì)等體建立TCP連接;啟動(dòng)TCP連接前將連接狀態(tài)設(shè)置為Connect。
□建立BGP連接1.向?qū)Φ润w發(fā)送OPEN消息,等待對(duì)等體的OPEN消息,連接狀態(tài)設(shè)置為OpenSent;2.接收到對(duì)等體的OPEN消息,回復(fù)KEEPALIVE消息,同時(shí)等待對(duì)等體的KEEPALIVE消息,連接狀態(tài)設(shè)置為OpenConfirm;3.接收KEEPALIVE消息,完成與對(duì)等體的連接,連接狀態(tài)設(shè)置為Established。
當(dāng)BGP實(shí)體與對(duì)等體建立連接后,主控節(jié)點(diǎn)根據(jù)分配算法選出負(fù)載最小的從節(jié)點(diǎn),由這個(gè)從節(jié)點(diǎn)處理這個(gè)對(duì)等體的UPDATE消息。
●處理BGP報(bào)文流程主控節(jié)點(diǎn)子系統(tǒng)通過調(diào)用TCP socket讀函數(shù)得到BGP報(bào)文。
□OPEN消息處理在分布式BGP系統(tǒng)中,OPEN消息的處理是在主控節(jié)點(diǎn)上實(shí)現(xiàn)的,OPEN消息的處理流程如下1.從OPEN報(bào)文中讀取版本號(hào)(Version)、自治域號(hào)(AS Number)、超時(shí)時(shí)間(Hold Time)和BGP標(biāo)識(shí)符(BGP Identifier)四個(gè)域的值;2.根據(jù)AS Number和BGPI dentifier判斷OPEN消息是否來自管理員設(shè)置的鄰居節(jié)點(diǎn)。如果不是,發(fā)送NOTIFICATION消息給對(duì)等體。
3.根據(jù)BGP協(xié)議的連接沖突檢測(cè)定義進(jìn)行沖突檢測(cè),如果有沖突并需要關(guān)閉這個(gè)連接,則發(fā)送NOTIFICATION消息給對(duì)等體中斷這個(gè)連接。
4.檢測(cè)版本號(hào)是否正確,不正確發(fā)送NOTIFICATION消息給對(duì)等體中斷這個(gè)連接。
5.檢測(cè)AS Number是否正確,不正確發(fā)送NOTIFICATION消息給對(duì)等體中斷這個(gè)連接。
6.檢測(cè)Hold Time是否為零或者大于3秒,如果不是,發(fā)送NOTIFICATION消息給對(duì)等體中斷這個(gè)連接。
7.比較本路由器BGP實(shí)體設(shè)置的Hold Time值和接受的OPEN消息中的Hold Time值,以值小的作為這個(gè)連接的Hold Time值,設(shè)置KEEPALIVE消息定時(shí)器為連接Hold Time值的三分之一。
8.發(fā)送KEEPALIVE消息給對(duì)等體確認(rèn)接受OPEN消息,使對(duì)等體連接的有限狀態(tài)變?yōu)镺penConfirm狀態(tài)。
□KEEPALIVE消息處理在分布式BGP系統(tǒng)中,KEEPALIVE消息的處理是在主控節(jié)點(diǎn)上實(shí)現(xiàn)的。KEEPALIVE消息只有一個(gè)消息頭,對(duì)它的處理比較簡單。
當(dāng)連接狀態(tài)為OpenConfirm狀態(tài)時(shí),處理流程如下1.將連接狀態(tài)變?yōu)镋stablished狀態(tài)。
2.發(fā)送KEEPALIVE消息給對(duì)等體。
3.把當(dāng)前路由器路由表全部通過UPDATE消息發(fā)送給對(duì)等體。
當(dāng)連接狀態(tài)為Established狀態(tài)時(shí),處理流程如下1.增加KEEPALIVE消息接收計(jì)數(shù)。
2.重置HOLD Time定時(shí)器。
□UPDATE消息處理在分布式BGP系統(tǒng)中,UPDATE消息由主控節(jié)點(diǎn)接收,對(duì)UPDATE消息的處理是在從節(jié)點(diǎn)上實(shí)現(xiàn)的,處理流程如下主控節(jié)點(diǎn)接收到UPDATE消息,把UPDATE報(bào)文發(fā)送給相應(yīng)的從節(jié)點(diǎn);對(duì)整個(gè)屬性長度檢查,如果超過規(guī)定長度,通過NOTIFICATION消息通知對(duì)等體,丟棄這個(gè)UPDATE消息;如果UPDATE消息中包含不可用路由,檢查不可用路由長度是否正確。如果超過規(guī)定長度,通過NOTIFICATION消息通知對(duì)等體,丟棄這個(gè)UPDATE消息;對(duì)不可用路由進(jìn)行語法檢查,如果錯(cuò)誤,丟棄這個(gè)UPDATE消息;如果正確,獲取不可用路由的值存入變量中;如果UPDATE消息中包含可用路由,對(duì)可用路由長度檢查,如果太長,通過NOTIFICATION消息通知對(duì)等體,丟棄這個(gè)UPDATE消息;對(duì)可用路由的路徑屬性的每個(gè)域進(jìn)行檢查,如果有錯(cuò)誤,通過NOTIFICATION消息通知對(duì)等體,丟棄這個(gè)UPDATE消息;如果正確,獲取路徑屬性各個(gè)域的值存入一個(gè)結(jié)構(gòu)變量中;對(duì)可用路由進(jìn)行語法檢查,如果錯(cuò)誤,丟棄這個(gè)UPDATE消息;如果正確,獲取不可用路由的值存入變量中;如果有不可用路由,從輸入路由信息庫中刪除這條路由,啟動(dòng)分布式BGP路由計(jì)算;如果有可用路由,更新輸入路由信息庫,保存路徑屬性;啟動(dòng)分布式BGP路由計(jì)算。
□NOTIFICATION消息處理在分布式BGP系統(tǒng)中,對(duì)NOTIFICATION消息的處理是由主控節(jié)點(diǎn)和從節(jié)點(diǎn)配合實(shí)現(xiàn)的,處理流程如下1.獲取NOTIFICATION消息中各個(gè)域的值;2.把錯(cuò)誤信息顯示出來;3.斷開與對(duì)等體的連接。
4.主控節(jié)點(diǎn)通知處理這個(gè)對(duì)等體UPDATE消息的從節(jié)點(diǎn)刪除與之有關(guān)的所有相關(guān)信息(包括它所發(fā)布的路由以及描述這些路由的屬性),啟動(dòng)分布式BGP路由計(jì)算;●分布式BGP路由計(jì)算在BGP協(xié)議中,BGP路由計(jì)算又稱為決策過程,分為三期優(yōu)先級(jí)計(jì)算、路由選擇、路由分發(fā)。這三期分別是三個(gè)獨(dú)立的過程,由不同的事件激發(fā),圖4為路由計(jì)算示意圖。
分布式BGP路由算法描述如下1.優(yōu)先級(jí)計(jì)算當(dāng)從節(jié)點(diǎn)對(duì)UPDATE報(bào)文解析后,發(fā)現(xiàn)有可用路由,觸發(fā)優(yōu)先級(jí)計(jì)算過程。在優(yōu)先級(jí)計(jì)算過程中,鎖定輸入路由信息庫,根據(jù)預(yù)先設(shè)定好的策略,對(duì)新的可用路由或者是替代路由計(jì)算一個(gè)優(yōu)先級(jí)。計(jì)算完成后,解開輸入路由信息庫,觸發(fā)路由選擇過程。
2.路由選擇在分布式BGP系統(tǒng)中,路由選擇分為兩步完成,第一步是從節(jié)點(diǎn)選擇局部最優(yōu)路由,第二步是主控節(jié)點(diǎn)選擇全局最優(yōu)路由。
當(dāng)優(yōu)先級(jí)計(jì)算過程完成后,首先激活從節(jié)點(diǎn)路由選擇。從節(jié)點(diǎn)路由選擇過程鎖定輸入路由信息庫,從所有與新的可用路由目的地相同的路由中選出優(yōu)先級(jí)最高的一條路由,如果選出的路由與局部最優(yōu)路由信息庫中保存的路由相同,結(jié)束路由選擇過程;否則,更新局部最優(yōu)信息庫,解開輸入路由信息庫,同時(shí)通過系統(tǒng)的分布式消息機(jī)制把這條路由信息發(fā)送給主控節(jié)點(diǎn),激活主控節(jié)點(diǎn)全局路由選擇過程。
主控節(jié)點(diǎn)上保存著所有從節(jié)點(diǎn)的局部最優(yōu)路由,當(dāng)收到一條從節(jié)點(diǎn)發(fā)送來的新的路由時(shí),鎖定全局最優(yōu)路由信息庫,從所有與新的可用路由目的地相同的路由中選出優(yōu)先級(jí)最高的一條路由,更新全局最優(yōu)路由信息庫,解開全局最優(yōu)路由信息庫,觸發(fā)路由分發(fā)過程。
3.路由分發(fā)路由分發(fā)過程被路由選擇過程激活,將全局最優(yōu)路由信息庫的更新路由包裝到UPDATE消息中,發(fā)送給每個(gè)對(duì)端,同時(shí)在每個(gè)對(duì)等體的輸出路由信息庫中記錄發(fā)送的路由。
●主控節(jié)點(diǎn)的雙節(jié)點(diǎn)冗余備份主控節(jié)點(diǎn)和備份節(jié)點(diǎn)形成雙節(jié)點(diǎn)備份的硬件環(huán)境,但是節(jié)點(diǎn)之間不提供相互的軟硬件失效的硬件檢測(cè)機(jī)制,它們通過心跳算法實(shí)現(xiàn)雙機(jī)的狀態(tài)監(jiān)測(cè)。主控節(jié)點(diǎn)和備份節(jié)點(diǎn)都運(yùn)行主控節(jié)點(diǎn)子系統(tǒng),當(dāng)主控節(jié)點(diǎn)正常工作時(shí),備份節(jié)點(diǎn)只能接收主控節(jié)點(diǎn)的備份消息,并把備份消息中的備份數(shù)據(jù)備份到相應(yīng)的數(shù)據(jù)庫中;當(dāng)主控節(jié)點(diǎn)出現(xiàn)故障時(shí),備份節(jié)點(diǎn)接替主控節(jié)點(diǎn)的工作。
為實(shí)現(xiàn)這種失效轉(zhuǎn)移,采用了的方法是進(jìn)行檢查點(diǎn)(CheckPoint)狀態(tài)備份,然后進(jìn)行狀態(tài)回滾恢復(fù),如圖5所示主控節(jié)點(diǎn)上的主控節(jié)點(diǎn)子系統(tǒng)一步一步執(zhí)行,在每個(gè)步驟完成后都插入一個(gè)檢查點(diǎn),檢查系統(tǒng)當(dāng)前的狀態(tài),并把系統(tǒng)狀態(tài)保存到備份節(jié)點(diǎn)相應(yīng)的數(shù)據(jù)庫中,當(dāng)主控節(jié)點(diǎn)上的主控節(jié)點(diǎn)子系統(tǒng)在某個(gè)步驟,如步驟3出現(xiàn)故障時(shí),備份節(jié)點(diǎn)將檢查點(diǎn)2的系統(tǒng)狀態(tài)信息恢復(fù)到備份節(jié)點(diǎn)上,備份節(jié)點(diǎn)的主控節(jié)點(diǎn)子系統(tǒng)可以繼續(xù)執(zhí)行步驟3。
處理流程如下主控節(jié)點(diǎn)定時(shí)發(fā)送查詢消息給備份節(jié)點(diǎn),備份節(jié)點(diǎn)回復(fù)消息;當(dāng)主控節(jié)點(diǎn)收不到備份節(jié)點(diǎn)的回復(fù)消息時(shí),就認(rèn)為備份節(jié)點(diǎn)故障,這時(shí)主控節(jié)點(diǎn)將不會(huì)向備份節(jié)點(diǎn)發(fā)送備份消息;當(dāng)主控節(jié)點(diǎn)能夠收到備份節(jié)點(diǎn)的回復(fù)消息時(shí),就認(rèn)為備份節(jié)點(diǎn)正常工作,可以向備份節(jié)點(diǎn)備份狀態(tài)信息;在主控節(jié)點(diǎn)模塊中,需要備份的狀態(tài)信息可以分為兩類,一類是通訊相關(guān)的狀態(tài)信息,包括主控節(jié)點(diǎn)與從節(jié)點(diǎn)的通訊信息;另一類是應(yīng)用相關(guān)的狀態(tài)數(shù)據(jù),包括對(duì)等體連接狀態(tài)、全局最優(yōu)路由信息庫、輸出路由信息庫、從節(jié)點(diǎn)信息庫;對(duì)于通訊相關(guān)的狀態(tài)數(shù)據(jù)來說,任何一次操作都可能涉及到從節(jié)點(diǎn)的狀態(tài)變化,所以它們的狀態(tài)備份必須做到小粒度的備份,在每一次主控節(jié)點(diǎn)與從節(jié)點(diǎn)進(jìn)行通訊后進(jìn)行相應(yīng)的狀態(tài)備份;當(dāng)主控節(jié)點(diǎn)與從節(jié)點(diǎn)通訊時(shí),主控節(jié)點(diǎn)同時(shí)將通訊數(shù)據(jù)讀寫操作備份到備份節(jié)點(diǎn)中,備份的讀寫操作中包括讀寫操作的讀取和寫入數(shù)據(jù),數(shù)據(jù)長度,以及操作返回的結(jié)果;
而對(duì)于應(yīng)用相關(guān)的狀態(tài)數(shù)據(jù),數(shù)據(jù)量大,備份粒度較大,主控節(jié)點(diǎn)每隔一段的時(shí)間把這些應(yīng)用相關(guān)數(shù)據(jù)發(fā)送給備份節(jié)點(diǎn);當(dāng)備份節(jié)點(diǎn)不能收到主控節(jié)點(diǎn)的查詢消息時(shí),就認(rèn)為主控節(jié)點(diǎn)出現(xiàn)故障,這時(shí)備份節(jié)點(diǎn)將進(jìn)行狀態(tài)回滾恢復(fù),接替主控節(jié)點(diǎn)的工作;備份節(jié)點(diǎn)接替主控節(jié)點(diǎn)工作,這時(shí)應(yīng)用相關(guān)的狀態(tài)數(shù)據(jù)已經(jīng)保存在備份節(jié)點(diǎn)的相應(yīng)數(shù)據(jù)庫中,備份節(jié)點(diǎn)上的主控節(jié)點(diǎn)子系統(tǒng)直接使用這些狀態(tài)數(shù)據(jù)啟動(dòng),然后重復(fù)進(jìn)行通訊數(shù)據(jù)讀寫操作,但是通訊數(shù)據(jù)讀寫操作不是在進(jìn)行實(shí)際的數(shù)據(jù)讀寫操作,而是從備份的讀寫操作中返回相應(yīng)的數(shù)據(jù)和結(jié)果。
權(quán)利要求
1.基于集群路由器結(jié)構(gòu)的高可用分布式邊界網(wǎng)關(guān)協(xié)議系統(tǒng),其特征在于在集群路由器結(jié)構(gòu)中,選取一個(gè)節(jié)點(diǎn)作為主控節(jié)點(diǎn),另一個(gè)節(jié)點(diǎn)為主控節(jié)點(diǎn)的備份節(jié)點(diǎn),構(gòu)成主控節(jié)點(diǎn)子系統(tǒng);一個(gè)連接節(jié)點(diǎn);其他節(jié)點(diǎn)作為從節(jié)點(diǎn),構(gòu)成從節(jié)點(diǎn)子系統(tǒng);主控節(jié)點(diǎn)、從節(jié)點(diǎn)和連接節(jié)點(diǎn)通過高速交換網(wǎng)組成所述基于集群路由器結(jié)構(gòu)的高可用分布式邊界網(wǎng)關(guān)協(xié)議系統(tǒng),所述系統(tǒng)基于網(wǎng)絡(luò)傳輸控制協(xié)議通過連接節(jié)點(diǎn)和對(duì)等體建立連接,所述對(duì)等體是指與所述系統(tǒng)交互協(xié)議信息的邊界網(wǎng)關(guān)協(xié)議系統(tǒng);其中,A.主控節(jié)點(diǎn)子系統(tǒng)運(yùn)行在所述主控節(jié)點(diǎn)上,負(fù)責(zé)以下任務(wù)與所述對(duì)等體建立連接;根據(jù)劃分算法把從對(duì)等體接收的載有路由更新消息的路由更新報(bào)文發(fā)送給相應(yīng)的從節(jié)點(diǎn)處理,所述的路由更新消息用“UPDATE消息”表示;接收各從節(jié)點(diǎn)UPDATE消息處理后的局部最優(yōu)路由并從中選擇出全局最優(yōu)路由;將UPDATE消息通告給所述對(duì)等體;管理從節(jié)點(diǎn)以及把重要消息發(fā)送給所述備份節(jié)點(diǎn);在所述主控節(jié)點(diǎn)上維護(hù)以下數(shù)據(jù)庫全局最優(yōu)路由數(shù)據(jù)信息庫保存路由計(jì)算得到的路由器全局最優(yōu)路由信息;從節(jié)點(diǎn)數(shù)據(jù)庫保存分布式BGP系統(tǒng)中工作的從節(jié)點(diǎn)ID,每個(gè)從節(jié)點(diǎn)的工作負(fù)責(zé)情況,以及主控節(jié)點(diǎn)與從節(jié)點(diǎn)的通訊操作備份,所述BGP系統(tǒng)指的是邊界網(wǎng)關(guān)協(xié)議系統(tǒng);輸出路由信息庫保存發(fā)送給對(duì)等體的路由更新信息;在所述主控節(jié)點(diǎn)上配置了以下軟件模塊(1)分布式劃分算法模塊當(dāng)所述BGP系統(tǒng)與新的對(duì)等體建立連接后,主控節(jié)點(diǎn)選擇負(fù)載最小的從節(jié)點(diǎn)來處理新的對(duì)等體的UPDATE消息;(2)從節(jié)點(diǎn)管理模塊該模塊包括以下各子模塊(2.1)從節(jié)點(diǎn)加入子模塊新加入節(jié)點(diǎn)由管理員配置ID和主控節(jié)點(diǎn)ID,當(dāng)新節(jié)點(diǎn)加入Cluster時(shí),立即發(fā)送消息通告主控節(jié)點(diǎn),主控節(jié)點(diǎn)回應(yīng)這個(gè)消息,確認(rèn)新節(jié)點(diǎn)的加入,并將新節(jié)點(diǎn)的信息加入到從節(jié)點(diǎn)信息庫中,所述Cluster即集群路由器結(jié)構(gòu);(2.2)從節(jié)點(diǎn)退出子模塊主控節(jié)點(diǎn)刪除從節(jié)點(diǎn)信息庫中退出從節(jié)點(diǎn)的信息,并按照劃分算法把這個(gè)從節(jié)點(diǎn)上處理的對(duì)等體重新分配給其他的從節(jié)點(diǎn)處理;(2.3)從節(jié)點(diǎn)狀態(tài)監(jiān)控子模塊主控節(jié)點(diǎn)周期性的向其他所有從節(jié)點(diǎn)發(fā)送詢問消息,收到詢問消息的從節(jié)點(diǎn)向主控節(jié)點(diǎn)回復(fù)消息,沒有回復(fù)消息的從節(jié)點(diǎn)將被認(rèn)為故障;(2.4)從節(jié)點(diǎn)故障處理子模塊主控節(jié)點(diǎn)通過狀態(tài)監(jiān)控發(fā)現(xiàn)某個(gè)從節(jié)點(diǎn)出現(xiàn)故障,主控節(jié)點(diǎn)刪除從節(jié)點(diǎn)信息庫中這個(gè)從節(jié)點(diǎn)的信息,并按照劃分算法把這個(gè)從節(jié)點(diǎn)上處理的對(duì)等體重新分配給其他的從節(jié)點(diǎn)處理;(3)與對(duì)等體建立連接模塊該模塊依次按以下步驟實(shí)現(xiàn)與對(duì)等體的連接步驟3-1啟動(dòng)與對(duì)等體的連接;步驟3-2啟動(dòng)TCP連接;步驟3-3建立BGP連接,按以下步驟進(jìn)行;步驟3-3-1向?qū)Φ润w發(fā)送用來建立BGP對(duì)等體連接的問訊消息,稱為OPEN消息;步驟3-3-2接收到對(duì)等體的OPEN消息后,向?qū)Φ润w回復(fù)保持BGP連接的通告消息稱為KEEPALIVE消息,同時(shí)等待對(duì)等體的KEEPALIVE消息,連接狀態(tài)設(shè)置為OpenConfirm;步驟3-3-3接收對(duì)等體的KEEPALIVE消息,完成與對(duì)等體的連接,連接狀態(tài)設(shè)置為Established;步驟3-4主控節(jié)點(diǎn)根據(jù)所述分配算法選出負(fù)載最小的從節(jié)點(diǎn),由該從節(jié)點(diǎn)處理該對(duì)等體的UPDATE消息;(4)處理BGP消息模塊該模塊按以下步驟實(shí)現(xiàn)消息處理步驟4-1主控節(jié)點(diǎn)調(diào)用TCP socket讀函數(shù)得到BGP消息;步驟4-2主控節(jié)點(diǎn)處理不同類型消息步驟4-2-1處理OPEN消息從OPEN消息中讀取版本號(hào)、自治域號(hào)、超時(shí)時(shí)間、BGP標(biāo)識(shí)符四個(gè)域的值,并分別予以檢驗(yàn);根據(jù)自治域號(hào)和BGP標(biāo)識(shí)符判斷OPEN消息是否來自管理員設(shè)置的鄰居節(jié)點(diǎn)若不是,則發(fā)送用NOTIFICATION表示的故障消息與對(duì)等體中斷連接;若是,則進(jìn)行以下檢測(cè);根據(jù)BGP協(xié)議的連接沖突檢測(cè)定義進(jìn)行沖突檢測(cè)若有沖突并需關(guān)閉該連接便發(fā)送故障消息以中斷與該對(duì)等體的連接;若無沖突,便執(zhí)行以下檢測(cè);檢測(cè)版本號(hào)是否正確若不正確,發(fā)送故障消息給該對(duì)等體以中斷連接;若正確,便執(zhí)行以下檢測(cè);檢測(cè)超時(shí)時(shí)間是否為零或者小于3秒若不是,發(fā)送故障消息以中斷與該對(duì)等體的連接;否則,便執(zhí)行以下檢測(cè);比較本路由器BGP實(shí)體設(shè)置的超時(shí)時(shí)間置和接收的OPEN消息中的超時(shí)時(shí)間值,以值小的作為這個(gè)連接的超時(shí)時(shí)間值,設(shè)置保持BGP連接的通告消息定時(shí)器的值為所述連接超時(shí)時(shí)間值的三分之一;發(fā)送保持BGP連接的通告消息給該對(duì)等體確認(rèn)接收OPEN消息,連接狀態(tài)設(shè)置為OpenConfirm狀態(tài);步驟4-2-2處理保持BGP連接的通告消息當(dāng)連接狀態(tài)為OpenConfirm狀態(tài)時(shí),主控節(jié)點(diǎn)把連接狀態(tài)變?yōu)镋stablished狀態(tài)并向?qū)Φ润w發(fā)送保持BGP連接的通告消息;當(dāng)連接狀態(tài)為Established狀態(tài)時(shí),增加保持BGP連接的通告消息接收計(jì)數(shù),重置超時(shí)時(shí)間定時(shí)器;步驟4-2-3處理從對(duì)等體接收到的路由更新消息主控節(jié)點(diǎn)收到路由更新消息后,把路由更新消息發(fā)送給相應(yīng)的從節(jié)點(diǎn);由從節(jié)點(diǎn)作以下檢查;對(duì)整個(gè)屬性長度作檢查,若超過規(guī)定長度,通過故障消息通告對(duì)等體,丟棄該路由更新消息;若路由更新消息中包括不可用路由,檢查該路由長度是否正確,若超過規(guī)定值,向?qū)Φ润w發(fā)送故障消息并丟棄該路由更新消息;否則,對(duì)該不可用路由進(jìn)行語法檢查,若有錯(cuò)誤,便丟棄該路由更新消息;若正確,便獲取不可用路由的值存入變量中;若路由更新消息中包含可用路由,則檢查該路由的長度,若超過規(guī)定值,向?qū)Φ润w發(fā)送故障消息并丟棄該路由更新消息;否則,對(duì)該可用路由的路徑屬性的每個(gè)域進(jìn)行檢查,若有錯(cuò)誤,便丟棄該路由更新消息;若正確,便獲取路由屬性各個(gè)域的值存入一個(gè)結(jié)構(gòu)變量中;對(duì)于不可用路由,從輸入路由信息庫中刪除該路由,啟動(dòng)分布式BGP路由計(jì)算;對(duì)于可用路由,更新輸入路由信息庫,保存路徑屬性,啟動(dòng)分布式BGP路由計(jì)算;步驟4-2-4處理故障消息主控節(jié)點(diǎn)獲取該故障消息中各個(gè)域的值,顯示錯(cuò)誤信息,斷開與故障對(duì)等體的連接;接著,通知該對(duì)等體UPDATE消息的處理從節(jié)點(diǎn)刪除包括故障對(duì)等體所發(fā)布的路由以及路由屬性在內(nèi)的所有相關(guān)信息;(5)雙節(jié)點(diǎn)冗余備份模塊主控節(jié)點(diǎn)和備份節(jié)點(diǎn)形成雙節(jié)點(diǎn)備份的硬件環(huán)境,但是節(jié)點(diǎn)之間不提供相互的軟硬件失效的硬件檢測(cè)機(jī)制,它們通過心跳算法實(shí)現(xiàn)雙機(jī)的狀態(tài)監(jiān)測(cè);主控節(jié)點(diǎn)和備份節(jié)點(diǎn)都運(yùn)行主控節(jié)點(diǎn)子系統(tǒng),當(dāng)主控節(jié)點(diǎn)正常工作時(shí),備份節(jié)點(diǎn)只能接收主控節(jié)點(diǎn)的備份消息,并把備份消息中的備份數(shù)據(jù)備份到相應(yīng)的數(shù)據(jù)庫中;當(dāng)主控節(jié)點(diǎn)出現(xiàn)故障時(shí),備份節(jié)點(diǎn)接替主控節(jié)點(diǎn)的工作;為實(shí)現(xiàn)這種失效轉(zhuǎn)移,采用了的方法是進(jìn)行檢查點(diǎn)狀態(tài)備份,然后進(jìn)行狀態(tài)回滾恢復(fù);主控節(jié)點(diǎn)定時(shí)發(fā)送查詢消息給備份節(jié)點(diǎn),備份節(jié)點(diǎn)回復(fù)消息;當(dāng)主控節(jié)點(diǎn)收不到備份節(jié)點(diǎn)的回復(fù)消息時(shí),就認(rèn)為備份節(jié)點(diǎn)故障,這時(shí)主控節(jié)點(diǎn)將不會(huì)向備份節(jié)點(diǎn)發(fā)送備份消息;當(dāng)主控節(jié)點(diǎn)能夠收到備份節(jié)點(diǎn)的回復(fù)消息時(shí),就認(rèn)為備份節(jié)點(diǎn)正常工作,可以向備份節(jié)點(diǎn)備份狀態(tài)信息;在主控節(jié)點(diǎn)模塊中,需要備份的狀態(tài)信息可以分為兩類,一類是通訊相關(guān)的狀態(tài)信息,包括主控節(jié)點(diǎn)與從節(jié)點(diǎn)的通訊信息;另一類是應(yīng)用相關(guān)的狀態(tài)數(shù)據(jù),包括對(duì)等體連接狀態(tài)、全局最優(yōu)路由信息庫、輸出路由信息庫、從節(jié)點(diǎn)信息庫;對(duì)于通訊相關(guān)的狀態(tài)數(shù)據(jù)來說,任何一次操作都可能涉及到從節(jié)點(diǎn)的狀態(tài)變化,所以它們的狀態(tài)備份必須做到小粒度的備份,在每一次主控節(jié)點(diǎn)與從節(jié)點(diǎn)進(jìn)行通訊后進(jìn)行相應(yīng)的狀態(tài)備份;當(dāng)主控節(jié)點(diǎn)與從節(jié)點(diǎn)通訊時(shí),主控節(jié)點(diǎn)同時(shí)將通訊數(shù)據(jù)讀寫操作備份到備份節(jié)點(diǎn)中,備份的讀寫操作中包括讀寫操作的讀取和寫入數(shù)據(jù),數(shù)據(jù)長度,以及操作返回的結(jié)果;而對(duì)于應(yīng)用相關(guān)的狀態(tài)數(shù)據(jù),數(shù)據(jù)量大,備份粒度較大,主控節(jié)點(diǎn)每隔一段的時(shí)間把這些應(yīng)用相關(guān)數(shù)據(jù)發(fā)送給備份節(jié)點(diǎn);當(dāng)備份節(jié)點(diǎn)不能收到主控節(jié)點(diǎn)的查詢消息時(shí),就認(rèn)為主控節(jié)點(diǎn)出現(xiàn)故障,這時(shí)備份節(jié)點(diǎn)將進(jìn)行狀態(tài)回滾恢復(fù),接替主控節(jié)點(diǎn)的工作;備份節(jié)點(diǎn)接替主控節(jié)點(diǎn)工作,這時(shí)應(yīng)用相關(guān)的狀態(tài)數(shù)據(jù)已經(jīng)保存在備份節(jié)點(diǎn)的相應(yīng)數(shù)據(jù)庫中,備份節(jié)點(diǎn)上的主控節(jié)點(diǎn)子系統(tǒng)直接使用這些狀態(tài)數(shù)據(jù)啟動(dòng),然后重復(fù)進(jìn)行通訊數(shù)據(jù)讀寫操作,但是通訊數(shù)據(jù)讀寫操作不是在進(jìn)行實(shí)際的數(shù)據(jù)讀寫操作,而是從備份的讀寫操作中返回相應(yīng)的數(shù)據(jù)和結(jié)果;B.從節(jié)點(diǎn)子系統(tǒng),負(fù)責(zé)路由更新消息處理,局部最優(yōu)路由選擇,還要配合主控節(jié)點(diǎn)進(jìn)行全局最優(yōu)路由選擇;該從節(jié)點(diǎn)子系統(tǒng)僅有分布式BGP路由計(jì)算子模塊,按以下步驟以完成從節(jié)點(diǎn)子系統(tǒng)的任務(wù)(1)優(yōu)先級(jí)計(jì)算當(dāng)從節(jié)點(diǎn)對(duì)UPDATE報(bào)文解析后,發(fā)現(xiàn)有可用路由,觸發(fā)優(yōu)先級(jí)計(jì)算過程;在優(yōu)先級(jí)計(jì)算過程中,鎖定輸入路由信息庫,根據(jù)預(yù)先設(shè)定好的策略,對(duì)新的可用路由或者是替代路由計(jì)算一個(gè)優(yōu)先級(jí);計(jì)算完成后,解開輸入路由信息庫,觸發(fā)路由選擇過程;(2)路由選擇在分布式BGP系統(tǒng)中,路由選擇分為兩步完成,第一步是從節(jié)點(diǎn)選擇局部最優(yōu)路由,第二步是主控節(jié)點(diǎn)選擇全局最優(yōu)路由;當(dāng)優(yōu)先級(jí)計(jì)算過程完成后,首先激活從節(jié)點(diǎn)路由選擇;從節(jié)點(diǎn)路由選擇過程鎖定輸入路由信息庫,從所有與新的可用路由目的地相同的路由中選出優(yōu)先級(jí)最高的一條路由,如果選出的路由與局部最優(yōu)路由信息庫中保存的路由相同,結(jié)束路由選擇過程;否則,更新局部最優(yōu)信息庫,解開輸入路由信息庫,同時(shí)通過系統(tǒng)的分布式消息機(jī)制把這條路由信息發(fā)送給主控節(jié)點(diǎn),激活主控節(jié)點(diǎn)全局路由選擇過程;主控節(jié)點(diǎn)上保存著所有從節(jié)點(diǎn)的局部最優(yōu)路由,當(dāng)收到一條從節(jié)點(diǎn)發(fā)送來的新的路由時(shí),鎖定全局最優(yōu)路由信息庫,從所有與新的可用路由目的地相同的路由中選出優(yōu)先級(jí)最高的一條路由,更新全局最優(yōu)路由信息庫,解開全局最優(yōu)路由信息庫,觸發(fā)路由分發(fā)過程;(3)路由分發(fā)路由分發(fā)過程被路由選擇過程激活,將全局最優(yōu)路由信息庫的更新路由包裝到UPDATE消息中,發(fā)送給每個(gè)對(duì)端,同時(shí)在每個(gè)對(duì)等體的輸出路由信息庫中記錄發(fā)送的路由。
全文摘要
基于集群路由器結(jié)構(gòu)的高可用分布式邊界網(wǎng)關(guān)協(xié)議系統(tǒng)屬于路由協(xié)議系統(tǒng)結(jié)構(gòu)領(lǐng)域,其特征在于在集群路由器結(jié)構(gòu)中,選取一個(gè)節(jié)點(diǎn)為主控節(jié)點(diǎn),另一個(gè)節(jié)點(diǎn)為主控節(jié)點(diǎn)的備份節(jié)點(diǎn),一個(gè)連接節(jié)點(diǎn),至少一個(gè)從節(jié)點(diǎn);通過對(duì)主控節(jié)點(diǎn)的備份,使系統(tǒng)沒有單一失效點(diǎn),提高了系統(tǒng)可靠性;通過劃分算法的合理分配,使各從節(jié)點(diǎn)的負(fù)載均衡,提高了整體BGP系統(tǒng)的性能;從而實(shí)現(xiàn)了BGP消息的快速處理和BGP的可靠服務(wù)。
文檔編號(hào)H04L12/28GK1719831SQ20051001219
公開日2006年1月11日 申請(qǐng)日期2005年7月15日 優(yōu)先權(quán)日2005年7月15日
發(fā)明者徐恪, 張智泉, 崔勇 申請(qǐng)人:清華大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1