專利名稱:用于在消息通訊系統(tǒng)內(nèi)部路由消息的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明的各實(shí)施方式涉及經(jīng)網(wǎng)絡(luò)向一個或多個收件人路由消息的領(lǐng)域。本發(fā) 明的各實(shí)施方式尤其涉及以最小的傳輸成本經(jīng)網(wǎng)絡(luò)可靠路由電子郵件的系統(tǒng)和方 法;特別是在單個系統(tǒng)對系統(tǒng)傳輸能夠傳遞對多個收件人的責(zé)任時;尤其是在涉及 存儲并轉(zhuǎn)發(fā)責(zé)任傳輸?shù)南到y(tǒng)中。本發(fā)明的實(shí)施方式還有利地提供了系統(tǒng)和方法,它 們在使得管理的網(wǎng)絡(luò)通信量最小的同時,使得寄往位于不同節(jié)點(diǎn)上多個收件人的郵 件的傳輸網(wǎng)絡(luò)通信量最小來降低成本;同時還防止由于網(wǎng)絡(luò)的前后不一致的意見所 導(dǎo)致的無限循環(huán)。
背景技術(shù):
某些早先的系統(tǒng)和方法提供了基于由組成該網(wǎng)絡(luò)的不同節(jié)點(diǎn)對網(wǎng)絡(luò)成本所達(dá) 成的一致而經(jīng)網(wǎng)絡(luò)路由郵件的技術(shù)。然而這些系統(tǒng)在傳輸成本變化或波動時缺乏穩(wěn) 定性,因?yàn)楦鞴?jié)點(diǎn)必須在郵件傳輸之前對傳輸成本達(dá)成一致。這些系統(tǒng)還會為解決 各節(jié)點(diǎn)對網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的觀點(diǎn)的不同所增加的復(fù)雜性或網(wǎng)絡(luò)通信量付出過高的代 價。這樣,就會不必要地延遲郵件直到對成本達(dá)成一致。
其他的系統(tǒng)和方法提供了基于到收件人的最短獨(dú)立路徑計算路由路徑的路由 至多個收件人的技術(shù)。然而這些方法通過經(jīng)由多條鏈路將相同的郵件文件發(fā)送給多 個收件人而不必要地使用了帶寬。
依賴于在關(guān)于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的應(yīng)用程序級上一致的系統(tǒng),對管理員而言是不 可預(yù)知的。本系統(tǒng)因?yàn)槠湫袨樵趶V泛的網(wǎng)絡(luò)條件下可預(yù)測,所以使得它能夠更容易 地進(jìn)行診斷。本發(fā)明的系統(tǒng)和方法確保如果消息無法到達(dá)其最終目的地,則該消息 也能盡可能地接近該預(yù)定目的地。
因此,就希望一種經(jīng)由網(wǎng)絡(luò)將郵件可靠路由給一個或多個收件人的系統(tǒng)和方 法以解決這些或其他缺點(diǎn)中的一個或多個缺點(diǎn)。
發(fā)明概述
6本發(fā)明通過提供一種系統(tǒng)和方法來克服現(xiàn)有技術(shù)中的各種缺陷,該系統(tǒng)和方 法經(jīng)由網(wǎng)絡(luò)路由消息而在發(fā)送和接收節(jié)點(diǎn)之間不要求傳輸成本的絕對一致,在該系 統(tǒng)和方法中,消息被中繼給按傳輸成本最接近接收節(jié)點(diǎn)的可用節(jié)點(diǎn)。本系統(tǒng)和方法 還能夠在經(jīng)由網(wǎng)絡(luò)將一消息路由給位于不同節(jié)點(diǎn)上的多個收件人時優(yōu)化網(wǎng)絡(luò)帶寬, 這是通過延遲該消息的分岔直到最后分岔節(jié)點(diǎn)來實(shí)現(xiàn),這種分岔對于網(wǎng)絡(luò)路由到各 收件人對其擴(kuò)展是很普通的,而這些節(jié)點(diǎn)持有相同的拓樸視圖。本系統(tǒng)和方法還通
過基于各節(jié)點(diǎn)的可用時間表把郵件路由至離收件人節(jié)點(diǎn)最近的節(jié)點(diǎn)來改善可靠性。 此外,本發(fā)明的系統(tǒng)和方法通過確定該消息應(yīng)被傳輸至的一個或多個可用節(jié)點(diǎn),以 及在一節(jié)點(diǎn)不可用的情況下選擇該消息應(yīng)被傳輸至的次優(yōu)節(jié)點(diǎn)來優(yōu)化將消息路由 至收件人的速度。
根據(jù)本發(fā)明, 一個方面提供了一種經(jīng)由計算機(jī)網(wǎng)絡(luò)傳輸消息的計算機(jī)實(shí)現(xiàn)的 方法,其中該計算機(jī)網(wǎng)絡(luò)包括當(dāng)前節(jié)點(diǎn)、目標(biāo)節(jié)點(diǎn)以及與該當(dāng)前節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之 間的網(wǎng)絡(luò)相連接的一個或多個中間節(jié)點(diǎn)。本方法包括創(chuàng)建位于網(wǎng)絡(luò)上的對目標(biāo)節(jié)點(diǎn) 的傳輸成本小于當(dāng)前節(jié)點(diǎn)對目標(biāo)節(jié)點(diǎn)的傳輸成本的中間節(jié)點(diǎn)的目的地可選表,其中 各中間節(jié)點(diǎn)根據(jù)它們的的最小傳輸成本被排列優(yōu)先級。嘗試向目標(biāo)節(jié)點(diǎn)傳輸消息。 如果針對目標(biāo)節(jié)點(diǎn)的消息傳輸失敗,就作為在目的地可選表中標(biāo)識的中間節(jié)點(diǎn)的優(yōu) 先級的函數(shù)而嘗試向至少一個中間節(jié)點(diǎn)傳輸該消息。
本發(fā)明的另一個方面包括在消息通信網(wǎng)絡(luò)的當(dāng)前服務(wù)器和目標(biāo)服務(wù)器之間傳 輸消息的消息通信系統(tǒng)。該系統(tǒng)包括當(dāng)前服務(wù)器、目標(biāo)服務(wù)器、以及連接至該網(wǎng)絡(luò) 的一個或多個中間服務(wù)器。該系統(tǒng)還包括位于該網(wǎng)絡(luò)上并具有針對該目標(biāo)服務(wù)器的 傳輸成本的中間服務(wù)器的目的地可選表,其中各中間服務(wù)器根據(jù)它們的最小傳輸成 本被排列優(yōu)先級。當(dāng)前服務(wù)器被配置執(zhí)行嘗試向目標(biāo)服務(wù)器傳輸消息的計算機(jī)可執(zhí) 行指令。如果針對目標(biāo)服務(wù)器的消息傳輸失敗,那么當(dāng)前服務(wù)器就隨著在目的地可 選表中標(biāo)識的中間服務(wù)器的優(yōu)先級的變化而嘗試向至少一個中間服務(wù)器傳輸該消 息。
本發(fā)明的另一個方面包括具有用于經(jīng)由計算機(jī)網(wǎng)絡(luò)傳輸消息的計算機(jī)可執(zhí)行 指令的計算機(jī)可讀介質(zhì)。該網(wǎng)絡(luò)包括當(dāng)前節(jié)點(diǎn)、目標(biāo)節(jié)點(diǎn)以及與該當(dāng)前節(jié)點(diǎn)和目標(biāo) 節(jié)點(diǎn)之間的網(wǎng)絡(luò)相連接的一個或多個中間節(jié)點(diǎn)。計算機(jī)可執(zhí)行指令包括用于確定從 各中間節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的傳輸成本并且根據(jù)各中間節(jié)點(diǎn)的最小傳輸成本排列它們 的優(yōu)先級的指令。該指令還包括用于嘗試向目標(biāo)節(jié)點(diǎn)傳輸消息的指令;如果針對目 標(biāo)節(jié)點(diǎn)的消息傳輸失敗,就隨著在目的地可選表中標(biāo)識的中間節(jié)點(diǎn)的優(yōu)先級的變而嘗試向至少一個中間節(jié)點(diǎn)傳輸該消息。
另外,本發(fā)明還可以包括各種其他的方法和裝置。 其他的特征有一部分顯而易見并有一部分將在下文中指出。
附圖簡述
圖1是在消息路由網(wǎng)絡(luò)中的一個節(jié)點(diǎn)網(wǎng)絡(luò)和上述節(jié)點(diǎn)之間的鏈路的典型示例圖。
圖2是示出了在其中經(jīng)網(wǎng)絡(luò)傳送的消息被傳輸給一個或多個收件人的本發(fā)明 的一個實(shí)施方式的示例性進(jìn)程的流程圖。
圖3是示出了在其中可以實(shí)現(xiàn)本發(fā)明的合適計算系統(tǒng)環(huán)境的一個示例的框圖。 貫穿于附圖,相應(yīng)的參照符號指示相應(yīng)的部分。
本發(fā)明的詳細(xì)描述
首先參考圖1,提供了在其中可以實(shí)現(xiàn)本發(fā)明的消息路由網(wǎng)絡(luò)中的一個節(jié)點(diǎn)網(wǎng) 絡(luò)和上述節(jié)點(diǎn)之間的鏈路的典型示例圖。計算機(jī)網(wǎng)絡(luò)100包括能夠經(jīng)由連接至各節(jié) 點(diǎn)的鏈路發(fā)送并接收消息(諸如電子消息、電子郵件、信息包等)的多個節(jié)點(diǎn)或消 息傳輸代理(MTA) d每個節(jié)點(diǎn)都含有收件人,這些收件人接收通過網(wǎng)絡(luò)從發(fā)送 節(jié)點(diǎn)路由至該收件人所在的目標(biāo)節(jié)點(diǎn)的消息或郵件。連接網(wǎng)絡(luò)ioo各節(jié)點(diǎn)的線段附 近的黑體數(shù)字表示與經(jīng)由各鏈路傳輸消息相關(guān)聯(lián)的假定傳輸成本。在此示例中,與 消息從節(jié)點(diǎn)102(夏威夷)發(fā)送至節(jié)點(diǎn)104(西雅圖)相關(guān)聯(lián)的傳輸成本可以是200。 還應(yīng)該考慮成本與網(wǎng)絡(luò)可用性成反比,并由此可將成本看作是使用鏈路的機(jī)會成 本。在此示例中,出于說明的目的使用固定成本,但是在更為先進(jìn)的實(shí)現(xiàn)中,實(shí)際 成本隨著所占用/消耗的帶寬動態(tài)更新。
作為經(jīng)網(wǎng)絡(luò)路由消息的示意,位于節(jié)點(diǎn)102 (夏威夷)的消息發(fā)件人將郵件發(fā) 送給位于UK格林威治的節(jié)點(diǎn)108的第一收件人,以及位于法國巴黎的節(jié)點(diǎn)112 的第二收件人。如果將此消息作為兩個分離的消息分別從夏威夷發(fā)送至格林威治以 及從夏威夷發(fā)送至巴黎,則把各文件發(fā)送給兩個收件人的總傳輸成本將會是740 (例如,200+80+卯(從夏威夷到格林威治)加上200+80+90 (從夏威夷到巴黎)。 然而,如果將該消息作為單個文件通過到不同收件人的路徑所公用的路由而發(fā)送, 就能夠降低傳輸成本并且能夠節(jié)省網(wǎng)絡(luò)帶寬。于是,如果將該消息作為單個文件沿 著從節(jié)點(diǎn)102 (夏威夷)至節(jié)點(diǎn)104 (西雅圖)的公用路徑傳輸,并在節(jié)點(diǎn)106 (紐約)處分為兩條消息分別發(fā)送至節(jié)點(diǎn)108 (格林威治)和節(jié)點(diǎn)112 (巴黎),則傳 輸該郵件的總成本將會是460 (例如,200+80 (夏威夷到紐約)加上90+90 (紐約 到格林威治以及紐約到巴黎)。當(dāng)這些結(jié)點(diǎn)不是分叉點(diǎn)而且也沒有網(wǎng)絡(luò)故障時,網(wǎng) 絡(luò)帶寬通過避免應(yīng)用程序級傳輸對這些節(jié)點(diǎn)的干涉而得以節(jié)省。例如,消息可以直 接從夏威夷發(fā)送至紐約。然而,如果夏威夷無法到達(dá)紐約,就會做出將該消息從夏 威夷傳輸至西雅圖的嘗試。
當(dāng)消息在一節(jié)點(diǎn)處分叉時,該節(jié)點(diǎn)負(fù)責(zé)將該消息傳輸至在通向目標(biāo)節(jié)點(diǎn)的路 徑上的后續(xù)節(jié)點(diǎn)。于是,例如該消息在一節(jié)點(diǎn)處被分解并且被發(fā)送至三個不同節(jié)點(diǎn), 則當(dāng)前節(jié)點(diǎn)對該消息傳輸?shù)睦^續(xù)負(fù)責(zé)。 一旦接收節(jié)點(diǎn)接受該消息,該接收節(jié)點(diǎn)就承 擔(dān)將該消息傳輸至在通向目標(biāo)節(jié)點(diǎn)的路徑上的下一個節(jié)點(diǎn)的責(zé)任,并且由此向前, 直到該消息由目標(biāo)節(jié)點(diǎn)所接受。
在本發(fā)明的系統(tǒng)和方法的一個實(shí)施方式中,通過延遲消息的分岔直到兩收件 人的最后公用節(jié)點(diǎn),來優(yōu)化該消息經(jīng)網(wǎng)絡(luò)的路由。這一實(shí)施方式通過將消息中繼至 根據(jù)傳輸成本離收件人目標(biāo)節(jié)點(diǎn)最近的分叉公用節(jié)點(diǎn),就能夠有利地降低節(jié)點(diǎn)102 (夏威夷)傳輸成本,節(jié)省了可用網(wǎng)絡(luò)帶寬,并且還改善節(jié)點(diǎn)102 (夏威夷)收件 人接收消息的可靠性和速度。使用上述示例,本發(fā)明的系統(tǒng)和方法就能夠延遲在節(jié) 點(diǎn)106(紐約)處消息的分岔,而是將該文件轉(zhuǎn)發(fā)至兩收件人最后的分叉公用節(jié)點(diǎn), 即根據(jù)圖1,為節(jié)點(diǎn)110 (倫敦)。在節(jié)點(diǎn)110 (倫敦)處,該消息最終被分岔并 被傳輸至節(jié)點(diǎn)108 (格林威治)和節(jié)點(diǎn)112 (巴黎)。于是,用于將該消息傳輸至 兩收件人的傳輸成本將會是400 (例如,200+80+100 (夏威夷到倫敦)以及10+10 (倫敦到格林威治以及倫敦到巴黎)。
在此所述的對一節(jié)點(diǎn)的接近程度或距離的描述指的是將一消息從一節(jié)點(diǎn)發(fā)送 至目標(biāo)節(jié)點(diǎn)所要求的傳輸成本。于是,離目標(biāo)節(jié)點(diǎn)"最近"的節(jié)點(diǎn)將會是把一文件 發(fā)送給該目標(biāo)節(jié)點(diǎn)所需的傳輸成本或其他抽象(諸如,上述機(jī)會成本)成本最低的 節(jié)點(diǎn)。
通過網(wǎng)絡(luò)將消息傳輸至離收件人最近的節(jié)點(diǎn),這在網(wǎng)絡(luò)上出現(xiàn)會延遲消息傳 輸?shù)墓收蠒r很有意義。通過將消息盡可能地傳輸?shù)诫x收件人最近,就在發(fā)生網(wǎng)絡(luò)故 障的情況下做出了朝向目標(biāo)節(jié)點(diǎn)的移動。在此情況下,該消息能夠在網(wǎng)絡(luò)變?yōu)榭捎?時被快速傳輸至收件人。這還能處理在相同時刻不是全部鏈路都可用的情形。例如, 從初始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的端對端連接可能從未真正可用過。然而通過利用本發(fā)明的 方法和系統(tǒng),則仍舊可以往前進(jìn),并且該消息最終也將到達(dá)。此外,網(wǎng)絡(luò)節(jié)點(diǎn)對離它們較近的節(jié)點(diǎn)相比于離其較遠(yuǎn)的節(jié)點(diǎn)通常具有更好的或者更為可靠的成本和路 由信息。于是,如果在收件人目標(biāo)節(jié)點(diǎn)附近發(fā)生節(jié)點(diǎn)故障,則在附近的一個節(jié)點(diǎn)既 能夠識別通向該收件人的一條有成本效率的可選路徑,同時該路徑又確保信息由收 件人所接收而不是作為無法投遞被返回給發(fā)件人。
可以使用若干種方法來確定在文件無法直接傳輸至目標(biāo)節(jié)點(diǎn)的情況下應(yīng)該把 該信息傳輸至哪個節(jié)點(diǎn)。
在一個實(shí)施方式中,識別一條從當(dāng)前節(jié)點(diǎn)開始以目標(biāo)節(jié)點(diǎn)結(jié)束并且含有連接 至位于該當(dāng)前節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間的網(wǎng)絡(luò)的一個或多個中間節(jié)點(diǎn)的線性路徑。如果 目標(biāo)節(jié)點(diǎn)不可用,就嘗試將該文件傳輸至最接近該目標(biāo)節(jié)點(diǎn)的中間節(jié)點(diǎn)。如果該節(jié) 點(diǎn)也不可用,則做出將該消息傳輸至次接近該目標(biāo)節(jié)點(diǎn)的中間節(jié)點(diǎn)等等,直到?jīng)]有 尚未嘗試的其他中間節(jié)點(diǎn)剩余,或者直到已經(jīng)到達(dá)預(yù)定的嘗試次數(shù)閾值。在此情況 下,消息被延遲以供隨后重新發(fā)送或者作為無法投遞而被返回給發(fā)件人。
在另一個實(shí)施方式中,識別與該目標(biāo)節(jié)點(diǎn)傳輸?shù)某杀驹谥付ǚ秶鷥?nèi)的各節(jié)點(diǎn)。 隨后按其傳輸成本的優(yōu)先級次序組織各節(jié)點(diǎn),其中帶有最低傳輸成本的節(jié)點(diǎn)具有最 高的優(yōu)先級。這樣,如果對目標(biāo)節(jié)點(diǎn)的傳輸嘗試失敗,接下來的嘗試就針對最高優(yōu) 先級節(jié)點(diǎn),即傳輸成本最低的節(jié)點(diǎn)。如果該傳輸嘗試失敗,第三次嘗試就針對最次 高優(yōu)先級節(jié)點(diǎn)(即,具有次高傳輸成本的節(jié)點(diǎn))做出。重復(fù)此進(jìn)程直到?jīng)]有尚未嘗 試的其他節(jié)點(diǎn)剩余,或者直到己經(jīng)到達(dá)預(yù)定的嘗試次數(shù)閾值。如上所述,在此情況 下,消息被延遲以供隨后重新發(fā)送或者作為無法投遞而被返回給發(fā)件人。在另一個 實(shí)施方式中,可以識別圍繞第一成本范圍形成同心圓的第二最小傳輸成本范圍。針 對第二范圍內(nèi)各節(jié)點(diǎn)做出的傳輸嘗試與上述有關(guān)最小成本范圍的相類似。進(jìn)一步的 實(shí)施方式可以包括傳輸成本范圍的補(bǔ)充同心圓。
在另一個實(shí)施方式中,接下來是"二等分再處理"進(jìn)程,在其中識別位于當(dāng) 前節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間的中間節(jié)點(diǎn)的線性線段。如果對目標(biāo)節(jié)點(diǎn)的傳輸嘗試失敗, 就做出將消息傳輸至中間節(jié)點(diǎn),例如"節(jié)點(diǎn)D"的嘗試。如果對節(jié)點(diǎn)D的傳輸嘗 試失敗,就做出將消息傳輸至位于當(dāng)前節(jié)點(diǎn)和節(jié)點(diǎn)D之間的半路程處的中間節(jié)點(diǎn)。 持續(xù)此進(jìn)程直到?jīng)]有其他節(jié)點(diǎn)剩余,或者直到已經(jīng)到達(dá)預(yù)定的嘗試次數(shù)閾值。如上 所述,在此情況下,消息可以被延遲以供隨后重新發(fā)送或者作為無法投遞而被返回 給發(fā)件人。
在另一個實(shí)施方式中,可以利用加速再處理進(jìn)程來識別可將消息傳輸給它的 潛在可選節(jié)點(diǎn)。如果目標(biāo)節(jié)點(diǎn)不可用,該加速再處理進(jìn)程就識別例如是離目標(biāo)節(jié)點(diǎn)的四個節(jié)點(diǎn)的節(jié)點(diǎn)。如果將文件發(fā)送給該節(jié)點(diǎn)的傳輸失敗,就做出將文件發(fā)送給例 如12個節(jié)點(diǎn)遠(yuǎn)的節(jié)點(diǎn)等等,直到?jīng)]有其他節(jié)點(diǎn)剩余,或者直到已經(jīng)到達(dá)預(yù)定的嘗 試次數(shù)閾值。如上所述,在此情況下,消息可以被延遲以供隨后重新發(fā)送或者作為 無法投遞而被返回給發(fā)件人。
在又一個實(shí)施方式中,可以基于各獨(dú)立節(jié)點(diǎn)的運(yùn)行時間表做出將消息發(fā)送到 離目標(biāo)節(jié)點(diǎn)盡可能近的地方的嘗試。該方法可以與上述涉及在無法將消息直接傳輸 至目標(biāo)節(jié)點(diǎn)的情況下傳輸消息的再處理策略所標(biāo)識的各模式中的任何模式相結(jié)合。
例如,在當(dāng)前節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間路徑由中間節(jié)點(diǎn)A、 B和C組成,其中A離目 標(biāo)節(jié)點(diǎn)最遠(yuǎn)而節(jié)點(diǎn)C離目標(biāo)節(jié)點(diǎn)最近。如果現(xiàn)在是3:30 p.m.而節(jié)點(diǎn)A從1:00 p.m. 到4:00 p.m.接收文件,而節(jié)點(diǎn)B從3:00 p.m.到6:00 p.m.接收文件,而節(jié)點(diǎn)C從6:00 p.m.到10:00 p.m.接收文件,那么就會根據(jù)運(yùn)行時間表首先做出將該消息傳輸至作 為離目標(biāo)節(jié)點(diǎn)最近可用節(jié)點(diǎn)的節(jié)點(diǎn)B的嘗試。
本發(fā)明的另一個方面是它路由消息的穩(wěn)定性,而不考慮可由網(wǎng)絡(luò)中不同節(jié)點(diǎn) 確定的變動的/全局弱化的、 一致/不一致的傳輸成本。網(wǎng)絡(luò)節(jié)點(diǎn)之間路由消息的傳 輸成本通常由節(jié)點(diǎn)或MTA操作者之外的第三方提供。于是,常常會有兩個節(jié)點(diǎn)不 被提供相同的傳輸成本信息,特別是在單一的時間點(diǎn)上。這樣收件人節(jié)點(diǎn)可能會確 定通向目標(biāo)節(jié)點(diǎn)的一條不同的路徑,它比由發(fā)送節(jié)點(diǎn)確定的路徑更短,即成本更低。 例如,發(fā)送節(jié)點(diǎn)A確定通向目標(biāo)節(jié)點(diǎn)D的最近傳輸成本路徑是將信息從A傳輸至 B至C最后到達(dá)D。因?yàn)閭鬏敵杀居袝r不一致,所以節(jié)點(diǎn)C可能具有通向D的最 短路徑是先將其發(fā)送回B的成本信息。于是就會出現(xiàn)消息在節(jié)點(diǎn)B和節(jié)點(diǎn)C之間 來回循環(huán)的問題。
替換延遲傳輸消息直到各節(jié)點(diǎn)對傳輸成本達(dá)成一致的做法,本發(fā)明監(jiān)視或跟 蹤一文件在其通向目標(biāo)節(jié)點(diǎn)的路徑上所經(jīng)過的節(jié)點(diǎn)的數(shù)目。例如,在email文檔中, 該文件在其從發(fā)件人節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的路徑上所經(jīng)過的節(jié)點(diǎn)被添加至SMTP報頭, 或者用于其他系統(tǒng)的其他機(jī)制。例如,X.400為此目的利用包封(Envelope)這一 概念。這樣,如果一文件在其通向目標(biāo)節(jié)點(diǎn)的路徑上所經(jīng)過的節(jié)點(diǎn)數(shù)超過最小闔值, 則該節(jié)點(diǎn)就在一時間段(一穩(wěn)定(settling)周期)內(nèi)暫停進(jìn)一步的傳輸以允許傳輸 成本在網(wǎng)絡(luò)間的穩(wěn)定。在穩(wěn)定周期過后,就根據(jù)最短路徑(最低傳輸成本)嘗試將 該消息傳輸至目標(biāo)節(jié)點(diǎn)并且繼續(xù)監(jiān)視文件提供各節(jié)點(diǎn)的次數(shù)。如果傳輸成本在所經(jīng) 過的時間周期之后已經(jīng)穩(wěn)定,該文件就被成功發(fā)送給通過地址接收它的目標(biāo)節(jié)點(diǎn)。 然而,如果傳輸成本仍然沒有穩(wěn)定并且文件循環(huán)仍在繼續(xù),那么就在一文件在其通向目標(biāo)節(jié)點(diǎn)的路徑上所經(jīng)過的節(jié)點(diǎn)數(shù)達(dá)到最大閾值時終止該文件循環(huán)。如果到達(dá)最 大閾值,就把該文件標(biāo)記為不可投遞和/或?qū)⒁粺o法投遞的報告附至該文件,并將 其返回給發(fā)件人。
在一個實(shí)施方式中,最小閾值是10個或更多的節(jié)點(diǎn)。在另一個實(shí)施方式中, 最小閾值是10到15個節(jié)點(diǎn)。
在一個實(shí)施方式中,穩(wěn)定周期可達(dá)一小時。在另一個實(shí)施方式中,穩(wěn)定周期
可達(dá)30分鐘。在又一個實(shí)施方式中,穩(wěn)定周期可達(dá)15分鐘。
在一個實(shí)施方式中,最大閾值是20個或更多的節(jié)點(diǎn)。在另一個實(shí)施方式中, 最大閾值是25到35個節(jié)點(diǎn)。
在一個實(shí)施方式中,本發(fā)明的計算機(jī)網(wǎng)絡(luò)包括連接至因特網(wǎng)的節(jié)點(diǎn)。在另一 實(shí)施方式中,本發(fā)明的計算機(jī)網(wǎng)絡(luò)是橫跨多個國家的公司或大學(xué)的網(wǎng)絡(luò)。在另一實(shí) 施方式中,本發(fā)明的計算機(jī)網(wǎng)絡(luò)是橫跨多個州的公司或大學(xué)的網(wǎng)絡(luò)。在另一實(shí)施方 式中,本發(fā)明的計算機(jī)網(wǎng)絡(luò)是橫跨多個城市的公司或大學(xué)的網(wǎng)絡(luò)。在又一實(shí)施方式 中,本發(fā)明的計算機(jī)網(wǎng)絡(luò)是橫跨單個城市或公司或大學(xué)校園內(nèi)多幢樓的公司或大學(xué) 的網(wǎng)絡(luò)。
通過監(jiān)視或跟蹤一文件所經(jīng)過的節(jié)點(diǎn)數(shù)量,替代了延遲該消息的發(fā)送直到成 本完全穩(wěn)定的做法,就能夠在網(wǎng)絡(luò)上出現(xiàn)局部傳輸成本不等的情況下,得到一個向 收件人傳輸消息的更穩(wěn)定路由的系統(tǒng)和方法。因此,本發(fā)明的系統(tǒng)和方法并不延遲 傳輸消息直到所有的節(jié)點(diǎn)對成本達(dá)成一致,而是將各文件傳輸至更接近目標(biāo)節(jié)點(diǎn)的 節(jié)點(diǎn)。如前所述,相對于更遠(yuǎn)的節(jié)點(diǎn),各節(jié)點(diǎn)對在附近的節(jié)點(diǎn)具有更好的傳輸成本 和網(wǎng)絡(luò)狀態(tài)信息。這樣通過將消息傳輸至離目標(biāo)節(jié)點(diǎn)更近的節(jié)點(diǎn),各文件就不會被 延遲,并且更接近目標(biāo)節(jié)點(diǎn)的各節(jié)點(diǎn)更有可能具有更為精確的成本和網(wǎng)絡(luò)狀態(tài)信 息,從而允許其成功地將該文件傳輸至目標(biāo)節(jié)點(diǎn)。
接下來參考圖2,提供了本發(fā)明一個實(shí)施方式的示例性進(jìn)程的流程圖,在其中 經(jīng)網(wǎng)絡(luò)傳送的消息被傳輸至一個或多個收件人。該流程圖描述了由一節(jié)點(diǎn)(下文中 將其稱為"當(dāng)前節(jié)點(diǎn)")所執(zhí)行的進(jìn)程。在202處,當(dāng)前節(jié)點(diǎn)接收要發(fā)送給位于該 當(dāng)前節(jié)點(diǎn)之外的一個或多個目標(biāo)節(jié)點(diǎn)上的一個或多個收件人的消息。當(dāng)前節(jié)點(diǎn)可以 是發(fā)送一消息的原始節(jié)點(diǎn)也可以是與在原始發(fā)送節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間的網(wǎng)絡(luò)相連 接的一個中間節(jié)點(diǎn)。
在203處,計算該網(wǎng)絡(luò)上的最低成本路徑以及節(jié)點(diǎn)的分叉點(diǎn)。這些方法在本 領(lǐng)域內(nèi)周知并且不限于任何特定的計算。對系統(tǒng)配置的變化進(jìn)行監(jiān)視并且在系統(tǒng)配置改變時重新計算最低成本路徑和分叉點(diǎn)。
在204處,做出該消息是否已被傳輸至MIN數(shù)目的節(jié)點(diǎn)的判定,其中MIN
是預(yù)定的最小閾值數(shù)。如果文件已經(jīng)傳輸至的節(jié)點(diǎn)數(shù)目超過該最小閾值數(shù),就在
206處將該文件擱置一預(yù)定穩(wěn)定周期以允許傳輸成本的穩(wěn)定。
在208處,做出該消息是否己被傳輸至MAX數(shù)目的節(jié)點(diǎn)的判定,其中MAX 是預(yù)定的最大閾值數(shù)。如果文件已經(jīng)傳輸至的節(jié)點(diǎn)數(shù)目等于該最大閾值數(shù),就在 210處將該文件返回給發(fā)送方并將其標(biāo)記為無法投遞。在一個實(shí)施方式中,向發(fā)件 人提供進(jìn)一步描述該文件投遞失敗的無法投遞報告。
在212處,當(dāng)前節(jié)點(diǎn)建立一目的地表,該表識別與將消息發(fā)送至該網(wǎng)絡(luò)內(nèi)各 節(jié)點(diǎn)相關(guān)聯(lián)的傳輸成本。該目的地可選表還根據(jù)與從當(dāng)前節(jié)點(diǎn)向其傳輸消息相關(guān)聯(lián) 的最小傳輸成本排列了網(wǎng)絡(luò)上各節(jié)點(diǎn)的優(yōu)先級。在214處做出該消息是要被發(fā)送給
位于單個節(jié)點(diǎn)上的一個或多個收件人還在該文件要被發(fā)送給位于兩個或多個節(jié)點(diǎn) 上的兩個或多個發(fā)件人的判定。
如果判定該消息是要被發(fā)送給位于單個節(jié)點(diǎn)上的一個或多個收件人,就在216 處將該消息添加至用于傳輸至目的地節(jié)點(diǎn)的隊(duì)列。
在218處連接管理器算法確定該郵件應(yīng)該被送至目的地節(jié)點(diǎn)。在220處該連 接管理器算法首先嘗試將該消息直接發(fā)送給在該消息中標(biāo)識的目標(biāo)節(jié)點(diǎn)。如果該文 件因?yàn)椴淮嬖谥苯舆B接或者因?yàn)槟繕?biāo)節(jié)點(diǎn)出于某種原因(例如,組件故障、帶寬限 制、網(wǎng)絡(luò)故障、配置差錯、低級系統(tǒng)策略等)不接收該文件而無法被直接發(fā)送至該 目標(biāo)節(jié)點(diǎn),該文件就被傳輸至在目的地可選表中標(biāo)識的尚未被當(dāng)前節(jié)點(diǎn)嘗試的最高 優(yōu)先級節(jié)點(diǎn)。在222處,當(dāng)前節(jié)點(diǎn)判定該文件是否在X次嘗試內(nèi)被成功傳輸至該 目的地節(jié)點(diǎn),其中X是由當(dāng)前節(jié)點(diǎn)進(jìn)行的預(yù)定的傳輸嘗試次數(shù)??蛇x地或者附加 地,預(yù)定的傳輸嘗試次數(shù)X可以包括在其內(nèi)必須發(fā)送本消息的預(yù)定時間限制。如 果該文件被成功發(fā)送給目的地節(jié)點(diǎn),則當(dāng)前節(jié)點(diǎn)的責(zé)任就已履行并且該進(jìn)程結(jié)束。
在222處如果當(dāng)前節(jié)點(diǎn)判定該文件沒有在X次嘗試內(nèi)被成功傳輸至該目的地 節(jié)點(diǎn)(或者已經(jīng)超過關(guān)于X的時間限制),在224處當(dāng)前節(jié)點(diǎn)就判定是否已經(jīng)對 目的地可選表內(nèi)所標(biāo)識的所有目的地節(jié)點(diǎn)做出了郵件傳輸嘗試。如果尚未對所有被 標(biāo)識的目的地節(jié)點(diǎn)做出嘗試,在220處當(dāng)前節(jié)點(diǎn)就嘗試對尚未嘗試的最高優(yōu)先級節(jié) 點(diǎn)發(fā)送消息。如果已經(jīng)對所有被標(biāo)識的目的地節(jié)點(diǎn)做出了投遞嘗試,則當(dāng)前節(jié)點(diǎn)就 在226處判定針對所有節(jié)點(diǎn)的投遞是否嘗試了 Y次,其中Y是由當(dāng)前節(jié)點(diǎn)做出的 預(yù)定的傳輸嘗試次數(shù)??蛇x地或者附加地,預(yù)定的傳輸嘗試次數(shù)Y可以包括在其內(nèi)必須發(fā)送本消息的預(yù)定時間限制。如果當(dāng)前節(jié)點(diǎn)沒有嘗試投遞Y次(或者已經(jīng)
超過關(guān)于Y的時間限制),在228處該消息就被擱置一指定時間段以允許網(wǎng)絡(luò)修 復(fù)。在這一指定時間段過后,在218處連接管理器重新判定是否應(yīng)該將該郵件發(fā)送 至目的地節(jié)點(diǎn)。
如果當(dāng)前節(jié)點(diǎn)已經(jīng)嘗試投遞Y次或者己經(jīng)超過當(dāng)前節(jié)點(diǎn)必須投遞該消息的時 間限制,當(dāng)前節(jié)點(diǎn)在230處判定該消息是否寄往具有公用分叉節(jié)點(diǎn)的多個目的地。 如果是,在232處該文件就為該獨(dú)立目的地而非分叉節(jié)點(diǎn)重新排隊(duì),并且在216 處被添加至該隊(duì)列。
在230處如果當(dāng)前節(jié)點(diǎn)判定該消息是寄往位于單個目標(biāo)節(jié)點(diǎn)上的一個或多個 收件人,在210處該文件就被返回給發(fā)送方并被標(biāo)記為無法投遞。在一個實(shí)施方式 中,無法投遞報告被提供給發(fā)件人,它進(jìn)一步描述該文件的投遞失敗。
在214處如果當(dāng)前節(jié)點(diǎn)判定該消息是寄往位于兩個或多個不同節(jié)點(diǎn)上的多個 收件人,就在234處創(chuàng)建其中當(dāng)前節(jié)點(diǎn)是根的最小生成樹。在一個實(shí)施方式中,最 小生成樹被預(yù)先計算并且用于傳輸多個不同的消息。生成樹本地分區(qū)表在236處創(chuàng) 建。它是編碼有關(guān)該網(wǎng)絡(luò)的最小成本生成樹的最小生成樹。該最小生成樹用于找出 分叉點(diǎn)。利用最小生成樹和生成樹本地分區(qū)表,當(dāng)前節(jié)點(diǎn)在238處識別關(guān)于各收件 人的最后分叉節(jié)點(diǎn)。如果在240處判定當(dāng)前節(jié)點(diǎn)是關(guān)于各收件人的最后分叉節(jié)點(diǎn), 在242處該消息就分岔至各收件人的目標(biāo)節(jié)點(diǎn)并且在216處將該消息放入隊(duì)列。
如果當(dāng)前節(jié)點(diǎn)不是分叉節(jié)點(diǎn),當(dāng)前節(jié)點(diǎn)就在244處根據(jù)有關(guān)每一組的最后分 叉節(jié)點(diǎn)對收件人目的地節(jié)點(diǎn)進(jìn)行分組并且在216處將分組的目的地放入隊(duì)列。
在本發(fā)明的一個實(shí)施方式中,如圖2所述,最后分叉節(jié)點(diǎn)可能不可用或者無 法接受嘗試向其發(fā)送的消息。在此情況下,本發(fā)明就在當(dāng)前節(jié)點(diǎn)分岔該消息,從而 以額外的傳輸成本和帶寬確保將該消息成功傳輸至收件人。于是,當(dāng)以延遲分岔文 件直到最后分叉節(jié)點(diǎn)的方式首次嘗試傳輸消息時,如果延遲分岔將會引起該文件延 遲投遞或不可投遞時,本系統(tǒng)和方法就替代地提前分岔該消息,籍此將該文件傳輸 至收件人。于是因?yàn)橄嘈艑τ谑占四軌蚪邮盏皆撓⒈裙?jié)省額外的傳輸成本和帶 寬更為重要,而該額外的傳輸成本和帶寬與延遲該文件并在最后分叉節(jié)點(diǎn)處分岔該 文件相關(guān)聯(lián),所以該文件就被提早分岔。這一示例在圖1中舉例說明,其中當(dāng)前節(jié) 點(diǎn)是試圖向節(jié)點(diǎn)110 (倫敦)轉(zhuǎn)發(fā)消息的節(jié)點(diǎn)106 (紐約),而節(jié)點(diǎn)110 (倫敦) 是位于節(jié)點(diǎn)108 (格林威治)和節(jié)點(diǎn)112 (巴黎)的收件人的最后分叉節(jié)點(diǎn)。如果 節(jié)點(diǎn)106 (紐約)無法向節(jié)點(diǎn)110 (倫敦)轉(zhuǎn)發(fā)消息,那么它就在230處分岔該消息收件人并且將兩消息放入隊(duì)列,其中一個消息被傳輸至節(jié)點(diǎn)108 (格林威治)而
另一消息則被傳輸至節(jié)點(diǎn)112 (巴黎)。于是,傳輸成本從120增加至180,但是 代替了消息的延遲以及將該文件作為無法投遞返回給發(fā)件人的情況,該文件被直接 發(fā)送給節(jié)點(diǎn)108 (格林威治)和節(jié)點(diǎn)112 (巴黎)的收件人節(jié)點(diǎn)。
在另一個實(shí)施方式中,該系統(tǒng)和方法維護(hù)所有近來失敗的連接的一個高速緩 存。在另一個實(shí)施方式中,該系統(tǒng)和方法維護(hù)按各失效連接經(jīng)過的鄰近節(jié)點(diǎn)分組的 所有近來失敗的連接的一個高速緩存。這些實(shí)施方式可用于避免嘗試向近來失敗節(jié) 點(diǎn)傳輸消息并籍此避免延遲文件的傳輸。在一個實(shí)施方式中,維護(hù)在一預(yù)定時間段 內(nèi)出現(xiàn)的失敗連接的一個高速緩存。在一個實(shí)施方式中,該時間段是最近的六個小 時。在另一個實(shí)施方式中,維護(hù)在最近一小時內(nèi)出現(xiàn)的失敗連接的一個高速緩存。 在另一個實(shí)施方式中,維護(hù)在最近三十分鐘內(nèi)出現(xiàn)的失敗連接的一個高速緩存。
在一個實(shí)施方式中,做出同時向多個可選節(jié)點(diǎn)傳輸消息的傳輸,而非一次打 開一個對可選節(jié)點(diǎn)的連接。在此實(shí)施方式中,選擇最接近最終目標(biāo)并在預(yù)定時間內(nèi) (例如, 一秒鐘內(nèi))傳輸成功的節(jié)點(diǎn)。如果在預(yù)定的時間段內(nèi)沒有成功接受的節(jié)點(diǎn), 那么就使用首先成功接受的節(jié)點(diǎn)。如果沒有成功,則可以使用更長的時間段。
在一個實(shí)施方式中,如果當(dāng)前的連接"較慢",即字節(jié)/秒明顯低于平均水平, 則做出打開與"靠近的"節(jié)點(diǎn)的連接的嘗試以傳輸?shù)诙ⅰH绻?靠近的"節(jié)點(diǎn) 處于"平均水平"或以上,就應(yīng)該停止向該"較慢"節(jié)點(diǎn)發(fā)送消息以支持向"靠近 的"節(jié)點(diǎn)的發(fā)送。
圖3示出了計算機(jī)130形式的通用計算設(shè)備的一個示例。在本發(fā)明的一個實(shí) 施方式中,諸如計算機(jī)130等計算機(jī)適用于在此處所示和描述的其它附圖中使用。 計算機(jī)130具有一個或多個處理器或處理單元132以及系統(tǒng)存儲器134。在所示的 實(shí)施方式中,系統(tǒng)總線136將包括系統(tǒng)存儲器134的各種系統(tǒng)組件耦合到處理器 132??偩€136表示若干種總線結(jié)構(gòu)類型的任一種,包括存儲器總線或存儲器控制 器、外圍總線、加速圖形端口,以及使用各類總線體系結(jié)構(gòu)的處理器或局部總線。 作為示例而非局限,這類體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體 系結(jié)構(gòu)(MCA)總線、增強(qiáng)ISA (EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(VESA) 局部總線以及外圍部件互連(PCI)總線,也稱為Mezzanine總線。
計算機(jī)130通常至少具有某一形式的計算機(jī)可讀介質(zhì)。計算機(jī)可讀介質(zhì)可以 包括易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì),它可以是可由計算機(jī)130 訪問的任一可用介質(zhì)。作為示例而非局限,計算機(jī)可讀介質(zhì)包括計算機(jī)存儲介質(zhì)和通信介質(zhì)。計算機(jī)存儲介質(zhì)包括以用于儲存諸如計算機(jī)可讀指令、消息結(jié)構(gòu)、程序 模塊或其它消息等信息的任一方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性,可移動和不可
移動介質(zhì)。例如,計算機(jī)存儲介質(zhì)包括但不限于,RAM、 ROM、 EEPROM、閃存 或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁盒、 磁帶、磁盤存儲或其它磁存儲設(shè)備、或可以用來儲存所期望的信息并可由計算機(jī) 130訪問的任一其它介質(zhì)。通信介質(zhì)通常具體化為諸如載波或其它傳輸機(jī)制的已調(diào) 制消息信號中的計算機(jī)可讀指令、消息結(jié)構(gòu)、程序模塊或其它消息,并包括任一信 息傳送介質(zhì)。本領(lǐng)域的技術(shù)人員熟悉已調(diào)制數(shù)據(jù)信號,它以對信號中的信息進(jìn)行編 碼的方式設(shè)置或改變其一個或多個特征。有線介質(zhì)如有線網(wǎng)絡(luò)或直接連線連接等, 以及無線介質(zhì)如聲學(xué)、RF、紅外和其它無線介質(zhì)等是通信介質(zhì)的示例。上述任一 的組合也應(yīng)當(dāng)包括在計算機(jī)可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲器134包括以可移動和/或不可移動、易失性和/或非易失性存儲器形 式的計算機(jī)存儲介質(zhì)。在所示的實(shí)施方式中,系統(tǒng)存儲器134包括只讀存儲器
(ROM) 138和隨機(jī)存取存儲器(RAM) 140?;据斎?輸出系統(tǒng)142 (BIOS) 包括如在啟動時幫助在計算機(jī)130內(nèi)的元件之間傳輸信息的基本例程,通常儲存在 ROM 138中。RAM 140通常包含處理單元132立即可訪問和/或當(dāng)前正在操作的數(shù) 據(jù)和/或程序模塊。作為示例而非局限,圖3示出了操作系統(tǒng)144、應(yīng)用程序146、 其它程序模塊148和程序數(shù)據(jù)150。
計算機(jī)130也可包括其它可移動/不可移動、易失性/非易失性計算機(jī)存儲介質(zhì)。 例如,圖3示出了對不可移動、非易失性磁介質(zhì)進(jìn)行讀寫的硬盤驅(qū)動器154。圖3 還示出了對可移動、非易失性磁盤158進(jìn)行讀寫的磁盤驅(qū)動器156,以及對可移動、 非易失性光盤162,如CDROM或其它光介質(zhì)進(jìn)行讀寫的光盤驅(qū)動器160??梢栽?示例性操作環(huán)境中使用的其它可移動/不可移動、易失性/非易失性計算機(jī)存儲介質(zhì) 包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài) ROM等等。硬盤驅(qū)動器154以及磁盤驅(qū)動器156和光盤驅(qū)動器160通常通過非易 失性存儲器接口,如接口 166連接到系統(tǒng)總線136。
上文討論并在圖3示出的驅(qū)動器或其他海量存儲及其相關(guān)聯(lián)的計算機(jī)存儲介 質(zhì)為計算機(jī)130提供了計算機(jī)可讀指令、消息結(jié)構(gòu)、程序模塊和其它消息的存儲。 例如,在圖3中,示出硬盤驅(qū)動器154儲存操作系統(tǒng)170、應(yīng)用程序172、其它程 序模塊174和程序數(shù)據(jù)176。注意,這些組件可以與操作系統(tǒng)144、應(yīng)用程序146、 其它程序模塊148和程序數(shù)據(jù)150相同,也可以與它們不同。這里對操作系統(tǒng)17應(yīng)用程序172、其它程序模塊174和程序數(shù)據(jù)176給予不同的標(biāo)號來說明至少它們 是不同的副本。
用戶可以通過輸入設(shè)備或用戶界面選擇設(shè)備,如鍵盤180和定位設(shè)備182 (例 如,鼠標(biāo)、跟蹤球、筆或觸摸墊)向計算機(jī)130輸入命令和信息。其它輸入設(shè)備(未 示出)可包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等。這些和其 它輸入設(shè)備通常通過耦合至系統(tǒng)總線136的用戶輸入接口 184連接至處理單元 132,但是也可以通過其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串 行總線(USB)。監(jiān)視器188或其它類型的顯示設(shè)備也通過接口,如視頻接口 190 連接至系統(tǒng)總線136。除監(jiān)視器188之外,計算機(jī)通常包括其它外圍輸出設(shè)備(未 示出),如打印機(jī)和揚(yáng)聲器,它們可通過輸出外圍接口 (未示出)連接。
計算機(jī)130可以使用到一個或多個遠(yuǎn)程計算機(jī),如遠(yuǎn)程計算機(jī)194的邏輯連 接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計算機(jī)194可以是個人計算機(jī)、服務(wù)器、路由器、網(wǎng) 絡(luò)PC、對等設(shè)備或其它常見的網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括許多或所有相對于計算機(jī)130 所描述的元件。圖3描述的邏輯連接包括局域網(wǎng)(LAN) 196和廣域網(wǎng)(WAN) 198,但也可包括其它網(wǎng)絡(luò)。LAN 136和/或WAN 138可以是有線網(wǎng)絡(luò)、無線網(wǎng)絡(luò), 它們的組合等等。這類網(wǎng)絡(luò)環(huán)境常見于辦公室、企業(yè)范圍計算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及 全球計算機(jī)網(wǎng)(例如,因特網(wǎng))。
當(dāng)在局域網(wǎng)網(wǎng)絡(luò)環(huán)境中使用時,計算機(jī)130通過網(wǎng)絡(luò)接口或適配器186連接 至LAN196。當(dāng)在廣域網(wǎng)網(wǎng)絡(luò)環(huán)境中使用時,計算機(jī)130通常包括調(diào)制解調(diào)器178 或用于通過WAN 198,如因特網(wǎng)建立通信的其它裝置。調(diào)制解調(diào)器178可以是內(nèi) 置或外置的,它通過用戶輸入接口 184或其它適當(dāng)?shù)臋C(jī)制連接至系統(tǒng)總線136。在 網(wǎng)絡(luò)化環(huán)境中,相對于計算機(jī)130所描述的程序模塊或其部分可儲存在遠(yuǎn)程存儲器 存儲設(shè)備(未示出)中。作為示例,而非局限,圖3示出遠(yuǎn)程應(yīng)用程序192駐留在 存儲器設(shè)備上。示出的網(wǎng)絡(luò)連接是示例性的,也可以使用在計算機(jī)之間建立通信鏈 路的其它手段。
一般而言,計算機(jī)130的消息處理器是通過在不同的時刻駐留在計算機(jī)的各 種計算機(jī)可讀存儲介質(zhì)中的指令來編程的。程序和操作系統(tǒng)通常例如分布在軟盤或 CD-ROM上。從那里,它們被安裝或加載到計算機(jī)的輔助存儲器中。在執(zhí)行時,
它們至少部分地被加載到計算機(jī)的主電子存儲器中。當(dāng)這些和其它各種類型的計算 機(jī)可讀存儲介質(zhì)用于實(shí)現(xiàn)在下文中結(jié)合微處理器或其它消息處理器描述的步驟的
指令或程序時,此處所描述的本發(fā)明的實(shí)施方式包含這種介質(zhì)。當(dāng)依照此處所描述
17的方法和技術(shù)來編程時,本發(fā)明也包括計算機(jī)本身。
為說明起見,程序和諸如操作系統(tǒng)等其它可執(zhí)行程序組件在此處被示出為離散的框,然而可以認(rèn)識到,這些程序和組件在不同的時刻駐留在計算機(jī)的不同存儲組件中,并由計算機(jī)的消息處理器執(zhí)行。
盡管結(jié)合包括計算機(jī)130的示例性計算系統(tǒng)環(huán)境進(jìn)行了描述,然而本發(fā)明的
一個實(shí)施方式可以使用眾多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置來操作。該計算系
統(tǒng)環(huán)境并非對本發(fā)明的實(shí)施方式的使用范圍或功能提出任何局限。此外,也不應(yīng)將計算系統(tǒng)環(huán)境解釋為對示例性操作環(huán)境中示出的任一組件或其組合具有任何依賴
或需求。適用于本發(fā)明的實(shí)施方式的眾所周知的計算系統(tǒng)、環(huán)境和/或配置的示例包括但不限于,個人計算機(jī)、服務(wù)器計算機(jī)、手持式或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)者電子設(shè)備、移動電話、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)、包括任一上述系統(tǒng)或設(shè)備的分布式計算環(huán)境等等。
本發(fā)明的實(shí)施方式可以在諸如由一個或多個計算機(jī)或其它設(shè)備執(zhí)行的程序模塊等計算機(jī)可執(zhí)行指令的一般上下文環(huán)境中描述。 一般而言,程序模塊包括但不限于,例程、程序、對象、組件、抽象消息類型等等,它們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象消息類型。本發(fā)明的實(shí)施方式也可以在分布式計算環(huán)境中實(shí)踐,其中,任務(wù)由通過通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備來執(zhí)行。在分布式計算環(huán)境中,程序模塊可以位于包括存儲器存儲設(shè)備的本地和遠(yuǎn)程計算機(jī)存儲介質(zhì)中。
軟件體系結(jié)構(gòu)上下文中的接口包括軟件模塊、組件、代碼部分、或其它計算機(jī)可執(zhí)行指令序列。接口包括,例如訪問第二模塊來代表第一模塊執(zhí)行計算任務(wù)的第一模塊。在一個示例中,第一和第二模塊包括諸如由操作系統(tǒng)提供的應(yīng)用程序編
程接口 (API)、組件對象模型(COM)接口 (例如,用于對等應(yīng)用程序通信)、以及可擴(kuò)展標(biāo)記語言元數(shù)據(jù)交換格式(XMI)接口 (例如,用于Web服務(wù)之間的
通信)。
接口可以是一種緊耦合的同步實(shí)現(xiàn),諸如在Java 2平臺企業(yè)版本(J2EE)、COM或分布式COM (DCOM)示例中。作為替代或除此之外,接口可以是諸如Web服務(wù)(例如,使用簡單對象訪問協(xié)議)中的松耦合的異步實(shí)現(xiàn)。 一般而言,接口包括以下特征的任一組合緊耦合的、松耦合的、同步和異步。此外,接口可符合標(biāo)準(zhǔn)協(xié)議、專有協(xié)議、或標(biāo)準(zhǔn)和專有協(xié)議的任何組合。
此處所描述的接口可以都是單個接口的一部分,或者可以被實(shí)現(xiàn)為單獨(dú)的接口或其中的任何組合。接口可以本地或遠(yuǎn)程地執(zhí)行以提供功能。此外,接口可包括比此處所示或所描述的更多或更少的功能。以下各實(shí)施例將進(jìn)一步舉例說明本發(fā)明
實(shí)施例——經(jīng)網(wǎng)絡(luò)的電子郵件路由初始化
在初始化期間,要計算兩個消息結(jié)構(gòu)。它們在整個進(jìn)程執(zhí)行過程中都會被用到。如果底層的消息改變,能夠簡單地重新計算這些消息結(jié)構(gòu)并用于該點(diǎn)的轉(zhuǎn)發(fā)。目的地可選表
對于組織內(nèi)的每個節(jié)點(diǎn)而言,確定接近當(dāng)前機(jī)器的投遞節(jié)點(diǎn)并將其放入一列表或表格(目的地可選表)。該列表根據(jù)它們對所述目標(biāo)的最小傳輸成本而被排序。這包括了在當(dāng)前節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間最小成本路徑上的所有節(jié)點(diǎn)。這還包括了從源到目標(biāo)的其他路徑上的其他節(jié)點(diǎn),只要它們到該目標(biāo)的最小成本要小于從當(dāng)前節(jié)點(diǎn)
到目的地節(jié)點(diǎn)的傳輸成本。最初,這還可以包括位于通向該目標(biāo)的一路徑上的節(jié)點(diǎn),但該路徑不是從當(dāng)前節(jié)點(diǎn)到目標(biāo)的路徑。此處,距離是根據(jù)在各節(jié)點(diǎn)之間定義的、因鏈路橋原因的鏈路成本而定的。
這是對該算法有多兼容的探試式的決定。包括更大的集合將允許該系統(tǒng)嘗試盡可能多的可選步驟以到達(dá)該目標(biāo);籍此增加成功的機(jī)會,但卻會降低面對鏈路失敗時的總效率。因變得更為兼容,允許我們解釋該可能性,即底層的節(jié)點(diǎn)鏈路記錄只是底層拓?fù)浣Y(jié)構(gòu)的模型而不表示物理網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的每一方面。
最小生成樹
最小生成樹以當(dāng)前節(jié)點(diǎn)作為根對于網(wǎng)絡(luò)節(jié)點(diǎn)/鏈路進(jìn)行計算。此外,也建立生成樹本地分區(qū)表。對于每個目的地D,確定下一個跳點(diǎn)(h叩)(在從當(dāng)前節(jié)點(diǎn)到目標(biāo)D的最小生成樹的路徑內(nèi)的第一個鄰近節(jié)點(diǎn))。
處理不一致的全局消息
本算法假設(shè)網(wǎng)絡(luò)節(jié)點(diǎn)/鏈路的消息是全局一致的。在實(shí)踐中,這一假定通常是真實(shí)的,因?yàn)橄⒈贿^分地復(fù)制,還因?yàn)樗兓徛?,僅受操作者的控制。然而由于復(fù)制等待時間而不能保證上述假定一直為真。
本系統(tǒng)將使用例如SMTP接收的報頭,來跟蹤一消息已經(jīng)從節(jié)點(diǎn)到節(jié)點(diǎn)的傳輸次數(shù)。如果傳輸計數(shù)超過第一閾值,該郵件將被延遲,給于復(fù)制一個機(jī)會以便穩(wěn)定。如果該傳輸計數(shù)超過最大計數(shù),該系統(tǒng)就被推定為損壞并且將帶有關(guān)于失敗投遞的信息(諸如,無法投遞報告(NDR))的郵件返回給發(fā)件人本算法的一個益處是它需要有關(guān)更遠(yuǎn)離它的各節(jié)點(diǎn)的最小信息。結(jié)果,它就對全周節(jié)點(diǎn)/鏈路消息的不一致不那么敏感。單個目的地的情況
在單個目的地的情況下,郵件被路由至單獨(dú)收件人的地址。因?yàn)橹挥幸粋€收件人,所以無需考慮在多個節(jié)點(diǎn)處的收件人扇出問題。扇出問題可能會因?yàn)樵撪]件最初寄往單獨(dú)收件人而出現(xiàn),或者可能會因?yàn)樵撪]件最初寄往多個收件人而出現(xiàn),并且該郵件已被扇出。
在路由時,消息被放入隊(duì)列以等待向目的地節(jié)點(diǎn)的投遞。
在中繼時(當(dāng)該系統(tǒng)希望將郵件從本地機(jī)器移動至遠(yuǎn)程機(jī)器時),連接管理器算法確定該郵件應(yīng)該被中繼至目的地T。
首先嘗試將該郵件傳輸至收件人所在的目的地節(jié)點(diǎn)。如果針對目的地節(jié)點(diǎn)的傳輸失敗,就隨著目的地可選表內(nèi)每個可選當(dāng)前節(jié)點(diǎn)的最小傳輸成本的變化做出傳輸該郵件的額外嘗試。這些額外傳輸嘗試按照中間節(jié)點(diǎn)和目的地節(jié)點(diǎn)之間最小傳輸成本的優(yōu)先級次序執(zhí)行。這樣就能達(dá)到在目的地本身無法到達(dá)的情況下將該郵件移動至離該目的地最近的節(jié)點(diǎn)的效果。
如果一目的地不能到達(dá),TCP將判定在一段時間內(nèi)無法做出連接。例如,如
果連接無法在20秒內(nèi)做出,每個站點(diǎn)平均具有兩個橋頭,該網(wǎng)絡(luò)的直徑可達(dá)IO,則嘗試所有的可選站點(diǎn)就需要400秒或者7分鐘的延遲時間。這還能通過保持一個近來嘗試并失敗的連接(例如,在最近30分鐘內(nèi)失敗)的高速緩存并且不嘗試連接那些站點(diǎn)而得到進(jìn)一步地優(yōu)化。
如果沒有連接能夠做出,則在單個目的地的情況下,就擱置該消息隊(duì)列并因預(yù)料該網(wǎng)絡(luò)將會在隨后被修復(fù),而在稍后執(zhí)行傳輸該隊(duì)列的嘗試。
多個目的地的情況
在某些情況下,郵件被寄往位于不同節(jié)點(diǎn)上的一個以上的收件人。在此情況下,網(wǎng)絡(luò)通信量優(yōu)化方法就沿著在系統(tǒng)啟動時算出的最小生成樹內(nèi)的各鏈路中繼該郵件。
郵件收件人根據(jù)通向各收件人節(jié)點(diǎn)路徑第一次分叉處的最后節(jié)點(diǎn)而被分組。該節(jié)點(diǎn)是在目的地可選表上具有最高優(yōu)先級(例如,分叉節(jié)點(diǎn)和目的地節(jié)點(diǎn)之間的最小成本)的分叉節(jié)點(diǎn)。在該分叉節(jié)點(diǎn)創(chuàng)建消息的分岔并且將該郵件放入隊(duì)列以等待用于走這條路徑的收件人的分叉節(jié)點(diǎn)。該消息在兩個收件人具有僅僅在當(dāng)前節(jié)點(diǎn)處并發(fā)的路徑時才必須被分岔。盡可能地延遲分岔是有利的,所以假定在三個收件人的情況下,該郵件被傳輸至一個更近的"下一個跳點(diǎn)"來避免額外的分岔。
可以使用在初始化部分描述的生成樹本地分區(qū)表來有效地計算該節(jié)點(diǎn)。使用該分區(qū)表,就能夠根據(jù)最小生成樹中對收件人目的地的下一個跳點(diǎn)來分組該郵件的收件人。為每個收件人組創(chuàng)建一消息分岔;并且排隊(duì)該郵件以等待在最小生成樹內(nèi)從當(dāng)前節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的路徑中出現(xiàn)的、且離當(dāng)前節(jié)點(diǎn)最遠(yuǎn)的節(jié)點(diǎn)(即,具有針對目的地節(jié)點(diǎn)的最小成本的節(jié)點(diǎn))。
一旦該郵件已被排隊(duì),就進(jìn)行在上述單個目的地的情況中所描述的傳輸。如果針對有關(guān)一個以上目標(biāo)的各可選分叉節(jié)點(diǎn)中的任何一個都無法做出連接,就在當(dāng)前節(jié)點(diǎn)處執(zhí)行消息分岔并且排隊(duì)該郵件以等待做出該分岔結(jié)果出現(xiàn)的新目標(biāo)。以此方式,如果一節(jié)點(diǎn)不可用,就在當(dāng)前節(jié)點(diǎn)處分岔該消息以向該郵件提供更大的投遞機(jī)會。這的確會降低節(jié)點(diǎn)不可用時的效率,但能允許對該郵件的部分或全部的成功傳輸。
此處所示且描述的方法的執(zhí)行或?qū)崿F(xiàn)順序不是必要的,除非另外指定。艮卩,方法的要素可以用任何順序來執(zhí)行,除非另外指定,且方法可包括比此處所揭示的更多或更少的要素。例如,可以構(gòu)想,在另一要素之前、與其同時或之后執(zhí)行或?qū)崿F(xiàn)特定要素是在本發(fā)明的范圍之內(nèi)。
當(dāng)介紹本發(fā)明或其實(shí)施例的要素時,冠詞"一"、"一個"、"該"和"所述"意指存在一個或多個要素。術(shù)語"包括"、"包含"和"具有"旨在包含性的,且意味著除所列出的要素之外還可以有其它要素。
鑒于上述內(nèi)容,可以看到,實(shí)現(xiàn)了本發(fā)明的若干目的并獲得了其它有利的結(jié)果。
由于可以在不脫離本發(fā)明的實(shí)施例的范圍的情況下在上述構(gòu)造和方法中做出各種改變,因此包含在以上描述且在附圖中示出的所有內(nèi)容都旨在說明性的解釋,而非在限制的意義上的解釋。
權(quán)利要求
1. 一種經(jīng)由計算機(jī)網(wǎng)絡(luò)傳輸消息的計算機(jī)實(shí)現(xiàn)的方法,所述網(wǎng)絡(luò)具有當(dāng)前節(jié)點(diǎn)、目標(biāo)節(jié)點(diǎn)、以及在所述當(dāng)前節(jié)點(diǎn)和所述目標(biāo)節(jié)點(diǎn)之間與所述網(wǎng)絡(luò)相連接的一個或多個中間節(jié)點(diǎn),所述方法包括創(chuàng)建位于網(wǎng)絡(luò)上的對所述目標(biāo)節(jié)點(diǎn)的傳輸成本小于所述當(dāng)前節(jié)點(diǎn)對所述目標(biāo)節(jié)點(diǎn)的傳輸成本的中間節(jié)點(diǎn)的目的地可選表,其中所述中間節(jié)點(diǎn)根據(jù)它們的最小傳輸成本被排列優(yōu)先級;嘗試向所述目標(biāo)節(jié)點(diǎn)傳輸所述消息;以及如果對所述目標(biāo)節(jié)點(diǎn)的所述消息的傳輸失敗,就按照在所述目的地可選表中標(biāo)識的中間節(jié)點(diǎn)的優(yōu)先級而嘗試向至少一個中間節(jié)點(diǎn)傳輸所述消息。
2. 如權(quán)利要求l所述的方法,其特征在于,如果對所述目標(biāo)節(jié)點(diǎn)的所述消息的傳輸失敗,就嘗試對具有最高優(yōu)先級的中 間節(jié)點(diǎn)傳輸所述消息;以及如果所述對具有最高優(yōu)先級的中間節(jié)點(diǎn)傳輸所述消息的嘗試失敗,就嘗試向 優(yōu)先級依次降低的各中間節(jié)點(diǎn)傳輸所述消息。
3. 如權(quán)利要求l所述的方法,其特征在于,所述消息經(jīng)由計算機(jī)網(wǎng)絡(luò)從所述 當(dāng)前節(jié)點(diǎn)傳輸至至少兩個目標(biāo)節(jié)點(diǎn),所述方法還包括為所述網(wǎng)絡(luò)創(chuàng)建以所述當(dāng)前節(jié)點(diǎn)為根的最小生成樹;從位于不同節(jié)點(diǎn)上的至少兩個收件人的最小生成樹中確定最后分岔節(jié)點(diǎn); 根據(jù)最后分岔節(jié)點(diǎn)分組收件人;以及 將所述消息傳輸至最后分岔節(jié)點(diǎn)。
4. 如權(quán)利要求3所述的方法,其特征在于,還包括 確定所述最后分岔節(jié)點(diǎn)是否能夠?qū)⑺鱿鬏斨了瞿繕?biāo)節(jié)點(diǎn);以及 當(dāng)確定所述最后分岔節(jié)點(diǎn)無法將所述消息傳輸至所述目標(biāo)節(jié)點(diǎn)時,就從所述當(dāng)前節(jié)點(diǎn)分叉所述消息用以向所述目標(biāo)節(jié)點(diǎn)傳輸。
5. 如權(quán)利要求l所述的方法,其特征在于,還包括跟蹤有關(guān)所述消息在節(jié)點(diǎn) 之間的傳輸次數(shù);其中所述傳輸次數(shù)超過最小閾值時,將額外的傳輸延遲一穩(wěn)定周期;以及 其中所述傳輸次數(shù)超過最大閾值時,將消息作為不可投遞而返回。
6. 如權(quán)利要求l所述的方法,其特征在于,對所述目標(biāo)節(jié)點(diǎn)的所述消息傳輸失敗,還包括確定網(wǎng)絡(luò)節(jié)點(diǎn)的可用傳輸時間表;以及根據(jù)在所述目的地可選表中標(biāo)識的中間節(jié)點(diǎn)的優(yōu)先級及其可用時間表,嘗試向所述中間節(jié)點(diǎn)傳輸所述消息d
7. 如權(quán)利要求l所述的方法,其特征在于,具有用于執(zhí)行如權(quán)利要求1所述的計算機(jī)可執(zhí)行方法的計算機(jī)可執(zhí)行指令的一種或多種計算機(jī)可讀介質(zhì)。
8. —種用于在消息通信網(wǎng)絡(luò)上傳輸消息的消息通信系統(tǒng),所述消息通信系統(tǒng)具有當(dāng)前服務(wù)器、目標(biāo)服務(wù)器、以及在所述當(dāng)前服務(wù)器和所述目標(biāo)服務(wù)器之間連接到所述網(wǎng)絡(luò)的一個或多個中間服務(wù)器,所述消息通信系統(tǒng)包括位于所述網(wǎng)絡(luò)上的具有對所述目標(biāo)服務(wù)器的傳輸成本的所述中間服務(wù)器的目的地可選表,其中所述中間服務(wù)器根據(jù)它們的最小傳輸成本被排列優(yōu)先級;被配置用于執(zhí)行計算機(jī)可執(zhí)行指令的當(dāng)前服務(wù)器,所述指令用于嘗試向所述目標(biāo)服務(wù)器傳輸消息;以及如果對所述目標(biāo)服務(wù)器的所述消息的傳輸失敗,就按照在所述目的地可選表中標(biāo)識的中間服務(wù)器的優(yōu)先級而嘗試向至少一個中間服務(wù)器傳輸所述消息。
9. 如權(quán)利要求8所述的系統(tǒng),其特征在于,所述當(dāng)前服務(wù)器進(jìn)一步地被配置用于執(zhí)行計算機(jī)可執(zhí)行指令,所述指令用于如果對所述目標(biāo)節(jié)點(diǎn)的所述消息的傳輸失敗,就嘗試對具有最高優(yōu)先級的中間節(jié)點(diǎn)傳輸所述消息;以及如果所述對具有最高優(yōu)先級的中間節(jié)點(diǎn)的所述消息的傳輸?shù)膰L試失敗,就嘗試向優(yōu)先級依次降低的各中間節(jié)點(diǎn)傳輸所述消息。
10. 如權(quán)利要求8所述的系統(tǒng),其特征在于,所述消息經(jīng)由計算機(jī)網(wǎng)絡(luò)從所述當(dāng)前節(jié)點(diǎn)傳輸至至少兩個目標(biāo)節(jié)點(diǎn),所述當(dāng)前服務(wù)器進(jìn)一步地被配置用于執(zhí)行計算機(jī)可執(zhí)行指令,所述指令用于為所述服務(wù)器的網(wǎng)絡(luò)創(chuàng)建以所述當(dāng)前服務(wù)器為根的最小生成樹;從位于不同服務(wù)器上的至少兩個收件人的最小生成樹中確定最后分岔服務(wù)器;根據(jù)最后分岔服務(wù)器分組收件人;以及將所述消息傳輸至最后分岔節(jié)點(diǎn)。
11. 如權(quán)利要求IO所述的系統(tǒng),其特征在于,還包括確定所述最后分岔節(jié)點(diǎn)是否能夠?qū)⑺鱿鬏斨了瞿繕?biāo)節(jié)點(diǎn);以及當(dāng)確定所述最后分岔節(jié)點(diǎn)無法將所述消息傳輸至所述目標(biāo)節(jié)點(diǎn)時,就從所述當(dāng)前節(jié)點(diǎn)中分叉所述消息用以向所述目標(biāo)節(jié)點(diǎn)傳輸。
12. 如權(quán)利要求8所述的系統(tǒng),其特征在于,還包括跟蹤有關(guān)所述消息在節(jié)點(diǎn)之間的傳輸次數(shù);其中所述傳輸次數(shù)超過最小閾值時,將額外的傳輸延遲一穩(wěn)定周期;以及其中所述傳輸次數(shù)超過最大閾值時,將消息作為不可投遞而返回。
13.如權(quán)利要求8所述的系統(tǒng),其特征在于,對所述目標(biāo)節(jié)點(diǎn)的所述消息傳輸失敗,還包括確定網(wǎng)絡(luò)節(jié)點(diǎn)的可用傳輸時間表;以及根據(jù)在所述目的地可選表中標(biāo)識的中間節(jié)點(diǎn)的優(yōu)先級及其可用時間表,嘗試向所述中間節(jié)點(diǎn)傳輸所述消息。
14. 具有用于經(jīng)由計算機(jī)網(wǎng)絡(luò)傳輸消息的計算機(jī)可執(zhí)行指令的一種或多種計算機(jī)可讀介質(zhì),所述網(wǎng)絡(luò)具有當(dāng)前節(jié)點(diǎn)、目標(biāo)節(jié)點(diǎn)、以及與在所述當(dāng)前節(jié)點(diǎn)和所述目標(biāo)節(jié)點(diǎn)之間的所述網(wǎng)絡(luò)相連接的一個或多個中間節(jié)點(diǎn),所述計算機(jī)可讀介質(zhì)包括用于確定從所述中間節(jié)點(diǎn)到所述目標(biāo)節(jié)點(diǎn)的所述傳輸成本并且根據(jù)所述中間節(jié)點(diǎn)的最小傳輸成本排列它們的優(yōu)先級的指令;以及用于嘗試向所述目標(biāo)節(jié)點(diǎn)傳輸所述消息的指令,并且如果對所述目標(biāo)節(jié)點(diǎn)的所述消息傳輸失敗,該指令就按照所述目的地可選表中標(biāo)識的所述中間節(jié)點(diǎn)的優(yōu)先級而嘗試向至少一個中間節(jié)點(diǎn)傳輸所述消息。
15. 如權(quán)利要求14所述的計算機(jī)可讀介質(zhì),其特征在于,還包括用于在對所述目標(biāo)節(jié)點(diǎn)的所述消息傳輸失敗的情況下嘗試向具有最高優(yōu)先級的所述中間節(jié)點(diǎn)傳輸所述消息的指令;以及用于在針對所述最高優(yōu)先級的中間節(jié)點(diǎn)的所述消息傳輸失敗的情況下嘗試向優(yōu)先級依次降低的各中間節(jié)點(diǎn)傳輸所述消息的指令。
16. 如權(quán)利要求14所述的計算機(jī)可讀介質(zhì),其特征在于,還包括用于為所述網(wǎng)絡(luò)創(chuàng)建以所述當(dāng)前節(jié)點(diǎn)為根的最小生成樹的指令;用于從位于不同節(jié)點(diǎn)上的至少兩個收件人的所述最小生成樹中確定最后分岔節(jié)點(diǎn)的指令;用于根據(jù)最后分岔節(jié)點(diǎn)分組收件人的指令;以及用于將所述消息傳輸至所述最后分岔節(jié)點(diǎn)的指令。
17. 如權(quán)利要求14所述的計算機(jī)可讀介質(zhì),其特征在于,還包括用于確定所述最后分岔節(jié)點(diǎn)是否能夠?qū)⑺鱿鬏斨了瞿繕?biāo)節(jié)點(diǎn),以及在確定所述最后分岔節(jié)點(diǎn)無法將所述消息傳輸至所述目標(biāo)節(jié)點(diǎn)的情況下從所述當(dāng)前節(jié)點(diǎn)分叉所述消息用以向所述目標(biāo)節(jié)點(diǎn)傳輸?shù)闹噶睢?br>
18. 如權(quán)利要求M所述的計算機(jī)可讀介質(zhì),其特征在于,還包括用于跟蹤有關(guān)所述消息在各節(jié)點(diǎn)之間的所述傳輸次數(shù)的指令;用于在其中所述傳輸次數(shù)超過最小閾值的情況下延遲額外的傳輸一穩(wěn)定周期的指令;以及用于在其中所述傳輸次數(shù)超過最大閾值的情況下將消息作為不可投遞返回的指令。
19. 如權(quán)利要求14所述的計算機(jī)可讀介質(zhì),其特征在于,對所述目標(biāo)節(jié)點(diǎn)的所述消息傳輸失敗,還包括用于確定各網(wǎng)絡(luò)節(jié)點(diǎn)的所述可用傳輸時間表的指令;以及用于根據(jù)在所述目的地可選表中標(biāo)識的中間節(jié)點(diǎn)的優(yōu)先級及其可用時間表而嘗試向所述中間節(jié)點(diǎn)傳輸所述消息的指令。
20. 如權(quán)利要求14所述的計算機(jī)可讀介質(zhì),其特征在于,還包括用于維護(hù)近來失敗連接的所有結(jié)點(diǎn)的高速緩存的指令,其中所述高速緩存用于避免嘗試向近來失敗的節(jié)點(diǎn)傳輸所述消息。
全文摘要
描述了系統(tǒng)和方法,該系統(tǒng)和方法提供增強(qiáng)的穩(wěn)定性、增加的可預(yù)測性、降低的傳輸成本并且節(jié)省經(jīng)計算機(jī)網(wǎng)絡(luò)路由消息的帶寬。本系統(tǒng)和方法還包括提供了改善的消息傳輸,其中該消息被傳輸至與目標(biāo)投遞節(jié)點(diǎn)最接近的節(jié)點(diǎn)。如果有可能投遞至目標(biāo)節(jié)點(diǎn),該消息傳輸在網(wǎng)絡(luò)中的故障點(diǎn)處停止,其中對該目標(biāo)節(jié)點(diǎn)的投遞在稍后完成或者將該消息返回給發(fā)件人。
文檔編號H04L1/00GK101507161SQ200680014730
公開日2009年8月12日 申請日期2006年4月21日 優(yōu)先權(quán)日2005年5月27日
發(fā)明者D·艾齊利歐普塔斯, E·D·特里比爾, L·沃曼, M·E·皮爾森 申請人:微軟公司