一種虛擬網(wǎng)鏈路可靠數(shù)據(jù)傳輸方法
【技術(shù)領(lǐng)域】
[0001] 該發(fā)明涉及一種計(jì)算機(jī)數(shù)據(jù)傳輸方法,特別是涉及一種虛擬網(wǎng)鏈路可靠數(shù)據(jù)傳輸 方法。
【背景技術(shù)】
[0002] 網(wǎng)絡(luò)故障影響網(wǎng)絡(luò)系統(tǒng)的正常運(yùn)行,而造成網(wǎng)絡(luò)故障的原因錯(cuò)綜復(fù)雜且不可避 免,如配置錯(cuò)誤、光纖斷裂、交換設(shè)備不穩(wěn)定、惡意攻擊、誤操作、意外斷電等。虛擬網(wǎng)技術(shù)是 一種新的網(wǎng)絡(luò)技術(shù),同樣無(wú)法避免各種網(wǎng)絡(luò)故障的發(fā)生,而且由于虛擬網(wǎng)技術(shù)的復(fù)雜性還 可能引入更為復(fù)雜的網(wǎng)絡(luò)故障。因此為了使虛擬網(wǎng)系統(tǒng)穩(wěn)定運(yùn)行,必須保證虛擬網(wǎng)數(shù)據(jù)傳 輸?shù)目煽啃浴?br>[0003] 目前,虛擬網(wǎng)數(shù)據(jù)傳輸?shù)目煽啃约夹g(shù)主要方式是預(yù)先為每條虛擬鏈路設(shè)計(jì)一條備 份路徑。圍繞如何減小備份路徑所造成的資源冗余,可靠性技術(shù)分為兩類:獨(dú)占式和共享 式。獨(dú)占式技術(shù)為每條備份路徑預(yù)先分配資源,因此主備路徑上的數(shù)據(jù)并發(fā)傳輸,可靠性得 到很好保證,但備份路徑的資源冗余較大;共享式技術(shù)雖然預(yù)先為每條虛擬鏈路設(shè)計(jì)一條 備份路徑,但不同備份路徑的資源可以共享,在物理鏈路發(fā)生故障時(shí),對(duì)應(yīng)的備份路徑的資 源才會(huì)被臨時(shí)啟用,因此在減小備份路徑資源消耗的同時(shí)增加了恢復(fù)時(shí)延。我們亟待解決 在保證虛擬鏈路即時(shí)恢復(fù)的前提下,減小備份路徑的資源消耗這一問(wèn)題。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明克服了現(xiàn)有技術(shù)中,虛擬網(wǎng)數(shù)據(jù)傳輸?shù)目煽啃匀孕杼岣叩膯?wèn)題,提供一種 效果顯著的虛擬網(wǎng)鏈路可靠數(shù)據(jù)傳輸方法。
[0005] 本發(fā)明的技術(shù)解決方案是,提供一種具有以下步驟的虛擬網(wǎng)鏈路可靠數(shù)據(jù)傳輸方 法:含有虛擬鏈路發(fā)送端完成數(shù)據(jù)傳輸,當(dāng)數(shù)據(jù)報(bào)文在傳輸過(guò)程中發(fā)生中斷,虛擬鏈路的接 收端完成數(shù)據(jù)恢復(fù)。
[0006] 虛擬鏈路發(fā)送端完成數(shù)據(jù)傳輸包括以下步驟:步驟1 :在虛擬鏈路的發(fā)送端計(jì)算 得到虛擬鏈路端點(diǎn)之間的所有不相交的路徑;步驟2 :將得到的最短路徑設(shè)置為備份路徑, 其他路徑為主路徑;步驟3 :將所述虛擬鏈路中每個(gè)待發(fā)送的數(shù)據(jù)報(bào)文切分為k等份,k為 主路徑條數(shù);步驟4 :將每等份的子數(shù)據(jù)報(bào)文沿著對(duì)應(yīng)的主路徑進(jìn)行傳輸;步驟5 :所有子 數(shù)據(jù)報(bào)文的異或運(yùn)算結(jié)果組成備份數(shù)據(jù)報(bào)文,沿著備份路徑進(jìn)行傳輸。
[0007] 虛擬鏈路接收端完成數(shù)據(jù)恢復(fù)包括以下步驟:步驟一:檢查是否接收到所有主路 徑傳輸?shù)拇邮盏淖訑?shù)據(jù)報(bào)文,若是,則成功結(jié)束;若否,則進(jìn)行下一步;步驟二:檢查是否 有兩條及以上的主路徑子數(shù)據(jù)報(bào)文未收到,若是,則無(wú)法恢復(fù),失敗結(jié)束;若否,則進(jìn)行下一 步;步驟三:將剩余主路徑的子數(shù)據(jù)報(bào)文與備份路徑的備份數(shù)據(jù)報(bào)文進(jìn)行異或運(yùn)算,結(jié)果 即為故障路徑上丟失的子數(shù)據(jù)報(bào)文。
[0008] 所述步驟1的過(guò)程為:一條虛擬鏈路被映射到節(jié)點(diǎn)u和V之間,u和V之間可能存 在多條路徑,而不相交路徑具體是指路徑彼此之間不存在公共邊,這些路徑的計(jì)算步驟如 下:子步驟I. I :利用dijkstra算法得到u和V之間的最短路徑P ;子步驟I. 2 :如果P存 在,那么將p加入到不相交路徑集合中;否則,結(jié)束;子步驟1. 3 :在當(dāng)前網(wǎng)絡(luò)拓?fù)渲袆h除最 短路徑P所包含的所有邊,跳至子步驟1. 1。
[0009] 所述步驟2的過(guò)程為:根據(jù)步驟1得到的路徑集合,選擇其中長(zhǎng)度最短的一條路徑 作為備份路徑,其他路徑作為主路徑。
[0010] 所述步驟3中數(shù)據(jù)報(bào)文的切分過(guò)程如下:子步驟3. 1 :將原始IP數(shù)據(jù)報(bào)文的負(fù)載 部分長(zhǎng)度m除以k,并向上取整,得到每個(gè)子數(shù)據(jù)報(bào)文的負(fù)載長(zhǎng)度
子步驟 3. 2 :按照順序?qū)⒃紨?shù)據(jù)報(bào)文的負(fù)載部分分為k個(gè)子塊,最后一塊如果不足t字節(jié),則以0 填充;子步驟3. 3 :將每個(gè)字塊負(fù)載重新封裝為IP數(shù)據(jù)報(bào)文。
[0011] 所述步驟4的過(guò)程為:將得到的第i個(gè)子數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)至第i條主路徑對(duì)應(yīng)的端 口處,從而沿著該路徑進(jìn)行傳輸。
[0012] 所述步驟5的過(guò)程為:將所有等長(zhǎng)度子數(shù)據(jù)報(bào)文的負(fù)載部分按位進(jìn)行異或運(yùn)算, 運(yùn)算結(jié)果重新封裝為IP數(shù)據(jù)報(bào)文,沿著備份路徑進(jìn)行傳輸。
[0013] 與現(xiàn)有技術(shù)相比,本發(fā)明虛擬網(wǎng)鏈路可靠數(shù)據(jù)傳輸方法具有以下優(yōu)點(diǎn):本發(fā)明提 供的虛擬網(wǎng)鏈路可靠數(shù)據(jù)傳輸方法通過(guò)對(duì)原始數(shù)據(jù)報(bào)文進(jìn)行切分和異或運(yùn)算,使得備份數(shù) 據(jù)得到壓縮,從而減小了備份路徑的資源消耗,并保證了故障的快速恢復(fù)。
【附圖說(shuō)明】
[0014] 圖1是本發(fā)明虛擬網(wǎng)鏈路可靠數(shù)據(jù)傳輸方法的流程示意圖;
[0015] 圖2是本發(fā)明虛擬網(wǎng)鏈路可靠數(shù)據(jù)傳輸方法中計(jì)算所有不相交路徑的流程示意 圖;
[0016] 圖3是本發(fā)明虛擬網(wǎng)鏈路可靠數(shù)據(jù)傳輸方法中數(shù)據(jù)報(bào)文切分方法的流程示意圖;
[0017] 圖4是本發(fā)明虛擬網(wǎng)鏈路可靠數(shù)據(jù)傳輸方法中虛擬網(wǎng)鏈路數(shù)據(jù)報(bào)文恢復(fù)方法的 流程示意圖。
【具體實(shí)施方式】
[0018] 下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明虛擬網(wǎng)鏈路可靠數(shù)據(jù)傳輸方法作進(jìn)一步 說(shuō)明:含有虛擬鏈路發(fā)送端完成數(shù)據(jù)傳輸,當(dāng)數(shù)據(jù)報(bào)文在傳輸過(guò)程中發(fā)生中斷,虛擬鏈路的 接收端完成數(shù)據(jù)恢復(fù)。
[0019] 虛擬鏈路發(fā)送端完成數(shù)據(jù)傳輸包括以下步驟:步驟1 :在虛擬鏈路的發(fā)送端計(jì)算 得到虛擬鏈路端點(diǎn)之間的所有不相交的路徑;步驟2 :將得到的最短路徑設(shè)置為備份路徑, 其他路徑為主路徑;步驟3 :將所述虛擬鏈路中每個(gè)待發(fā)送的數(shù)據(jù)報(bào)文切分為k等份,k為 主路徑條數(shù);步驟4 :將每等份的子數(shù)據(jù)報(bào)文沿著對(duì)應(yīng)的主路徑進(jìn)行傳輸;步驟5 :所有子 數(shù)據(jù)報(bào)文的異或運(yùn)算結(jié)果組成備份數(shù)據(jù)報(bào)文,沿著備份路徑進(jìn)行傳輸。
[0020] 所述步驟1的過(guò)程為:一條虛擬鏈路被映射到節(jié)點(diǎn)u和V之間,u和V之間可能存 在多條路徑,而不相交路徑具體是指路徑彼此之間不存在公共邊,這些路徑的計(jì)算步驟如 附圖2如下:子步驟I. 1 :利用dijkstra (迪杰斯特拉)算法