本發(fā)明涉及通信領(lǐng)域,更具體地涉及一種路由器區(qū)分優(yōu)先級(jí)的數(shù)據(jù)庫(kù)同步的方法及其裝置、以及路由器及其系統(tǒng)。
背景技術(shù):
在數(shù)據(jù)通信領(lǐng)域中,動(dòng)態(tài)路由協(xié)議主要分為兩種:一種是距離矢量路由算法,另一種是鏈路狀態(tài)路由算法。
在鏈路狀態(tài)路由算法中,由鏈路狀態(tài)路由算法產(chǎn)生的鏈路狀態(tài)報(bào)文主要有兩種類(lèi)型:一種是承載網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的鏈路狀態(tài)報(bào)文(簡(jiǎn)稱(chēng)拓?fù)滏溌窢顟B(tài)報(bào)文,每臺(tái)路由器都會(huì)產(chǎn)生描述對(duì)應(yīng)拓?fù)浣Y(jié)構(gòu)的鏈路狀態(tài)報(bào)文);另一種是承載網(wǎng)絡(luò)路由的鏈路狀態(tài)報(bào)文(簡(jiǎn)稱(chēng)葉子鏈路狀態(tài)報(bào)文,相對(duì)于拓?fù)浣Y(jié)構(gòu)鏈路報(bào)文,路由器會(huì)產(chǎn)生更多的承載網(wǎng)絡(luò)路由的鏈路狀態(tài)報(bào)文,主要是網(wǎng)絡(luò)前綴路由信息)。承載網(wǎng)絡(luò)路由的鏈路狀態(tài)報(bào)文關(guān)聯(lián)于對(duì)應(yīng)拓?fù)浣Y(jié)構(gòu)的鏈路狀態(tài)報(bào)文,即只有先計(jì)算出到達(dá)特定路由器的拓?fù)渎酚桑罄m(xù)才能計(jì)算出特定路由器通告的網(wǎng)絡(luò)前綴路由信息。
如圖1所示。圖1說(shuō)明了不區(qū)分優(yōu)先級(jí)地發(fā)送鏈路狀態(tài)報(bào)文的例子。路由器1執(zhí)行重分配命令引入大量的bgp路由,和路由器2進(jìn)行數(shù)據(jù)庫(kù)同步過(guò)程中需要將數(shù)據(jù)庫(kù)中所有鏈路狀態(tài)報(bào)文發(fā)送給路由器2。在tn時(shí)刻之前,路由器1將葉子鏈路狀態(tài)報(bào)文(承載著引入的bgp路由信息)發(fā)送給路由器2,但在tn時(shí)刻,路由器1才將自己產(chǎn)生的拓?fù)滏溌窢顟B(tài)報(bào)文(承載著路由器1指向路由器2的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息)發(fā)送給路由器2。由于在tn時(shí)刻之前路由器2沒(méi)有路由器1的拓?fù)滏溌窢顟B(tài)報(bào)文,所以路由器2無(wú)法計(jì)算出到達(dá)路由器1的拓?fù)渎酚?,也就?jì)算不出路由器1通告的bgp路由信息(即使此時(shí)路由器2可能已經(jīng)接收到路由器1通告的所有bgp路由信息),只有當(dāng)tn時(shí)刻路由器2接收到路由器1的拓?fù)滏溌窢顟B(tài)報(bào)文時(shí),路由器2才能計(jì)算出到達(dá)路由器1的拓?fù)渎酚桑拍苡?jì)算出路由器1通告的bgp路由信息。
通過(guò)上述例子可以看出,鏈路狀態(tài)路由協(xié)議在數(shù)據(jù)庫(kù)同步過(guò)程中,如果不區(qū)分拓?fù)滏溌窢顟B(tài)報(bào)文和葉子鏈路狀態(tài)報(bào)文,即不區(qū)分重要性地進(jìn)行數(shù)據(jù)庫(kù)同步,會(huì)出現(xiàn)沒(méi)有接收到重要的拓?fù)滏溌窢顟B(tài)報(bào)文而導(dǎo)致其通告的路由信息無(wú)法被及時(shí)計(jì)算的情況,最終會(huì)大大影響路由的收斂速度。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種路由器區(qū)分優(yōu)先級(jí)的數(shù)據(jù)庫(kù)同步的方法及其裝置、以及路由器及其系統(tǒng),以解決在鏈路狀態(tài)路由協(xié)議數(shù)據(jù)庫(kù)同步過(guò)程中沒(méi)有區(qū)分拓?fù)滏溌窢顟B(tài)報(bào)文和非拓?fù)滏溌窢顟B(tài)報(bào)文出現(xiàn)沒(méi)有接收到拓?fù)滏溌窢顟B(tài)報(bào)文而導(dǎo)致其通告的路由信息無(wú)法被及時(shí)計(jì)算的情況,最終會(huì)影響路由的收斂速度的問(wèn)題。
本發(fā)明實(shí)施例提出的一種路由器數(shù)據(jù)庫(kù)的同步方法,包括:
將鏈路狀態(tài)報(bào)文區(qū)分為拓?fù)滏溌窢顟B(tài)報(bào)文和葉子鏈路狀態(tài)報(bào)文;
在相鄰路由器同步數(shù)據(jù)庫(kù)時(shí),先同步完成所述拓?fù)滏溌窢顟B(tài)報(bào)文,再同步完成所述葉子鏈路狀態(tài)報(bào)文。
優(yōu)選地,所述在相鄰路由器同步數(shù)據(jù)庫(kù)時(shí),先同步完成所述拓?fù)滏溌窢顟B(tài)報(bào)文,再同步完成所述葉子鏈路狀態(tài)報(bào)文,同步過(guò)程包括:
建立相鄰路由器數(shù)據(jù)庫(kù)之間的摘要描述并將所述摘要描述發(fā)送給相鄰路由器,所述摘要描述包括所有鏈路狀態(tài)報(bào)文摘要;
根據(jù)摘要描述向相鄰路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文。
優(yōu)選地,所述建立相鄰路由器之間的摘要描述并將所述摘要描述發(fā)送給相鄰路由器包括:建立用于處理摘要描述的摘要描述隊(duì)列,所述摘要描述隊(duì)列包括:摘要描述優(yōu)先隊(duì)列、摘要描述普通隊(duì)列、優(yōu)先請(qǐng)求隊(duì)列、普通請(qǐng)求隊(duì)列。
優(yōu)選地,所述建立相鄰路由器之間的摘要描述并將所述摘要描述發(fā)送給相鄰路由器包括:添加摘要描述隊(duì)列,將摘要描述添加到對(duì)應(yīng)的摘要描述隊(duì)列中。
優(yōu)選地,所述添加摘要描述隊(duì)列的添加過(guò)程為:所述摘要描述為拓?fù)滏溌窢顟B(tài)報(bào)文摘要時(shí),將所述摘要描述添加到所述摘要描述優(yōu)先隊(duì)列;所述摘 要描述為葉子鏈路狀態(tài)報(bào)文摘要時(shí),將所述摘要描述添加到所述摘要描述普通隊(duì)列。
優(yōu)選地,所述建立相鄰路由器之間的摘要描述并將所述摘要描述發(fā)送給相鄰路由器包括:發(fā)送摘要描述隊(duì)列,將摘要描述隊(duì)列按優(yōu)先級(jí)處理原則發(fā)送給鄰居路由器,所述優(yōu)先級(jí)處理原則為:優(yōu)先發(fā)送摘要描述隊(duì)列中的摘要描述優(yōu)先隊(duì)列給鄰居路由器,摘要描述優(yōu)先隊(duì)列全部發(fā)送完成后再發(fā)送摘要描述普通隊(duì)列。
優(yōu)選地,所述建立相鄰路由器之間的摘要描述并將所述摘要描述發(fā)送給相鄰路由器包括:接收摘要描述隊(duì)列,檢查摘要描述隊(duì)列中的摘要描述,根據(jù)摘要描述決定向鄰居路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文。
優(yōu)選地,當(dāng)決定向鄰居路由器發(fā)送所述鏈路狀態(tài)請(qǐng)求報(bào)文時(shí),將所述鏈路狀態(tài)請(qǐng)求報(bào)文添加到請(qǐng)求隊(duì)列中:如果所述摘要描述是拓?fù)滏溌窢顟B(tài)報(bào)文摘要,則將所述鏈路狀態(tài)請(qǐng)求報(bào)文添加到優(yōu)先請(qǐng)求隊(duì)列中;如果所述摘要描述是葉子鏈路狀態(tài)報(bào)文摘要,則將所述鏈路狀態(tài)請(qǐng)求報(bào)文添加到普通請(qǐng)求隊(duì)列中。
優(yōu)選地,所述建立相鄰路由器之間的摘要描述并將所述摘要描述發(fā)送給相鄰路由器包括:發(fā)送請(qǐng)求隊(duì)列,將請(qǐng)求隊(duì)列的鏈路狀態(tài)請(qǐng)求報(bào)文按優(yōu)先級(jí)處理原則發(fā)送給鄰居路由器,所述優(yōu)先級(jí)處理原則為:優(yōu)先發(fā)送請(qǐng)求隊(duì)列中的優(yōu)先請(qǐng)求隊(duì)列,優(yōu)先請(qǐng)求隊(duì)列完成后再發(fā)送普通請(qǐng)求隊(duì)列;在發(fā)送普通請(qǐng)求隊(duì)列過(guò)程中,如果優(yōu)先請(qǐng)求隊(duì)列中出現(xiàn)新的鏈路狀態(tài)請(qǐng)求時(shí),中斷當(dāng)前普通請(qǐng)求隊(duì)列處理并轉(zhuǎn)向優(yōu)先請(qǐng)求隊(duì)列中的鏈路狀態(tài)報(bào)文請(qǐng)求發(fā)送處理。
優(yōu)選地,所述根據(jù)摘要描述向相鄰路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文包括:建立報(bào)文發(fā)送隊(duì)列,所述報(bào)文發(fā)送隊(duì)列是根據(jù)接到的鏈路請(qǐng)求報(bào)文建立并用于處理鏈路報(bào)文發(fā)送,所述報(bào)文發(fā)送隊(duì)列包括:優(yōu)先報(bào)文發(fā)送隊(duì)列和普通報(bào)文發(fā)送隊(duì)列。
優(yōu)選地,所述根據(jù)摘要描述向相鄰路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文包括:添加報(bào)文發(fā)送隊(duì)列,將鏈路狀態(tài)報(bào)文添加到報(bào)文發(fā)送隊(duì)列中。
優(yōu)選地,所述添加報(bào)文發(fā)送隊(duì)列的添加過(guò)程為:
接收到鄰居路由器發(fā)來(lái)的鏈路狀態(tài)請(qǐng)求報(bào)文時(shí),檢查所述鏈路狀態(tài)請(qǐng)求報(bào)文,根據(jù)所述鏈路狀態(tài)請(qǐng)求報(bào)文將對(duì)應(yīng)的鏈路狀態(tài)報(bào)文添加到所述報(bào)文發(fā) 送隊(duì)列中,包括:如果所述鏈路狀態(tài)請(qǐng)求報(bào)文是拓?fù)滏溌窢顟B(tài)請(qǐng)求報(bào)文,將所述拓?fù)滏溌窢顟B(tài)報(bào)文添加到優(yōu)先報(bào)文發(fā)送隊(duì)列;如果所述鏈路狀態(tài)請(qǐng)求報(bào)文是葉子鏈路狀態(tài)請(qǐng)求報(bào)文,將所述葉子鏈路狀態(tài)報(bào)文添加到普通報(bào)文發(fā)送隊(duì)列;或者,
從其他路由器得到新的鏈路狀態(tài)報(bào)文或者自己產(chǎn)生新的鏈路狀態(tài)報(bào)文時(shí),將新的鏈路狀態(tài)報(bào)文添加到報(bào)文發(fā)送隊(duì)列中:如果鏈路狀態(tài)報(bào)文是拓?fù)滏溌窢顟B(tài)報(bào)文,將拓?fù)滏溌窢顟B(tài)報(bào)文添加到優(yōu)先報(bào)文發(fā)送隊(duì)列;如果鏈路狀態(tài)報(bào)文是葉子鏈路狀態(tài)報(bào)文,將葉子鏈路狀態(tài)報(bào)文添加到普通報(bào)文發(fā)送隊(duì)列。
優(yōu)選地,所述根據(jù)摘要描述向相鄰路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文包括:發(fā)送報(bào)文發(fā)送隊(duì)列,將報(bào)文發(fā)送隊(duì)列的鏈路狀態(tài)報(bào)文按優(yōu)先級(jí)處理原則發(fā)送給鄰居路由器,所述優(yōu)先級(jí)處理原則為:優(yōu)先發(fā)送報(bào)文發(fā)送隊(duì)列中的優(yōu)先報(bào)文發(fā)送隊(duì)列,優(yōu)先報(bào)文發(fā)送隊(duì)列完成后發(fā)送普通報(bào)文發(fā)送隊(duì)列;在發(fā)送普通報(bào)文發(fā)送隊(duì)列過(guò)程中,如果優(yōu)先報(bào)文發(fā)送隊(duì)列中出現(xiàn)新的鏈路狀態(tài)報(bào)文發(fā)送請(qǐng)求時(shí),中斷當(dāng)前普通報(bào)文發(fā)送隊(duì)列處理并轉(zhuǎn)向優(yōu)先報(bào)文發(fā)送隊(duì)列中的鏈路狀態(tài)報(bào)文發(fā)送處理。
本發(fā)明實(shí)施例還提出一種路由器數(shù)據(jù)庫(kù)的同步裝置,其特征在于:包括:區(qū)分單元和同步單元;其中:
所述區(qū)分單元,用于將鏈路狀態(tài)報(bào)文區(qū)分為拓?fù)滏溌窢顟B(tài)報(bào)文和葉子鏈路狀態(tài)報(bào)文;
所述同步單元,用于在相鄰路由器同步數(shù)據(jù)庫(kù)時(shí),先同步完成所述拓?fù)滏溌窢顟B(tài)報(bào)文,再同步完成所述葉子鏈路狀態(tài)報(bào)文。
優(yōu)選地,所述同步單元包括摘要描述生成模塊和鏈路狀態(tài)報(bào)文發(fā)送模塊;其中:
所述摘要描述生成模塊,用于建立相鄰路由器數(shù)據(jù)庫(kù)之間的摘要描述并將所述摘要描述發(fā)送給相鄰路由器;所述摘要描述包括所有鏈路狀態(tài)報(bào)文摘要;
所述鏈路狀態(tài)報(bào)文發(fā)送模塊,用于根據(jù)摘要描述向相鄰路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文。
優(yōu)選地,所述摘要描述生成模塊,具體用于:
建立用于處理摘要描述的摘要描述隊(duì)列,所述摘要描述隊(duì)列包括:摘要描述優(yōu)先隊(duì)列、摘要描述普通隊(duì)列、優(yōu)先請(qǐng)求隊(duì)列、普通請(qǐng)求隊(duì)列;
添加摘要描述隊(duì)列,將摘要描述分別添加到對(duì)應(yīng)的摘要描述隊(duì)列中;
發(fā)送摘要描述隊(duì)列,將摘要描述隊(duì)列按優(yōu)先級(jí)處理原則發(fā)送給鄰居路由器;
接收摘要描述隊(duì)列,檢查摘要描述隊(duì)列中的摘要描述,根據(jù)摘要描述決定向鄰居路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文;
發(fā)送請(qǐng)求隊(duì)列,將請(qǐng)求隊(duì)列的鏈路狀態(tài)請(qǐng)求報(bào)文按優(yōu)先級(jí)處理原則發(fā)送給鄰居路由器。
優(yōu)選地,所述添加摘要描述隊(duì)列的添加過(guò)程為:所述摘要描述為拓?fù)滏溌窢顟B(tài)報(bào)文摘要時(shí),將所述摘要描述添加到所述摘要描述優(yōu)先隊(duì)列;所述摘要描述為葉子鏈路狀態(tài)報(bào)文摘要時(shí),將所述摘要描述添加到所述摘要描述普通隊(duì)列。
優(yōu)選地,所述發(fā)送摘要描述隊(duì)列的優(yōu)先級(jí)處理原則是:優(yōu)先發(fā)送摘要描述隊(duì)列中的摘要描述優(yōu)先隊(duì)列,摘要描述優(yōu)先隊(duì)列全部發(fā)送完后再發(fā)送摘要描述普通隊(duì)列。
優(yōu)選地,當(dāng)決定向鄰居路由器發(fā)送所述鏈路狀態(tài)請(qǐng)求報(bào)文時(shí),將所述鏈路狀態(tài)請(qǐng)求報(bào)文添加到請(qǐng)求隊(duì)列中:如果所述摘要描述是拓?fù)滏溌窢顟B(tài)報(bào)文摘要,則將所述鏈路狀態(tài)請(qǐng)求報(bào)文添加到優(yōu)先請(qǐng)求隊(duì)列中;如果所述摘要描述是葉子鏈路狀態(tài)報(bào)文摘要,則將所述鏈路狀態(tài)報(bào)文請(qǐng)求添加到普通請(qǐng)求隊(duì)列中。
優(yōu)選地,所述發(fā)送請(qǐng)求隊(duì)列的優(yōu)先級(jí)處理原則是:優(yōu)先發(fā)送請(qǐng)求隊(duì)列中的優(yōu)先請(qǐng)求隊(duì)列,優(yōu)先請(qǐng)求隊(duì)列完成后再發(fā)送普通請(qǐng)求隊(duì)列;在發(fā)送普通請(qǐng)求隊(duì)列過(guò)程中,如果優(yōu)先請(qǐng)求隊(duì)列中出現(xiàn)新的鏈路狀態(tài)請(qǐng)求時(shí),中斷當(dāng)前普通請(qǐng)求隊(duì)列處理并轉(zhuǎn)向優(yōu)先請(qǐng)求隊(duì)列中的鏈路狀態(tài)報(bào)文請(qǐng)求發(fā)送處理。
優(yōu)選地,所述鏈路狀態(tài)報(bào)文發(fā)送模塊,具體用于:
建立報(bào)文發(fā)送隊(duì)列,所述報(bào)文發(fā)送隊(duì)列是根據(jù)接到的鏈路請(qǐng)求報(bào)文建立并用于處理鏈路報(bào)文發(fā)送,所述報(bào)文發(fā)送隊(duì)列包括:優(yōu)先報(bào)文發(fā)送隊(duì)列和普通報(bào)文發(fā)送隊(duì)列;
添加報(bào)文發(fā)送隊(duì)列,將鏈路狀態(tài)報(bào)文添加到報(bào)文發(fā)送隊(duì)列中;
發(fā)送報(bào)文發(fā)送隊(duì)列,將報(bào)文發(fā)送隊(duì)列的鏈路狀態(tài)報(bào)文按優(yōu)先級(jí)處理原則向鄰居路由器發(fā)送。
優(yōu)選地,所述添加報(bào)文發(fā)送隊(duì)列添加過(guò)程為:
接收到鄰居路由器發(fā)來(lái)的鏈路狀態(tài)請(qǐng)求報(bào)文時(shí),檢查所述鏈路狀態(tài)請(qǐng)求報(bào)文,根據(jù)所述鏈路狀態(tài)請(qǐng)求報(bào)文將對(duì)應(yīng)的鏈路狀態(tài)報(bào)文添加到所述報(bào)文發(fā)送隊(duì)列中,包括:如果所述鏈路狀態(tài)請(qǐng)求報(bào)文是拓?fù)滏溌窢顟B(tài)請(qǐng)求報(bào)文,將所述拓?fù)滏溌窢顟B(tài)報(bào)文添加到優(yōu)先報(bào)文發(fā)送隊(duì)列;如果所述鏈路狀態(tài)請(qǐng)求報(bào)文是葉子鏈路狀態(tài)請(qǐng)求報(bào)文,將葉子鏈路狀態(tài)報(bào)文添加到普通報(bào)文發(fā)送隊(duì)列;或者,
從其他路由器得到新的鏈路狀態(tài)報(bào)文或者自己產(chǎn)生新的鏈路狀態(tài)報(bào)文時(shí),將新的鏈路狀態(tài)報(bào)文添加到報(bào)文發(fā)送隊(duì)列中:如果鏈路狀態(tài)報(bào)文是拓?fù)滏溌窢顟B(tài)報(bào)文,將拓?fù)滏溌窢顟B(tài)報(bào)文添加到優(yōu)先報(bào)文發(fā)送隊(duì)列;如果鏈路狀態(tài)報(bào)文是葉子鏈路狀態(tài)報(bào)文,將葉子鏈路狀態(tài)報(bào)文添加到普通報(bào)文發(fā)送隊(duì)列。
優(yōu)選地,所述發(fā)送報(bào)文發(fā)送隊(duì)列的優(yōu)先級(jí)處理原則為:優(yōu)先發(fā)送報(bào)文發(fā)送隊(duì)列中的優(yōu)先報(bào)文發(fā)送隊(duì)列,優(yōu)先報(bào)文發(fā)送隊(duì)列完成后發(fā)送普通報(bào)文發(fā)送隊(duì)列;在發(fā)送普通報(bào)文發(fā)送隊(duì)列過(guò)程中,如果優(yōu)先報(bào)文發(fā)送隊(duì)列中出現(xiàn)新的鏈路狀態(tài)報(bào)文發(fā)送請(qǐng)求時(shí),中斷當(dāng)前普通報(bào)文發(fā)送隊(duì)列處理并轉(zhuǎn)向優(yōu)先報(bào)文發(fā)送隊(duì)列中的鏈路狀態(tài)報(bào)文發(fā)送處理。
本發(fā)明實(shí)施例還提出一種路由器,所述路由器包括如以上所述的同步裝置。
本發(fā)明實(shí)施例還提出一種路由器系統(tǒng),所述路由器系統(tǒng)包括至少兩個(gè)如以上所述的路由器。
本發(fā)明與現(xiàn)有技術(shù)相比,本發(fā)明提供的一種路由器區(qū)分優(yōu)先級(jí)的數(shù)據(jù)庫(kù) 同步的方法及其裝置、以及路由器及其系統(tǒng),鏈路狀態(tài)路由協(xié)議在數(shù)據(jù)庫(kù)同步過(guò)程中,區(qū)分拓?fù)滏溌窢顟B(tài)報(bào)文和葉子鏈路狀態(tài)報(bào)文,即區(qū)分重要性地進(jìn)行數(shù)據(jù)庫(kù)同步,優(yōu)先同步影響網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的重要性高的拓?fù)滏溌窢顟B(tài)報(bào)文,在拓?fù)滏溌窢顟B(tài)報(bào)文同步完成的情況下再進(jìn)行重要性相對(duì)低的其它鏈路狀態(tài)報(bào)文(葉子鏈路狀態(tài)報(bào)文)的同步,從而可以加快路由的收斂速度。
附圖說(shuō)明
圖1為現(xiàn)有技術(shù)中不區(qū)分優(yōu)先級(jí)數(shù)據(jù)庫(kù)同步例子的示意圖;
圖2為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法的流程圖;
圖3為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法中添加摘要描述隊(duì)列的流程圖;
圖4為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法中發(fā)送摘要描述隊(duì)列的流程圖;
圖5為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法中接收摘要描述的流程圖;
圖6為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法中發(fā)送請(qǐng)求隊(duì)列的流程圖;
圖7為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法中接收請(qǐng)求報(bào)文的流程圖;
圖8為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法中添加報(bào)文發(fā)送隊(duì)列的流程圖;
圖9為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法中發(fā)送報(bào)文發(fā)送隊(duì)列的流程圖;
圖10為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步裝置的結(jié)構(gòu)示意圖。
為了使本發(fā)明的技術(shù)方案更加清楚、明了,下面將結(jié)合附圖作進(jìn)一步詳述。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖2所示,本發(fā)明提供一種路由器數(shù)據(jù)庫(kù)同步的方法,應(yīng)用于鏈路狀態(tài)路由算法協(xié)議的數(shù)據(jù)庫(kù)同步,包括:
將鏈路狀態(tài)路由算法產(chǎn)生的鏈路狀態(tài)報(bào)文區(qū)分為拓?fù)滏溌窢顟B(tài)報(bào)文和葉子鏈路狀態(tài)報(bào)文;
鏈路狀態(tài)路由算法產(chǎn)生的鏈路狀態(tài)報(bào)文主要有兩種類(lèi)型:一種是承載網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的鏈路狀態(tài)報(bào)文(簡(jiǎn)稱(chēng)拓?fù)滏溌窢顟B(tài)報(bào)文,每臺(tái)路由器都會(huì)產(chǎn)生描述對(duì)應(yīng)拓?fù)浣Y(jié)構(gòu)的鏈路狀態(tài)報(bào)文);另一種是承載網(wǎng)絡(luò)路由的鏈路狀態(tài)報(bào)文(簡(jiǎn)稱(chēng)葉子鏈路狀態(tài)報(bào)文,相對(duì)于拓?fù)浣Y(jié)構(gòu)鏈路報(bào)文,路由器會(huì)產(chǎn)生更多的承載網(wǎng)絡(luò)路由的鏈路狀態(tài)報(bào)文,主要是網(wǎng)絡(luò)前綴路由信息)。承載網(wǎng)絡(luò)路由的鏈路狀態(tài)報(bào)文關(guān)聯(lián)于對(duì)應(yīng)拓?fù)浣Y(jié)構(gòu)的鏈路狀態(tài)報(bào)文,即只有先計(jì)算出到達(dá)特定路由器的拓?fù)渎酚?,后續(xù)才能計(jì)算出特定路由器通告的網(wǎng)絡(luò)前綴路由信息??梢钥闯觯休d網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的鏈路狀態(tài)報(bào)文(拓?fù)滏溌窢顟B(tài)報(bào)文)相對(duì)要比承載網(wǎng)絡(luò)路由的鏈路狀態(tài)報(bào)文(葉子鏈路狀態(tài)報(bào)文)更加重要。
在相鄰路由器同步數(shù)據(jù)庫(kù)時(shí),先同步完成所述拓?fù)滏溌窢顟B(tài)報(bào)文,再同步完成所述葉子鏈路狀態(tài)報(bào)文。具體同步過(guò)程包括:
建立相鄰路由器數(shù)據(jù)庫(kù)之間的摘要描述并將所述摘要描述發(fā)送給相鄰路由器;
根據(jù)摘要描述向相鄰路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文。
以下具體描述同步過(guò)程。
相鄰路由器發(fā)送hello報(bào)文建立雙向通信后,將本地?cái)?shù)據(jù)庫(kù)中所有鏈路狀態(tài)報(bào)文摘要形成摘要描述(即以摘要描述形式來(lái)表征鏈路狀態(tài)報(bào)文摘要)發(fā)送給鄰居路由器,通過(guò)該摘要描述,可以確定本地路由器的本地?cái)?shù)據(jù)庫(kù)缺少的鏈路狀態(tài)報(bào)文和鄰居路由器數(shù)據(jù)庫(kù)缺少的鏈路狀態(tài)報(bào)文。
關(guān)于建立相鄰路由器數(shù)據(jù)庫(kù)之間的摘要描述并將所述摘要描述發(fā)送給相鄰路由器的具體過(guò)程如下所述:
建立用于處理摘要描述的摘要描述隊(duì)列,該處理包括添加、發(fā)送、接收等過(guò)程,并初始化該摘要描述隊(duì)列。該摘要描述隊(duì)列包括:摘要描述優(yōu)先隊(duì) 列、摘要描述普通隊(duì)列、優(yōu)先請(qǐng)求隊(duì)列、普通請(qǐng)求隊(duì)列。
添加摘要描述隊(duì)列,將摘要描述按重要性分別添加到對(duì)應(yīng)的摘要描述隊(duì)列中,具體添加過(guò)程是:如摘要描述為拓?fù)滏溌窢顟B(tài)報(bào)文摘要時(shí),將其添加到摘要描述優(yōu)先隊(duì)列;如摘要描述為葉子鏈路狀態(tài)報(bào)文摘要時(shí),將其添加到摘要描述普通隊(duì)列。
發(fā)送摘要描述隊(duì)列,將摘要描述隊(duì)列按優(yōu)先級(jí)處理原則發(fā)送給鄰居路由器。該優(yōu)先級(jí)處理原則是:優(yōu)先發(fā)送摘要描述隊(duì)列中的摘要描述優(yōu)先隊(duì)列,摘要描述優(yōu)先隊(duì)列全部發(fā)送完后再發(fā)送摘要描述普通隊(duì)列;當(dāng)摘要描述優(yōu)先隊(duì)列不為空時(shí),將摘要描述優(yōu)先隊(duì)列中的摘要描述發(fā)送給鄰居路由器,直至摘要描述優(yōu)先隊(duì)列為空;當(dāng)摘要描述優(yōu)先隊(duì)列為空時(shí),處理摘要描述普通隊(duì)列,將摘要描述普通隊(duì)列中的摘要描述發(fā)送給鄰居路由器。
接收摘要描述隊(duì)列,接收鄰居路由器發(fā)送的摘要描述隊(duì)列,檢查摘要描述隊(duì)列中的每一個(gè)摘要描述,根據(jù)摘要描述決定是否需要向鄰居路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文;當(dāng)決定需要向鄰居路由器發(fā)送請(qǐng)求鏈路狀態(tài)報(bào)文時(shí),將鏈路狀態(tài)請(qǐng)求報(bào)文添加到請(qǐng)求隊(duì)列中:如果摘要描述是拓?fù)滏溌窢顟B(tài)報(bào)文摘要,則將鏈路狀態(tài)請(qǐng)求報(bào)文添加到優(yōu)先請(qǐng)求隊(duì)列中;如果摘要描述是葉子鏈路狀態(tài)報(bào)文摘要,則將鏈路狀態(tài)請(qǐng)求報(bào)文添加到普通請(qǐng)求隊(duì)列中。
發(fā)送請(qǐng)求隊(duì)列,將請(qǐng)求隊(duì)列的鏈路狀態(tài)請(qǐng)求報(bào)文按優(yōu)先級(jí)處理原則發(fā)送給鄰居路由器。該優(yōu)先級(jí)處理原則是:優(yōu)先發(fā)送請(qǐng)求隊(duì)列中的優(yōu)先請(qǐng)求隊(duì)列,優(yōu)先請(qǐng)求隊(duì)列完成后再發(fā)送普通請(qǐng)求隊(duì)列;當(dāng)優(yōu)先請(qǐng)求隊(duì)列不為空時(shí),將優(yōu)先請(qǐng)求隊(duì)列中的鏈路狀態(tài)報(bào)文請(qǐng)求發(fā)送給鄰居路由器,直至優(yōu)先請(qǐng)求隊(duì)列為空;當(dāng)優(yōu)先請(qǐng)求隊(duì)列為空時(shí),處理普通請(qǐng)求隊(duì)列,將普通請(qǐng)求隊(duì)列中的鏈路狀態(tài)報(bào)文請(qǐng)求發(fā)送給鄰居路由器;在發(fā)送普通請(qǐng)求隊(duì)列過(guò)程中,如果優(yōu)先請(qǐng)求隊(duì)列中出現(xiàn)新的鏈路狀態(tài)請(qǐng)求時(shí),中斷當(dāng)前普通請(qǐng)求隊(duì)列處理并轉(zhuǎn)向優(yōu)先請(qǐng)求隊(duì)列中的鏈路狀態(tài)報(bào)文請(qǐng)求發(fā)送處理。
由于根據(jù)相鄰路由器發(fā)送的摘要描述,可以確定本地路由器的本地?cái)?shù)據(jù)庫(kù)是否缺少的鏈路狀態(tài)報(bào)文和鄰居路由器數(shù)據(jù)庫(kù)是否缺少的鏈路狀態(tài)報(bào)文,并依此結(jié)果向鄰居路由器請(qǐng)求發(fā)送數(shù)據(jù)庫(kù)缺少的鏈路狀態(tài)報(bào)文,完善路由器 的鏈路狀態(tài)報(bào)文數(shù)據(jù)庫(kù),達(dá)成路由器數(shù)據(jù)庫(kù)同步的目的。
路由器向鄰居路由器發(fā)送鏈路狀態(tài)報(bào)文的觸發(fā)時(shí)機(jī),存在兩種情況:一種是接收到鄰居路由器發(fā)來(lái)的鏈路狀態(tài)報(bào)文請(qǐng)求(isis協(xié)議中接收到鄰居路由器完整的數(shù)據(jù)庫(kù)摘要描述后,會(huì)將鄰居路由器缺少的鏈路狀態(tài)報(bào)文發(fā)送給鄰居路由器);另一種是從其他路由器得到新的鏈路狀態(tài)報(bào)文或者自己產(chǎn)生新的鏈路狀態(tài)報(bào)文。以上兩種情況任一情況發(fā)生時(shí),路由器都會(huì)向鄰居路由器發(fā)送鏈路狀態(tài)報(bào)文,具體的發(fā)送過(guò)程如下所述:
建立報(bào)文發(fā)送隊(duì)列,所述報(bào)文發(fā)送隊(duì)列是根據(jù)接到的鏈路請(qǐng)求報(bào)文建立并用于處理鏈路報(bào)文發(fā)送,該報(bào)文發(fā)送隊(duì)列包括:優(yōu)先報(bào)文發(fā)送隊(duì)列和普通報(bào)文發(fā)送隊(duì)列;并初始化上述報(bào)文發(fā)送隊(duì)列。
添加報(bào)文發(fā)送隊(duì)列,將鏈路狀態(tài)報(bào)文添加到報(bào)文發(fā)送隊(duì)列中,具體添加過(guò)程是:分兩種情況進(jìn)行具體添加過(guò)程:
第一種情況:接收到鄰居路由器發(fā)來(lái)的鏈路狀態(tài)請(qǐng)求報(bào)文時(shí),檢查請(qǐng)求報(bào)文中每一個(gè)鏈路狀態(tài)請(qǐng)求報(bào)文,根據(jù)鏈路狀態(tài)請(qǐng)求報(bào)文將對(duì)應(yīng)的鏈路狀態(tài)報(bào)文添加到報(bào)文發(fā)送隊(duì)列中:如果鏈路狀態(tài)請(qǐng)求報(bào)文是拓?fù)滏溌窢顟B(tài)請(qǐng)求報(bào)文,則將拓?fù)滏溌窢顟B(tài)報(bào)文添加到優(yōu)先報(bào)文發(fā)送隊(duì)列;如果鏈路狀態(tài)請(qǐng)求報(bào)文是葉子鏈路狀態(tài)請(qǐng)求報(bào)文,則將葉子鏈路狀態(tài)報(bào)文添加到普通報(bào)文發(fā)送隊(duì)列。
第二種情況:從其他路由器得到新的鏈路狀態(tài)報(bào)文或者自己產(chǎn)生新的鏈路狀態(tài)報(bào)文時(shí),將新的鏈路狀態(tài)報(bào)文添加到報(bào)文發(fā)送隊(duì)列中:如果鏈路狀態(tài)報(bào)文是拓?fù)滏溌窢顟B(tài)報(bào)文,則將拓?fù)滏溌窢顟B(tài)報(bào)文添加到優(yōu)先報(bào)文發(fā)送隊(duì)列;如果鏈路狀態(tài)報(bào)文是葉子鏈路狀態(tài)報(bào)文,則將葉子鏈路狀態(tài)報(bào)文添加到普通報(bào)文發(fā)送隊(duì)列。
發(fā)送報(bào)文發(fā)送隊(duì)列,將報(bào)文發(fā)送隊(duì)列的鏈路狀態(tài)報(bào)文按優(yōu)先級(jí)處理原則向鄰居路由器發(fā)送。該優(yōu)先級(jí)處理原則是:優(yōu)先發(fā)送報(bào)文發(fā)送隊(duì)列中的優(yōu)先報(bào)文發(fā)送隊(duì)列,優(yōu)先報(bào)文發(fā)送隊(duì)列完成后發(fā)送普通報(bào)文發(fā)送隊(duì)列;當(dāng)優(yōu)先報(bào)文發(fā)送隊(duì)列不為空時(shí),將優(yōu)先報(bào)文發(fā)送隊(duì)列中的鏈路狀態(tài)報(bào)文發(fā)送給鄰居路由器,直至優(yōu)先報(bào)文發(fā)送隊(duì)列為空;當(dāng)優(yōu)先報(bào)文發(fā)送隊(duì)列為空時(shí),處理普通報(bào)文發(fā)送隊(duì)列,將普通報(bào)文發(fā)送隊(duì)列中的鏈路狀態(tài)報(bào)文發(fā)送給鄰居路由器;在處理普通報(bào)文發(fā)送隊(duì)列過(guò)程時(shí),如果優(yōu)先報(bào)文發(fā)送隊(duì)列中出現(xiàn)新的鏈路狀 態(tài)報(bào)文發(fā)送請(qǐng)求時(shí),中斷當(dāng)前普通報(bào)文發(fā)送隊(duì)列處理并轉(zhuǎn)向優(yōu)先報(bào)文發(fā)送隊(duì)列中的鏈路狀態(tài)報(bào)文發(fā)送處理。
如圖3所示,為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法中添加摘要描述隊(duì)列的流程圖。
路由器發(fā)現(xiàn)鄰居路由器后會(huì)將本地?cái)?shù)據(jù)庫(kù)中所有鏈路狀態(tài)報(bào)文摘要形成摘要描述發(fā)送給鄰居路由器,鄰居路由器接收到摘要描述后會(huì)判斷是否需要向?qū)Ψ秸?qǐng)求鏈路狀態(tài)報(bào)文,如果本地沒(méi)有或者本地的鏈路狀態(tài)報(bào)文沒(méi)有對(duì)方鏈路狀態(tài)報(bào)文新,則需要向?qū)Ψ秸?qǐng)求鏈路狀態(tài)報(bào)文。
將本地?cái)?shù)據(jù)庫(kù)中鏈路狀態(tài)報(bào)文摘要形成摘要描述發(fā)送給鄰居路由器前,需要將本地?cái)?shù)據(jù)庫(kù)中所有鏈路狀態(tài)報(bào)文添加到摘要描述隊(duì)列中,如果鏈路狀態(tài)報(bào)文為拓?fù)滏溌窢顟B(tài)報(bào)文,則添加到摘要描述優(yōu)先隊(duì)列;如果鏈路狀態(tài)報(bào)文為葉子鏈路狀態(tài)報(bào)文,則添加到摘要描述普通隊(duì)列。
如圖4所示,為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法中發(fā)送摘要描述隊(duì)列的流程圖。
發(fā)送摘要描述隊(duì)列時(shí),首先處理摘要描述優(yōu)先隊(duì)列中的摘要描述,將摘要描述優(yōu)先隊(duì)列中的每個(gè)摘要描述發(fā)送出去,只有當(dāng)摘要描述優(yōu)先隊(duì)列中所有摘要描述處理完成后,才處理摘要描述普通隊(duì)列中的摘要描述。這樣可以保證摘要描述優(yōu)先隊(duì)列中的拓?fù)滏溌窢顟B(tài)摘要信息以高優(yōu)先級(jí)發(fā)送出去。
因?yàn)檎枋鲫?duì)列的添加是一次性完成,不存在所有鏈路狀態(tài)摘要描述添加完成后又要添加的鏈路狀態(tài)摘要描述,后續(xù)數(shù)據(jù)庫(kù)中新添加的鏈路狀態(tài)報(bào)文將會(huì)直接發(fā)送給鄰居路由器,而不用再次添加到摘要描述隊(duì)列表中。
如圖5所示,為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法中接收摘要描述的流程圖。
接收到鄰居路由器發(fā)來(lái)的摘要描述隊(duì)列,檢查摘要描述隊(duì)列中的每一個(gè)摘要描述,根據(jù)摘要描述決定是否需要向鄰居路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文。如果本地?cái)?shù)據(jù)庫(kù)沒(méi)有摘要描述的鏈路狀態(tài)報(bào)文或者本地?cái)?shù)據(jù)庫(kù)中的鏈路狀態(tài)報(bào)文沒(méi)有摘要描述的鏈路狀態(tài)報(bào)文新,需要向鄰居路由器發(fā)送鏈路狀態(tài)請(qǐng)求 報(bào)文。
當(dāng)決定需要向鄰居路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文時(shí),將鏈路狀態(tài)請(qǐng)求報(bào)文添加到請(qǐng)求隊(duì)列中:如果摘要描述是拓?fù)滏溌窢顟B(tài)報(bào)文摘要,則添加到優(yōu)先請(qǐng)求隊(duì)列中;如果摘要描述是葉子鏈路狀態(tài)報(bào)文摘要,則添加到普通請(qǐng)求隊(duì)列中。
接收到鄰居路由器發(fā)來(lái)的完整摘要描述后(當(dāng)路由器將本地?cái)?shù)據(jù)庫(kù)中所有鏈路狀態(tài)的摘要描述全部發(fā)送完畢時(shí),會(huì)通過(guò)摘要描述中的特定字段向鄰居路由器傳遞本地已經(jīng)將所有鏈路狀態(tài)的摘要描述發(fā)送完的信號(hào)),如果本地?cái)?shù)據(jù)庫(kù)中含有完整摘要描述中所沒(méi)有的鏈路狀態(tài)報(bào)文時(shí),則說(shuō)明對(duì)方鄰居路由器缺少相應(yīng)的鏈路狀態(tài)報(bào)文。如果缺少的鏈路狀態(tài)報(bào)文是拓?fù)滏溌窢顟B(tài)報(bào)文,則添加到優(yōu)先報(bào)文發(fā)送隊(duì)列;如果缺少的鏈路狀態(tài)報(bào)文是葉子鏈路狀態(tài)報(bào)文,則添加到普通報(bào)文發(fā)送隊(duì)列(這個(gè)僅對(duì)isis協(xié)議適用)。
如圖6所示,為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法中發(fā)送請(qǐng)求隊(duì)列的流程圖。
發(fā)送請(qǐng)求隊(duì)列時(shí),首先發(fā)送優(yōu)先請(qǐng)求隊(duì)列中的請(qǐng)求報(bào)文,只有當(dāng)優(yōu)先請(qǐng)求隊(duì)列中所有請(qǐng)求報(bào)文處理完成后,才開(kāi)始處理普通請(qǐng)求隊(duì)列中的請(qǐng)求報(bào)文。這樣可以保證優(yōu)先請(qǐng)求隊(duì)列中的拓?fù)滏溌窢顟B(tài)請(qǐng)求報(bào)文以高優(yōu)先級(jí)發(fā)送出去。
在處理普通請(qǐng)求隊(duì)列過(guò)程中,如果有新的報(bào)文請(qǐng)求添加至優(yōu)先請(qǐng)求隊(duì)列中,則中斷普通請(qǐng)求隊(duì)列的發(fā)送請(qǐng)求處理,轉(zhuǎn)去處理優(yōu)先請(qǐng)求隊(duì)列中的發(fā)送請(qǐng)求,處理完畢后繼續(xù)上一次被中斷的普通請(qǐng)求隊(duì)列中的發(fā)送請(qǐng)求處理。這種搶占式的處理方式可以保證拓?fù)滏溌窢顟B(tài)報(bào)文請(qǐng)求始終以高優(yōu)先級(jí)發(fā)送出去。
如圖7所示,為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法中接收請(qǐng)求報(bào)文的流程圖。
接收到鄰居路由器發(fā)來(lái)的請(qǐng)求報(bào)文時(shí),會(huì)處理請(qǐng)求報(bào)文中的每一個(gè)鏈路狀態(tài)報(bào)文請(qǐng)求,根據(jù)報(bào)文請(qǐng)求決定是否需要向鄰居路由器發(fā)送對(duì)應(yīng)的鏈路狀態(tài)報(bào)文,如果本地?cái)?shù)據(jù)庫(kù)有對(duì)應(yīng)的鏈路狀態(tài)報(bào)文,將該鏈路狀態(tài)報(bào)文發(fā)送給 鄰居路由器。
如果需要向鄰居路由器發(fā)送鏈路狀態(tài)報(bào)文時(shí),判斷請(qǐng)求的鏈路狀態(tài)報(bào)文是否為拓?fù)滏溌窢顟B(tài)報(bào)文,如果請(qǐng)求的鏈路狀態(tài)報(bào)文為拓?fù)滏溌窢顟B(tài)報(bào)文,則添加到優(yōu)先報(bào)文發(fā)送隊(duì)列中;如果請(qǐng)求的鏈路狀態(tài)報(bào)文為葉子鏈路狀態(tài)報(bào)文,則添加到普通報(bào)文發(fā)送隊(duì)列中。
如圖8所示,為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法中添加報(bào)文發(fā)送隊(duì)列的流程圖。
從其他路由器得到新的鏈路狀態(tài)報(bào)文或者自己產(chǎn)生新的鏈路狀態(tài)報(bào)文時(shí),需要將這些新的鏈路狀態(tài)報(bào)文發(fā)送給鄰居路由器。判斷新的鏈路狀態(tài)報(bào)文是否為拓?fù)滏溌窢顟B(tài)報(bào)文,如果新的鏈路狀態(tài)報(bào)文為拓?fù)滏溌窢顟B(tài)報(bào)文,則添加到優(yōu)先報(bào)文發(fā)送隊(duì)列中;如果新的鏈路狀態(tài)報(bào)文為葉子鏈路狀態(tài)報(bào)文,則添加到普通報(bào)文發(fā)送隊(duì)列中。
如圖9所示,為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步方法中發(fā)送報(bào)文發(fā)送隊(duì)列的流程圖。
發(fā)送報(bào)文發(fā)送隊(duì)列時(shí),首先處理優(yōu)先報(bào)文發(fā)送隊(duì)列中的鏈路狀態(tài)報(bào)文發(fā)送請(qǐng)求,將優(yōu)先報(bào)文發(fā)送隊(duì)列中的鏈路狀態(tài)報(bào)文發(fā)送出去,只有當(dāng)優(yōu)先報(bào)文發(fā)送隊(duì)列中所有鏈路狀態(tài)報(bào)文發(fā)送請(qǐng)求處理完成后,才開(kāi)始處理普通報(bào)文發(fā)送隊(duì)列中的鏈路狀態(tài)報(bào)文發(fā)送請(qǐng)求。這樣可以保證優(yōu)先發(fā)送隊(duì)列中的拓?fù)滏溌窢顟B(tài)報(bào)文以高處理優(yōu)先級(jí)發(fā)送出去。
在處理普通報(bào)文發(fā)送隊(duì)列過(guò)程中,如果有新的發(fā)送請(qǐng)求添加至優(yōu)先報(bào)文發(fā)送隊(duì)列中,則中斷普通報(bào)文發(fā)送隊(duì)列的發(fā)送請(qǐng)求處理,轉(zhuǎn)去處理優(yōu)先報(bào)文發(fā)送隊(duì)列中的發(fā)送請(qǐng)求,處理完畢后繼續(xù)上一次被中斷的普通報(bào)文發(fā)送隊(duì)列中的發(fā)送請(qǐng)求處理。這種搶占式的處理方式可以保證拓?fù)滏溌窢顟B(tài)報(bào)文始終以高優(yōu)先級(jí)發(fā)送出去。
如圖10所示,為本發(fā)明提供的一種路由器數(shù)據(jù)庫(kù)同步裝置的結(jié)構(gòu)示意圖。
本發(fā)明提供一種路由器數(shù)據(jù)庫(kù)的同步裝置,應(yīng)用于鏈路狀態(tài)路由算法協(xié)議的數(shù)據(jù)庫(kù)同步,包括:區(qū)分單元和同步單元。
區(qū)分單元,用于將鏈路狀態(tài)路由算法產(chǎn)生的鏈路狀態(tài)報(bào)文區(qū)分為拓?fù)滏溌窢顟B(tài)報(bào)文和葉子鏈路狀態(tài)報(bào)文;
同步單元,用于在相鄰路由器同步數(shù)據(jù)庫(kù)時(shí),先同步完成所述拓?fù)滏溌窢顟B(tài)報(bào)文,然后再同步完成所述葉子鏈路狀態(tài)報(bào)文;所述同步單元包括摘要描述生成模塊和發(fā)送模塊。其中:
該摘要描述生成模塊,用于建立相鄰路由器數(shù)據(jù)庫(kù)之間的摘要描述并將所述摘要描述發(fā)送給相鄰路由器;所述摘要描述包括所有鏈路狀態(tài)報(bào)文摘要;具體用于:
建立摘要描述隊(duì)列,并初始化該摘要描述隊(duì)列。該摘要描述隊(duì)列包括:摘要描述優(yōu)先隊(duì)列、摘要描述普通隊(duì)列、優(yōu)先請(qǐng)求隊(duì)列、普通請(qǐng)求隊(duì)列。
添加摘要描述隊(duì)列,將摘要描述按重要性分別添加到對(duì)應(yīng)的摘要描述隊(duì)列中,添加過(guò)程是:如摘要描述為拓?fù)滏溌窢顟B(tài)報(bào)文摘要時(shí),將其添加到摘要描述優(yōu)先隊(duì)列;如摘要描述為葉子鏈路狀態(tài)報(bào)文摘要時(shí),將其添加到摘要描述普通隊(duì)列。
發(fā)送摘要描述隊(duì)列,將摘要描述隊(duì)列按優(yōu)先級(jí)處理原則發(fā)送給鄰居路由器。該優(yōu)先級(jí)處理原則是:優(yōu)先發(fā)送摘要描述隊(duì)列中的摘要描述優(yōu)先隊(duì)列,摘要描述優(yōu)先隊(duì)列全部發(fā)送完后再發(fā)送摘要描述普通隊(duì)列;當(dāng)摘要描述優(yōu)先隊(duì)列不為空時(shí),將摘要描述優(yōu)先隊(duì)列中的摘要描述發(fā)送給鄰居路由器,直至摘要描述優(yōu)先隊(duì)列為空;當(dāng)摘要描述優(yōu)先隊(duì)列為空時(shí),處理摘要描述普通隊(duì)列,將摘要描述普通隊(duì)列中的摘要描述發(fā)送給鄰居路由器。
接收摘要描述隊(duì)列,接收鄰居路由器發(fā)送的摘要描述隊(duì)列,檢查摘要描述隊(duì)列中的每一個(gè)摘要描述,根據(jù)摘要描述決定是否需要向鄰居路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文;當(dāng)決定需要向鄰居路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文時(shí),將鏈路狀態(tài)請(qǐng)求報(bào)文添加到請(qǐng)求隊(duì)列中:如果摘要描述是拓?fù)滏溌窢顟B(tài)報(bào)文摘要,則鏈路狀態(tài)請(qǐng)求報(bào)文添加到優(yōu)先請(qǐng)求隊(duì)列中;如果摘要描述是葉子鏈路狀態(tài)報(bào)文摘要,則鏈路狀態(tài)請(qǐng)求報(bào)文添加到普通請(qǐng)求隊(duì)列中。
發(fā)送請(qǐng)求隊(duì)列,將請(qǐng)求隊(duì)列的鏈路狀態(tài)請(qǐng)求報(bào)文按優(yōu)先級(jí)處理原則發(fā)送給鄰居路由器。該優(yōu)先級(jí)處理原則是:優(yōu)先發(fā)送請(qǐng)求隊(duì)列中的優(yōu)先請(qǐng)求隊(duì)列,優(yōu)先請(qǐng)求隊(duì)列完成后再發(fā)送普通請(qǐng)求隊(duì)列;當(dāng)優(yōu)先請(qǐng)求隊(duì)列不為空時(shí),將優(yōu)先請(qǐng)求隊(duì)列中的鏈路狀態(tài)報(bào)文請(qǐng)求發(fā)送給鄰居路由器,直至優(yōu)先請(qǐng)求隊(duì)列為 空;當(dāng)優(yōu)先請(qǐng)求隊(duì)列為空時(shí),處理普通請(qǐng)求隊(duì)列,將普通請(qǐng)求隊(duì)列中的鏈路狀態(tài)報(bào)文請(qǐng)求發(fā)送給鄰居路由器;在發(fā)送普通請(qǐng)求隊(duì)列過(guò)程中,如果優(yōu)先請(qǐng)求隊(duì)列中出現(xiàn)新的鏈路狀態(tài)請(qǐng)求時(shí),中斷當(dāng)前通請(qǐng)求隊(duì)列處理并轉(zhuǎn)向優(yōu)先請(qǐng)求隊(duì)列中的鏈路狀態(tài)報(bào)文請(qǐng)求發(fā)送處理。
該鏈路狀態(tài)報(bào)文發(fā)送模塊,用于根據(jù)摘要描述向相鄰路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文;具體用于:
建立報(bào)文發(fā)送隊(duì)列,所述報(bào)文發(fā)送隊(duì)列是根據(jù)接到的鏈路請(qǐng)求報(bào)文建立并用于處理鏈路報(bào)文發(fā)送,該報(bào)文發(fā)送隊(duì)列包括:優(yōu)先報(bào)文發(fā)送隊(duì)列和普通報(bào)文發(fā)送隊(duì)列;并初始化上述報(bào)文發(fā)送隊(duì)列。
添加報(bào)文發(fā)送隊(duì)列,將鏈路狀態(tài)報(bào)文添加到報(bào)文發(fā)送隊(duì)列中,具體添加過(guò)程是:分兩種情況進(jìn)行具體添加過(guò)程:
第一種情況:接收到鄰居路由器發(fā)來(lái)的鏈路狀態(tài)請(qǐng)求報(bào)文時(shí),檢查請(qǐng)求報(bào)文中每一個(gè)鏈路狀態(tài)請(qǐng)求報(bào)文,根據(jù)鏈路狀態(tài)請(qǐng)求報(bào)文將對(duì)應(yīng)的鏈路狀態(tài)報(bào)文添加到報(bào)文發(fā)送隊(duì)列中:如果鏈路狀態(tài)請(qǐng)求報(bào)文是拓?fù)滏溌窢顟B(tài)請(qǐng)求報(bào)文,則將拓?fù)滏溌窢顟B(tài)報(bào)文添加到優(yōu)先報(bào)文發(fā)送隊(duì)列;如果鏈路狀態(tài)請(qǐng)求報(bào)文是葉子鏈路狀態(tài)請(qǐng)求報(bào)文,則將葉子鏈路狀態(tài)報(bào)文添加到普通報(bào)文發(fā)送隊(duì)列。
第二種情況:從其他路由器得到新的鏈路狀態(tài)報(bào)文或者自己產(chǎn)生新的鏈路狀態(tài)報(bào)文時(shí),將新的鏈路狀態(tài)報(bào)文添加到報(bào)文發(fā)送隊(duì)列中:如果鏈路狀態(tài)報(bào)文是拓?fù)滏溌窢顟B(tài)報(bào)文,則將拓?fù)滏溌窢顟B(tài)報(bào)文添加到優(yōu)先報(bào)文發(fā)送隊(duì)列;如果鏈路狀態(tài)報(bào)文是葉子鏈路狀態(tài)報(bào)文,則將葉子鏈路狀態(tài)報(bào)文添加到普通報(bào)文發(fā)送隊(duì)列。
發(fā)送報(bào)文發(fā)送隊(duì)列,將報(bào)文發(fā)送隊(duì)列的鏈路狀態(tài)報(bào)文按優(yōu)先級(jí)處理原則向鄰居路由器發(fā)送。該優(yōu)先級(jí)處理原則是:優(yōu)先處理報(bào)文發(fā)送隊(duì)列中的優(yōu)先報(bào)文發(fā)送隊(duì)列,完成后再處理普通報(bào)文發(fā)送隊(duì)列;當(dāng)優(yōu)先報(bào)文發(fā)送隊(duì)列不為空時(shí),將優(yōu)先報(bào)文發(fā)送隊(duì)列中的鏈路狀態(tài)報(bào)文發(fā)送給鄰居路由器,直至優(yōu)先報(bào)文發(fā)送隊(duì)列為空;當(dāng)優(yōu)先報(bào)文發(fā)送隊(duì)列為空時(shí),處理普通報(bào)文發(fā)送隊(duì)列,將普通報(bào)文發(fā)送隊(duì)列中的鏈路狀態(tài)報(bào)文發(fā)送給鄰居路由器;在處理普通報(bào)文發(fā)送隊(duì)列過(guò)程時(shí),如果優(yōu)先報(bào)文發(fā)送隊(duì)列中出現(xiàn)新的鏈路狀態(tài)報(bào)文發(fā)送請(qǐng)求 時(shí),中斷當(dāng)前普通報(bào)文發(fā)送隊(duì)列處理并轉(zhuǎn)向優(yōu)先報(bào)文發(fā)送隊(duì)列中的鏈路狀態(tài)報(bào)文發(fā)送處理。
本發(fā)明還提供一種路由器,其包括如上所述的同步裝置,所述同步裝置,用于同步上述路由器的鏈路狀態(tài)路由算法協(xié)議的數(shù)據(jù)庫(kù),其包括:區(qū)分單元和同步單元。其中:
區(qū)分單元,用于將鏈路狀態(tài)路由算法產(chǎn)生的鏈路狀態(tài)報(bào)文區(qū)分為拓?fù)滏溌窢顟B(tài)報(bào)文和葉子鏈路狀態(tài)報(bào)文;
同步單元,用于在相鄰路由器同步數(shù)據(jù)庫(kù)時(shí),先同步完成所述拓?fù)滏溌窢顟B(tài)報(bào)文,然后再同步完成所述葉子鏈路狀態(tài)報(bào)文;所述同步單元包括摘要描述生成模塊和鏈路狀態(tài)報(bào)文發(fā)送模塊。其中:
摘要描述生成模塊,用于建立相鄰路由器數(shù)據(jù)庫(kù)之間的摘要描述并將所述摘要描述發(fā)送給相鄰路由器;所述摘要描述包括所有鏈路狀態(tài)報(bào)文摘要;
鏈路狀態(tài)報(bào)文發(fā)送模塊,用于根據(jù)摘要描述向相鄰路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文。
本發(fā)明還提供一種路由器系統(tǒng),包括至少兩個(gè)路由器,所述路由器包括如上所述的同步裝置,所述同步裝置,用于同步上述路由器的鏈路狀態(tài)路由算法協(xié)議的數(shù)據(jù)庫(kù),其包括:區(qū)分單元和同步單元。其中:
區(qū)分單元,用于將鏈路狀態(tài)路由算法產(chǎn)生的鏈路狀態(tài)報(bào)文區(qū)分為拓?fù)滏溌窢顟B(tài)報(bào)文和葉子鏈路狀態(tài)報(bào)文;
同步單元,用于在相鄰路由器同步數(shù)據(jù)庫(kù)時(shí),先同步完成所述拓?fù)滏溌窢顟B(tài)報(bào)文,然后再同步完成所述葉子鏈路狀態(tài)報(bào)文;所述同步單元包括摘要描述生成模塊和鏈路狀態(tài)報(bào)文發(fā)送模塊。其中:
摘要描述生成模塊,用于建立相鄰路由器數(shù)據(jù)庫(kù)之間的摘要描述并將所述摘要描述發(fā)送給相鄰路由器;所述摘要描述包括所有鏈路狀態(tài)報(bào)文摘要;
鏈路狀態(tài)報(bào)文發(fā)送模塊,用于根據(jù)摘要描述向相鄰路由器發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文。
與現(xiàn)有技術(shù)相比較,本發(fā)明至少具有下列優(yōu)點(diǎn):
本發(fā)明提供的一種路由器區(qū)分優(yōu)先級(jí)的數(shù)據(jù)庫(kù)同步的方法及其裝置、以及路由器及其系統(tǒng),鏈路狀態(tài)路由協(xié)議在數(shù)據(jù)庫(kù)同步過(guò)程中,區(qū)分拓?fù)滏溌窢顟B(tài)報(bào)文和葉子鏈路狀態(tài)報(bào)文,即區(qū)分重要性地進(jìn)行數(shù)據(jù)庫(kù)同步,優(yōu)先同步影響網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的重要性高的拓?fù)滏溌窢顟B(tài)報(bào)文,在拓?fù)滏溌窢顟B(tài)報(bào)文同步完成的情況下再進(jìn)行重要性相對(duì)低的其它鏈路狀態(tài)報(bào)文(葉子鏈路狀態(tài)報(bào)文)的同步,從而可以加快路由的收斂速度。
還需要說(shuō)明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者裝置不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者裝置所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過(guò)程、方法、物品或者裝置中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤(pán))中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或流程變換,或直接或間接運(yùn)用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。