專(zhuān)利名稱(chēng):一種結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)中消息的廣播系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通訊領(lǐng)域,尤其是涉及一種結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)中消息的廣播系統(tǒng)及方 法。
背景技術(shù):
對(duì)等互聯(lián)(Peer-to-Peer,P2P,或稱(chēng)點(diǎn)對(duì)點(diǎn))技術(shù)可以讓用戶(hù)可以直接連接到其 他用戶(hù)的計(jì)算機(jī),進(jìn)行文件共享與交換。同時(shí)P2P技術(shù)在深度搜索、分布計(jì)算以及協(xié)同工作 等方面也應(yīng)用廣泛。分布式P2P網(wǎng)絡(luò)通?;诜植际焦1?Distributed Hash Table, DHT)構(gòu)建路 由表,進(jìn)行尋址和存儲(chǔ)?;贒HT的P2P網(wǎng)絡(luò)的一個(gè)重要特點(diǎn)是網(wǎng)絡(luò)不存在嚴(yán)格的中心服 務(wù)器,但疊加網(wǎng)具有嚴(yán)格的拓?fù)浣Y(jié)構(gòu),通常一個(gè)節(jié)點(diǎn)保存只能看到疊加網(wǎng)的部分拓?fù)?,并?fù) 責(zé)存儲(chǔ)一小部分?jǐn)?shù)據(jù)。圖1是現(xiàn)有技術(shù)中一種DHT網(wǎng)絡(luò)的結(jié)構(gòu)示意圖。如圖1所示,對(duì)疊加網(wǎng)中的任一 個(gè)節(jié)點(diǎn),將整個(gè)疊加網(wǎng)分成若干分段,并根據(jù)一定規(guī)則從每個(gè)分段中選擇一個(gè)或多個(gè)節(jié)點(diǎn) 加入到自己的路由表中,路由表中的節(jié)點(diǎn)也稱(chēng)為路由表節(jié)點(diǎn),其對(duì)應(yīng)的分段稱(chēng)為路由表節(jié) 點(diǎn)的負(fù)責(zé)路由區(qū)間,如節(jié)點(diǎn)A為節(jié)點(diǎn)N的路由表節(jié)點(diǎn),其對(duì)應(yīng)的負(fù)責(zé)路由區(qū)間為分段3。節(jié) 點(diǎn)路由表一般的創(chuàng)建規(guī)則是距離本節(jié)點(diǎn)越近的分段選擇的節(jié)點(diǎn)越密集,越遠(yuǎn)的分段選擇的 節(jié)點(diǎn)越稀疏,這樣可以保證在有限的跳數(shù)內(nèi)尋址到所有節(jié)點(diǎn);在消息路由過(guò)程中,一個(gè)路由 表節(jié)點(diǎn)負(fù)責(zé)到該分段內(nèi)節(jié)點(diǎn)的消息的路由,通過(guò)多節(jié)點(diǎn)協(xié)作完成整網(wǎng)間的路由。節(jié)點(diǎn)的負(fù) 責(zé)路由區(qū)間,不同的協(xié)議其實(shí)現(xiàn)有所不同,比如Chord算法在距離本節(jié)點(diǎn)至少為2~(i-l)的 第一個(gè)節(jié)點(diǎn);Kademlia算法在距離本節(jié)點(diǎn)[2~ (i_l),2~i)的分區(qū)內(nèi)選擇至多k個(gè)節(jié)點(diǎn),并 且距離采用異或運(yùn)算;I^astry算法在具有不同的前綴匹配位數(shù)的節(jié)點(diǎn)空間里任意選擇一 個(gè)節(jié)點(diǎn)加入到路由表。消息廣播是網(wǎng)絡(luò)的一種基本功能,如實(shí)現(xiàn)短消息通知等。在DHT網(wǎng)絡(luò)中消息廣播 還有一些特殊的應(yīng)用需求,如網(wǎng)絡(luò)拓?fù)涫占?、?nèi)容搜索等。在DHT網(wǎng)絡(luò)中,由于沒(méi)有節(jié)點(diǎn)知 曉完整的網(wǎng)絡(luò)拓?fù)?,?duì)消息廣播提出了挑戰(zhàn)。常見(jiàn)的P2P消息廣播算法,如基于(Gnutella 協(xié)議的網(wǎng)絡(luò)爬蟲(chóng)用于搜集P2P節(jié)點(diǎn)、搜索或統(tǒng)計(jì)疊加網(wǎng)的共享文件信息等,其基本原理是 泛洪的廣播機(jī)制,很多現(xiàn)有算法也是對(duì)泛洪方式的改進(jìn),如限制泛洪搜索的寬度等。發(fā)明人在實(shí)現(xiàn)本發(fā)明時(shí),發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在這一缺陷前述的消息廣播方法 用于擁有幾十萬(wàn)、上百萬(wàn)甚至更多節(jié)點(diǎn)的大規(guī)模DHT網(wǎng)絡(luò)中時(shí),很容易產(chǎn)生冗余消息,造成 網(wǎng)絡(luò)負(fù)擔(dān)過(guò)重,引發(fā)網(wǎng)絡(luò)風(fēng)暴。另外,還有一種單跳DHT網(wǎng)絡(luò)的消息廣播算法是基于每個(gè)節(jié) 點(diǎn)知曉全局網(wǎng)絡(luò)拓?fù)洌瑢?duì)于典型的多跳DHT網(wǎng)絡(luò)并不適用。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題,在于需要提供一種結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)中消息的廣播系 統(tǒng)及方法,以完成結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)中的消息廣播。4
為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)中消息的廣播方法, 其中所述消息由發(fā)起節(jié)點(diǎn)開(kāi)始逐級(jí)廣播,每一級(jí)至少包含廣播節(jié)點(diǎn);在每一級(jí)中,廣播 節(jié)點(diǎn)確定本級(jí)廣播范圍并指示下一級(jí)廣播范圍,且根據(jù)本級(jí)廣播范圍將所述消息廣播給本 級(jí)的接收節(jié)點(diǎn),本級(jí)的接收節(jié)點(diǎn)收到所述消息后作為下一級(jí)的廣播節(jié)點(diǎn),繼續(xù)廣播所述消 息;某一級(jí)中沒(méi)有接收節(jié)點(diǎn)可被廣播節(jié)點(diǎn)用于確定本級(jí)廣播范圍時(shí),該某一級(jí)的廣播節(jié)點(diǎn) 終止廣播;其中,第一級(jí)中的廣播節(jié)點(diǎn)為所述發(fā)起節(jié)點(diǎn)。優(yōu)選地,所述每一級(jí)的廣播節(jié)點(diǎn),根據(jù)分布式哈希表算法為本地路由表中的每個(gè) 路由表節(jié)點(diǎn)計(jì)算負(fù)責(zé)路由區(qū)間,據(jù)此確定所述本級(jí)廣播范圍;并將本地路由表中的路由表 節(jié)點(diǎn)的負(fù)責(zé)路由區(qū)間,指示為所述下一級(jí)廣播范圍。優(yōu)選地,所述分布式哈希表算法包括Chord算法、Kademlia算法或I^stry算法。優(yōu)選地,所述每一級(jí)的廣播節(jié)點(diǎn)根據(jù)所述分布式哈希表算法為本地路由表節(jié)點(diǎn)計(jì) 算負(fù)責(zé)路由區(qū)間,當(dāng)存在一個(gè)以上的路由表節(jié)點(diǎn)有共同的負(fù)責(zé)路由區(qū)間時(shí),任意選擇其中 一個(gè)路由表節(jié)點(diǎn)負(fù)責(zé)本級(jí)廣播,或者將所述負(fù)責(zé)路由區(qū)間細(xì)分給若干個(gè)路由表節(jié)點(diǎn),以負(fù) 責(zé)本級(jí)廣播。優(yōu)選地,所述每一級(jí)的廣播節(jié)點(diǎn)將所述負(fù)責(zé)路由區(qū)間細(xì)分給若干個(gè)路由表節(jié)點(diǎn)的 方法,包括折半分配法。優(yōu)選地,所述每一級(jí)的廣播節(jié)點(diǎn),將所指示的下一級(jí)廣播范圍攜帶于所述消息中 進(jìn)行廣播,或者通過(guò)其他消息進(jìn)行廣播。為了解決上述技術(shù)問(wèn)題,本發(fā)明還提供了一種結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)中消息的廣播系 統(tǒng),所述消息由發(fā)起節(jié)點(diǎn)在該系統(tǒng)內(nèi)開(kāi)始逐級(jí)廣播,每一級(jí)至少包含廣播節(jié)點(diǎn),在每一級(jí) 中廣播節(jié)點(diǎn)用于確定本級(jí)廣播范圍并指示下一級(jí)廣播范圍,且根據(jù)本級(jí)廣播范圍將 所述消息廣播給本級(jí)的接收節(jié)點(diǎn);本級(jí)的接收節(jié)點(diǎn),用于收到所述消息后作為下一級(jí)的廣播節(jié)點(diǎn),繼續(xù)廣播所述消 息;其中,某一級(jí)中沒(méi)有接收節(jié)點(diǎn)可被廣播節(jié)點(diǎn)用于確定本級(jí)廣播范圍時(shí),該某一級(jí) 的廣播節(jié)點(diǎn)終止廣播;其中,第一級(jí)中的廣播節(jié)點(diǎn)為所述發(fā)起節(jié)點(diǎn)。優(yōu)選地,所述每一級(jí)的廣播節(jié)點(diǎn),用于根據(jù)分布式哈希表算法為本地路由表中的 每個(gè)路由表節(jié)點(diǎn)計(jì)算負(fù)責(zé)路由區(qū)間,據(jù)此確定所述本級(jí)廣播范圍;并用于將本地路由表中 的路由表節(jié)點(diǎn)的負(fù)責(zé)路由區(qū)間,指示為所述下一級(jí)廣播范圍。優(yōu)選地,所述每一級(jí)的廣播節(jié)點(diǎn)為本地路由表中的每個(gè)路由表節(jié)點(diǎn)計(jì)算負(fù)責(zé)路由 區(qū)間的所述分布式哈希表算法,包括Chord算法、Kademlia算法或I^astry算法。優(yōu)選地,所述每一級(jí)的廣播節(jié)點(diǎn)根據(jù)所述分布式哈希表算法為本地路由表節(jié)點(diǎn)計(jì) 算負(fù)責(zé)路由區(qū)間,當(dāng)存在一個(gè)以上的路由表節(jié)點(diǎn)有共同的負(fù)責(zé)路由區(qū)間時(shí),用于任意選擇 其中一個(gè)路由表節(jié)點(diǎn)負(fù)責(zé)本級(jí)廣播,或者將所述負(fù)責(zé)路由區(qū)間細(xì)分給若干個(gè)路由表節(jié)點(diǎn), 以負(fù)責(zé)本級(jí)廣播。
優(yōu)選地,所述每一級(jí)的廣播節(jié)點(diǎn)將所述負(fù)責(zé)路由區(qū)間細(xì)分給若干個(gè)路由表節(jié)點(diǎn)的 方法,包括折半分配法。優(yōu)選地,所述每一級(jí)的廣播節(jié)點(diǎn),用于將所指示的下一級(jí)廣播范圍攜帶于所述消 息中進(jìn)行廣播,或者通過(guò)其他消息進(jìn)行廣播。本發(fā)明系統(tǒng)及方法主要針對(duì)現(xiàn)有消息廣播技術(shù)應(yīng)用于DHT網(wǎng)絡(luò)的不足,尤其適用 于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和路由協(xié)議的消息的廣播。與現(xiàn)有技術(shù)相比,本發(fā)明提供的DHT網(wǎng)絡(luò)中的 消息廣播機(jī)制,能快速地將消息廣播到網(wǎng)絡(luò)中的所有節(jié)點(diǎn),且與具體網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和路由 協(xié)議無(wú)關(guān),適應(yīng)于多種DHT網(wǎng)絡(luò)。本發(fā)明方法的消息廣播基于DHT網(wǎng)絡(luò)特性,采用多節(jié)點(diǎn)并 行多級(jí)廣播、各級(jí)消息廣播范圍無(wú)重疊,從而阻止了網(wǎng)絡(luò)冗余消息的產(chǎn)生。本發(fā)明方法可以 用于DHT網(wǎng)絡(luò)的消息廣播、網(wǎng)絡(luò)管理(如節(jié)點(diǎn)收集、拓?fù)涫占?以及需要廣播消息的內(nèi)容 搜索。同時(shí)由于充分利用的DHT網(wǎng)絡(luò)的路由特性,保證消息可以快速通知到所有節(jié)點(diǎn),消息 廣播過(guò)程不會(huì)產(chǎn)生冗余消息,避免網(wǎng)絡(luò)風(fēng)暴的發(fā)生。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書(shū)中闡述,并且,部分地從說(shuō)明書(shū)中變 得顯而易見(jiàn),或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在說(shuō)明書(shū)、權(quán)利 要求書(shū)以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說(shuō)明書(shū)的一部分,與本發(fā)明的實(shí) 施例一起用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中圖1是現(xiàn)有技術(shù)中一種DHT網(wǎng)絡(luò)的結(jié)構(gòu)示意圖;圖2是本發(fā)明方法實(shí)施例的流程示意圖;圖3是本發(fā)明方法中DHT網(wǎng)絡(luò)消息廣播節(jié)點(diǎn)交互實(shí)施例流程示意圖;圖4是本發(fā)明方法中一個(gè)對(duì)等節(jié)點(diǎn)的廣播消息處理實(shí)施例流程示意圖;圖5是本發(fā)明方法在Chord網(wǎng)絡(luò)實(shí)現(xiàn)消息廣播實(shí)施例的流程示意圖;圖6是本發(fā)明方法在Kademlia網(wǎng)絡(luò)實(shí)現(xiàn)消息廣播實(shí)施例的流程示意圖;圖7是本發(fā)明方法在I^stry網(wǎng)絡(luò)實(shí)現(xiàn)消息廣播實(shí)施例的流程示意圖。
具體實(shí)施例方式以下將結(jié)合附圖及實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明的實(shí)施方式,借此對(duì)本發(fā)明如何應(yīng)用 技術(shù)手段來(lái)解決技術(shù)問(wèn)題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過(guò)程能充分理解并據(jù)以實(shí)施。需要說(shuō)明的是,如果不沖突,本發(fā)明實(shí)施例以及實(shí)施例中的各個(gè)特征可以相互結(jié) 合,均在本發(fā)明的保護(hù)范圍之內(nèi)。另外,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī) 可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況 下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。本發(fā)明提供了一種適用于所有DHT網(wǎng)絡(luò)的消息廣播機(jī)制,其核心思想是消息由發(fā) 起節(jié)點(diǎn)開(kāi)始逐級(jí)廣播,每一級(jí)中至少包含有廣播節(jié)點(diǎn);而在每一級(jí)中,由廣播節(jié)點(diǎn)確定本級(jí) 廣播范圍,并向接收節(jié)點(diǎn)指示下一級(jí)廣播范圍,且廣播節(jié)點(diǎn)根據(jù)該本級(jí)廣播范圍將消息廣 播給本級(jí)的接收節(jié)點(diǎn),該本級(jí)的接收節(jié)點(diǎn)收到該消息后,即作為下一級(jí)的廣播節(jié)點(diǎn)繼續(xù)廣 播該消息;
某一級(jí)中沒(méi)有接收節(jié)點(diǎn)可被廣播節(jié)點(diǎn)用于確定本級(jí)廣播范圍時(shí),該某一級(jí)的廣播 節(jié)點(diǎn)就終止廣播;其中,第一級(jí)中的廣播節(jié)點(diǎn)為所述發(fā)起節(jié)點(diǎn)。如此,即可阻止消息在全網(wǎng) 的重復(fù)傳播,避免產(chǎn)生冗余消息。圖2是本發(fā)明方法實(shí)施例的流程示意圖。如圖2所示,本發(fā)明方法主要包括如下 步驟步驟S210,對(duì)等網(wǎng)絡(luò)中廣播消息時(shí),消息的發(fā)起節(jié)點(diǎn)根據(jù)具體的DHT算法為本地 路由表中的每個(gè)路由表節(jié)點(diǎn)計(jì)算負(fù)責(zé)路由區(qū)間,也即確定第一級(jí)的廣播范圍;步驟S220,向本地路由表中的路由表節(jié)點(diǎn)廣播該消息時(shí),發(fā)起節(jié)點(diǎn)一并廣播每個(gè) 路由表節(jié)點(diǎn)的負(fù)責(zé)路由區(qū)間,作為接收節(jié)點(diǎn)進(jìn)一步廣播該消息的廣播范圍,也即指示第二 級(jí)的廣播范圍;步驟S230,接收節(jié)點(diǎn)(第一級(jí)的接收節(jié)點(diǎn))收到廣播的該消息時(shí),提取該消息的廣 播范圍(發(fā)起節(jié)點(diǎn)指示的第二級(jí)的廣播范圍),根據(jù)具體采用的DHT算法在該廣播范圍內(nèi)為 每個(gè)路由表節(jié)點(diǎn)計(jì)算各節(jié)點(diǎn)的負(fù)責(zé)路由區(qū)間(也即確定第二級(jí)的廣播范圍),并向本地路 由表中在指定廣播范圍內(nèi)的每個(gè)路由表節(jié)點(diǎn)進(jìn)一步廣播該消息;當(dāng)本地路由表中位于該范 圍內(nèi)的路由表節(jié)點(diǎn)不存在時(shí),終止該消息的廣播。上述步驟S210及步驟S230中,根據(jù)DHT算法指定廣播范圍內(nèi)的路由表節(jié)點(diǎn)的負(fù) 責(zé)路由區(qū)間時(shí),可能獲得一個(gè)或一個(gè)以上的路由表節(jié)點(diǎn)有相同的負(fù)責(zé)路由區(qū)間;當(dāng)存在一 個(gè)以上的路由表節(jié)點(diǎn)有相同的負(fù)責(zé)路由區(qū)間時(shí),可以任意選擇其中一個(gè)路由表節(jié)點(diǎn)負(fù)責(zé)該 范圍內(nèi)的進(jìn)一步廣播,其它路由表節(jié)點(diǎn)不再由所選擇的該節(jié)點(diǎn)發(fā)起消息的廣播;也可以由 所選擇的該節(jié)點(diǎn)將該負(fù)責(zé)路由區(qū)間按照一定的規(guī)則進(jìn)一步細(xì)分給這幾個(gè)路由表節(jié)點(diǎn),如采 用折半分配方法等;上述步驟S220及步驟S230中,將該每個(gè)路由表節(jié)點(diǎn)的負(fù)責(zé)路由區(qū)間攜帶于該消 息中進(jìn)行廣播;在其他實(shí)施例中,也可以由發(fā)起節(jié)點(diǎn)通過(guò)其他消息廣播給接收節(jié)點(diǎn);上述步驟S220及步驟S230中,存在多個(gè)路由表節(jié)點(diǎn)有相同的負(fù)責(zé)路由區(qū)間時(shí),可 以選擇其中一個(gè)路由表節(jié)點(diǎn)向其廣播該消息,并將該負(fù)責(zé)路由區(qū)間作為該路由表節(jié)點(diǎn)的進(jìn) 一步廣播的廣播范圍,其它路由表節(jié)點(diǎn)不再進(jìn)行由發(fā)起節(jié)點(diǎn)進(jìn)行廣播;在其他實(shí)施例中,也 可以將該負(fù)責(zé)路由區(qū)間進(jìn)一步細(xì)分給各個(gè)路由表節(jié)點(diǎn)作為該路由表節(jié)點(diǎn)的進(jìn)一步廣播的 廣播范圍。圖3是本發(fā)明方法中DHT網(wǎng)絡(luò)消息廣播節(jié)點(diǎn)交互實(shí)施例的流程示意圖。發(fā)起節(jié)點(diǎn) N要在整個(gè)DHT網(wǎng)絡(luò)上廣播一個(gè)消息,首先根據(jù)網(wǎng)絡(luò)采用的具體DHT算法為本地路由表中 的每個(gè)節(jié)點(diǎn)計(jì)算其負(fù)責(zé)路由區(qū)間,并向路由表節(jié)點(diǎn)廣播該消息,同時(shí)廣播消息攜帶該路由 表節(jié)點(diǎn)的負(fù)責(zé)路由區(qū)間作為該路由表節(jié)點(diǎn)需要負(fù)責(zé)進(jìn)一步廣播的廣播范圍。對(duì)于發(fā)起節(jié)點(diǎn) N的所有路由表節(jié)點(diǎn),迭代地進(jìn)行下述過(guò)程,這里舉例其中的一個(gè)節(jié)點(diǎn)B說(shuō)明,路由表節(jié)點(diǎn)B 收到該消息時(shí),若節(jié)點(diǎn)B的路由表中有路由表節(jié)點(diǎn)位于節(jié)點(diǎn)B負(fù)責(zé)的廣播范圍內(nèi),則對(duì)該路 由表節(jié)點(diǎn)進(jìn)一步廣播消息,否則節(jié)點(diǎn)B終止消息的廣播。要說(shuō)明的是,圖3是一個(gè)消息廣播 中節(jié)點(diǎn)間交互的流程示意圖,具體如何確定路由表節(jié)點(diǎn)的負(fù)責(zé)路由區(qū)間,在后續(xù)的圖5,圖 6以及圖7中舉例說(shuō)明了在Chord、Kademlia、Pastry三種DHT算法中的實(shí)現(xiàn),但是本發(fā)明 技術(shù)方案并不限于這三種算法。如圖3所示,DHT網(wǎng)絡(luò)消息廣播節(jié)點(diǎn)交互實(shí)施例的具體步 驟,主要包括7
步驟S310,發(fā)起節(jié)點(diǎn)N要在整個(gè)DHT網(wǎng)絡(luò)上廣播一個(gè)消息M,首先根據(jù)網(wǎng)絡(luò)采用 的具體DHT算法為本地路由表中的每個(gè)節(jié)點(diǎn)計(jì)算其負(fù)責(zé)路由區(qū)間,并向其路由表中的路 由表節(jié)點(diǎn)廣播該消息,廣播的該消息中攜帶每一個(gè)路由表節(jié)點(diǎn)的負(fù)責(zé)路由區(qū)間作為其進(jìn)一 步廣播的廣播范圍,比如其中的一個(gè)路由表節(jié)點(diǎn)B,其進(jìn)一步廣播的廣播范圍為[IDmin, IDmax);其中,發(fā)起節(jié)點(diǎn)N計(jì)算其路由表中的節(jié)點(diǎn)負(fù)責(zé)路由區(qū)間的方法,是根據(jù)網(wǎng)絡(luò)采用 的具體DHT算法決定的;其中,發(fā)起節(jié)點(diǎn)N的所有路由表節(jié)點(diǎn)負(fù)責(zé)的進(jìn)一步廣播范圍[IDmin,IDmax)的并 集,要覆蓋對(duì)等網(wǎng)絡(luò)節(jié)點(diǎn)空間內(nèi)的所有節(jié)點(diǎn);其中,發(fā)起節(jié)點(diǎn)N計(jì)算的路由表節(jié)點(diǎn)的負(fù)責(zé)路由區(qū)間,在不同的DHT算法中,可能 獲得一個(gè)或一個(gè)以上的路由表節(jié)點(diǎn)有相同的負(fù)責(zé)路由區(qū)間;步驟S320,發(fā)起節(jié)點(diǎn)N的一個(gè)路由表節(jié)點(diǎn)B收到該消息,提取該消息的進(jìn)一步廣 播范圍為[IDmin,IDmax),節(jié)點(diǎn)B搜集其本地路由表中所有節(jié)點(diǎn)ID位于進(jìn)一步廣播范圍 [IDmin, IDmax)內(nèi)的路由表節(jié)點(diǎn),同時(shí)在該進(jìn)一步廣播范圍內(nèi)計(jì)算每個(gè)路由表節(jié)點(diǎn)的負(fù)責(zé) 路由區(qū)間;如其中的一個(gè)路由表節(jié)點(diǎn)C的負(fù)責(zé)路由區(qū)間為[IDmin' , IDmax');步驟S330,節(jié)點(diǎn)B向步驟S320搜集的路由表節(jié)點(diǎn)轉(zhuǎn)發(fā)廣播消息,廣播的該消息中 攜帶每一個(gè)路由表節(jié)點(diǎn)在廣播范圍[IDmin,IDmax)內(nèi)的負(fù)責(zé)路由區(qū)間作為其進(jìn)一步的廣 播范圍,如其中一個(gè)路由表節(jié)點(diǎn)C的進(jìn)一步廣播范圍為[IDmin' , IDmax');其中,節(jié)點(diǎn)B計(jì)算其路由表節(jié)點(diǎn)在范圍[IDmin,IDmaX)內(nèi)的負(fù)責(zé)路由區(qū)間的方法, 是根據(jù)網(wǎng)絡(luò)采用的具體的DHT算法決定的;本發(fā)明中圖5、圖6、圖7舉例說(shuō)明了在Chord、 Kademlia、Pastry三種DHT算法中的實(shí)現(xiàn);其中,節(jié)點(diǎn)B的所有路由表節(jié)點(diǎn)負(fù)責(zé)的進(jìn)一步廣播范圍[IDmin' ,IDmax')的并 集,要覆蓋節(jié)點(diǎn)B負(fù)責(zé)廣播范圍[IDmin,IDmax)中的所有節(jié)點(diǎn);步驟S340,節(jié)點(diǎn)B的路由表節(jié)點(diǎn)C收到該廣播消息時(shí),搜集其本地路由表中所有節(jié) 點(diǎn)ID位于[IDmin' ,IDmax')范圍內(nèi)的路由表節(jié)點(diǎn);若不存在這樣的路由表節(jié)點(diǎn),則節(jié)點(diǎn) C終止該消息的廣播,否則按照步驟S330的方法進(jìn)一步廣播該消息。圖4是本發(fā)明方法中,網(wǎng)絡(luò)中的一個(gè)對(duì)等節(jié)點(diǎn)的廣播消息處理實(shí)施例流程示意 圖。一個(gè)對(duì)等節(jié)點(diǎn)收到一條廣播消息時(shí),首先提取廣播消息攜帶的廣播范圍,并搜集本節(jié)點(diǎn) 路由表中在該范圍內(nèi)的路由表節(jié)點(diǎn),同時(shí)根據(jù)網(wǎng)絡(luò)采用的具體DHT算法計(jì)算這些路由表節(jié) 點(diǎn)在該廣播范圍內(nèi)的負(fù)責(zé)路由區(qū)間,并將這些負(fù)責(zé)路由區(qū)間作為其進(jìn)一步的廣播范圍。要 說(shuō)明的是,圖4所示實(shí)施例僅給出一個(gè)示意,具體如何確定路由表節(jié)點(diǎn)的負(fù)責(zé)路由區(qū)間,后 續(xù)圖5,圖6以及圖7中舉例說(shuō)明了在Chord、Kademlia、Pastry三種DHT算法中的實(shí)現(xiàn)。結(jié) 合圖3所示實(shí)施例,圖4所示對(duì)等節(jié)點(diǎn)的廣播消息處理流程,主要包括如下步驟步驟S410,節(jié)點(diǎn)B收到一條廣播消息,在本節(jié)點(diǎn)處理該消息;步驟S420,節(jié)點(diǎn)B從該廣播消息中提取本節(jié)點(diǎn)需要對(duì)該消息進(jìn)行進(jìn)一步廣播的范 圍為[IDmin,IDmax);其中,如果節(jié)點(diǎn)B為發(fā)起節(jié)點(diǎn)時(shí),那么節(jié)點(diǎn)B將對(duì)等網(wǎng)絡(luò)的整個(gè)節(jié)點(diǎn) 空間作為本節(jié)點(diǎn)需要進(jìn)一步廣播該消息的范圍;步驟S430,獲取本地路由表中所有節(jié)點(diǎn)ID在[IDmin,IDmax)范圍內(nèi)的路由表節(jié) 點(diǎn),得到節(jié)點(diǎn)序列{Nodei},根據(jù)網(wǎng)絡(luò)采用的DHT算法為每個(gè)路由表節(jié)點(diǎn)Nodei計(jì)算其負(fù)責(zé)路由區(qū)間,如路由表節(jié)點(diǎn)Nodei的負(fù)責(zé)路由區(qū)間為[IDmin' , IDmax');其中,節(jié)點(diǎn)B的所 有路由表節(jié)點(diǎn)的負(fù)責(zé)路由區(qū)間[IDmin' , IDmax')的并集,要覆蓋節(jié)點(diǎn)B負(fù)責(zé)廣播范圍 [IDmin, IDmax)中的所有節(jié)點(diǎn);步驟S440,判斷節(jié)點(diǎn)序列{Nodei}是否為空,若為空,則跳轉(zhuǎn)到步驟S460,否則跳 轉(zhuǎn)到步驟S450 ;步驟S450,節(jié)點(diǎn)B向路由表節(jié)點(diǎn)Nodei進(jìn)一步廣播消息,廣播的該消息中攜帶路由 表節(jié)點(diǎn)Nodei的負(fù)責(zé)路由區(qū)間[IDmin',IDmax'),該負(fù)責(zé)路由區(qū)間[IDmin',IDmax') 作為該Nodei節(jié)點(diǎn)進(jìn)一步廣播的廣播范圍;序列{Nodei}中所有節(jié)點(diǎn)處理完成后,轉(zhuǎn)步驟 S470 ;其中,節(jié)點(diǎn)B對(duì)其路由表節(jié)點(diǎn)Nodei在[IDmin,IDmax)范圍內(nèi)的負(fù)責(zé)路由區(qū)間 [IDmin' , IDmax'),可以根據(jù)不同的DHT算法決定;其中,節(jié)點(diǎn)B在根據(jù)網(wǎng)絡(luò)采用的DHT算法計(jì)算路由表節(jié)點(diǎn)序列{Nodei}的負(fù)責(zé)路 由區(qū)間時(shí),可能獲得一個(gè)以上的路由表節(jié)點(diǎn)有相同的負(fù)責(zé)路由區(qū)間,此時(shí)節(jié)點(diǎn)B可以任意 選擇其中一個(gè)路由表節(jié)點(diǎn)負(fù)責(zé)該范圍內(nèi)的進(jìn)一步廣播,其它路由表節(jié)點(diǎn)不再由節(jié)點(diǎn)B發(fā)起 消息的廣播;也可以由節(jié)點(diǎn)B將該負(fù)責(zé)路由區(qū)間按照一定的規(guī)則進(jìn)一步細(xì)分給這幾個(gè)路由 表節(jié)點(diǎn),如采用折半分配方法等;步驟S460,節(jié)點(diǎn)B判斷節(jié)點(diǎn)序列{Nodei}為空,即在節(jié)點(diǎn)B的本地路由表中沒(méi)有路 由表節(jié)點(diǎn)位于范圍[IDmin,IDmax)內(nèi),節(jié)點(diǎn)B不需要進(jìn)一步廣播消息;步驟S470,本節(jié)點(diǎn)處理該廣播消息結(jié)束。前述的Chord算法是最經(jīng)典的DHT算法之一,其網(wǎng)絡(luò)拓?fù)涫且环N帶弦環(huán)結(jié)構(gòu)。每 個(gè)節(jié)點(diǎn)的路由表項(xiàng)為m個(gè)(m為節(jié)點(diǎn)ID的位數(shù)),第i個(gè)表項(xiàng)保存距離本節(jié)點(diǎn)至少距離為 2"(i-l)的第一個(gè)節(jié)點(diǎn),可以理解為距離本節(jié)點(diǎn)[2~(i-l),2~i)范圍區(qū)域的第一個(gè)節(jié)點(diǎn),若 該區(qū)域內(nèi)為空,則取該范圍后的第一個(gè)節(jié)點(diǎn)。即第i個(gè)表項(xiàng)的路由表節(jié)點(diǎn)的負(fù)責(zé)路由區(qū)間 為[2~(i-l),2~i)。圖5是本發(fā)明方法在Chord網(wǎng)絡(luò)實(shí)現(xiàn)消息廣播實(shí)施例的流程示意圖。圖5所示實(shí) 施例表示一個(gè)4位二進(jìn)制ID空間的Chord疊加網(wǎng),圖中Nk表示節(jié)點(diǎn)ID為k的節(jié)點(diǎn)。疊加 網(wǎng)中有N4、N8、N14等共10個(gè)節(jié)點(diǎn),同時(shí)標(biāo)出了節(jié)點(diǎn)N8和節(jié)點(diǎn)N42的指向表。在Chord網(wǎng) 絡(luò)中實(shí)施本發(fā)明的步驟描述如下,描述中對(duì)同層次的中間節(jié)點(diǎn)僅選擇一個(gè)節(jié)點(diǎn)作為代表進(jìn) 行描述步驟S510,節(jié)點(diǎn)N8發(fā)起一條整網(wǎng)廣播消息,向其指向表中所有節(jié)點(diǎn)進(jìn)一步廣播該 消息,廣播消息內(nèi)容攜帶該節(jié)點(diǎn)相應(yīng)的進(jìn)一步廣播范圍;節(jié)點(diǎn)N8的指向表中共有m4、N21、 N32、N42四個(gè)路由表節(jié)點(diǎn),各自的負(fù)責(zé)路由區(qū)間即進(jìn)一步廣播范圍分別為[12,16)、[16, 24)、[24,40)、[40,8);其中,節(jié)點(diǎn)N8在為需要進(jìn)行轉(zhuǎn)發(fā)廣播消息的路由表節(jié)點(diǎn)分配進(jìn)一步廣播范圍時(shí), 可以根據(jù)Chord算法特性進(jìn)一步優(yōu)化廣播范圍的設(shè)置。如Chord算法的指向表第i行的節(jié) 點(diǎn)是取距離本節(jié)點(diǎn)距離大于2~(i-l)且節(jié)點(diǎn)ID最小的節(jié)點(diǎn),則可以據(jù)此將其四個(gè)路由表節(jié) 點(diǎn)的進(jìn)一步廣播范圍設(shè)置為(14,16), (21,24), (32,40), (42,8);步驟S520,在消息的下一步廣播過(guò)程中,如節(jié)點(diǎn)N42收到進(jìn)一步廣播范圍為W0, 8)的廣播消息,節(jié)點(diǎn)N42搜集本地路由表中節(jié)點(diǎn)ID位于該范圍內(nèi)的節(jié)點(diǎn)有N48、N51、N4,節(jié)點(diǎn)N8向這三個(gè)節(jié)點(diǎn)廣播該消息,同時(shí)指定各自的進(jìn)一步廣播范圍即負(fù)責(zé)路由區(qū)間分別為 [46,50)、 [50,58)、 [58,8);步驟S530,在消息的下一步廣播過(guò)程中,如節(jié)點(diǎn)N51收到進(jìn)一步廣播范圍為(51, 58)的廣播消息,節(jié)點(diǎn)N51搜集本地路由表中節(jié)點(diǎn)ID位于該范圍內(nèi)有唯一的節(jié)點(diǎn)N56,節(jié)點(diǎn) N51向節(jié)點(diǎn)N56廣播該消息,同時(shí)指定節(jié)點(diǎn)N56的進(jìn)一步廣播范圍即負(fù)責(zé)路由區(qū)間為[55, 58);步驟S540,在消息的下一步廣播過(guò)程中,節(jié)點(diǎn)N56收到進(jìn)一步廣播范圍為[55,58) 的廣播消息,節(jié)點(diǎn)N56搜集本地路由表中節(jié)點(diǎn)ID位于該范圍內(nèi)不存在路由表節(jié)點(diǎn),則終止 該消息的廣播。Kademlia算法也是常用的DHT算法,電驢、BitTorrent等應(yīng)用已經(jīng)將該算法實(shí) 際應(yīng)用到互聯(lián)網(wǎng)上。與Chord算法類(lèi)似,Kademlia算法中每個(gè)節(jié)點(diǎn)維護(hù)一個(gè)具有m項(xiàng)稱(chēng) 為K桶(k-buckets)的路由表(m為節(jié)點(diǎn)ID的位數(shù)),其中第i個(gè)桶保存到本節(jié)點(diǎn)的異或 距離為[2~(i-l),2~i))的一些節(jié)點(diǎn),即第i個(gè)桶內(nèi)的k個(gè)路由表節(jié)點(diǎn)的負(fù)責(zé)路由區(qū)間為 [2" (i-1),2~i))。為限制路由表大小,規(guī)定每個(gè)桶中節(jié)點(diǎn)數(shù)目最大為K,同時(shí)每個(gè)桶內(nèi)的節(jié) 點(diǎn)不是按照數(shù)值大小排序的,而是通過(guò)一種“捎帶更新”機(jī)制實(shí)現(xiàn)按最近訪問(wèn)時(shí)間排序。圖6是本發(fā)明方法在Kademlia網(wǎng)絡(luò)實(shí)現(xiàn)消息廣播實(shí)施例的流程示意圖。圖6所 示的實(shí)施例表示了一個(gè)4位二進(jìn)制ID空間的Kademlia疊加網(wǎng),圖中Nk表示節(jié)點(diǎn)ID為k 的節(jié)點(diǎn)。疊加網(wǎng)中有N4、N8、N14等共10個(gè)節(jié)點(diǎn),同時(shí)標(biāo)出了節(jié)點(diǎn)N8的路由表,注意這里是 指到本節(jié)點(diǎn)的異或距離。在Kademlia網(wǎng)絡(luò)中實(shí)施本發(fā)明方法的步驟描述如下,描述中對(duì)同 層次的中間節(jié)點(diǎn)僅選擇一個(gè)節(jié)點(diǎn)作為代表進(jìn)行描述步驟S610,節(jié)點(diǎn)N8發(fā)起一條整網(wǎng)廣播消息,向其路由表中所有路由表節(jié)點(diǎn)進(jìn)一步 廣播該消息,廣播的該消息內(nèi)容攜帶該節(jié)點(diǎn)相應(yīng)的進(jìn)一步廣播范圍;節(jié)點(diǎn)N8的路由表中共 有附4、N4、N21、N48、N56、N32六個(gè)路由表節(jié)點(diǎn),其中節(jié)點(diǎn)N48、N56、N32三個(gè)節(jié)點(diǎn)有共同的 負(fù)責(zé)路由區(qū)間[32,64),選擇節(jié)點(diǎn)N48負(fù)責(zé)該區(qū)間內(nèi)節(jié)點(diǎn)的進(jìn)一步廣播;節(jié)點(diǎn)N8向m4、N4、 N21、N48四個(gè)節(jié)點(diǎn)進(jìn)一步廣播消息,同時(shí)設(shè)置各節(jié)點(diǎn)的進(jìn)一步廣播范圍即負(fù)責(zé)路由區(qū)間分 別為[12,16)、[0,8), [16,32)、[32,64);其中,節(jié)點(diǎn)N8可以將N48、N56、N32三個(gè)節(jié)點(diǎn)共同的負(fù)責(zé)路由區(qū)間[32,64)進(jìn)一步 分配到這三個(gè)路由表節(jié)點(diǎn),如節(jié)點(diǎn)N48負(fù)責(zé)[56,64)、節(jié)點(diǎn)N56負(fù)責(zé)[48,56)、節(jié)點(diǎn)N32負(fù)責(zé) [32,48)范圍內(nèi)消息的進(jìn)一步廣播;步驟S620,在消息的下一步廣播過(guò)程中,節(jié)點(diǎn)N48收到進(jìn)一步廣播范圍為[32,64) 的廣播消息;節(jié)點(diǎn)N48的路由表中屬于[32,64)范圍內(nèi)的路由表節(jié)點(diǎn)有N51、N56、N38、N42、 N32五個(gè)節(jié)點(diǎn),其中節(jié)點(diǎn)N38、N42、N32共同三個(gè)節(jié)點(diǎn)有共同的負(fù)責(zé)路由區(qū)間[32,48),選擇 節(jié)點(diǎn)N38負(fù)責(zé)該區(qū)間內(nèi)節(jié)點(diǎn)的進(jìn)一步廣播;節(jié)點(diǎn)N48向N51、N56、N38三個(gè)節(jié)點(diǎn)進(jìn)一步廣播 該消息,同時(shí)設(shè)置各節(jié)點(diǎn)的進(jìn)一步廣播范圍即負(fù)責(zé)路由區(qū)間分別為[50,52)、[56,64)、[32, 48);其中,節(jié)點(diǎn)N48也可以將N38、N42、N32三個(gè)節(jié)點(diǎn)共同的負(fù)責(zé)路由區(qū)間[32,48)進(jìn) 一步分配到這三個(gè)路由表節(jié)點(diǎn),如節(jié)點(diǎn)N38負(fù)責(zé)[38,40)、節(jié)點(diǎn)N42負(fù)責(zé)[40,48)、節(jié)點(diǎn)N32 負(fù)責(zé)[32,38)范圍內(nèi)消息的進(jìn)一步廣播;步驟S630,在消息的下一步廣播過(guò)程中,節(jié)點(diǎn)N38收到進(jìn)一步廣播范圍為[32,48)10的廣播消息;節(jié)點(diǎn)N38搜集其本地路由表中節(jié)點(diǎn)ID在范圍[32,48)內(nèi)的節(jié)點(diǎn)有N32、N42兩 個(gè),節(jié)點(diǎn)N38向N32、N42兩個(gè)節(jié)點(diǎn)進(jìn)一步廣播該消息,同時(shí)設(shè)置各節(jié)點(diǎn)的進(jìn)一步廣播范圍即 負(fù)責(zé)路由區(qū)間為[32,36)、[40,48);步驟S640,在消息的下一步廣播過(guò)程中,節(jié)點(diǎn)N32收到進(jìn)一步廣播范圍為[32,36) 的廣播消息,節(jié)點(diǎn)N32搜集本地路由表中節(jié)點(diǎn)ID位于該范圍內(nèi)不存在路由表節(jié)點(diǎn),則終止 該消息的廣播。Pastry網(wǎng)絡(luò)是一個(gè)容錯(cuò)、高效、可擴(kuò)展的混合式結(jié)構(gòu)P2P網(wǎng)絡(luò),已經(jīng)形成很多成功 的商業(yè)應(yīng)用,如SCRIBE、PAST等。Pastry的路由表采用前綴匹配的方法構(gòu)造,第i行第j個(gè) 路由表節(jié)點(diǎn)為節(jié)點(diǎn)ID的前i-Ι位與本節(jié)點(diǎn)ID前綴相同、第i位的值為j的一個(gè)節(jié)點(diǎn),可以 得出其路由負(fù)責(zé)區(qū)間為前i位于路由表節(jié)點(diǎn)相同,后面各位取值任意的節(jié)點(diǎn)空間。I^astry 的節(jié)點(diǎn)除了維護(hù)路由表外,還有葉子集合鄰居集,葉子集維護(hù)節(jié)點(diǎn)ID鄰近的節(jié)點(diǎn),鄰居集 維護(hù)物理上鄰近的節(jié)點(diǎn)。圖7是本發(fā)明方法在I^stry網(wǎng)絡(luò)實(shí)現(xiàn)消息廣播實(shí)施例的流程示意圖。圖7所示 的實(shí)施例表示了一個(gè)8位4進(jìn)制ID空間的I^astry疊加網(wǎng)的基本網(wǎng)絡(luò)拓?fù)潢P(guān)系,同時(shí)標(biāo)出 了若干節(jié)點(diǎn)和節(jié)點(diǎn)ID為10233102和30312203的節(jié)點(diǎn)的部分路由表內(nèi)容。在I^astry網(wǎng)絡(luò) 中實(shí)施本發(fā)明的步驟描述如下,描述中對(duì)同層次的中間節(jié)點(diǎn)僅選擇一個(gè)節(jié)點(diǎn)作為代表進(jìn)行 描述步驟S710,發(fā)起節(jié)點(diǎn)10233102發(fā)起一個(gè)整網(wǎng)廣播消息,向其本地路由表中所有 路由表節(jié)點(diǎn)廣播該消息,并設(shè)置每個(gè)節(jié)點(diǎn)的進(jìn)一步廣播范圍;第一行第一列的路由表節(jié)點(diǎn) 02212102的進(jìn)一步廣播范圍即負(fù)責(zé)路由區(qū)間為(00000000,0333333 ,第一行第四列的節(jié) 點(diǎn)31203203的進(jìn)一步廣播范圍即負(fù)責(zé)路由區(qū)間為(30000000,3333333 等等;步驟S720,在消息的進(jìn)一步廣播過(guò)程中,節(jié)點(diǎn)31203203收到進(jìn)一步廣播范圍 為(30000000,33333333)的廣播消息;節(jié)點(diǎn)31203203進(jìn)一步向本地路由表中位于該范圍 內(nèi)的路由表節(jié)點(diǎn)轉(zhuǎn)發(fā)播消息,同時(shí)設(shè)置每個(gè)路由表節(jié)點(diǎn)的進(jìn)一步廣播范圍;如向路由表 節(jié)點(diǎn)32032031轉(zhuǎn)發(fā)廣播消息,并設(shè)置其進(jìn)一步廣播范圍即負(fù)責(zé)路由區(qū)間為(32000000, 32333333);向路由表節(jié)點(diǎn)30312203轉(zhuǎn)發(fā)廣播消息,并設(shè)置其進(jìn)一步廣播范圍即負(fù)責(zé)路由 區(qū)間為(30000000,30333333);步驟S730,在消息的下一步廣播過(guò)程中,節(jié)點(diǎn)30312203收到進(jìn)一步廣播范圍 為(30000000,30333333)的廣播消息;節(jié)點(diǎn)30312203收集其本地路由表中節(jié)點(diǎn)ID位于 (30000000,30333333)內(nèi)節(jié)點(diǎn)不存在,則終止該消息的廣播;其中,根據(jù)I^astry疊加網(wǎng)的特點(diǎn),每個(gè)I^astry節(jié)點(diǎn)還保存有一個(gè)葉子集,根據(jù)葉 子集的中節(jié)點(diǎn)與本節(jié)點(diǎn)的節(jié)點(diǎn)ID最近特性可以在消息廣播中進(jìn)一步優(yōu)化下一步轉(zhuǎn)發(fā)廣播 消息對(duì)象的數(shù)量;如節(jié)點(diǎn)在向路由表節(jié)點(diǎn)廣播該消息的同時(shí)也向其葉子集中的節(jié)點(diǎn)廣播該 消息,同時(shí)設(shè)置葉子集中的節(jié)點(diǎn)的進(jìn)一步廣播范圍為其本身,即葉子集中的節(jié)點(diǎn)不需要進(jìn) 一步轉(zhuǎn)發(fā)該消息;這可以進(jìn)一步加快消息的廣播速度;其中,若每個(gè)I^stry節(jié)點(diǎn)同時(shí)向葉子集和路由表中的路由表節(jié)點(diǎn)轉(zhuǎn)發(fā)廣播消息, 對(duì)于同時(shí)出現(xiàn)在葉子集和路由表中的路由表節(jié)點(diǎn),優(yōu)先按照葉子集節(jié)點(diǎn)處理,即這樣的路 由表節(jié)點(diǎn)不再按照步驟S730進(jìn)行處理;這可以進(jìn)一步減少拓?fù)涫占斐傻南⑷哂?。參照?qǐng)D2至圖7所示的本發(fā)明方法各實(shí)施例,在本發(fā)明結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)中消息的廣播系統(tǒng)實(shí)施例中,該消息由發(fā)起節(jié)點(diǎn)在該系統(tǒng)內(nèi)開(kāi)始逐級(jí)廣播,每一級(jí)均至少包含廣播 節(jié)點(diǎn),而且每一級(jí)中的廣播節(jié)點(diǎn),用于確定本級(jí)廣播范圍并指示下一級(jí)廣播范圍,且根據(jù)本 級(jí)廣播范圍將該消息廣播給本級(jí)的接收節(jié)點(diǎn);本級(jí)的接收節(jié)點(diǎn),用于收到該消息后作為下 一級(jí)的廣播節(jié)點(diǎn),繼續(xù)廣播該消息。在某一級(jí)中沒(méi)有接收節(jié)點(diǎn)可被廣播節(jié)點(diǎn)用于確定本級(jí)廣播范圍時(shí),該某一級(jí)的廣 播節(jié)點(diǎn)終止廣播。且第一級(jí)中的廣播節(jié)點(diǎn)為該發(fā)起節(jié)點(diǎn)。在本發(fā)明系統(tǒng)實(shí)施例中,該每一級(jí)的廣播節(jié)點(diǎn),用于根據(jù)分布式哈希表算法為本 地路由表中的每個(gè)路由表節(jié)點(diǎn)計(jì)算負(fù)責(zé)路由區(qū)間,據(jù)此確定該本級(jí)廣播范圍;并用于將本 地路由表中的路由表節(jié)點(diǎn)的負(fù)責(zé)路由區(qū)間,指示為該下一級(jí)廣播范圍。在本發(fā)明系統(tǒng)實(shí)施例中,該每一級(jí)的廣播節(jié)點(diǎn)為本地路由表中的每個(gè)路由表節(jié) 點(diǎn)計(jì)算負(fù)責(zé)路由區(qū)間的該分布式哈希表算法,包括但不限于Chord算法、Kademlia算法或 Pastry算法。根據(jù)Chord算法、Kademlia算法或I^stry算法計(jì)算負(fù)責(zé)路由區(qū)間的方法,請(qǐng) 分別參照?qǐng)D5至圖7所示的方法實(shí)施例。在本發(fā)明系統(tǒng)實(shí)施例中,該每一級(jí)的廣播節(jié)點(diǎn)根據(jù)該分布式哈希表算法為本地路 由表節(jié)點(diǎn)計(jì)算負(fù)責(zé)路由區(qū)間,當(dāng)存在一個(gè)以上的路由表節(jié)點(diǎn)有共同的負(fù)責(zé)路由區(qū)間時(shí),用 于任意選擇其中一個(gè)路由表節(jié)點(diǎn)負(fù)責(zé)本級(jí)廣播,或者將該負(fù)責(zé)路由區(qū)間細(xì)分給若干個(gè)路由 表節(jié)點(diǎn),以負(fù)責(zé)本級(jí)廣播。在本發(fā)明系統(tǒng)實(shí)施例中,該每一級(jí)的廣播節(jié)點(diǎn)將該負(fù)責(zé)路由區(qū)間細(xì)分給若干個(gè)路 由表節(jié)點(diǎn)的方法,包括折半分配法。在本發(fā)明系統(tǒng)實(shí)施例中,該每一級(jí)的廣播節(jié)點(diǎn),用于將所指示的下一級(jí)廣播范圍 攜帶于該消息中進(jìn)行廣播,或者通過(guò)其他消息進(jìn)行廣播。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用 的計(jì)算裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成 的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而,可以將它們存儲(chǔ) 在存儲(chǔ)裝置中由計(jì)算裝置來(lái)執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們 中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來(lái)實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的 硬件和軟件結(jié)合。雖然本發(fā)明所揭露的實(shí)施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采 用的實(shí)施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本 發(fā)明所揭露的精神和范圍的前提下,可以在實(shí)施的形式上及細(xì)節(jié)上作任何的修改與變化, 但本發(fā)明的專(zhuān)利保護(hù)范圍,仍須以所附的權(quán)利要求書(shū)所界定的范圍為準(zhǔn)。
權(quán)利要求
1.一種結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)中消息的廣播方法,其特征在于所述消息由發(fā)起節(jié)點(diǎn)開(kāi)始逐級(jí)廣播,每一級(jí)至少包含廣播節(jié)點(diǎn);在每一級(jí)中,廣播節(jié)點(diǎn) 確定本級(jí)廣播范圍并指示下一級(jí)廣播范圍,且根據(jù)本級(jí)廣播范圍將所述消息廣播給本級(jí)的 接收節(jié)點(diǎn),本級(jí)的接收節(jié)點(diǎn)收到所述消息后作為下一級(jí)的廣播節(jié)點(diǎn),繼續(xù)廣播所述消息;某 一級(jí)中沒(méi)有接收節(jié)點(diǎn)可被廣播節(jié)點(diǎn)用于確定本級(jí)廣播范圍時(shí),該某一級(jí)的廣播節(jié)點(diǎn)終止廣 播;其中,第一級(jí)中的廣播節(jié)點(diǎn)為所述發(fā)起節(jié)點(diǎn)。
2.如權(quán)利要求1所述的方法,其特征在于所述每一級(jí)的廣播節(jié)點(diǎn),根據(jù)分布式哈希表算法為本地路由表中的每個(gè)路由表節(jié)點(diǎn)計(jì) 算負(fù)責(zé)路由區(qū)間,據(jù)此確定所述本級(jí)廣播范圍;并將本地路由表中的路由表節(jié)點(diǎn)的負(fù)責(zé)路 由區(qū)間,指示為所述下一級(jí)廣播范圍。
3.如權(quán)利要求2所述的方法,其特征在于所述分布式哈希表算法包括Chord算法、Kademlia算法或I^stry算法。
4.如權(quán)利要求2所述的方法,其特征在于所述每一級(jí)的廣播節(jié)點(diǎn)根據(jù)所述分布式哈希表算法為本地路由表節(jié)點(diǎn)計(jì)算負(fù)責(zé)路由 區(qū)間,當(dāng)存在一個(gè)以上的路由表節(jié)點(diǎn)有共同的負(fù)責(zé)路由區(qū)間時(shí),任意選擇其中一個(gè)路由表 節(jié)點(diǎn)負(fù)責(zé)本級(jí)廣播,或者將所述負(fù)責(zé)路由區(qū)間細(xì)分給若干個(gè)路由表節(jié)點(diǎn),以負(fù)責(zé)本級(jí)廣播。
5.如權(quán)利要求4所述的方法,其特征在于所述每一級(jí)的廣播節(jié)點(diǎn)將所述負(fù)責(zé)路由區(qū)間細(xì)分給若干個(gè)路由表節(jié)點(diǎn)的方法,包括折 半分配法。
6.如權(quán)利要求1所述的方法,其特征在于所述每一級(jí)的廣播節(jié)點(diǎn),將所指示的下一級(jí)廣播范圍攜帶于所述消息中進(jìn)行廣播,或 者通過(guò)其他消息進(jìn)行廣播。
7.—種結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)中消息的廣播系統(tǒng),其特征在于,所述消息由發(fā)起節(jié)點(diǎn)在該系 統(tǒng)內(nèi)開(kāi)始逐級(jí)廣播,每一級(jí)至少包含廣播節(jié)點(diǎn),在每一級(jí)中廣播節(jié)點(diǎn)用于確定本級(jí)廣播范圍并指示下一級(jí)廣播范圍,且根據(jù)本級(jí)廣播范圍將所述 消息廣播給本級(jí)的接收節(jié)點(diǎn);本級(jí)的接收節(jié)點(diǎn),用于收到所述消息后作為下一級(jí)的廣播節(jié)點(diǎn),繼續(xù)廣播所述消息;其中,某一級(jí)中沒(méi)有接收節(jié)點(diǎn)可被廣播節(jié)點(diǎn)用于確定本級(jí)廣播范圍時(shí),該某一級(jí)的廣 播節(jié)點(diǎn)終止廣播;其中,第一級(jí)中的廣播節(jié)點(diǎn)為所述發(fā)起節(jié)點(diǎn)。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于所述每一級(jí)的廣播節(jié)點(diǎn),用于根據(jù)分布式哈希表算法為本地路由表中的每個(gè)路由表節(jié) 點(diǎn)計(jì)算負(fù)責(zé)路由區(qū)間,據(jù)此確定所述本級(jí)廣播范圍;并用于將本地路由表中的路由表節(jié)點(diǎn) 的負(fù)責(zé)路由區(qū)間,指示為所述下一級(jí)廣播范圍。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于所述每一級(jí)的廣播節(jié)點(diǎn)為本地路由表中的每個(gè)路由表節(jié)點(diǎn)計(jì)算負(fù)責(zé)路由區(qū)間的所述 分布式哈希表算法,包括Chord算法、Kademlia算法或I^astry算法。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于所述每一級(jí)的廣播節(jié)點(diǎn)根據(jù)所述分布式哈希表算法為本地路由表節(jié)點(diǎn)計(jì)算負(fù)責(zé)路由 區(qū)間,當(dāng)存在一個(gè)以上的路由表節(jié)點(diǎn)有共同的負(fù)責(zé)路由區(qū)間時(shí),用于任意選擇其中一個(gè)路 由表節(jié)點(diǎn)負(fù)責(zé)本級(jí)廣播,或者將所述負(fù)責(zé)路由區(qū)間細(xì)分給若干個(gè)路由表節(jié)點(diǎn),以負(fù)責(zé)本級(jí) 廣播。
11.如權(quán)利要求10所述的系統(tǒng),其特征在于所述每一級(jí)的廣播節(jié)點(diǎn)將所述負(fù)責(zé)路由區(qū)間細(xì)分給若干個(gè)路由表節(jié)點(diǎn)的方法,包括折 半分配法。
12.如權(quán)利要求7所述的系統(tǒng),其特征在于所述每一級(jí)的廣播節(jié)點(diǎn),用于將所指示的下一級(jí)廣播范圍攜帶于所述消息中進(jìn)行廣 播,或者通過(guò)其他消息進(jìn)行廣播。
全文摘要
本發(fā)明公開(kāi)了一種結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)中消息的廣播系統(tǒng)及方法,以完成結(jié)構(gòu)化對(duì)等網(wǎng)絡(luò)中的消息廣播。該方法中,消息由發(fā)起節(jié)點(diǎn)開(kāi)始逐級(jí)廣播,每一級(jí)至少包含廣播節(jié)點(diǎn);在每一級(jí)中,廣播節(jié)點(diǎn)確定本級(jí)廣播范圍并指示下一級(jí)廣播范圍,且根據(jù)本級(jí)廣播范圍將消息廣播給本級(jí)的接收節(jié)點(diǎn),本級(jí)的接收節(jié)點(diǎn)收到消息后作為下一級(jí)的廣播節(jié)點(diǎn),繼續(xù)廣播消息;某一級(jí)中沒(méi)有接收節(jié)點(diǎn)可被廣播節(jié)點(diǎn)用于確定本級(jí)廣播范圍時(shí),該某一級(jí)的廣播節(jié)點(diǎn)終止廣播;其中,第一級(jí)中的廣播節(jié)點(diǎn)為發(fā)起節(jié)點(diǎn)。本發(fā)明能快速地將消息廣播到網(wǎng)絡(luò)中的所有節(jié)點(diǎn),且與具體網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和路由協(xié)議無(wú)關(guān),適應(yīng)于多種基于分布式哈希表網(wǎng)絡(luò)。
文檔編號(hào)H04L29/08GK102055655SQ20091021235
公開(kāi)日2011年5月11日 申請(qǐng)日期2009年11月6日 優(yōu)先權(quán)日2009年11月6日
發(fā)明者胡永生, 陳志峰 申請(qǐng)人:中興通訊股份有限公司