一種針對(duì)路由方向單調(diào)變化網(wǎng)絡(luò)的容錯(cuò)曼哈頓路由方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及可靠性計(jì)算技術(shù)領(lǐng)域。更具體地,涉及一種針對(duì)路由方向單調(diào)變化網(wǎng) 絡(luò)的容錯(cuò)曼哈頓路由方法。
【背景技術(shù)】
[0002] 在諸多類型的計(jì)算機(jī)網(wǎng)絡(luò)和片上網(wǎng)絡(luò)中,曼哈頓路由方法(也稱為最小路由方法) 以其實(shí)現(xiàn)開銷小、復(fù)雜度低等特性而得到了廣泛的應(yīng)用。由于網(wǎng)絡(luò)中錯(cuò)誤節(jié)點(diǎn)的不可避免 性,使得設(shè)計(jì)能夠避讓錯(cuò)誤節(jié)點(diǎn)的曼哈頓路由算法(也稱為最小路由算法)成為一項(xiàng)很有意 義的工作。
[0003] 國(guó)內(nèi)外有很多容錯(cuò)曼哈頓路由算法的工作,其中一個(gè)典型的做法就是基于錯(cuò)誤塊 模型來設(shè)計(jì)容錯(cuò)路由算法,可以分為三個(gè)階段:第一階段是提出一種錯(cuò)誤塊模型以及相應(yīng) 的錯(cuò)誤塊構(gòu)建方法;所謂的錯(cuò)誤塊是指包含了多個(gè)錯(cuò)誤節(jié)點(diǎn)的、具有一定形狀特征的節(jié)點(diǎn) 的集合。錯(cuò)誤塊中的節(jié)點(diǎn),無論是錯(cuò)誤節(jié)點(diǎn)還是非錯(cuò)誤節(jié)點(diǎn),都不能被路由算法所到達(dá)。第 二階段是根據(jù)錯(cuò)誤塊來判斷容錯(cuò)路徑的存在性;如果存在容錯(cuò)路徑,則進(jìn)入第三階段來尋 找容錯(cuò)路徑。已有的錯(cuò)誤塊模型下,錯(cuò)誤塊本身的構(gòu)建過程復(fù)雜度較高如MCC錯(cuò)誤塊模型, 而且判斷是否存在容錯(cuò)路徑的算法也比較復(fù)雜,有一些錯(cuò)誤模塊模型如只能容忍一個(gè)錯(cuò)誤 的容錯(cuò)路由算法、凸錯(cuò)誤塊模型以及防御區(qū)模型等甚至還會(huì)犧牲掉許多可用的非錯(cuò)誤節(jié)點(diǎn) 以及可用的容錯(cuò)路徑,最終使得容錯(cuò)路由算法的復(fù)雜度很高以及可用性較低。這些錯(cuò)誤塊 模型還有一個(gè)普遍存在的問題,那就是只能適用特定拓?fù)涞木W(wǎng)絡(luò)以及特定的路由算法,普 適性較低。
[0004] 因此,需要提供一種復(fù)雜度低、普適性高且不犧牲可用容錯(cuò)曼哈頓路徑的針對(duì)路 由方向單調(diào)變化網(wǎng)絡(luò)的容錯(cuò)曼哈頓路由方法。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的在于提供一種采用路徑計(jì)數(shù)的策略的針對(duì)路由方向單調(diào)變化網(wǎng)絡(luò) 的容錯(cuò)曼哈頓路由方法,可以快速判斷出路由方向單調(diào)變化的網(wǎng)絡(luò)中是否存在容錯(cuò)曼哈頓 路徑,并給出了靈活的容錯(cuò)曼哈頓路徑的尋路策略。
[0006] 為達(dá)到上述目的,本發(fā)明采用下述技術(shù)方案:
[0007] -種針對(duì)路由方向單調(diào)變化網(wǎng)絡(luò)的容錯(cuò)曼哈頓路由方法,該方法包括如下步驟:
[0008] S1、判斷源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)是否為錯(cuò)誤節(jié)點(diǎn),若兩者至少有一個(gè)為錯(cuò)誤節(jié)點(diǎn)則說 明源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間不存在容錯(cuò)曼哈頓路徑,結(jié)束流程;若兩者均非錯(cuò)誤節(jié)點(diǎn),則轉(zhuǎn)入 步驟S2;
[0009] S2、在源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)在網(wǎng)絡(luò)中位置已知的情況下,判斷源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之 間的每一個(gè)中間節(jié)點(diǎn)的被最小路由策略允許的下一跳節(jié)點(diǎn),并記錄每一個(gè)中間節(jié)點(diǎn)的被最 小路由策略允許的上一跳節(jié)點(diǎn),下一跳的方向是源節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的方向,即可得知上一 跳的方向是目標(biāo)節(jié)點(diǎn)到源節(jié)點(diǎn)的方向,還需要說明的是:在完全適應(yīng)性最小路由策略的情 況下,不需要計(jì)算,原因在于每個(gè)節(jié)點(diǎn)的下一跳節(jié)點(diǎn)和上一跳節(jié)點(diǎn)都是被最小路由策略允 許的下一跳節(jié)點(diǎn)和上一跳節(jié)點(diǎn);而在部分適應(yīng)性最小路由策略的情況下,則需要執(zhí)行該部 分適應(yīng)性最小路由策略來計(jì)算出每個(gè)節(jié)點(diǎn)的被最小路由策略允許的下一跳節(jié)點(diǎn)和上一跳 節(jié)點(diǎn);
[0010] S3、將源節(jié)點(diǎn)的路徑計(jì)數(shù)值設(shè)為非0;根據(jù)中間節(jié)點(diǎn)及其被最小路由策略允許的所 有下一跳節(jié)點(diǎn)是否是錯(cuò)誤節(jié)點(diǎn),計(jì)算中間節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的路徑計(jì)數(shù)值,計(jì)算方法為:若中 間節(jié)點(diǎn)為錯(cuò)誤節(jié)點(diǎn),則該中間節(jié)點(diǎn)的路徑計(jì)數(shù)值為0;若中間節(jié)點(diǎn)非錯(cuò)誤節(jié)點(diǎn),則該中間節(jié) 點(diǎn)的路徑計(jì)數(shù)值為其所有被最小路由策略允許的上一跳節(jié)點(diǎn)的路徑計(jì)數(shù)值的總和;目標(biāo)節(jié) 點(diǎn)的路徑計(jì)數(shù)值為其所有被最小路由策略允許的上一跳節(jié)點(diǎn)的路徑計(jì)數(shù)值的總和;需要說 明的是:由于源節(jié)點(diǎn)的路徑計(jì)數(shù)值是設(shè)定好的,所以計(jì)算中間節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的路徑計(jì)數(shù) 值的計(jì)算先后順序?yàn)橛勺鳛樵垂?jié)點(diǎn)的下一跳節(jié)點(diǎn)的中間節(jié)點(diǎn)至目標(biāo)節(jié)點(diǎn);源節(jié)點(diǎn)已經(jīng)獲取 了網(wǎng)絡(luò)中錯(cuò)誤節(jié)點(diǎn)的位置信息;
[0011] S4、判斷目標(biāo)節(jié)點(diǎn)的路徑計(jì)數(shù)值是否為0,若為0則說明源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間不 存在容錯(cuò)曼哈頓路徑,結(jié)束流程;若不為0則說明源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間存在容錯(cuò)曼哈頓路 徑,并且源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間的容錯(cuò)曼哈頓路徑的總數(shù)目等于目標(biāo)節(jié)點(diǎn)D的路徑計(jì)數(shù)值, 轉(zhuǎn)入步驟S5;
[0012] S5、將目標(biāo)節(jié)點(diǎn)作為尋路的起點(diǎn),從起點(diǎn)開始逐跳查找路徑計(jì)數(shù)值不為0且被最小 路由策略允許的上一跳節(jié)點(diǎn)直至查找到源節(jié)點(diǎn),將由查找過程中被查找到的中間節(jié)點(diǎn)組成 的路徑作為源節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間的容錯(cuò)曼哈頓路徑。
[0013] 優(yōu)選地,步驟S2中最小路由策略包括完全適應(yīng)性最小路由策略和部分適應(yīng)性最小 路由策略,若步驟S2中的最小路由策略為完全適應(yīng)性最小路由策略,則源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn) 之間的每一個(gè)中間節(jié)點(diǎn)的下一跳節(jié)點(diǎn)均被直接判定為被最小路由策略允許的,并直接記錄 每一個(gè)中間節(jié)點(diǎn)的上一跳節(jié)點(diǎn),不必再執(zhí)行該完全適應(yīng)性最小路由策略來加以判斷;若步 驟S2中的最小路由策略為部分適應(yīng)性最小路由策略,則根據(jù)部分適應(yīng)性最小路由策略判斷 源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間的每一個(gè)中間節(jié)點(diǎn)的被部分適應(yīng)性最小路由策略允許下一跳節(jié)點(diǎn), 并根據(jù)部分適應(yīng)性最小路由策略記錄每一個(gè)中間節(jié)點(diǎn)的被部分適應(yīng)性最小路由策略允許 的上一跳節(jié)點(diǎn)。
[0014] 優(yōu)選地,步驟S3中源節(jié)點(diǎn)的路徑計(jì)數(shù)值設(shè)為1,這樣,可以在最后得到源節(jié)點(diǎn)到目 標(biāo)節(jié)點(diǎn)之間的容錯(cuò)曼哈頓路徑的同時(shí),直接得到源節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間的容錯(cuò)曼哈頓路徑 的總數(shù)量。
[0015] 優(yōu)選地,步驟S5進(jìn)一步包括如下子步驟:
[0016] S5.1、將目標(biāo)節(jié)點(diǎn)作為尋路的起點(diǎn),查找起點(diǎn)的路徑計(jì)數(shù)值不為0且被最小路由策 略允許的上一跳節(jié)點(diǎn);
[0017] S5.2、將查找到的上一跳節(jié)點(diǎn)作為起點(diǎn),查找起點(diǎn)的路徑計(jì)數(shù)值不為0的且被最小 路由策略允許的上一跳節(jié)點(diǎn);
[0018] S5.3、迭代執(zhí)行步驟S5.2直至查找到源節(jié)點(diǎn),將由查找過程中被查找到的中間節(jié) 點(diǎn)組成的路徑作為源節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間的容錯(cuò)曼哈頓路徑。
[0019]優(yōu)選地,若查找到的路徑計(jì)數(shù)值不為0且被最小路由策略允許的上一跳節(jié)點(diǎn)的數(shù) 量為至少兩個(gè),則依據(jù)隨機(jī)策略,維度優(yōu)先策略或節(jié)點(diǎn)擁塞程度最小策略等選擇上一跳節(jié) 點(diǎn),維度優(yōu)先策略包括第一維優(yōu)先策略或者最后一個(gè)維度優(yōu)先策略等。
[0020] 下面對(duì)本發(fā)明中的一些基本定義作進(jìn)一步說明:
[0021] (1)曼哈頓路徑(最小路徑)的說明:路徑長(zhǎng)度為曼哈頓距離的路徑。
[0022 ] (2)下一跳節(jié)點(diǎn)和上一跳節(jié)點(diǎn)的說明:給定兩個(gè)相鄰的節(jié)點(diǎn)A和B,如果從A節(jié)點(diǎn)到 目標(biāo)節(jié)點(diǎn)D的曼哈頓距離比從B節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)D的曼哈頓距離要多一跳,那么B節(jié)點(diǎn)就被稱 為A節(jié)點(diǎn)的下一跳節(jié)點(diǎn),A節(jié)點(diǎn)就被稱為B節(jié)點(diǎn)的上一跳節(jié)點(diǎn)。在不同的拓?fù)浣Y(jié)構(gòu)下,一個(gè)節(jié) 點(diǎn)的下一跳或者上一跳節(jié)點(diǎn)的數(shù)目可能是不同的。例如,在一個(gè)M*N規(guī)模的2D Mesh拓?fù)渚W(wǎng) 絡(luò)中,假設(shè)源節(jié)點(diǎn)S(l,l)位于目標(biāo)節(jié)點(diǎn)D(M,N)的X-和Y-方向。如果當(dāng)前節(jié)點(diǎn)為(i,j)(l〈 = i < = M, 1〈 = j〈 = N),那么節(jié)點(diǎn)(i+1,j)(l〈i+l〈 = M)和節(jié)點(diǎn)(i,j+l)(l〈j+l〈 = N;^|^^*Si 前節(jié)點(diǎn)的"下一跳節(jié)點(diǎn)",原因在于當(dāng)前節(jié)點(diǎn)與這兩個(gè)節(jié)點(diǎn)都是相鄰節(jié)點(diǎn),并且這兩個(gè)相鄰 節(jié)點(diǎn)離目標(biāo)節(jié)點(diǎn)D的曼哈頓距離要比當(dāng)前節(jié)點(diǎn)到D的曼哈頓距離小1;同時(shí),當(dāng)前節(jié)點(diǎn)也被稱 為這兩個(gè)節(jié)點(diǎn)的"上一跳節(jié)點(diǎn)"。需要說明的是,在完全適應(yīng)性路由算法下,當(dāng)前節(jié)點(diǎn)的下一 跳轉(zhuǎn)發(fā)數(shù)據(jù)包的方向可以是其所有"下一跳節(jié)點(diǎn)"中的任意一個(gè);如果網(wǎng)絡(luò)中采用的是部分 適應(yīng)性路由算法,那么當(dāng)前節(jié)點(diǎn)的多個(gè)下一跳節(jié)點(diǎn)中只能有一部分能夠作為其下一跳的數(shù) 據(jù)包轉(zhuǎn)發(fā)節(jié)點(diǎn)。
[0023] (3)最小路由(minimal routing)的說明:數(shù)據(jù)包從源節(jié)點(diǎn)出發(fā)沿著曼哈頓路徑被 傳輸?shù)侥繕?biāo)節(jié)點(diǎn),該曼哈頓路徑的尋找過程就稱為最小路由。
[0024] (4)被最小路由策略允許的下一跳節(jié)點(diǎn)和被最小路由策略禁止的下一跳節(jié)點(diǎn)的說 明:假設(shè)某當(dāng)前節(jié)點(diǎn)一共存在M(M為大于等于0的整數(shù))個(gè)下一跳節(jié)點(diǎn)。在完全適應(yīng)性最小路 由策略下,不用調(diào)用完全適應(yīng)性最小路由策略進(jìn)行計(jì)算,該節(jié)點(diǎn)能夠向這M個(gè)下一跳節(jié)點(diǎn)轉(zhuǎn) 發(fā)數(shù)據(jù)包,這M個(gè)下一跳節(jié)點(diǎn)都被稱為"被路由策略允許的下一跳節(jié)點(diǎn)";而在部分適應(yīng)性最 小路由策略下,由于一些限制如轉(zhuǎn)彎模型的限制,比如負(fù)向優(yōu)先轉(zhuǎn)彎模型和奇偶轉(zhuǎn)彎模型 等,需要調(diào)用轉(zhuǎn)彎模型依次計(jì)算當(dāng)前節(jié)點(diǎn)的"被部分適應(yīng)性路由策略允許的下一跳節(jié)點(diǎn)", 則當(dāng)前節(jié)點(diǎn)只能向部分下一跳節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包,這部分下一跳節(jié)點(diǎn)的數(shù)目被記為C',C'值 將小于M,這C'個(gè)下一跳節(jié)點(diǎn)被稱為"被路由策略允許的下一跳節(jié)點(diǎn)";那些雖然是該當(dāng)前節(jié) 點(diǎn)的下一跳節(jié)點(diǎn)但當(dāng)前節(jié)點(diǎn)并不能向其轉(zhuǎn)發(fā)數(shù)據(jù)包的節(jié)點(diǎn)被稱為"被路由策略禁止的下一 跳節(jié)點(diǎn)",其數(shù)目為M-C'。
[0025] (5)被最小路由策略允許的上一跳節(jié)點(diǎn)和被最小路由策略禁止的上一跳節(jié)點(diǎn)的說 明:假設(shè)某當(dāng)前節(jié)點(diǎn)一共存在N(N為大于等于0的整數(shù))個(gè)上一跳節(jié)點(diǎn)。在完全適應(yīng)性最小路 由策略下,不用調(diào)用完全適應(yīng)性最小路由策略進(jìn)行計(jì)算,這N個(gè)上一跳節(jié)點(diǎn)都有可能向當(dāng)前 節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包,這N個(gè)上一跳節(jié)點(diǎn)都被稱為"被路由策略允許的上一跳節(jié)點(diǎn)";在部分適應(yīng) 性最小路由策略下,由于一些限制如轉(zhuǎn)彎模型的限制,比如負(fù)向優(yōu)先轉(zhuǎn)彎模型和奇偶轉(zhuǎn)彎 模型等,需要調(diào)用轉(zhuǎn)彎模型依次計(jì)算當(dāng)前節(jié)點(diǎn)的"被部分適應(yīng)性路由策略允許的下一跳節(jié) 點(diǎn)",則這N個(gè)上一跳節(jié)點(diǎn)并不是都能夠向當(dāng)前節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包,可能只有其中的一部分上 一跳節(jié)點(diǎn)能夠向當(dāng)前節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包,這部分上一跳節(jié)點(diǎn)的數(shù)目記為C',其值將小于N。這 C'個(gè)上一跳節(jié)點(diǎn)被稱為當(dāng)前節(jié)點(diǎn)的"被路由策略允許的上一跳節(jié)點(diǎn)";其余的N-C'個(gè)雖然是 該當(dāng)前節(jié)點(diǎn)的上一跳節(jié)點(diǎn)但不能向當(dāng)前節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)包的節(jié)點(diǎn)被稱為"被路由策略禁止的 上一跳節(jié)點(diǎn)"。
[0026] (6)路徑計(jì)數(shù)值的說明:在給定的最小路由策略下,從源節(jié)點(diǎn)出發(fā),能夠到達(dá)當(dāng)前 節(jié)點(diǎn)的容錯(cuò)曼哈頓路徑的總數(shù),該總數(shù)就被稱為當(dāng)前節(jié)點(diǎn)的路徑計(jì)數(shù)值。顯然,如果當(dāng)前節(jié) 點(diǎn)為錯(cuò)誤節(jié)點(diǎn),那么能夠到達(dá)當(dāng)前節(jié)點(diǎn)的容錯(cuò)曼哈頓路徑的總數(shù)為0,即當(dāng)前節(jié)點(diǎn)的路徑計(jì) 數(shù)值為0;如果當(dāng)前節(jié)點(diǎn)為目的節(jié)點(diǎn)D,那么D的路徑計(jì)