專利名稱:一種基于超級(jí)節(jié)點(diǎn)的p2p直播方法
技術(shù)領(lǐng)域:
本發(fā)明涉及互聯(lián)網(wǎng)通信領(lǐng)域,尤其涉及一種基于超級(jí)節(jié)點(diǎn)的對(duì)等網(wǎng)絡(luò)(peer to peer, P2P)直播方法,以實(shí)現(xiàn)實(shí)時(shí)媒體傳輸。
技術(shù)背景流媒體技術(shù)是一種用流式傳輸方式在互聯(lián)網(wǎng)上播放音頻、視頻等多媒體 數(shù)據(jù)的技術(shù),用戶可以邊下載邊觀看,不需要將整個(gè)文件下載之后再觀看。 流媒體技術(shù)最初采取的是傳統(tǒng)的客戶端/服務(wù)器(C/S)模式,多媒體數(shù)據(jù)存 放在服務(wù)器上,任何客戶端想要獲得媒體數(shù)據(jù),都必須從服務(wù)器上獲得一份 完整的拷貝。在這種模式中服務(wù)器必須給每個(gè)用戶都發(fā)送一份完全一樣的數(shù) 據(jù),隨著用戶增加,向大量用戶發(fā)送龐大的多媒體數(shù)據(jù)會(huì)使服務(wù)器不堪重負(fù), 造成服務(wù)器端的擁塞。為了緩解傳統(tǒng)的c/s模式中服務(wù)器的壓力,代理服務(wù)器技術(shù)被應(yīng)用于網(wǎng)絡(luò)媒體發(fā)布中。代理服務(wù)器將一些頻繁訪問(wèn)的數(shù)據(jù)存儲(chǔ)在本地存儲(chǔ)器中,當(dāng) 用戶通過(guò)代理服務(wù)器訪問(wèn)時(shí),如果代理服務(wù)器的緩存中有用戶需要的數(shù)據(jù), 就無(wú)需訪問(wèn)遠(yuǎn)程的服務(wù)器,只通過(guò)本機(jī)的緩存為用戶服務(wù)。代理服務(wù)器分擔(dān) 了一部分用戶訪問(wèn),有效的降低了主服務(wù)器的壓力,可以提高用戶的響應(yīng)速 度,并且可以節(jié)省網(wǎng)絡(luò)資源。但是代理服務(wù)器的部署會(huì)增加媒體發(fā)布的硬件 成本,保持代理緩存中的內(nèi)容和主服務(wù)器內(nèi)容的同歩也是一個(gè)難題。內(nèi)容發(fā)布網(wǎng)絡(luò)(Content Distribution Network, CDN)是一個(gè)建立在互 聯(lián)網(wǎng)之上由分布在不同區(qū)域的節(jié)點(diǎn)服務(wù)器群組成的虛擬網(wǎng)絡(luò)。CDN的核心思 想是將內(nèi)容從中心推到邊緣靠近用戶的地方,這樣不但有效提高了用戶的訪 問(wèn)內(nèi)容的性能,而且有效減輕了中心設(shè)備和骨干網(wǎng)絡(luò)的壓力。通過(guò)CDN,可
以將內(nèi)容服務(wù)從原來(lái)的單一中心結(jié)構(gòu)變?yōu)榉植际降慕Y(jié)構(gòu)。CDN系統(tǒng)有效的解決了代理服務(wù)器技術(shù)中代理緩存和主服務(wù)器間的內(nèi)容同歩問(wèn)題。但是CDN 仍舊是基于C/S結(jié)構(gòu)的分布式媒體服務(wù)技術(shù)平臺(tái),跟地域化管制緊密相連, 因此很難降低其擴(kuò)展的成本,CDN技術(shù)在高峰時(shí)期對(duì)突發(fā)流量的適應(yīng)性、容 錯(cuò)性方面仍然存在著一定缺陷,如流媒體服務(wù)器帶寬占用大,服務(wù)器處理能 力要求高等。以上的技術(shù)都是在C/S的基本結(jié)構(gòu)上進(jìn)行發(fā)展的,所以不能避免服務(wù)器 本身帶來(lái)的系統(tǒng)瓶頸與單點(diǎn)故障的問(wèn)題。為了解決傳統(tǒng)的C/S結(jié)構(gòu)存在的問(wèn) 題,P2P技術(shù)得到了廣泛的發(fā)展,在P2P系統(tǒng)當(dāng)中不再像傳統(tǒng)的C/S結(jié)構(gòu)那 樣只有服務(wù)器來(lái)提供數(shù)據(jù)供用戶下載,用戶在下載的同時(shí)也可以為其他用戶 提供服務(wù),而且在現(xiàn)實(shí)應(yīng)用當(dāng)中更多的數(shù)據(jù)是在用戶之間進(jìn)行傳輸。隨著B(niǎo)T 為代表的P2P下載技術(shù)流行,P2P技術(shù)越來(lái)越被人們所關(guān)注。但是現(xiàn)有的P2P流媒體技術(shù)中沒(méi)有考慮到覆蓋網(wǎng)絡(luò)和底層物理網(wǎng)絡(luò)的 拓?fù)淦ヅ鋯?wèn)題,節(jié)點(diǎn)之間在邏輯的覆蓋網(wǎng)絡(luò)當(dāng)中很相近,但是很可能在物理 網(wǎng)絡(luò)中相差很遠(yuǎn),這樣對(duì)于延時(shí)和傳輸?shù)乃俣葧?huì)較大的影響,用戶得到的服 務(wù)質(zhì)量不能得到有效的保證,同時(shí)系統(tǒng)中的服務(wù)器除了進(jìn)行媒體數(shù)據(jù)的分發(fā) 外還要對(duì)整個(gè)系統(tǒng)進(jìn)行控制管理,有些系統(tǒng)專門提供了控制管理服務(wù)器,但 是這樣又增加了硬件的投入成本。發(fā)明內(nèi)容本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中存在的覆蓋網(wǎng)絡(luò)和底層物理網(wǎng)絡(luò)的 拓?fù)淦ヅ鋯?wèn)題,提供了一種基于超級(jí)節(jié)點(diǎn)的P2P直播方法。為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于超級(jí)節(jié)點(diǎn)的P2P直播方法, 該方法包括節(jié)點(diǎn)向服務(wù)器發(fā)送期望節(jié)目的節(jié)點(diǎn)加入請(qǐng)求信息,服務(wù)器處理所述節(jié)點(diǎn) 加入請(qǐng)求消息完成所述節(jié)點(diǎn)加入流媒體直播網(wǎng)絡(luò);以及
所述節(jié)點(diǎn)成功的加入到流媒體直播網(wǎng)絡(luò)之后,所述節(jié)點(diǎn)選擇與自己在物 理上相近的其他節(jié)點(diǎn)建立伙伴關(guān)系,再進(jìn)行數(shù)據(jù)的傳輸。進(jìn)一步地,基于超級(jí)節(jié)點(diǎn)的P2P直播方法還包括所述節(jié)點(diǎn)退出所述流 媒體直播網(wǎng)絡(luò)。進(jìn)一步地,所述服務(wù)器處理所述節(jié)點(diǎn)加入請(qǐng)求消息完成所述節(jié)點(diǎn)加入流 媒體直播網(wǎng)絡(luò)具體為服務(wù)器根據(jù)節(jié)點(diǎn)加入請(qǐng)求信息中所述節(jié)點(diǎn)要觀看的節(jié)目,到節(jié)目列表中 去匹配超級(jí)節(jié)點(diǎn);服務(wù)器將匹配成功的所述超級(jí)節(jié)點(diǎn)的信息返回給所述節(jié)點(diǎn),所述節(jié)點(diǎn)根 據(jù)所述超級(jí)節(jié)點(diǎn)的信息,向所述超級(jí)節(jié)點(diǎn)發(fā)送所述節(jié)點(diǎn)加入請(qǐng)求消息,所述 超級(jí)節(jié)點(diǎn)響應(yīng)該節(jié)點(diǎn)加入請(qǐng)求消息以將所述節(jié)點(diǎn)作為普通節(jié)點(diǎn)加入流媒體直 播網(wǎng)絡(luò),并向所述節(jié)點(diǎn)返回所管理的普通節(jié)點(diǎn)的信息。進(jìn)一步地,所述匹配超級(jí)節(jié)點(diǎn)的過(guò)程具體為將所述節(jié)點(diǎn)的標(biāo)志值與服務(wù)器列表中的超級(jí)節(jié)點(diǎn)的標(biāo)志值進(jìn)行比較,如 果相同,則節(jié)點(diǎn)與該超級(jí)節(jié)點(diǎn)處于同一個(gè)物理網(wǎng)絡(luò)中或者在物理上相近完成 匹配。進(jìn)一步地,所述節(jié)點(diǎn)選擇與自己在物理上相近的其他節(jié)點(diǎn)建立伙伴關(guān)系 的過(guò)程具體為所述節(jié)點(diǎn)向超級(jí)節(jié)點(diǎn)發(fā)送建立伙伴關(guān)系請(qǐng)求;超級(jí)節(jié)點(diǎn)根據(jù)所述建立伙伴關(guān)系請(qǐng)求返回自己的伙伴信息; 所述節(jié)點(diǎn)收到超級(jí)節(jié)點(diǎn)返回的伙伴信息后,從中選擇與自己在物理上相近的節(jié)點(diǎn)并請(qǐng)求作為其伙伴;被請(qǐng)求節(jié)點(diǎn)判斷有足夠的帶寬并且負(fù)載沒(méi)有超過(guò)限定值,則與請(qǐng)求節(jié)點(diǎn)建立伙伴關(guān)系。進(jìn)一步地,在所述節(jié)點(diǎn)向超級(jí)節(jié)點(diǎn)發(fā)送建立伙伴關(guān)系請(qǐng)求和超級(jí)節(jié)點(diǎn)根 據(jù)所述建立伙伴關(guān)系請(qǐng)求返回自己的伙伴信息之間還包括
當(dāng)超級(jí)節(jié)點(diǎn)收到建立伙伴關(guān)系的請(qǐng)求后,判斷與所述節(jié)點(diǎn)建立伙伴關(guān)系 后負(fù)載沒(méi)有超過(guò)限定值,并且可用帶寬滿足所述節(jié)點(diǎn)的需求,則和所述節(jié)點(diǎn) 建立伙伴關(guān)系。進(jìn)一歩地,在所述被請(qǐng)求節(jié)點(diǎn)判斷有足夠的帶寬并且負(fù)載沒(méi)有超過(guò)限定 值,與請(qǐng)求節(jié)點(diǎn)建立伙伴關(guān)系之后還包括以下步驟所述節(jié)點(diǎn)判斷自己的伙伴數(shù)目是否足以滿足自己的需求,如果伙伴的數(shù) 目仍然比較小,所述節(jié)點(diǎn)向與自己之間延時(shí)小的節(jié)點(diǎn)發(fā)送建立伙伴關(guān)系請(qǐng)求, 建立伙伴關(guān)系列表。進(jìn)一步地,所述節(jié)點(diǎn)退出所述流媒體直播網(wǎng)絡(luò)的過(guò)程包括以下步驟所述節(jié)點(diǎn)向其伙伴和其所屬的超級(jí)節(jié)點(diǎn)發(fā)送離開(kāi)消息,通知所述伙伴和 所述超級(jí)節(jié)點(diǎn)將要離開(kāi)所述流媒體直播網(wǎng)絡(luò);所述伙伴收到所述離開(kāi)消息后將所述節(jié)點(diǎn)的信息從伙伴列表中刪除,所 述超級(jí)節(jié)點(diǎn)收到所述離開(kāi)消息后,將所述節(jié)點(diǎn)的信息從管理的節(jié)點(diǎn)列表當(dāng)中 刪除,同時(shí)通知管理下的其他普通節(jié)點(diǎn)以便更新它們的節(jié)點(diǎn)列表。進(jìn)一步地,所述服務(wù)器處理所述節(jié)點(diǎn)加入請(qǐng)求消息完成所述節(jié)點(diǎn)加入流 媒體直播網(wǎng)絡(luò)具體為服務(wù)器將所述節(jié)點(diǎn)作為超級(jí)節(jié)點(diǎn)加入到超級(jí)節(jié)點(diǎn)列表中,并通知所述節(jié) 點(diǎn)以超級(jí)節(jié)點(diǎn)的身份加入流媒體直播網(wǎng)絡(luò);以及所述節(jié)點(diǎn)以超級(jí)節(jié)點(diǎn)的身份加入的流媒體直播網(wǎng)絡(luò)中。進(jìn)一步地,所述節(jié)點(diǎn)選擇與自己在物理上相近的其他節(jié)點(diǎn)建立伙伴關(guān)系 的過(guò)程具體為當(dāng)所述節(jié)點(diǎn)作為超級(jí)節(jié)點(diǎn)時(shí),所述超級(jí)節(jié)點(diǎn)將自己所管理的普通節(jié)點(diǎn)中 可用帶寬較大并且性能好的節(jié)點(diǎn)加入到自己的伙伴列表中,與之建立伙伴關(guān) 系。進(jìn)一步地,所述節(jié)點(diǎn)選擇與自己在物理上相近的其他節(jié)點(diǎn)建立伙伴關(guān)系 的過(guò)程具體為
當(dāng)所述節(jié)點(diǎn)作為超級(jí)節(jié)點(diǎn)時(shí),所述超級(jí)節(jié)點(diǎn)向網(wǎng)絡(luò)中的節(jié)點(diǎn)請(qǐng)求建立伙 伴關(guān)系;被請(qǐng)求節(jié)點(diǎn)判斷自己的負(fù)載沒(méi)有超過(guò)限定值,且?guī)挶容^充足,和超級(jí)節(jié)點(diǎn)建立伙伴關(guān)系;被請(qǐng)求節(jié)點(diǎn)將已經(jīng)與自己建立伙伴關(guān)系的信息返回給超級(jí)節(jié)點(diǎn); 所述超級(jí)節(jié)點(diǎn)從返回的信息中選擇與自己之間延時(shí)小的節(jié)點(diǎn)發(fā)送建立伙伴關(guān)系的請(qǐng)求,建立伙伴關(guān)系列表。進(jìn)一步地,所述超級(jí)節(jié)點(diǎn)退出所述流媒體直播網(wǎng)絡(luò)的過(guò)程包括以下步驟: 所述超級(jí)節(jié)點(diǎn)向其伙伴和服務(wù)器發(fā)送離開(kāi)消息,通知伙伴和服務(wù)器自己將要離開(kāi)網(wǎng)絡(luò),所述伙伴收到所述離開(kāi)消息后將所述超級(jí)節(jié)點(diǎn)的信息從伙伴列表中刪除,服務(wù)器收到所述離開(kāi)消息后,在該超級(jí)節(jié)點(diǎn)管理下的普通節(jié)點(diǎn)列表中選取一個(gè)性能好的作為新的超級(jí)節(jié)點(diǎn);服務(wù)器將其他普通節(jié)點(diǎn)的信息發(fā)送給新的超級(jí)節(jié)點(diǎn)以使其來(lái)構(gòu)建節(jié)點(diǎn)列表;所述超級(jí)節(jié)點(diǎn)向所述普通節(jié)點(diǎn)發(fā)送通知消息通知它們由新的超級(jí)節(jié)點(diǎn)來(lái) 管理;普通節(jié)點(diǎn)根據(jù)所述通知消息更新自己節(jié)點(diǎn)列表當(dāng)中的超級(jí)節(jié)點(diǎn)信息。 本發(fā)明采用了服務(wù)器與超級(jí)節(jié)點(diǎn)兩層管理模式,充分的利用了客戶端的 性能,盡量使數(shù)據(jù)在底層物理網(wǎng)絡(luò)上相近的普通節(jié)點(diǎn)之間進(jìn)行傳輸,降低了 服務(wù)器與超級(jí)節(jié)點(diǎn)的負(fù)擔(dān),減少了帶寬的消耗,同時(shí)本發(fā)明將節(jié)點(diǎn)的管理與 數(shù)據(jù)的傳輸進(jìn)行了分離,使維護(hù)更加容易。本發(fā)明中超級(jí)節(jié)點(diǎn)與普通節(jié)點(diǎn)都 只需要管理那些自己需要的節(jié)點(diǎn)信息,并能夠很好的動(dòng)態(tài)的適應(yīng)網(wǎng)絡(luò)的變化, 具有良好的可擴(kuò)展性。
圖1為本發(fā)明基于超級(jí)節(jié)點(diǎn)的P2P直播方法所使用的P2P直播系統(tǒng)
的結(jié)構(gòu)圖;圖2為本發(fā)明基于超級(jí)節(jié)點(diǎn)的P2P直播方法的流程圖; 圖3為詳細(xì)介紹節(jié)點(diǎn)加入階段的兩種情況的流程圖; 圖4為描述超級(jí)節(jié)點(diǎn)與普通節(jié)點(diǎn)建立伙伴關(guān)系的過(guò)程; 圖5為節(jié)點(diǎn)與伙伴節(jié)點(diǎn)之間的數(shù)據(jù)傳輸流程圖。
具體實(shí)施方式
如圖1所示為本發(fā)明基于超級(jí)節(jié)點(diǎn)的P2P直播方法所使用的P2P直 播系統(tǒng),本發(fā)明的P2P直播系統(tǒng)是由服務(wù)器1,超級(jí)節(jié)點(diǎn)2 (SuperNode, SN)和普通節(jié)點(diǎn)3 (Ordinary Node, ON)組成的三層體系結(jié)構(gòu)。其中, 如圖所示普通節(jié)點(diǎn)3可以為位于局域網(wǎng)內(nèi)。服務(wù)器1主要完成媒體數(shù)據(jù)的分發(fā),管理超級(jí)節(jié)點(diǎn)2,處理新節(jié)點(diǎn)的 請(qǐng)求信息功能。數(shù)據(jù)分發(fā)對(duì)視頻流媒體數(shù)據(jù)進(jìn)行分段處理,并記錄相關(guān)的 分段信息,將流媒體數(shù)據(jù)傳輸給請(qǐng)求的節(jié)點(diǎn)。管理超級(jí)節(jié)點(diǎn)包括與超級(jí)節(jié) 點(diǎn)進(jìn)行通信和對(duì)超級(jí)節(jié)點(diǎn)列表進(jìn)行管理,服務(wù)器維護(hù)一個(gè)超級(jí)節(jié)點(diǎn)列表, 這個(gè)列表首先根據(jù)節(jié)點(diǎn)觀看的節(jié)目對(duì)節(jié)點(diǎn)進(jìn)行分類,對(duì)于觀看同一個(gè)節(jié)目 的節(jié)點(diǎn)再根據(jù)在網(wǎng)絡(luò)上所處的物理位置將節(jié)點(diǎn)進(jìn)行分類,將那些性能好的 節(jié)點(diǎn)設(shè)為超級(jí)節(jié)點(diǎn),每個(gè)超級(jí)節(jié)點(diǎn)管理那些在物理位置上與它相近的普通 節(jié)點(diǎn)。服務(wù)器動(dòng)態(tài)的管理這個(gè)列表,會(huì)定期的根據(jù)節(jié)點(diǎn)的性能從所有的節(jié) 點(diǎn)當(dāng)中選取超級(jí)節(jié)點(diǎn)進(jìn)行替換,根據(jù)節(jié)點(diǎn)的加入退出動(dòng)態(tài)的更新超級(jí)節(jié)點(diǎn) 列表并維護(hù)所有節(jié)點(diǎn)的信息。服務(wù)器會(huì)根據(jù)自己的負(fù)載情況進(jìn)行負(fù)載控制 使自己的負(fù)載不會(huì)過(guò)重,從而有效的為系統(tǒng)提供服務(wù)。對(duì)于新加入節(jié)點(diǎn)的 請(qǐng)求,服務(wù)器會(huì)根據(jù)節(jié)點(diǎn)所觀看的節(jié)目以及所處的地理位置進(jìn)行匹配,向 新節(jié)點(diǎn)返回一個(gè)匹配的超級(jí)節(jié)點(diǎn),通知其向返回的超級(jí)節(jié)點(diǎn)請(qǐng)求加入該超 級(jí)節(jié)點(diǎn)管理的覆蓋網(wǎng)絡(luò)當(dāng)中去。如果沒(méi)能匹配的超級(jí)節(jié)點(diǎn),服務(wù)器會(huì)通知 其以超級(jí)節(jié)點(diǎn)的身份加入到網(wǎng)絡(luò)當(dāng)中。 超級(jí)節(jié)點(diǎn)2主要完成數(shù)據(jù)傳輸,管理普通節(jié)點(diǎn)3,伙伴列表管理,新 節(jié)點(diǎn)加入請(qǐng)求信息的處理功能。數(shù)據(jù)傳輸與服務(wù)器的數(shù)據(jù)分發(fā)功能類似, 不同的是超級(jí)節(jié)點(diǎn)除了向其他節(jié)點(diǎn)提供數(shù)據(jù)傳輸外也像普通的客戶端一 樣進(jìn)行數(shù)據(jù)的下載進(jìn)行播放。超級(jí)節(jié)點(diǎn)維護(hù)兩個(gè)表, 一個(gè)是自己管理的普 通節(jié)點(diǎn)列表, 一個(gè)是伙伴列表,伙伴是指那些與自己觀看同一個(gè)節(jié)目并與自己進(jìn)行數(shù)據(jù)交換的節(jié)點(diǎn)。對(duì)于普通節(jié)點(diǎn)列表超級(jí)節(jié)點(diǎn)會(huì)根據(jù)節(jié)點(diǎn)的加入 退出等操作動(dòng)態(tài)的進(jìn)行更新并將這些更新信息通知給服務(wù)器以便服務(wù)器 進(jìn)行節(jié)點(diǎn)列表的更新。對(duì)于伙伴列表超級(jí)節(jié)點(diǎn)也會(huì)在必要的時(shí)候?qū)ζ溥M(jìn)行 更新,比如說(shuō)在一定的時(shí)間段內(nèi)沒(méi)有找到需要的某個(gè)數(shù)據(jù)段,這時(shí)會(huì)認(rèn)為自己的伙伴節(jié)點(diǎn)當(dāng)中沒(méi)有自己所請(qǐng)求的數(shù)據(jù),這時(shí)就需要進(jìn)行伙伴列表的 更新。當(dāng)有新的節(jié)點(diǎn)向超級(jí)節(jié)點(diǎn)發(fā)出請(qǐng)求時(shí),超級(jí)節(jié)點(diǎn)會(huì)將節(jié)點(diǎn)的相關(guān)信 息加入到自己的列表當(dāng)中,通知請(qǐng)求節(jié)點(diǎn)以普通節(jié)點(diǎn)身份加入自己管理的 覆蓋網(wǎng)絡(luò)。普通節(jié)點(diǎn)3主要完成數(shù)據(jù)傳輸,伙伴節(jié)點(diǎn)列表管理功能,通信管理功 能。其中數(shù)據(jù)傳輸和伙伴節(jié)點(diǎn)列表的管理功能與超級(jí)節(jié)點(diǎn)類似。通信管理 主要是和超級(jí)節(jié)點(diǎn)進(jìn)行通信,通知超級(jí)節(jié)點(diǎn)一些更新信息。P2P網(wǎng)絡(luò)當(dāng)中 的節(jié)點(diǎn)的加入與離開(kāi)是相當(dāng)?shù)念l繁的,為了保證節(jié)點(diǎn)確實(shí)是存在網(wǎng)絡(luò)當(dāng)中 的,每個(gè)普通節(jié)點(diǎn)都會(huì)定期的向超級(jí)節(jié)點(diǎn)發(fā)送自己的存活信息,當(dāng)節(jié)點(diǎn)正 常離開(kāi)時(shí)也會(huì)向超級(jí)節(jié)點(diǎn)發(fā)送離開(kāi)網(wǎng)絡(luò)的信息,使超級(jí)節(jié)點(diǎn)能夠及時(shí)的更 新節(jié)點(diǎn)列表對(duì)節(jié)點(diǎn)進(jìn)行有效的管理。如圖2所示為本發(fā)明基于超級(jí)節(jié)點(diǎn)的P2P直播方法的流程圖。如圖 所示該方法包括步驟10:節(jié)點(diǎn)向服務(wù)器發(fā)送期望節(jié)目的節(jié)點(diǎn)加入請(qǐng)求信 息,服務(wù)器處理所述節(jié)點(diǎn)加入請(qǐng)求消息完成所述節(jié)點(diǎn)加入流媒體直播網(wǎng) 絡(luò);以及步驟20:所述節(jié)點(diǎn)成功的加入到流媒體直播網(wǎng)絡(luò)之后,所述節(jié) 點(diǎn)選擇與自己在物理上相近的其他節(jié)點(diǎn)建立伙伴關(guān)系,再進(jìn)行數(shù)據(jù)的傳 輸。
即該基于超級(jí)節(jié)點(diǎn)的P2P直播方法首先可分為三個(gè)階段,第一階段 為節(jié)點(diǎn)加入階段即步驟IO所示的內(nèi)容,該節(jié)點(diǎn)加入階段包括兩種情況, 一種為服務(wù)器根據(jù)節(jié)點(diǎn)加入請(qǐng)求信息中所述節(jié)點(diǎn)要觀看的節(jié)目,到節(jié)目列 表中去匹配超級(jí)節(jié)點(diǎn);服務(wù)器將匹配成功的所述超級(jí)節(jié)點(diǎn)的信息返回給所述節(jié)點(diǎn),所述節(jié)點(diǎn)根據(jù)所述超級(jí)節(jié)點(diǎn)的信息,向所述超級(jí)節(jié)點(diǎn)發(fā)送所述節(jié) 點(diǎn)加入請(qǐng)求消息,所述超級(jí)節(jié)點(diǎn)響應(yīng)該節(jié)點(diǎn)加入請(qǐng)求消息以將所述節(jié)點(diǎn)作 為普通節(jié)點(diǎn)加入流媒體直播網(wǎng)絡(luò),并向所述節(jié)點(diǎn)返回所管理的普通節(jié)點(diǎn)的信息。另一種為服務(wù)器將所述節(jié)點(diǎn)作為超級(jí)節(jié)點(diǎn)加入到超級(jí)節(jié)點(diǎn)列表中, 并通知所述節(jié)點(diǎn)以超級(jí)節(jié)點(diǎn)的身份加入流媒體直播網(wǎng)絡(luò);以及所述節(jié)點(diǎn)以 超級(jí)節(jié)點(diǎn)的身份加入的流媒體直播網(wǎng)絡(luò)中。第二階段為伙伴關(guān)系建立階 段,第三階段為數(shù)據(jù)傳輸階段。第二階段和第三階段即步驟20所示內(nèi)容。具體參見(jiàn)圖3,下面詳細(xì)介紹節(jié)點(diǎn)加入階段的兩種情況。如圖所示,步驟301:節(jié)點(diǎn)向服務(wù)器發(fā)送節(jié)點(diǎn)加入請(qǐng)求信息;請(qǐng)求信息的內(nèi)容包括請(qǐng)求節(jié)點(diǎn)的IP地址、監(jiān)聽(tīng)的端口號(hào)、節(jié)點(diǎn)的hash ID值、節(jié)點(diǎn)的帶寬、處理器速度、內(nèi)存、節(jié)點(diǎn)請(qǐng)求的節(jié)目。其中節(jié)點(diǎn)的 hash ID值是由IP地和端口通過(guò)hash算法計(jì)算出來(lái)的,用來(lái)唯一標(biāo)識(shí)節(jié)點(diǎn), 節(jié)點(diǎn)的帶寬,處理器速度和內(nèi)存用來(lái)計(jì)算節(jié)點(diǎn)的性能。步驟302:與超級(jí)節(jié)點(diǎn)的匹配;服務(wù)器根據(jù)節(jié)點(diǎn)要觀看的節(jié)目到相應(yīng)的節(jié)目列表當(dāng)中去匹配超級(jí)節(jié) 點(diǎn),全球互聯(lián)網(wǎng)根據(jù)網(wǎng)絡(luò)服務(wù)提供商信息和地理信息分為多個(gè)層次,分別 表示ISP,城市、小區(qū)(或者高校),建筑。這些信息可以從免費(fèi)的或者 商用的IP地址到網(wǎng)絡(luò)位置信息的轉(zhuǎn)換數(shù)據(jù)庫(kù)中得到,根據(jù)得到的這些信 息為每個(gè)節(jié)點(diǎn)產(chǎn)生網(wǎng)絡(luò)一個(gè)位置標(biāo)志值,這個(gè)標(biāo)志值的長(zhǎng)度為40位,其 中0 15位表示公網(wǎng)和高校編號(hào),16 31位表示城市編號(hào),32 39位表 示ISP編號(hào)。匹配過(guò)程具體是用請(qǐng)求節(jié)點(diǎn)的標(biāo)志值與服務(wù)器列表當(dāng)中超級(jí) 節(jié)點(diǎn)的標(biāo)志值進(jìn)行比較,如果相同則認(rèn)為請(qǐng)求節(jié)點(diǎn)與該超級(jí)節(jié)點(diǎn)在同一個(gè) 物理網(wǎng)絡(luò)中或者說(shuō)在物理上它們是相近的。如果匹配成功則轉(zhuǎn)步驟303,否則執(zhí)行步驟307;步驟303:返回匹配的超級(jí)節(jié)點(diǎn)信息;服務(wù)器將匹配成功的超級(jí)節(jié)點(diǎn)信息返回給發(fā)起請(qǐng)求的節(jié)點(diǎn),返回的信息中包括超級(jí)節(jié)點(diǎn)的hashID值,IP地址,監(jiān)聽(tīng)端口等。同時(shí)服務(wù)器將請(qǐng)求節(jié)點(diǎn)的信息加入到服務(wù)器中的該超級(jí)節(jié)點(diǎn)列表中。步驟304:節(jié)點(diǎn)向超級(jí)節(jié)點(diǎn)發(fā)送節(jié)點(diǎn)加入請(qǐng)求消息;請(qǐng)求節(jié)點(diǎn)從服務(wù)器返回的超級(jí)節(jié)點(diǎn)的信息當(dāng)中取到超級(jí)節(jié)點(diǎn)的IP地 址與端口號(hào),向這個(gè)超級(jí)節(jié)點(diǎn)發(fā)送請(qǐng)求消息,消息的內(nèi)容與向服務(wù)器發(fā)送 的請(qǐng)求一樣。步驟305:超級(jí)節(jié)點(diǎn)處理請(qǐng)求超級(jí)節(jié)點(diǎn)判斷節(jié)點(diǎn)所處的網(wǎng)絡(luò)環(huán)境,如果檢測(cè)到請(qǐng)求節(jié)點(diǎn)是處于公網(wǎng)即步驟3051:是否處于防火墻后,如是處于公網(wǎng),則執(zhí)行步驟3053:超級(jí)節(jié)點(diǎn)將發(fā)起請(qǐng)求的節(jié)點(diǎn)信息加入到自己的節(jié)點(diǎn)列表中,否則節(jié)點(diǎn)是處于防火墻后的節(jié)點(diǎn),執(zhí)行步驟3052:超級(jí)節(jié)點(diǎn)通知其進(jìn)行NAT穿越,打開(kāi) 相關(guān)的服務(wù)端口,判斷NAT穿越是否成功,如果成功穿越,則執(zhí)行步驟 3053,超級(jí)節(jié)點(diǎn)將發(fā)起請(qǐng)求的請(qǐng)求節(jié)點(diǎn)的信息加入到自己的節(jié)點(diǎn)列表當(dāng) 中,否則執(zhí)行步驟3054,拒絕請(qǐng)求節(jié)點(diǎn)加入,加入失敗。 步驟306:返回普通節(jié)點(diǎn)信息;超級(jí)節(jié)點(diǎn)向發(fā)起請(qǐng)求的節(jié)點(diǎn)返回它所管理的普通節(jié)點(diǎn)的信息,這些普 通節(jié)點(diǎn)的信息為以后建立伙伴關(guān)系做準(zhǔn)備,請(qǐng)求節(jié)點(diǎn)以普通節(jié)點(diǎn)的身份加 入的網(wǎng)絡(luò)中去,執(zhí)行步驟309;步驟307:服務(wù)器將請(qǐng)求節(jié)點(diǎn)作為超級(jí)節(jié)點(diǎn)加入到超級(jí)節(jié)點(diǎn)列表中, 通知請(qǐng)求節(jié)點(diǎn)以超級(jí)節(jié)點(diǎn)的身份加入網(wǎng)絡(luò);步驟3 08:請(qǐng)求節(jié)點(diǎn)以超級(jí)節(jié)點(diǎn)的身份加入的網(wǎng)絡(luò)中;歩驟309:加入過(guò)程結(jié)束。
在最開(kāi)始的時(shí)候,網(wǎng)絡(luò)中只有服務(wù)器,當(dāng)?shù)谝粋€(gè)節(jié)點(diǎn)請(qǐng)求加入網(wǎng)絡(luò)時(shí), 服務(wù)器會(huì)根據(jù)節(jié)點(diǎn)請(qǐng)求的節(jié)目將該節(jié)點(diǎn)作為超級(jí)節(jié)點(diǎn)加入到節(jié)點(diǎn)列表當(dāng) 中,并通知節(jié)點(diǎn)以超級(jí)節(jié)點(diǎn)身份加入到網(wǎng)絡(luò),這時(shí)候媒體數(shù)據(jù)只有在服務(wù) 器與這個(gè)節(jié)點(diǎn)之間進(jìn)行傳輸。對(duì)于以后的新節(jié)點(diǎn)的加入過(guò)程都是一樣的。下面介紹該P(yáng)2P直播方法的第二階段一伙伴關(guān)系建立階段當(dāng)節(jié)點(diǎn)成功的加入到網(wǎng)絡(luò)之后,節(jié)點(diǎn)需要先建立伙伴關(guān)系再進(jìn)行數(shù)據(jù) 的傳輸。所謂的伙伴是指那與自己觀看相同的節(jié)目的并且愿意與自己進(jìn)行 數(shù)據(jù)交換的節(jié)點(diǎn),在本發(fā)明中節(jié)點(diǎn)不是與網(wǎng)絡(luò)中所有的觀看同一個(gè)節(jié)目的 節(jié)點(diǎn)建立伙伴關(guān)系,因?yàn)榫W(wǎng)絡(luò)的規(guī)模很大,網(wǎng)絡(luò)中觀看同一個(gè)節(jié)目的節(jié)點(diǎn) 很多, 一個(gè)節(jié)點(diǎn)并不需要與所有的節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的交換即可以滿足自己的 需求。節(jié)點(diǎn)在建立伙伴關(guān)系的過(guò)程中會(huì)通過(guò)選擇機(jī)制來(lái)盡量選擇那些與自 己在物理上相近的節(jié)點(diǎn)作為自己伙伴進(jìn)行數(shù)據(jù)的交換,這樣大大的減少了 服務(wù)器與超級(jí)節(jié)點(diǎn)的壓力,減小了底層物理傳輸?shù)膸捙c延時(shí)。在上述過(guò)程中,發(fā)起節(jié)點(diǎn)加入請(qǐng)求消息的節(jié)點(diǎn),在加入流媒體直播網(wǎng) 絡(luò)時(shí),可以以超級(jí)節(jié)點(diǎn)方式加入,也可以以普通節(jié)點(diǎn)方式加入。當(dāng)發(fā)起請(qǐng) 求的節(jié)點(diǎn)加入流媒體直播網(wǎng)絡(luò)后,需要建立伙伴來(lái)進(jìn)行數(shù)據(jù)交換。下面詳 細(xì)描述超級(jí)節(jié)點(diǎn)與普通節(jié)點(diǎn)建立伙伴關(guān)系的過(guò)程,如圖4所示步驟400:判斷節(jié)點(diǎn)類型分為普通節(jié)點(diǎn)和超級(jí)節(jié)點(diǎn),其中普通節(jié)點(diǎn)建 立過(guò)程包括步驟401:發(fā)送建立伙伴關(guān)系請(qǐng)求。所述節(jié)點(diǎn)首先向自己所屬的超級(jí)節(jié)點(diǎn)發(fā)送建立伙伴關(guān)系的請(qǐng)求。因?yàn)?服務(wù)器將網(wǎng)絡(luò)中的節(jié)點(diǎn)已經(jīng)按照節(jié)目對(duì)節(jié)點(diǎn)進(jìn)行了分類,所以在同一個(gè)超 級(jí)節(jié)點(diǎn)管理下的普通節(jié)點(diǎn)與超級(jí)節(jié)點(diǎn)觀看的都是同一個(gè)節(jié)目,這樣普通節(jié) 點(diǎn)可以直接向超級(jí)節(jié)點(diǎn)請(qǐng)求建立伙伴關(guān)系。步驟402:超級(jí)節(jié)點(diǎn)判斷是否建立伙伴關(guān)系超級(jí)節(jié)點(diǎn)是普通的用戶,除了提供服務(wù)外還要做一些自己的事情,所
以不能夠?qū)⒊?jí)節(jié)點(diǎn)的所有的硬件資源都用來(lái)提供服務(wù),本發(fā)發(fā)明的目標(biāo) 是使超級(jí)節(jié)點(diǎn)提供服務(wù)而不影響超級(jí)節(jié)點(diǎn)的正常工作,讓超級(jí)節(jié)點(diǎn)自己感 覺(jué)的是并沒(méi)有消耗太多的資源。所以在實(shí)踐中對(duì)超級(jí)節(jié)點(diǎn)的負(fù)載要進(jìn)行有 效的控制,使超級(jí)節(jié)點(diǎn)的負(fù)載值限定一個(gè)范圍內(nèi)。當(dāng)超級(jí)節(jié)點(diǎn)收到建立伙伴關(guān)系的請(qǐng)求后,判斷自己的負(fù)載與可用帶寬 情況,如果與請(qǐng)求節(jié)點(diǎn)建立伙伴關(guān)系后負(fù)載沒(méi)有超過(guò)限定值,并且可用帶 寬比較充足可以滿足節(jié)點(diǎn)的需求,則執(zhí)行步驟403:和請(qǐng)求節(jié)點(diǎn)建立伙伴 關(guān)系,否則就不與節(jié)點(diǎn)建立伙伴關(guān)系,執(zhí)行步驟404。步驟404:超級(jí)節(jié)點(diǎn)返回自己的伙伴信息無(wú)論請(qǐng)求節(jié)點(diǎn)與自己所屬的超級(jí)節(jié)點(diǎn)是否建立了伙伴關(guān)系,此時(shí)請(qǐng)求 節(jié)點(diǎn)的伙伴數(shù)目是不足以滿足需求的,所以超級(jí)節(jié)點(diǎn)會(huì)將已經(jīng)與自己建立 伙伴關(guān)系的信息返回給請(qǐng)求節(jié)點(diǎn),與超級(jí)節(jié)點(diǎn)建立伙伴關(guān)系的節(jié)點(diǎn)可能有 服務(wù)器、其他超級(jí)節(jié)點(diǎn)和自己管理的普通節(jié)點(diǎn),為了保證數(shù)據(jù)盡量的物理 上相近的節(jié)點(diǎn)之間進(jìn)行交換,超級(jí)節(jié)點(diǎn)會(huì)優(yōu)先選擇自己管理的普通節(jié)點(diǎn)返 回給請(qǐng)求節(jié)點(diǎn)。步驟405:節(jié)點(diǎn)收到超級(jí)節(jié)點(diǎn)返回的伙伴信息后,進(jìn)行選擇與自己在物理上相近的被請(qǐng)求節(jié)點(diǎn)作為伙伴;請(qǐng)求節(jié)點(diǎn)在收到超級(jí)節(jié)點(diǎn)返回的節(jié)點(diǎn)信息后,并不是立即向它們發(fā)出 建立伙伴關(guān)系的請(qǐng)求,而是進(jìn)行一定的選擇以保證伙伴與自己之間是相近 的。選擇的過(guò)程是請(qǐng)求節(jié)點(diǎn)檢査自己與這些節(jié)點(diǎn)之間的延遲,排除那些延 遲比較大的節(jié)點(diǎn),向剩下的節(jié)點(diǎn)發(fā)送建立伙伴關(guān)系的請(qǐng)求。步驟406:被請(qǐng)求節(jié)點(diǎn)判斷是否建立伙伴關(guān)系與超級(jí)節(jié)點(diǎn)一樣也要對(duì)普通節(jié)點(diǎn)的負(fù)載進(jìn)行一定的控制,接收到請(qǐng)求 的節(jié)點(diǎn)同樣檢査自己的負(fù)載與帶寬情況,如果有足夠的帶寬并且負(fù)載沒(méi)有 超過(guò)限定值,就與請(qǐng)求節(jié)點(diǎn)建立伙伴關(guān)系,否則將與自己已經(jīng)建立伙伴關(guān) 系的節(jié)點(diǎn)信息返回給請(qǐng)求節(jié)點(diǎn)。 在上述過(guò)程可以完成普通節(jié)點(diǎn)建立伙伴關(guān)系。 歩驟407:伙伴數(shù)目是否足夠經(jīng)過(guò)上述過(guò)程請(qǐng)求節(jié)點(diǎn)已經(jīng)和一些節(jié)點(diǎn)建立了伙伴關(guān)系,這些伙伴在 物理上與請(qǐng)求節(jié)點(diǎn)是相近的。此時(shí)請(qǐng)求節(jié)點(diǎn)會(huì)判斷自己的伙伴數(shù)目是是否 足以滿足自己的需求,如果伙伴的數(shù)目仍然比較小,請(qǐng)求節(jié)點(diǎn)會(huì)向自己所 屬的超級(jí)節(jié)點(diǎn)的其他伙伴中那些與自己延時(shí)小的節(jié)點(diǎn)發(fā)送建立伙伴關(guān)系 請(qǐng)求。步驟408:建立伙伴關(guān)系列表重復(fù)上述過(guò)程,即重復(fù)執(zhí)行歩驟401至步驟407,請(qǐng)求節(jié)點(diǎn)最終形成 自己的伙伴關(guān)系列表,這些伙伴在物理上是相近的,可以使傳輸延遲比較 小。其中,超級(jí)節(jié)點(diǎn)建立過(guò)程包括超級(jí)節(jié)點(diǎn)建立伙伴關(guān)系的過(guò)程和普通節(jié)點(diǎn)建立伙伴關(guān)系的過(guò)程有很 多相似的地方,這些地方將不再詳細(xì)的描述,主要對(duì)那些不同的地方進(jìn)行 描述,具體的建立過(guò)程包括兩種, 一種與自己管理的節(jié)點(diǎn)建立伙伴關(guān)系; 另一種為與網(wǎng)絡(luò)中的某個(gè)節(jié)點(diǎn)建立伙伴關(guān)系,具體如圖4所示,包括如 下步驟歩驟410:與自己管理的節(jié)點(diǎn)建立伙伴關(guān)系超級(jí)節(jié)點(diǎn)將自己所管理的普通節(jié)點(diǎn)當(dāng)中那些可用帶寬比較大并且性 能好的節(jié)點(diǎn)加入到自己的伙伴列表當(dāng)中,與之建立伙伴關(guān)系。步驟41h發(fā)送建立伙伴關(guān)系請(qǐng)求超級(jí)節(jié)點(diǎn)首先向網(wǎng)絡(luò)中的某個(gè)節(jié)點(diǎn)請(qǐng)求建立伙伴關(guān)系,對(duì)于超級(jí)節(jié)點(diǎn) 來(lái)說(shuō)這個(gè)節(jié)點(diǎn)最初的時(shí)候是服務(wù)器,對(duì)于本發(fā)明的方法中服務(wù)器主要是向 超級(jí)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的傳輸,給普通節(jié)點(diǎn)的數(shù)據(jù)傳輸是很少的。步驟412:判斷是否建立伙伴關(guān)系被請(qǐng)求節(jié)點(diǎn)判斷自己的負(fù)載與帶寬情況,如果負(fù)載沒(méi)有超過(guò)限定值,
帶寬比較充足,則執(zhí)行步驟415被請(qǐng)求節(jié)點(diǎn)與超級(jí)節(jié)點(diǎn)建立伙伴關(guān)系;如 果負(fù)載比較大或帶寬不夠,就不與超級(jí)節(jié)點(diǎn)建立伙伴關(guān)系,執(zhí)行歩驟413。 步驟413:被請(qǐng)求節(jié)點(diǎn)返回自己的伙伴信息被請(qǐng)求節(jié)點(diǎn)將已經(jīng)與自己建立伙伴關(guān)系的信息返回給超級(jí)節(jié)點(diǎn)。 步驟414:超級(jí)節(jié)點(diǎn)將返回的節(jié)點(diǎn)信息當(dāng)中,排除那些與自己延時(shí)比 較大的,向剩下的節(jié)點(diǎn)發(fā)送建立伙伴關(guān)系的請(qǐng)求,具體過(guò)程同步驟405-408,形成伙伴關(guān)系列表,重復(fù)上述過(guò)程,超級(jí)節(jié)點(diǎn)最終形成自己的 伙伴關(guān)系列表,這些伙伴在物理上是相近的。在建立伙伴關(guān)系之后,節(jié)點(diǎn)就可以向伙伴節(jié)點(diǎn)請(qǐng)求數(shù)據(jù)進(jìn)行數(shù)據(jù)的交 換了。參見(jiàn)圖5示出了第三階段一數(shù)據(jù)傳輸階段的流程圖。本發(fā)明對(duì)于數(shù)據(jù)的管理采用緩存映射BM (Buffer Map)方式,這是現(xiàn) 有的P2P流媒體普遍采用的一種數(shù)據(jù)管理方式。該方式中將視頻流媒體數(shù) 據(jù)分割成大小相同的數(shù)據(jù)片斷,用一個(gè)緩存映射來(lái)存儲(chǔ)相關(guān)片斷的信息, 說(shuō)明自己對(duì)于某個(gè)數(shù)據(jù)片斷的擁有情況,節(jié)點(diǎn)之間交換數(shù)據(jù)是通過(guò)檢查彼 此的BM來(lái)進(jìn)行的。具體實(shí)現(xiàn)中每個(gè)節(jié)點(diǎn)都會(huì)緩存一段時(shí)間的數(shù)據(jù),BM 用一個(gè)bit來(lái)表示節(jié)點(diǎn)對(duì)于一個(gè)數(shù)據(jù)片斷擁有的情況,1表示節(jié)點(diǎn)擁有這 個(gè)數(shù)據(jù)片斷,0表示沒(méi)有這個(gè)數(shù)據(jù)片斷。本階段節(jié)點(diǎn)根據(jù)需要的流媒體數(shù)據(jù)片斷來(lái)對(duì)其伙伴節(jié)點(diǎn)進(jìn)行數(shù)據(jù)片斷 的查詢請(qǐng)求,被請(qǐng)求的伙伴節(jié)點(diǎn)會(huì)根據(jù)BM當(dāng)中的信息查看自己是否擁有 這個(gè)數(shù)據(jù)片斷,如果擁有就會(huì)返回信息通知請(qǐng)求節(jié)點(diǎn)自己擁有這個(gè)數(shù)據(jù)片 斷,事實(shí)上擁有某個(gè)數(shù)據(jù)片斷的伙伴節(jié)點(diǎn)往往不只一個(gè),這樣從哪個(gè)節(jié)點(diǎn) 獲取這個(gè)數(shù)據(jù)片斷節(jié)點(diǎn)會(huì)進(jìn)行選擇,為了保證數(shù)據(jù)片斷在截止時(shí)間之前獲 得,節(jié)點(diǎn)會(huì)選擇那些與自己的延遲小的節(jié)點(diǎn)來(lái)進(jìn)行數(shù)據(jù)交換。如圖5所示節(jié)點(diǎn)與伙伴節(jié)點(diǎn)之間的數(shù)據(jù)傳輸流程圖,本階段的具體步 驟如下步驟501:形成數(shù)據(jù)片斷集合 建立伙伴關(guān)系之后,節(jié)點(diǎn)開(kāi)始請(qǐng)求節(jié)目,此時(shí)節(jié)點(diǎn)會(huì)形成一個(gè)所需的 媒體數(shù)據(jù)片斷相關(guān)信息的集合,因?yàn)楣?jié)點(diǎn)需要的數(shù)據(jù)片斷會(huì)隨著時(shí)間的前 進(jìn)而不斷的變化,獲取到的數(shù)據(jù)片斷信息會(huì)從這個(gè)集合里刪除,而新的請(qǐng) 求數(shù)據(jù)片斷信息會(huì)加入到這個(gè)集合。步驟502:節(jié)點(diǎn)發(fā)起數(shù)據(jù)請(qǐng)求節(jié)點(diǎn)首先在這個(gè)集合當(dāng)中選取一個(gè)數(shù)據(jù)片斷然后,發(fā)起數(shù)據(jù)請(qǐng)求在伙 伴節(jié)點(diǎn)當(dāng)中進(jìn)行査找。歩驟503:伙伴節(jié)點(diǎn)返回響應(yīng)伙伴節(jié)點(diǎn)根據(jù)節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)片斷來(lái)對(duì)査看自己的BM,如果發(fā)現(xiàn)自己擁有這個(gè)數(shù)據(jù)片斷,便向請(qǐng)求節(jié)點(diǎn)發(fā)送一個(gè)響應(yīng),告知節(jié)點(diǎn)自己擁有這 個(gè)數(shù)據(jù)片斷,如果沒(méi)有這個(gè)數(shù)據(jù)片斷則返回不擁有該片斷的響應(yīng)。步驟504:節(jié)點(diǎn)選取伙伴節(jié)點(diǎn)請(qǐng)求節(jié)點(diǎn)判斷擁有請(qǐng)求數(shù)據(jù)片斷的節(jié)點(diǎn)的數(shù)目,如果擁有該片斷的節(jié)點(diǎn)數(shù)目大于一個(gè),則執(zhí)行步驟505在這些節(jié)點(diǎn)當(dāng)中選取與自己延時(shí)最小的 節(jié)點(diǎn),如果只有一個(gè)節(jié)點(diǎn)轉(zhuǎn)步驟506,如果沒(méi)有擁有這個(gè)數(shù)據(jù)片斷的節(jié)點(diǎn) 轉(zhuǎn)步驟508。歩驟506:節(jié)點(diǎn)進(jìn)行數(shù)據(jù)傳輸請(qǐng)求節(jié)點(diǎn)向選取的節(jié)點(diǎn)發(fā)送數(shù)據(jù)傳輸?shù)恼?qǐng)求,被選取的節(jié)點(diǎn)將擁有的 這個(gè)數(shù)據(jù)片斷傳給數(shù)據(jù)請(qǐng)求節(jié)點(diǎn)。 步驟507:節(jié)點(diǎn)進(jìn)行更新集合請(qǐng)求節(jié)點(diǎn)收到該數(shù)據(jù)片斷后從集合中將該數(shù)據(jù)片斷信息刪除,并根據(jù) 時(shí)間信息將新的需要的數(shù)據(jù)片斷的信息加入的集合當(dāng)中,轉(zhuǎn)步驟502。 步驟508:未查找到數(shù)據(jù)片斷的處理對(duì)于每個(gè)數(shù)據(jù)片斷本發(fā)明會(huì)記錄最開(kāi)始發(fā)出査詢請(qǐng)求時(shí)間,以此來(lái)跟 蹤數(shù)據(jù)片斷從最開(kāi)始査詢所經(jīng)過(guò)的時(shí)間。當(dāng)沒(méi)有找到數(shù)據(jù)片斷的擁有者, 判斷這個(gè)時(shí)間是否超過(guò)了規(guī)定時(shí)間T如20秒,如果發(fā)現(xiàn)超過(guò)了這個(gè)值,
則執(zhí)行步驟508認(rèn)為在節(jié)點(diǎn)的伙伴當(dāng)中沒(méi)有這個(gè)數(shù)據(jù)片斷的擁有者,從而 節(jié)點(diǎn)進(jìn)行伙伴列表的更新,然后轉(zhuǎn)步驟502,如果沒(méi)有超過(guò)這個(gè)值,則直 接轉(zhuǎn)步驟502等待下一次査詢。本發(fā)明通過(guò)引入超級(jí)節(jié)點(diǎn)來(lái)分擔(dān)服務(wù)器的控制負(fù)載,使服務(wù)器能夠更 好的為系統(tǒng)提供有效的媒體數(shù)據(jù)分發(fā),系統(tǒng)中超級(jí)節(jié)點(diǎn)會(huì)管理那些與自己 在物理網(wǎng)絡(luò)上相近的節(jié)點(diǎn),這樣就可以使得在用戶數(shù)目比較多的情況下用 戶基本上從那些與自己在物理上相近的用戶上獲得數(shù)據(jù),從而降低了服務(wù) 器的連接壓力以及數(shù)據(jù)傳輸?shù)难舆t,這樣可以大大減少底層網(wǎng)絡(luò)帶寬的耗 費(fèi),提高服務(wù)質(zhì)量的性能。本發(fā)明基于超級(jí)節(jié)點(diǎn)的P2P直播方法除了上述三個(gè)階段之外,還包括 節(jié)點(diǎn)離開(kāi)流媒體直播網(wǎng)絡(luò)這個(gè)階段。下面將介紹節(jié)點(diǎn)離開(kāi)流媒體直播網(wǎng)絡(luò) 階段的詳細(xì)過(guò)程。該過(guò)程包括普通節(jié)點(diǎn)和超級(jí)節(jié)點(diǎn)正常或異常的離開(kāi)網(wǎng) 絡(luò)。普通節(jié)點(diǎn)的正常離開(kāi)過(guò)程簡(jiǎn)單,離開(kāi)的節(jié)點(diǎn)向其伙伴和其所屬的超級(jí) 節(jié)點(diǎn)發(fā)送離開(kāi)的消息,通知它們自己將要離開(kāi)流媒體直播網(wǎng)絡(luò),伙伴節(jié)點(diǎn) 收到此消息后將該節(jié)點(diǎn)的信息從自己的伙伴列表當(dāng)中刪除,超級(jí)節(jié)點(diǎn)收到 此消息后將該節(jié)點(diǎn)的信息從管理的節(jié)點(diǎn)列表當(dāng)中刪除,同時(shí)通知管理下的 其他普通節(jié)點(diǎn)以便它們更新自己的節(jié)點(diǎn)列表。此時(shí)超級(jí)節(jié)點(diǎn)并不向服務(wù)器 發(fā)送節(jié)點(diǎn)的離開(kāi)信息,因?yàn)樵赑2P網(wǎng)絡(luò)中節(jié)點(diǎn)隨時(shí)都可以離開(kāi),而節(jié)點(diǎn)離 開(kāi)也比較頻繁,為了減輕服務(wù)器在節(jié)點(diǎn)管理方面的開(kāi)銷超級(jí)節(jié)點(diǎn)采用在向 超服務(wù)器發(fā)送心跳信息時(shí)同時(shí)發(fā)送節(jié)點(diǎn)列表的更新信息。超級(jí)節(jié)點(diǎn)的正常離開(kāi)首先其伙伴和向服務(wù)器發(fā)送離開(kāi)的消息,通知它 們自己將要離開(kāi)網(wǎng)絡(luò),伙伴收到此消息后將該超級(jí)節(jié)點(diǎn)的信息從伙伴列表 中刪除,服務(wù)器收到此消息后會(huì)在該超級(jí)節(jié)點(diǎn)管理下的普通節(jié)點(diǎn)列表當(dāng)中 選取一個(gè)性能好的作為新的超級(jí)節(jié)點(diǎn)來(lái)接管這些普通節(jié)點(diǎn),同時(shí)通知選擇 的節(jié)點(diǎn)向超級(jí)節(jié)點(diǎn)的轉(zhuǎn)換。服務(wù)器將其他普通節(jié)點(diǎn)的信息發(fā)送給新的超級(jí)
節(jié)點(diǎn)以使其來(lái)構(gòu)建節(jié)點(diǎn)列表,超級(jí)節(jié)點(diǎn)收到這些信息后會(huì)向管理的普通節(jié) 點(diǎn)發(fā)送消息通知它們由新的超級(jí)節(jié)點(diǎn)來(lái)管理,普通節(jié)點(diǎn)會(huì)根據(jù)這個(gè)消息更 新自己節(jié)點(diǎn)列表當(dāng)中的超級(jí)節(jié)點(diǎn)信息,以后服務(wù)器與這些普通節(jié)點(diǎn)便與新 的超級(jí)節(jié)點(diǎn)進(jìn)行通信。節(jié)點(diǎn)的異常離開(kāi)與正常離開(kāi)的主要區(qū)別是節(jié)點(diǎn)離開(kāi)的發(fā)現(xiàn),發(fā)現(xiàn)節(jié)點(diǎn) 離開(kāi)后的處理與正常離開(kāi)節(jié)點(diǎn)直接通知超級(jí)節(jié)點(diǎn)或者服務(wù)器后的處理過(guò) 程是一樣的,所以這里只對(duì)節(jié)點(diǎn)異常離開(kāi)的發(fā)現(xiàn)來(lái)進(jìn)行描述。普通節(jié)點(diǎn)的異常離開(kāi),普通節(jié)點(diǎn)的異常離開(kāi)在兩種情況下會(huì)被發(fā)現(xiàn)。 在本發(fā)明中普通節(jié)點(diǎn)要定期的向超級(jí)節(jié)點(diǎn)發(fā)送自己的存活信息,而超級(jí)節(jié) 點(diǎn)保存了自己管理的每個(gè)普通節(jié)點(diǎn)的最后發(fā)送存活信息的時(shí)間,超級(jí)節(jié)點(diǎn) 會(huì)定期的檢査這個(gè)時(shí)間,如果發(fā)現(xiàn)某個(gè)節(jié)點(diǎn)長(zhǎng)時(shí)間沒(méi)有發(fā)送存活信息就認(rèn) 為該節(jié)點(diǎn)已經(jīng)離開(kāi)了網(wǎng)絡(luò)。另一種情況是伙伴節(jié)點(diǎn)連續(xù)向某個(gè)節(jié)點(diǎn)發(fā)送數(shù) 據(jù)請(qǐng)求而沒(méi)有得到回應(yīng)就認(rèn)為這個(gè)節(jié)點(diǎn)已經(jīng)離開(kāi)網(wǎng)絡(luò),這時(shí)會(huì)通知超級(jí)節(jié) 點(diǎn)此節(jié)點(diǎn)己經(jīng)離開(kāi)的消息,超級(jí)節(jié)進(jìn)行探測(cè)如果沒(méi)有響應(yīng)則確定該節(jié)點(diǎn)己 經(jīng)離開(kāi)網(wǎng)絡(luò)。超級(jí)節(jié)點(diǎn)的異常離開(kāi)的發(fā)現(xiàn)與普通節(jié)點(diǎn)的離開(kāi)的發(fā)現(xiàn)有些類似,超級(jí) 節(jié)點(diǎn)會(huì)定期的向服務(wù)器發(fā)送自己的存活信息,這樣服務(wù)器可以發(fā)現(xiàn)超級(jí)節(jié) 點(diǎn)的離開(kāi),超級(jí)節(jié)點(diǎn)與普通節(jié)點(diǎn)一樣與伙伴節(jié)點(diǎn)之間進(jìn)行數(shù)據(jù)的交換,其 伙伴也會(huì)發(fā)現(xiàn)超級(jí)節(jié)點(diǎn)的導(dǎo)演離開(kāi)。另外普通節(jié)點(diǎn)會(huì)動(dòng)態(tài)的向超級(jí)節(jié)點(diǎn)發(fā) 送更新伙伴列表的請(qǐng)求,如果超級(jí)節(jié)點(diǎn)沒(méi)有響應(yīng)就向服務(wù)器發(fā)送該超級(jí)節(jié) 點(diǎn)離開(kāi)網(wǎng)絡(luò)的消息。服務(wù)器會(huì)進(jìn)行相應(yīng)的更新處理。通過(guò)以上的處理能夠及時(shí)的發(fā)現(xiàn)網(wǎng)絡(luò)中的動(dòng)態(tài)信息而進(jìn)行有效的更 新,從而可以動(dòng)態(tài)的適應(yīng)網(wǎng)絡(luò)的變化,使得網(wǎng)絡(luò)受到節(jié)點(diǎn)的退出的影響很 小。因此,本發(fā)明使數(shù)據(jù)在底層物理網(wǎng)絡(luò)上相近的普通節(jié)點(diǎn)之間進(jìn)行傳 輸,減少了數(shù)據(jù)轉(zhuǎn)發(fā)過(guò)程中的跳數(shù)以及時(shí)延;又由于本發(fā)明采用了分層的系統(tǒng)架構(gòu),從而降低了主服務(wù)器負(fù)擔(dān),減少了帶寬的消耗;同時(shí)本發(fā)明將 節(jié)點(diǎn)的管理與數(shù)據(jù)的傳輸進(jìn)行了分離,使維護(hù)更加容易。
最后所應(yīng)說(shuō)明的是,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限 制,盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人 員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離 本發(fā)明技術(shù)方案的精神和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng) 中。
權(quán)利要求
1、一種基于超級(jí)節(jié)點(diǎn)的P2P直播方法,其特征在于包括節(jié)點(diǎn)向服務(wù)器發(fā)送期望節(jié)目的節(jié)點(diǎn)加入請(qǐng)求信息,服務(wù)器處理所述節(jié)點(diǎn)加入請(qǐng)求消息完成所述節(jié)點(diǎn)加入流媒體直播網(wǎng)絡(luò);以及所述節(jié)點(diǎn)成功的加入到流媒體直播網(wǎng)絡(luò)之后,所述節(jié)點(diǎn)選擇與自己在物理上相近的其他節(jié)點(diǎn)建立伙伴關(guān)系,再進(jìn)行數(shù)據(jù)的傳輸。
2、 根據(jù)權(quán)利要求1所述的基于超級(jí)節(jié)點(diǎn)的P2P直播方法,其特征在于 還包括所述節(jié)點(diǎn)退出所述流媒體直播網(wǎng)絡(luò)。
3、 根據(jù)權(quán)利要求1或2所述的基于超級(jí)節(jié)點(diǎn)的P2P直播方法,其特征 在于所述服務(wù)器處理所述節(jié)點(diǎn)加入請(qǐng)求消息完成所述節(jié)點(diǎn)加入流媒體直播 網(wǎng)絡(luò)具體為服務(wù)器根據(jù)節(jié)點(diǎn)加入請(qǐng)求信息中所述節(jié)點(diǎn)要觀看的節(jié)目,到節(jié)目列表中 去匹配超級(jí)節(jié)點(diǎn);服務(wù)器將匹配成功的所述超級(jí)節(jié)點(diǎn)的信息返回給所述節(jié)點(diǎn),所述節(jié)點(diǎn)根 據(jù)所述超級(jí)節(jié)點(diǎn)的信息,向所述超級(jí)節(jié)點(diǎn)發(fā)送所述節(jié)點(diǎn)加入請(qǐng)求消息,所 述超級(jí)節(jié)點(diǎn)響應(yīng)該節(jié)點(diǎn)加入請(qǐng)求消息以將所述節(jié)點(diǎn)作為普通節(jié)點(diǎn)加入流媒 體直播網(wǎng)絡(luò),并向所述節(jié)點(diǎn)返回所管理的普通節(jié)點(diǎn)的信息。
4、 根據(jù)權(quán)利要求3所述的基于超級(jí)節(jié)點(diǎn)的P2P直播方法,其特征在于 所述匹配超級(jí)節(jié)點(diǎn)的過(guò)程具體為將所述節(jié)點(diǎn)的標(biāo)志值與服務(wù)器列表中的超級(jí)節(jié)點(diǎn)的標(biāo)志值進(jìn)行比較,如 果相同,則節(jié)點(diǎn)與該超級(jí)節(jié)點(diǎn)處于同一個(gè)物理網(wǎng)絡(luò)中或者在物理上相近完 成匹配。
5、 根據(jù)權(quán)利要求4所述的基于超級(jí)節(jié)點(diǎn)的P2P直播方法,其特征在于 所述節(jié)點(diǎn)選擇與自己在物理上相近的其他節(jié)點(diǎn)建立伙伴關(guān)系的過(guò)程具體 為所述節(jié)點(diǎn)向超級(jí)節(jié)點(diǎn)發(fā)送建立伙伴關(guān)系請(qǐng)求; 超級(jí)節(jié)點(diǎn)根據(jù)所述建立伙伴關(guān)系請(qǐng)求返回自己的伙伴信息; 所述節(jié)點(diǎn)收到超級(jí)節(jié)點(diǎn)返回的伙伴信息后,從中選擇與自己在物理上相近的節(jié)點(diǎn)并請(qǐng)求作為其伙伴;被請(qǐng)求節(jié)點(diǎn)判斷有足夠的帶寬并且負(fù)載沒(méi)有超過(guò)限定值,則與請(qǐng)求節(jié)點(diǎn)建立伙伴關(guān)系。
6、 根據(jù)權(quán)利要求5所述的基于超級(jí)節(jié)點(diǎn)的P2P直播方法,其特征在于 在所述節(jié)點(diǎn)向超級(jí)節(jié)點(diǎn)發(fā)送建立伙伴關(guān)系請(qǐng)求和超級(jí)節(jié)點(diǎn)根據(jù)所述建立伙 伴關(guān)系請(qǐng)求返回自己的伙伴信息之間還包括當(dāng)超級(jí)節(jié)點(diǎn)收到建立伙伴關(guān)系的請(qǐng)求后,判斷與所述節(jié)點(diǎn)建立伙伴關(guān)系 后負(fù)載沒(méi)有超過(guò)限定值,并且可用帶寬滿足所述節(jié)點(diǎn)的需求,則和所述節(jié) 點(diǎn)建立伙伴關(guān)系。
7、 根據(jù)權(quán)利要求5或6所述的基于超級(jí)節(jié)點(diǎn)的P2P直播方法,其特征 在于在所述被請(qǐng)求節(jié)點(diǎn)判斷有足夠的帶寬并且負(fù)載沒(méi)有超過(guò)限定值,與請(qǐng) 求節(jié)點(diǎn)建立伙伴關(guān)系之后還包括以下步驟所述節(jié)點(diǎn)判斷自己的伙伴數(shù)目是否足以滿足自己的需求,如果伙伴的數(shù) 目仍然比較小,所述節(jié)點(diǎn)向與自己之間延時(shí)小的節(jié)點(diǎn)發(fā)送建立伙伴關(guān)系請(qǐng) 求,建立伙伴關(guān)系列表。
8、 根據(jù)權(quán)利要求7所述的基于超級(jí)節(jié)點(diǎn)的P2P直播方法,其特征在于 所述節(jié)點(diǎn)退出所述流媒體直播網(wǎng)絡(luò)的過(guò)程包括以下歩驟所述節(jié)點(diǎn)向其伙伴和其所屬的超級(jí)節(jié)點(diǎn)發(fā)送離開(kāi)消息,通知所述伙伴和所述超級(jí)節(jié)點(diǎn)將要離開(kāi)所述流媒體直播網(wǎng)絡(luò);所述伙伴收到所述離開(kāi)消息后將所述節(jié)點(diǎn)的信息從伙伴列表中刪除,所 述超級(jí)節(jié)點(diǎn)收到所述離開(kāi)消息后,將所述節(jié)點(diǎn)的信息從管理的節(jié)點(diǎn)列表當(dāng) 中刪除,同時(shí)通知管理下的其他普通節(jié)點(diǎn)以便更新它們的節(jié)點(diǎn)列表。
9、 根據(jù)權(quán)利要求1或2所述的基于超級(jí)節(jié)點(diǎn)的P2P直播方法,其特征 在于所述服務(wù)器處理所述節(jié)點(diǎn)加入請(qǐng)求消息完成所述節(jié)點(diǎn)加入流媒體直播網(wǎng)絡(luò)具體為服務(wù)器將所述節(jié)點(diǎn)作為超級(jí)節(jié)點(diǎn)加入到超級(jí)節(jié)點(diǎn)列表中,并通知所述節(jié) 點(diǎn)以超級(jí)節(jié)點(diǎn)的身份加入流媒體直播網(wǎng)絡(luò);以及所述節(jié)點(diǎn)以超級(jí)節(jié)點(diǎn)的身份加入的流媒體直播網(wǎng)絡(luò)中。
10、根據(jù)權(quán)利要求9所述的基于超級(jí)節(jié)點(diǎn)的P2P直播方法,其特征在于所述節(jié)點(diǎn)選擇與自己在物理上相近的其他節(jié)點(diǎn)建立伙伴關(guān)系的過(guò)程具體 為..當(dāng)所述節(jié)點(diǎn)作為超級(jí)節(jié)點(diǎn)時(shí),所述超級(jí)節(jié)點(diǎn)將自己所管理的普通節(jié)點(diǎn)中 可用帶寬較大并且性能好的節(jié)點(diǎn)加入到自己的伙伴列表中,與之建立伙伴 關(guān)系。
全文摘要
本發(fā)明涉及一種基于超級(jí)節(jié)點(diǎn)的P2P直播方法,該方法包括節(jié)點(diǎn)向服務(wù)器發(fā)送期望節(jié)目的節(jié)點(diǎn)加入請(qǐng)求信息,服務(wù)器處理所述節(jié)點(diǎn)加入請(qǐng)求消息完成所述節(jié)點(diǎn)加入流媒體直播網(wǎng)絡(luò);以及所述節(jié)點(diǎn)成功的加入到流媒體直播網(wǎng)絡(luò)之后,所述節(jié)點(diǎn)選擇與自己在物理上相近的其他節(jié)點(diǎn)建立伙伴關(guān)系,再進(jìn)行數(shù)據(jù)的傳輸。因此,本發(fā)明使數(shù)據(jù)在底層物理網(wǎng)絡(luò)上相近的普通節(jié)點(diǎn)之間進(jìn)行傳輸,減少了數(shù)據(jù)轉(zhuǎn)發(fā)過(guò)程中的跳數(shù)以及時(shí)延;又由于本發(fā)明采用了分層的系統(tǒng)架構(gòu),從而降低了主服務(wù)器負(fù)擔(dān),減少了帶寬的消耗;同時(shí)本發(fā)明將節(jié)點(diǎn)的管理與數(shù)據(jù)的傳輸進(jìn)行了分離,使維護(hù)更加容易。
文檔編號(hào)H04L12/46GK101127619SQ200710053429
公開(kāi)日2008年2月20日 申請(qǐng)日期2007年9月29日 優(yōu)先權(quán)日2007年9月29日
發(fā)明者盧正新, 明久強(qiáng), 軍 楊, 王芙蓉, 莫益軍, 辰 黃 申請(qǐng)人:華中科技大學(xué)