專利名稱:耐故障地在計(jì)算機(jī)網(wǎng)絡(luò)上轉(zhuǎn)發(fā)數(shù)據(jù)的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計(jì)算機(jī)系統(tǒng)和計(jì)算機(jī)網(wǎng)絡(luò),具體地說,涉及在計(jì) 算機(jī)網(wǎng)絡(luò)上的內(nèi)容傳送。特別,本發(fā)明涉及在計(jì)算機(jī)網(wǎng)絡(luò)上自適應(yīng)地 轉(zhuǎn)發(fā)數(shù)據(jù)的方法和設(shè)備。
背景技術(shù):
圖1為通過網(wǎng)絡(luò)轉(zhuǎn)發(fā)數(shù)據(jù)的系統(tǒng)100的一個(gè)實(shí)施例的示意圖。許
多端對(duì)端計(jì)算應(yīng)用(包括重疊網(wǎng)絡(luò)、端-系統(tǒng)組播、代理服務(wù)器、網(wǎng)
絡(luò)地址變換和協(xié)議隧穿等)使用中間或者說轉(zhuǎn)發(fā)節(jié)點(diǎn)106廣106n(例如, 計(jì)算設(shè)備或路由器)來將數(shù)據(jù)流112從一個(gè)發(fā)送端102 (例如,服務(wù) 器)傳送給一個(gè)或多個(gè)接收端104。接收端104可以再將數(shù)據(jù)傳送給 一個(gè)或多個(gè)計(jì)算應(yīng)用108。
例如系統(tǒng)100之類的系統(tǒng)的典型問題是在任何轉(zhuǎn)發(fā)節(jié)點(diǎn)處的故障 或失常都會(huì)中斷端到端的鏈,從而導(dǎo)致傳送給接收端的數(shù)據(jù)殘缺。對(duì) 于大的網(wǎng)絡(luò)來說這尤其麻煩,因?yàn)楣?jié)點(diǎn)故障概率隨著所用的轉(zhuǎn)發(fā)節(jié)點(diǎn) 的增多而增大。應(yīng)對(duì)轉(zhuǎn)發(fā)網(wǎng)絡(luò)內(nèi)節(jié)點(diǎn)故障的傳統(tǒng)解決方案包括基于 源的修復(fù),諸如在數(shù)據(jù)源與接收端之間的傳輸控制協(xié)議/網(wǎng)際協(xié)議 (TCP/IP)會(huì)話;基于分組號(hào)的重傳請(qǐng)求;以及各種應(yīng)用和內(nèi)容專用 的復(fù)原方案(例如,在一個(gè)偏離文件開始處的特定字節(jié)繼續(xù)執(zhí)行文件 傳送協(xié)議,或者在一個(gè)特定幀序號(hào)繼續(xù)執(zhí)行視頻傳輸)。然而,這些 傳統(tǒng)的解決方案常遭受許多限制,包括可擴(kuò)縮性限制和不能適合在使 用多種傳送或傳送普通(非內(nèi)容專用)數(shù)據(jù)流的網(wǎng)絡(luò)上使用。因此, 它們不適合在使用多個(gè)點(diǎn)對(duì)點(diǎn)協(xié)議的自適應(yīng)改變的網(wǎng)絡(luò)上以與內(nèi)容無 關(guān)的方式傳送數(shù)據(jù)。
因此,需要有一種能耐故障(failure resilient)地在計(jì)算機(jī)網(wǎng)絡(luò)
上轉(zhuǎn)發(fā)數(shù)據(jù)的方法和設(shè)備。
發(fā)明內(nèi)容
在一個(gè)實(shí)施例中,本發(fā)明實(shí)現(xiàn)了一種耐故障地在計(jì)算機(jī)網(wǎng)絡(luò)上轉(zhuǎn) 發(fā)數(shù)據(jù)的方法和設(shè)備。在一個(gè)實(shí)施例中,將標(biāo)記例如在發(fā)送節(jié)點(diǎn)引入 數(shù)據(jù)流,它使轉(zhuǎn)發(fā)節(jié)點(diǎn)和/或接收端可以有效地跟蹤數(shù)據(jù)流接收情況。 這標(biāo)記起著數(shù)據(jù)傳送過程的校驗(yàn)點(diǎn)的作用,在每個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)和接收端 都可識(shí)別和索引。每個(gè)接收端在將數(shù)椐傳送給應(yīng)用前保存標(biāo)記,由此 在數(shù)據(jù)流內(nèi)指定了確認(rèn)所有在此之前的數(shù)據(jù)都已傳送給應(yīng)用的點(diǎn)。這 樣,如果一個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)有故障,接收端可以向替代轉(zhuǎn)發(fā)節(jié)點(diǎn)請(qǐng)求數(shù)據(jù) 流,請(qǐng)求替代轉(zhuǎn)發(fā)節(jié)點(diǎn)提供從標(biāo)記開始的數(shù)據(jù)。
以
下將參考附圖所示的本發(fā)明的實(shí)施例對(duì)以上概述的本發(fā)明進(jìn)行更為具 體的說明。然而,要指出的是,附圖只是例示本發(fā)明的典型實(shí)施例, 因此不應(yīng)認(rèn)為是對(duì)本發(fā)明的范圍的限制,因?yàn)楸景l(fā)明可以用其他等效 的方式實(shí)現(xiàn)。
圖1為端對(duì)端計(jì)算網(wǎng)絡(luò)的一個(gè)實(shí)施例的示意圖。
圖2為例示根據(jù)本發(fā)明的耐故障地將數(shù)據(jù)從一個(gè)發(fā)送端轉(zhuǎn)發(fā)給一
個(gè)或多個(gè)接收端的方法的一個(gè)實(shí)施例的流程圖3為例示用圖2所示的系統(tǒng)分發(fā)內(nèi)容的方法的表;
圖4為例示恢復(fù)數(shù)據(jù)流內(nèi)丟失的數(shù)據(jù)的方法的一個(gè)實(shí)施例的流程
圖;以及
圖5為用通用計(jì)算設(shè)備實(shí)現(xiàn)的耐故障的轉(zhuǎn)發(fā)系統(tǒng)的高層方框圖。 為了便于理解,已盡可能用相同的標(biāo)號(hào)標(biāo)注各附圖內(nèi)共同的部
分
具體實(shí)施例方式
本發(fā)明提供了耐故障地在計(jì)算機(jī)網(wǎng)絡(luò)上轉(zhuǎn)發(fā)數(shù)據(jù)的方法和設(shè)備。 在一個(gè)實(shí)施例中,諸如轉(zhuǎn)發(fā)節(jié)點(diǎn)故障、性能下降、查詢、資源使用不 平衡之類的觸發(fā)狀態(tài)啟動(dòng)網(wǎng)絡(luò)自適應(yīng),以正確恢復(fù)數(shù)據(jù)流的傳輸接收。
圖2為例示數(shù)據(jù)流過根據(jù)本發(fā)明的耐故障地將數(shù)據(jù)從一個(gè)發(fā)送端 轉(zhuǎn)發(fā)給一個(gè)或多個(gè)接收端的方法200的 一個(gè)實(shí)施例的流程圖。方法200 在步驟202初始化后進(jìn)至步驟204,發(fā)送節(jié)點(diǎn)或轉(zhuǎn)發(fā)節(jié)點(diǎn)(例如,圖1 的發(fā)送端102或任何一個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)106)得到(在發(fā)送端的情況下) 或接收到(在轉(zhuǎn)發(fā)節(jié)點(diǎn)的情況下)至少一部分?jǐn)?shù)據(jù)流。在一個(gè)實(shí)施例 中,數(shù)據(jù)流可以就是一個(gè)很大的數(shù)據(jù)流的一部分或任意大小的數(shù)據(jù)段。 也就是說,較大的數(shù)據(jù)流的"塊"或"部分"的序列從發(fā)送節(jié)點(diǎn)發(fā)送 給接收節(jié)點(diǎn)。在步驟206,發(fā)送端或轉(zhuǎn)發(fā)節(jié)點(diǎn)將標(biāo)記注入數(shù)據(jù)流的部 分,通過點(diǎn)對(duì)點(diǎn)的可靠傳送協(xié)議(例如,耐分組丟失的協(xié)議,諸如 TCP/IP之類)將經(jīng)"標(biāo)記"的數(shù)據(jù)流(受到或者沒有受到進(jìn)一步修改 的)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)內(nèi)一個(gè)或多個(gè)下一接收方節(jié)點(diǎn)(例如, 一個(gè)或多個(gè)后 繼轉(zhuǎn)發(fā)節(jié)點(diǎn)或接收節(jié)點(diǎn))。標(biāo)記標(biāo)示了普通數(shù)據(jù)流內(nèi)的參考點(diǎn),在一 個(gè)實(shí)施例中是帶唯一標(biāo)識(shí)符的可識(shí)別比特字段。標(biāo)記可以用保留的比 特序列、固定的標(biāo)記間偏移量或由前一個(gè)標(biāo)記指定的偏移量識(shí)別。因 此,標(biāo)記可以周期性地注入數(shù)據(jù)流,以便使多個(gè)經(jīng)標(biāo)記的數(shù)據(jù)流可以 通過網(wǎng)絡(luò)傳送。
在步驟206注入標(biāo)記后,方法200轉(zhuǎn)至兩個(gè)可能的后續(xù)過程中的 至少一個(gè)過程。在步驟208-210,方法執(zhí)行轉(zhuǎn)發(fā)節(jié)點(diǎn)功能的步驟;在 步驟209-214,方法200執(zhí)行接收節(jié)點(diǎn)功能的步驟。
在步驟208,方法200查詢經(jīng)標(biāo)記的數(shù)據(jù)流的接收方是否為轉(zhuǎn)發(fā) 節(jié)點(diǎn)。如果方法200確定接收方為轉(zhuǎn)發(fā)節(jié)點(diǎn),方法200就進(jìn)至步驟210, 在步驟210方法200檢查所接收的數(shù)據(jù)流,將數(shù)據(jù)存儲(chǔ)在轉(zhuǎn)發(fā)節(jié)點(diǎn)的 本地緩存器內(nèi),在轉(zhuǎn)發(fā)節(jié)點(diǎn)創(chuàng)建或更新標(biāo)記索引。在一個(gè)實(shí)施例中, 方法200更新的標(biāo)記索引包括兩個(gè)關(guān)鍵部分(1)最近所接收的標(biāo)記 的記錄;以及(2)轉(zhuǎn)發(fā)節(jié)點(diǎn)先前所接收和存儲(chǔ)的每個(gè)標(biāo)記的記錄。方 法200更新了標(biāo)記索引后,方法200將經(jīng)標(biāo)記的數(shù)據(jù)流轉(zhuǎn)發(fā)給網(wǎng)絡(luò)內(nèi)
下一接收方(例如, 一個(gè)或多個(gè)其他轉(zhuǎn)發(fā)節(jié)點(diǎn)或接收端)。經(jīng)標(biāo)記的
數(shù)據(jù)流由下一接收方節(jié)點(diǎn)從方法200內(nèi)緊接步驟206的點(diǎn)開始處理, 如從步驟210的循環(huán)所示。因此,所有的轉(zhuǎn)發(fā)節(jié)點(diǎn)接收到經(jīng)標(biāo)記的數(shù) 據(jù)流,將經(jīng)標(biāo)記的數(shù)據(jù)流轉(zhuǎn)發(fā)給下一轉(zhuǎn)發(fā)節(jié)點(diǎn)或接收端,并且編標(biāo)記 索引。
圖3為根據(jù)本發(fā)明的標(biāo)記索引300的 一個(gè)實(shí)施例(諸如由方法200 在圖2的步驟210更新的標(biāo)記索引)的示意圖。在一個(gè)實(shí)施例中,標(biāo) 記索引300為一個(gè)表。如圖所示,標(biāo)記索引300為每個(gè)標(biāo)記(例如, 標(biāo)記MrM3)存儲(chǔ)標(biāo)記的唯一標(biāo)識(shí)符和它在本地緩存器內(nèi)的位置。如 下面要結(jié)合圖4進(jìn)一步說明的那樣,所存儲(chǔ)的這個(gè)信息可以用來恢復(fù) 例如由于轉(zhuǎn)發(fā)節(jié)點(diǎn)故障而丟失的數(shù)據(jù)。
再來看圖2,如果方法200在步驟208得出經(jīng)標(biāo)記的數(shù)據(jù)流的接 收方不是轉(zhuǎn)發(fā)節(jié)點(diǎn),方法200就終止。
此外,在步驟206注入標(biāo)記后,方法200在步驟209查詢接收方 是否為接收節(jié)點(diǎn)。如果方法200得出接收方為接收節(jié)點(diǎn),方法200就 進(jìn)至步驟212,將接收端所接收的數(shù)據(jù)流數(shù)據(jù)排隊(duì),直到遇到標(biāo)記。 在步驟214,方法200保存標(biāo)記,將排隊(duì)數(shù)據(jù)(即,所有未傳送的、 數(shù)據(jù)流內(nèi)該標(biāo)記前的未標(biāo)記的數(shù)據(jù))傳送給希望得到原來的數(shù)據(jù)流的 過程(例如,應(yīng)用或存儲(chǔ)過程)?;蛘撸绻椒?00在步驟208得 出接收方不是接收節(jié)點(diǎn),方法200就終止。
在一個(gè)實(shí)施例中, 一個(gè)或多個(gè)節(jié)點(diǎn)可以既是轉(zhuǎn)發(fā)節(jié)點(diǎn)又是接收節(jié) 點(diǎn)。也就是說, 一個(gè)節(jié)點(diǎn)既可以將所接收的數(shù)據(jù)傳送給應(yīng)用也可以將 所接收的數(shù)據(jù)轉(zhuǎn)發(fā)給其他節(jié)點(diǎn)。因此,節(jié)點(diǎn)能執(zhí)行方法200內(nèi)所含的 轉(zhuǎn)發(fā)和接收方法。這樣,雖然轉(zhuǎn)發(fā)和接收過程(例如,分別為步驟 208-210和209-214 )用順序的標(biāo)號(hào)標(biāo)示,但這些標(biāo)號(hào)并不意味著過程 出現(xiàn)的次序。因此,本領(lǐng)域技術(shù)人員可以理解,轉(zhuǎn)發(fā)和接收方法是獨(dú) 立執(zhí)行的,而且這兩個(gè)方法實(shí)際上可以同時(shí)發(fā)生,也可以以任何次序 先后發(fā)生。所以,標(biāo)號(hào)的順序如應(yīng)用于步驟208-216絕非意在限制。
因此,注入數(shù)據(jù)流的標(biāo)記表示數(shù)據(jù)傳送過程的檢查點(diǎn)。通過在接
收端保存標(biāo)記,方法200在數(shù)據(jù)流內(nèi)指定點(diǎn),所有前面的數(shù)據(jù)都已按 次序可靠地傳送給等待的應(yīng)用。方法200還有在數(shù)據(jù)流內(nèi)指定后續(xù)的 數(shù)據(jù)尚需被傳送的點(diǎn)的功能。所保存的標(biāo)記信息可以用來恢復(fù)例如由 于轉(zhuǎn)發(fā)節(jié)點(diǎn)故障而丟失的數(shù)據(jù)。
圖4為例示恢復(fù)數(shù)據(jù)流內(nèi)丟失的數(shù)據(jù)的方法400的一個(gè)實(shí)施例的 流程圖。例如,在轉(zhuǎn)發(fā)節(jié)點(diǎn)(例如圖1的轉(zhuǎn)發(fā)節(jié)點(diǎn)106)有故障(例 如,由于從網(wǎng)絡(luò)斷開或電源故障)從而停止向后繼的接收方轉(zhuǎn)發(fā)數(shù)據(jù) 的情況下,可以執(zhí)行方法400。方法400在步驟402初始化后進(jìn)至步 驟404,方法400識(shí)別轉(zhuǎn)發(fā)節(jié)點(diǎn)有故障,從而將接收端(或后繼的轉(zhuǎn) 發(fā)節(jié)點(diǎn))連接到一個(gè)替代的轉(zhuǎn)發(fā)節(jié)點(diǎn)或"備份節(jié)點(diǎn)"(例如,在路由 選擇路徑內(nèi)有故障的節(jié)點(diǎn)之前的節(jié)點(diǎn))上?;蛘撸椒?00也可以將
接收端連接到有故障的轉(zhuǎn)發(fā)節(jié)點(diǎn)的任何仍在接收數(shù)據(jù)流的"姊妹"節(jié) 點(diǎn)上。在一個(gè)實(shí)施例中,基于效率選擇備份節(jié)點(diǎn)。例如,如果有故障 的節(jié)點(diǎn)為圖1中的節(jié)點(diǎn)Xn,備份節(jié)點(diǎn)可以選為節(jié)點(diǎn)&或節(jié)點(diǎn)Xn+1。 可以根據(jù)距離、延遲、計(jì)算費(fèi)用之類來選擇適當(dāng)?shù)墓?jié)點(diǎn)。
于是,方法400進(jìn)至步驟406,在步驟406方法400向備份節(jié)點(diǎn) 請(qǐng)求從接收端所保存的最后標(biāo)記M開始的數(shù)據(jù)流數(shù)據(jù)。在另 一個(gè)實(shí)施 例中,方法400可以請(qǐng)求從最后標(biāo)記M后的所指定的位置(例如,標(biāo) 記M后三個(gè)比特)開始的數(shù)據(jù)流數(shù)據(jù)。請(qǐng)求包括標(biāo)記M的唯一標(biāo)識(shí) 符。在步驟407,方法400查詢備份節(jié)點(diǎn)是否接受在步驟406提出的 請(qǐng)求。如果備份節(jié)點(diǎn)拒絕這個(gè)請(qǐng)求,方法400返回到步驟404,并連 接到另一個(gè)備份節(jié)點(diǎn)上?;蛘撸绻诓襟E407備份節(jié)點(diǎn)接受這個(gè)請(qǐng) 求,方法400使備份節(jié)點(diǎn)從備份節(jié)點(diǎn)的標(biāo)記索引中查找標(biāo)記M。如果 標(biāo)記M存在,備份節(jié)點(diǎn)用標(biāo)記M在它的本地緩存器內(nèi)的位置作為起 點(diǎn)開始發(fā)送經(jīng)標(biāo)記的數(shù)據(jù)流。在一個(gè)實(shí)施例中,任何駐留在本地緩存 器內(nèi)的標(biāo)記M的點(diǎn)之前的數(shù)據(jù)都被廢棄。
在步驟408,方法400將接收端的隊(duì)列"寫指針"重置到緊接標(biāo) 記M后的位置。方法400還擦除本地緩存器內(nèi)寫指針后的數(shù)據(jù),并且 接收端現(xiàn)在就開始對(duì)通過新的連接來自新的轉(zhuǎn)發(fā)節(jié)點(diǎn)的數(shù)據(jù)排隊(duì)。隨
著經(jīng)標(biāo)記的數(shù)據(jù)流通過新的連接從備份節(jié)點(diǎn)到達(dá)接收端,到達(dá)的數(shù)據(jù)
流重寫接收端本地緩存器內(nèi)在標(biāo)記M之后的任何數(shù)據(jù)。在另 一 個(gè)實(shí)施 例中,方法400可以向多個(gè)備份節(jié)點(diǎn)請(qǐng)求經(jīng)標(biāo)記的數(shù)據(jù)流中的一些離 散的部分。
在步驟410,方法400查詢下一個(gè)標(biāo)記M+l是否已到達(dá)接收端。 如果下一個(gè)標(biāo)記M+l已經(jīng)到達(dá),方法400就在步驟412將由接收端排 隊(duì)的數(shù)據(jù)(減去標(biāo)記M)傳送給請(qǐng)求數(shù)據(jù)的應(yīng)用。如果下一個(gè)標(biāo)記 M+l還沒有到達(dá),方法400繼續(xù)對(duì)通過新的連接來自備份節(jié)點(diǎn)的數(shù)據(jù) 進(jìn)行排隊(duì)。本領(lǐng)域技術(shù)人員可以認(rèn)識(shí)到,方法400的步驟408-412是 通常由接收端節(jié)點(diǎn)執(zhí)行的步驟;這些步驟這里在方法400的上下文中 作了說明,以結(jié)合恢復(fù)所丟失的數(shù)據(jù)例示接收端節(jié)點(diǎn)用以實(shí)現(xiàn)這樣一 些步驟的方法。
因此,方法400能通過從中斷點(diǎn)恢復(fù)數(shù)據(jù)傳輸正確有效地修復(fù)故 障。而且,由于修復(fù)只需要與附近的轉(zhuǎn)發(fā)/備份節(jié)點(diǎn)通信,因此修復(fù)路 徑短,而且網(wǎng)絡(luò)負(fù)荷^皮合理分配。方法400還在應(yīng)用層用任何可靠的 點(diǎn)對(duì)點(diǎn)傳送協(xié)議工作,可以平衡現(xiàn)有的點(diǎn)對(duì)點(diǎn)協(xié)議,而且可以允許重 組幀和多協(xié)+義轉(zhuǎn)發(fā)。因此,方法400可以與傳送協(xié)議無關(guān)以及與數(shù)據(jù) 流內(nèi)容無關(guān)地工作。
圖5為用通用的計(jì)算設(shè)備500實(shí)現(xiàn)的耐故障轉(zhuǎn)發(fā)系統(tǒng)的高層方框 圖。在一個(gè)實(shí)施例中,通用計(jì)算設(shè)備500包括處理器502、存儲(chǔ)器504、 耐故障轉(zhuǎn)發(fā)機(jī)構(gòu)或模塊505和諸如顯示器、鍵盤、鼠標(biāo)、調(diào)制調(diào)解器 之類的輸入/輸出(1/0)裝置506。在一個(gè)實(shí)施例中,至少一個(gè)I/0裝 置為存儲(chǔ)裝置(例如,硬盤驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器)。應(yīng) 理解,耐故障轉(zhuǎn)發(fā)機(jī)構(gòu)505可以實(shí)現(xiàn)為通過通信信道與處理器連接的 物理設(shè)備或子系統(tǒng)。
或者,也可以是耐故障轉(zhuǎn)發(fā)機(jī)構(gòu)505表現(xiàn)為一個(gè)或多個(gè)軟件應(yīng)用 (甚至軟件和硬件的組合,例如使用專用集成電路(ASIC)),軟件 從存儲(chǔ)介質(zhì)(例如,I/O裝置506 )裝入通用計(jì)算設(shè)備500的存儲(chǔ)器 504由處理器502運(yùn)行。因此,在一個(gè)實(shí)施例中,耐故障轉(zhuǎn)發(fā)機(jī)構(gòu)505和所關(guān)聯(lián)的在這里結(jié)合前面的附圖所說明的方法可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)或載體(例如,RAM、磁盤或光盤驅(qū)動(dòng)器或者軟盤之類)上。 雖然以上結(jié)合系統(tǒng)從節(jié)點(diǎn)故障恢復(fù)對(duì)本發(fā)明的方法作了說明,但 本領(lǐng)域技術(shù)人員可以理解,本發(fā)明可以在內(nèi)容傳送領(lǐng)域內(nèi)具有其他一 些應(yīng)用。例如,本發(fā)明可以被2被實(shí)現(xiàn)為保證在由于任何原因?qū)W(wǎng)絡(luò) 進(jìn)行重新配置時(shí)的可靠數(shù)據(jù)傳送。其他重新配置技術(shù)可以包括用集中 或分布的節(jié)點(diǎn)注冊(cè)表(已知的服務(wù)器或域名服務(wù)器(DNS))查找、 分布散列表查找或廣播搜索等尋找備份節(jié)點(diǎn)。網(wǎng)絡(luò)重新配置的其他原 因可以包括響應(yīng)性能下降、優(yōu)化網(wǎng)絡(luò)資源利用率和平衡負(fù)荷等。因此,本發(fā)明體現(xiàn)了在內(nèi)容傳送領(lǐng)域內(nèi)的顯著進(jìn)步。所提供的方 法和設(shè)備可以有效而耐故障地通過網(wǎng)絡(luò)轉(zhuǎn)發(fā)數(shù)據(jù)。網(wǎng)絡(luò)能正確和有效 地在中斷點(diǎn)恢復(fù)數(shù)據(jù)傳輸,而不會(huì)向接收端發(fā)送冗余或無序的數(shù)據(jù)。 對(duì)于向發(fā)送端請(qǐng)求數(shù)據(jù)的應(yīng)用來說,系統(tǒng)的故障和恢復(fù)基本上是透明 的。而且,本發(fā)明的方法不是應(yīng)用專用的,而是可以適用于任何類型 的數(shù)據(jù)流,無論內(nèi)容是什么,也適用于任何類型的可靠的傳送協(xié)議。雖然以上針對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明,但在不背離以下權(quán) 利要求書所確定的本發(fā)明的范圍的情況下可以得到本發(fā)明的其他和進(jìn) 一步的實(shí)現(xiàn)方式。
權(quán)利要求
1.一種通過網(wǎng)絡(luò)將數(shù)據(jù)流從發(fā)送端節(jié)點(diǎn)轉(zhuǎn)發(fā)給一個(gè)或多個(gè)接收端節(jié)點(diǎn)的方法,所述方法包括下列步驟接收具有部分?jǐn)?shù)據(jù)流和一個(gè)或多個(gè)標(biāo)記的經(jīng)標(biāo)記的數(shù)據(jù)流;將所述一個(gè)或多個(gè)標(biāo)記和所述經(jīng)標(biāo)記的數(shù)據(jù)流的至少一個(gè)后續(xù)部分存儲(chǔ)在緩存器內(nèi);將所述經(jīng)標(biāo)記的數(shù)據(jù)流轉(zhuǎn)發(fā)給一個(gè)或多個(gè)下一接收方節(jié)點(diǎn);以及響應(yīng)對(duì)存儲(chǔ)在緩存器內(nèi)的數(shù)據(jù)流數(shù)據(jù)的請(qǐng)求,在指定的標(biāo)記處開始數(shù)據(jù)傳送,其中所述請(qǐng)求為請(qǐng)求傳送在所指定的標(biāo)記后的數(shù)據(jù)流數(shù)據(jù)。
2. 權(quán)利要求1的方法,其中所述標(biāo)記為具有唯一標(biāo)識(shí)符的可識(shí) 別比特字段。
3. 權(quán)利要求1的方法,其中所述標(biāo)記由發(fā)送端節(jié)點(diǎn)注入所述部 分?jǐn)?shù)據(jù)流。
4. 權(quán)利要求1的方法,其中所述標(biāo)記由在發(fā)送端節(jié)點(diǎn)與一個(gè)或 多個(gè)接收端節(jié)點(diǎn)之間的中間節(jié)點(diǎn)注入數(shù)據(jù)流。
5. 權(quán)利要求1的方法,其中所述經(jīng)標(biāo)記的數(shù)據(jù)流用點(diǎn)對(duì)點(diǎn)的可 靠傳送協(xié)議發(fā)送。
6. 權(quán)利要求5的方法,其中所述點(diǎn)對(duì)點(diǎn)的可靠傳送協(xié)議為 TCP/IP協(xié)議。
7. 權(quán)利要求1的方法,其中所述一個(gè)或多個(gè)下一接收方節(jié)點(diǎn)為 在發(fā)送端節(jié)點(diǎn)與 一個(gè)或多個(gè)接收端節(jié)點(diǎn)之間的中間節(jié)點(diǎn),其中所述中 間節(jié)點(diǎn)適合將經(jīng)標(biāo)記的數(shù)據(jù)流轉(zhuǎn)發(fā)給一 個(gè)或多個(gè)接收端節(jié)點(diǎn)。
8. 權(quán)利要求1的方法,其中所述存儲(chǔ)所述一個(gè)或多個(gè)標(biāo)記的步 驟包括將經(jīng)標(biāo)記的數(shù)據(jù)流內(nèi)的所述標(biāo)記記錄為最近接收到的標(biāo)記;以及 更新標(biāo)記索引,其中所述標(biāo)記索引記錄先前接收到的標(biāo)記。
9. 權(quán)利要求8的方法,其中所述標(biāo)記索引為每個(gè)接收到的標(biāo)記 記錄唯一標(biāo)識(shí)符和在緩存器內(nèi)的位置。
10. 權(quán)利要求l的方法,其中所述一個(gè)或多個(gè)下一接收方節(jié)點(diǎn)為一個(gè)或多個(gè)接收端節(jié)點(diǎn)。
11. 權(quán)利要求l的方法,所述方法還包括下列步驟 傳送部分?jǐn)?shù)據(jù)流給應(yīng)用。
12. 權(quán)利要求11的方法,其中所述傳送部分?jǐn)?shù)據(jù)流的步驟包括 傳送數(shù)據(jù)流的從所述標(biāo)記之一開始的部分。
13. 權(quán)利要求11的方法,其中所述傳送部分?jǐn)?shù)據(jù)流的步驟包括 傳送數(shù)據(jù)流的從數(shù)據(jù)流內(nèi)所述標(biāo)記之一后的 一 點(diǎn)開始的部分。
14. 權(quán)利要求l的方法,其中所述一個(gè)或多個(gè)下一接收方節(jié)點(diǎn)適 合轉(zhuǎn)發(fā)經(jīng)標(biāo)記的數(shù)據(jù)流和接收經(jīng)標(biāo)記的數(shù)據(jù)流以傳送給一個(gè)或多個(gè)應(yīng) 用。
15. 權(quán)利要求14的方法,其中所述一個(gè)或多個(gè)下一接收方節(jié)點(diǎn) 適合同時(shí)執(zhí)行轉(zhuǎn)發(fā)和接收步驟。
16. 權(quán)利要求14的方法,其中所述一個(gè)或多個(gè)下一接收方節(jié)點(diǎn) 適合以任何次序執(zhí)行轉(zhuǎn)發(fā)和接收步驟。
17. —種恢復(fù)中斷了的通過網(wǎng)絡(luò)從發(fā)送端節(jié)點(diǎn)到接收端節(jié)點(diǎn)的 數(shù)據(jù)傳送的方法,所述方法包括下列步驟連接到網(wǎng)絡(luò)內(nèi)的一個(gè)中間節(jié)點(diǎn);以及向中間節(jié)點(diǎn)請(qǐng)求從接收端節(jié)點(diǎn)所保存的最后一個(gè)標(biāo)記開始的數(shù)據(jù)。
18. 權(quán)利要求書17的方法,所述方法還包括下列步驟: 將接收端排隊(duì)寫指針復(fù)位到緊接上次所保存的標(biāo)記后的位置;以及將從中間節(jié)點(diǎn)發(fā)給接收端節(jié)點(diǎn)的數(shù)據(jù)排隊(duì)。
19. 權(quán)利要求書17的方法,所述方法還包括下列步驟 在從中間節(jié)點(diǎn)接收到下一個(gè)標(biāo)記時(shí)傳送接收端所排隊(duì)的數(shù)據(jù),其中所排隊(duì)的數(shù)據(jù)被傳送給應(yīng)用。
20. 權(quán)利要求17的方法,其中所迷向中間節(jié)點(diǎn)請(qǐng)求數(shù)據(jù)的步驟 包括下列步驟指定標(biāo)記的唯一標(biāo)識(shí)符;以及查找中間節(jié)點(diǎn)的本地緩存器內(nèi)的標(biāo)記。
21. 權(quán)利要求書20的方法,所述方法還包括下列步驟 廢棄本地緩存器內(nèi)在標(biāo)記后接收到的任何數(shù)據(jù)。
22. 權(quán)利要求書17的方法,所述方法還包括下列步驟 重寫接收端節(jié)點(diǎn)的本地緩存器內(nèi)標(biāo)記后的數(shù)據(jù),其中用正從中間節(jié)點(diǎn)接收到的數(shù)據(jù)重寫數(shù)據(jù)。
23. —種通過網(wǎng)絡(luò)轉(zhuǎn)發(fā)數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括 發(fā)送數(shù)據(jù)流的裝置; 接收數(shù)據(jù)流數(shù)據(jù)的裝置;指定和跟蹤數(shù)據(jù)流數(shù)據(jù)內(nèi)的參考點(diǎn)的裝置;以及 通過指定替代發(fā)送裝置應(yīng)該從其開始發(fā)送數(shù)據(jù)流數(shù)據(jù)的點(diǎn)從替 代發(fā)送裝置接收數(shù)據(jù)流數(shù)據(jù)的裝置。
24. —種裝有通過網(wǎng)絡(luò)將數(shù)據(jù)流從發(fā)送端節(jié)點(diǎn)轉(zhuǎn)發(fā)給一個(gè)或多 個(gè)接收端節(jié)點(diǎn)的可執(zhí)行程序的計(jì)算機(jī)可讀介質(zhì),其中所述程序執(zhí)行下 列步驟接收具有部分?jǐn)?shù)據(jù)流和一個(gè)或多個(gè)標(biāo)記的經(jīng)標(biāo)記的數(shù)據(jù)流; 將所述一個(gè)或多個(gè)標(biāo)記和所述經(jīng)標(biāo)記的數(shù)據(jù)流存儲(chǔ)在緩存器內(nèi);以及將所述經(jīng)標(biāo)記的數(shù)據(jù)流轉(zhuǎn)發(fā)給一個(gè)或多個(gè)下一接收方節(jié)點(diǎn);以及 響應(yīng)對(duì)存儲(chǔ)在緩存器內(nèi)的數(shù)據(jù)流數(shù)據(jù)的請(qǐng)求,在指定的標(biāo)記處開始數(shù)據(jù)傳送,其中所述請(qǐng)求為請(qǐng)求傳送在所指定的標(biāo)記后的數(shù)據(jù)流數(shù)據(jù)。
25. 權(quán)利要求24的計(jì)算機(jī)可讀介質(zhì),其中所述標(biāo)記為具有唯一 標(biāo)識(shí)符的可識(shí)別比特字段。
26. 權(quán)利要求24的計(jì)算機(jī)可讀介質(zhì),其中所述一個(gè)或多個(gè)下一 接收方節(jié)點(diǎn)為在發(fā)送端節(jié)點(diǎn)與 一個(gè)或多個(gè)接收端節(jié)點(diǎn)之間的中間節(jié) 點(diǎn),其中所述中間節(jié)點(diǎn)適合將經(jīng)標(biāo)記的數(shù)據(jù)流轉(zhuǎn)發(fā)給一個(gè)或多個(gè)接收端節(jié)點(diǎn) 。
27. 權(quán)利要求24的計(jì)算機(jī)可讀介質(zhì),其中所述存儲(chǔ)所述一個(gè)或 多個(gè)標(biāo)記的步驟包括將經(jīng)標(biāo)記的數(shù)據(jù)流內(nèi)的所述標(biāo)記記錄為最近接收到的標(biāo)記;以及 更新標(biāo)記索引,其中所述標(biāo)記索引記錄先前接收到的標(biāo)記。
28. 權(quán)利要求27的計(jì)算機(jī)可讀介質(zhì),其中所述標(biāo)記索引為每個(gè) 接收到的標(biāo)記記錄唯一標(biāo)識(shí)符和在緩存器內(nèi)的位置。
29. 權(quán)利要求24的計(jì)算機(jī)可讀介質(zhì),其中所述一個(gè)或多個(gè)下一 接收方節(jié)點(diǎn)為一個(gè)或多個(gè)接收端節(jié)點(diǎn)。
30. 權(quán)利要求24的計(jì)算機(jī)可讀介質(zhì),其中所述一個(gè)或多個(gè)下一 接收方節(jié)點(diǎn)適合轉(zhuǎn)發(fā)經(jīng)標(biāo)記的數(shù)據(jù)流和接收經(jīng)標(biāo)記的數(shù)據(jù)流以傳送給 一個(gè)或多個(gè)應(yīng)用。
31. 權(quán)利要求30的計(jì)算機(jī)可讀介質(zhì),其中所述一個(gè)或多個(gè)下一 接收方節(jié)點(diǎn)適合同時(shí)執(zhí)行轉(zhuǎn)發(fā)和接收步驟。
32. 權(quán)利要求30的計(jì)算機(jī)可讀介質(zhì),其中所述一個(gè)或多個(gè)下一 接收方節(jié)點(diǎn)適合以任何次序執(zhí)行轉(zhuǎn)發(fā)和接收步驟。
33. —種裝有恢復(fù)中斷了的通過網(wǎng)絡(luò)從發(fā)送端節(jié)點(diǎn)到接收端節(jié) 點(diǎn)的數(shù)據(jù)傳送的可執(zhí)行程序的計(jì)算機(jī)可讀介質(zhì),其中所述程序執(zhí)行下 列步驟連接到網(wǎng)絡(luò)內(nèi)的一個(gè)中間節(jié)點(diǎn)上;以及向中間節(jié)點(diǎn)請(qǐng)求從接收端節(jié)點(diǎn)所保存的最后 一個(gè)標(biāo)記開始的數(shù)據(jù)。
34. 權(quán)利要求33的計(jì)算機(jī)可讀介質(zhì),其中所述程序還執(zhí)行下列步驟將接收端排隊(duì)寫指針復(fù)位到緊接上次所保存的標(biāo)記后的位置;以及將從中間節(jié)點(diǎn)發(fā)給接收端節(jié)點(diǎn)的數(shù)據(jù)排隊(duì)。
35. 權(quán)利要求33的計(jì)算機(jī)可讀介質(zhì),其中所述程序還執(zhí)行下列步驟 在從中間節(jié)點(diǎn)接收到下一個(gè)標(biāo)記時(shí)傳送接收端所排隊(duì)的數(shù)據(jù),其 中所排隊(duì)的數(shù)據(jù)被傳送給應(yīng)用。
36. 權(quán)利要求33的計(jì)算機(jī)可讀介質(zhì),其中所述向中間節(jié)點(diǎn)請(qǐng)求 數(shù)據(jù)的步驟包括下列步驟指定標(biāo)記的唯一標(biāo)識(shí)符;以及 查找中間節(jié)點(diǎn)的本地緩存器內(nèi)的標(biāo)記。
37. —種為將數(shù)據(jù)流從發(fā)送端節(jié)點(diǎn)傳送給一個(gè)或多個(gè)接收端節(jié) 點(diǎn)的網(wǎng)絡(luò)提供內(nèi)容傳送優(yōu)化的方法,所述方法包括下列步驟將一個(gè)或多個(gè)標(biāo)記注入數(shù)據(jù)流,以產(chǎn)生包括部分?jǐn)?shù)據(jù)流和所述一 個(gè)或多個(gè)標(biāo)記的經(jīng)標(biāo)記的數(shù)據(jù)流;存儲(chǔ)所述經(jīng)標(biāo)記的數(shù)據(jù)流和所述標(biāo)記;接收來自所述一個(gè)或多個(gè)接收端節(jié)點(diǎn)中至少一個(gè)的、請(qǐng)求數(shù)據(jù)流 的由標(biāo)記的位置標(biāo)識(shí)的部分的數(shù)據(jù)請(qǐng)求;以及轉(zhuǎn)發(fā)數(shù)據(jù)流的從數(shù)據(jù)請(qǐng)求所指定的位置開始的部分。
全文摘要
在一個(gè)實(shí)施例中,本發(fā)明實(shí)現(xiàn)了一種耐故障地在計(jì)算機(jī)網(wǎng)絡(luò)上轉(zhuǎn)發(fā)數(shù)據(jù)的方法和設(shè)備。在一個(gè)實(shí)施例中,將標(biāo)記例如在發(fā)送節(jié)點(diǎn)引入數(shù)據(jù)流,它使轉(zhuǎn)發(fā)節(jié)點(diǎn)和/或接收端可以有效地跟蹤數(shù)據(jù)流接收情況。該標(biāo)記起著數(shù)據(jù)傳送過程的檢查點(diǎn)的作用,在每個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)和接收端都可識(shí)別和索引。每個(gè)接收端在將數(shù)據(jù)傳送給應(yīng)用前保存標(biāo)記,由此在數(shù)據(jù)流內(nèi)指定確認(rèn)所有在此之前的數(shù)據(jù)都已傳送給應(yīng)用的點(diǎn)。這樣,如果一個(gè)轉(zhuǎn)發(fā)節(jié)點(diǎn)有故障,接收端就可以向替代轉(zhuǎn)發(fā)節(jié)點(diǎn)請(qǐng)求數(shù)據(jù)流,請(qǐng)求替代轉(zhuǎn)發(fā)節(jié)點(diǎn)提供從標(biāo)記開始的數(shù)據(jù)。
文檔編號(hào)H04L12/24GK101164056SQ200580012443
公開日2008年4月16日 申請(qǐng)日期2005年4月22日 優(yōu)先權(quán)日2004年4月23日
發(fā)明者震 劉, 杰雷米·I.·西爾伯, 薩姆比特·薩胡 申請(qǐng)人:國際商業(yè)機(jī)器公司