專利名稱:一種基于P2P網(wǎng)絡(luò)的FBStream流媒體直播模型的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種P2P流媒體直播技術(shù)領(lǐng)域,特別涉及一種基于 P2P網(wǎng)絡(luò)的FBStream流媒體直播模型。
背景技術(shù):
近幾年來(lái),對(duì)等網(wǎng)絡(luò)(Peer-to-Peer Network,簡(jiǎn)稱P2P)逐漸成 為計(jì)算機(jī)界研究的熱門話題之一,P2P技術(shù)將許多用戶結(jié)合成為一個(gè) 網(wǎng)絡(luò),共享其中的帶寬,共同處理其中的信息。P2P網(wǎng)絡(luò)中的每個(gè)節(jié) 點(diǎn)即是資源或服務(wù)的請(qǐng)求者,同時(shí)又是資源或服務(wù)的提供者。P2P網(wǎng) 絡(luò)中每一個(gè)節(jié)點(diǎn)所擁有的權(quán)利和義務(wù)都是對(duì)等的,包括通信、服務(wù)和 資源消耗等。將P2P引入流媒體服務(wù)中,可以解決傳統(tǒng)C/S模式所帶 來(lái)的較大的i/o負(fù)載壓力、可擴(kuò)展性差和系統(tǒng)部署成本高等問(wèn)題,從 而減輕服務(wù)器負(fù)載并支持更大范圍流媒體發(fā)布。
在對(duì)等網(wǎng)絡(luò)下,如何能實(shí)現(xiàn)高效、低延遲的流媒體傳輸一直是 P2P流媒體的研究核心。
P2P流媒體系統(tǒng)按照其播送方式可分為直播系統(tǒng)和點(diǎn)播系統(tǒng)。在 P2P流媒體直播服務(wù)中,用戶只能按照節(jié)目列表收看當(dāng)前正在播放的 節(jié)目,交互性少,實(shí)現(xiàn)相對(duì)簡(jiǎn)單,因?yàn)橛脩粲^看同一個(gè)節(jié)目,內(nèi)容趨 同,因而能夠充分利用P2P的傳遞能力,P2P直播是最能體現(xiàn)P2P 價(jià)值,因而P2P直播模型發(fā)展很快。在P2P流媒體點(diǎn)播服務(wù)中,用 戶可以選擇節(jié)目列表中的任意節(jié)目觀看,在點(diǎn)播領(lǐng)域,P2P技術(shù)的發(fā) 展速度相對(duì)緩慢, 一方面是由于點(diǎn)播中的高度交互性的實(shí)現(xiàn)復(fù)雜度高,另一方面是節(jié)目源版權(quán)因素對(duì)P2P點(diǎn)播技術(shù)的阻礙。
對(duì)于P2P流媒體直播模型的研究雖然已經(jīng)取得了一定的成果,但 是由于網(wǎng)絡(luò)的復(fù)雜性和動(dòng)態(tài)性,使得P2P流媒體直播系統(tǒng)的流媒體分 發(fā)效果沒(méi)有達(dá)到令人滿意的程度。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)存在的不足,提供一種基于 P2P網(wǎng)絡(luò)的FBStream流媒體直播模型,在DONet模型的基礎(chǔ)上通過(guò) 節(jié)點(diǎn)管理、數(shù)據(jù)調(diào)度策略以及伙伴的管理三個(gè)方面的優(yōu)化來(lái)實(shí)現(xiàn)一 個(gè)低時(shí)延、高網(wǎng)絡(luò)帶寬利用率的P2P流媒體的傳輸。
本發(fā)明的目的通過(guò)以下技術(shù)方案予以實(shí)現(xiàn)
一種基于P2P網(wǎng)絡(luò)的FBStream流媒體直播模型,采用網(wǎng)狀的拓 撲結(jié)構(gòu),模型分為服務(wù)器端和客戶端。
所述的FBStream模型的服務(wù)器用來(lái)協(xié)調(diào)節(jié)點(diǎn)間的控制信息,職 責(zé)為
(1)維護(hù)和更新所有節(jié)點(diǎn)的列表,其中列表由三部分組成標(biāo)記 節(jié)點(diǎn)唯一的節(jié)點(diǎn)ID,節(jié)點(diǎn)的信息,包括節(jié)點(diǎn)IP以及節(jié)點(diǎn)加入 時(shí)間;
所述的維護(hù)節(jié)點(diǎn)列表信息又包括
A. 新節(jié)點(diǎn)加入,收到新節(jié)點(diǎn)的加入請(qǐng)求后,服務(wù)器把新節(jié)點(diǎn)信 息加入節(jié)點(diǎn)列表;
B. 節(jié)點(diǎn)的正常退出,服務(wù)器收到節(jié)點(diǎn)的退出請(qǐng)求時(shí),簡(jiǎn)單的從 節(jié)點(diǎn)列表刪除該節(jié)點(diǎn)信息;C.節(jié)點(diǎn)的非正常退出,每個(gè)節(jié)點(diǎn)需要周期性的向服務(wù)器發(fā)送消 息說(shuō)明自己工作正常,如果服務(wù)器在幾個(gè)周期內(nèi)都沒(méi)有收到 某節(jié)點(diǎn)的消息,則認(rèn)為該節(jié)點(diǎn)已經(jīng)從節(jié)點(diǎn)列表刪除該節(jié)點(diǎn)。
(2) 從節(jié)點(diǎn)列表中選取一定數(shù)量的節(jié)點(diǎn)作為新節(jié)點(diǎn)的初始伙伴; 針對(duì)現(xiàn)有的兩種選取初始伙伴節(jié)點(diǎn)策略一一面向系統(tǒng)健壯性與
網(wǎng)絡(luò)負(fù)載均衡性的初始伙伴節(jié)點(diǎn)選取策略和面向流服務(wù)質(zhì)量的初始 伙伴節(jié)點(diǎn)選取策略的優(yōu)缺點(diǎn),本發(fā)明在伙伴節(jié)點(diǎn)選取時(shí)做了優(yōu)化處
理假設(shè)伙伴節(jié)點(diǎn)個(gè)數(shù)為n,則服務(wù)器首先檢索處n/2個(gè)與加入節(jié)點(diǎn) IP最近的節(jié)點(diǎn),剩下的n/2個(gè)節(jié)點(diǎn)則是隨機(jī)檢索出來(lái)。
(3) 根據(jù)節(jié)點(diǎn)請(qǐng)求從節(jié)點(diǎn)列表中選取新的伙伴節(jié)點(diǎn),節(jié)點(diǎn)在數(shù)據(jù) 傳輸過(guò)程中,會(huì)根據(jù)伙伴節(jié)點(diǎn)的反饋信息,刪除那些低"貢 獻(xiàn)"的節(jié)點(diǎn),然后向服務(wù)器請(qǐng)求新的伙伴節(jié)點(diǎn),服務(wù)器根據(jù) 節(jié)點(diǎn)的請(qǐng)求發(fā)送新的伙伴節(jié)點(diǎn)信息給請(qǐng)求節(jié)點(diǎn)。
所述的FBStream模型的客戶端包括以下部分
(1) 數(shù)據(jù)緩沖區(qū)
在本發(fā)明所述的FBStream模型中,視頻數(shù)據(jù)被分割成為相同大 小的片斷,并通過(guò)序列號(hào)來(lái)標(biāo)志每個(gè)片斷,同時(shí)使用時(shí)間來(lái)標(biāo)志該片 斷的播放時(shí)間。
網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)都有自己的一個(gè)緩沖區(qū),用來(lái)存放接收到的視頻 片斷。
(2) 緩存映射
緩存映射是用來(lái)表示節(jié)點(diǎn)中是否擁有某個(gè)片斷數(shù)據(jù),通過(guò)瀏覽數(shù)據(jù)緩沖區(qū)的存儲(chǔ)情況可以很快生成節(jié)點(diǎn)的緩存映射。
(3) 數(shù)據(jù)調(diào)度模塊
本發(fā)明所述的數(shù)據(jù)調(diào)度模塊運(yùn)用了在傳統(tǒng)的pulled-based基礎(chǔ)上 提出的改進(jìn)的Future-based流媒體協(xié)議。
本發(fā)明所述的Future-based流媒體協(xié)議,發(fā)送節(jié)點(diǎn)主動(dòng)發(fā)送數(shù)據(jù) 請(qǐng)求,然后伙伴節(jié)點(diǎn)根據(jù)節(jié)點(diǎn)的請(qǐng)求,如果有則發(fā)送相應(yīng)數(shù)據(jù)包,以 及Buffer Map,如果沒(méi)有,則發(fā)送Buffer Map。而伙伴節(jié)點(diǎn)也不是全 部都周期性發(fā)送Buffer Map,而是根據(jù)伙伴節(jié)點(diǎn)的貢獻(xiàn)度發(fā)送Buffer Map。
本發(fā)明所述的Future-based數(shù)據(jù)調(diào)度算法,把節(jié)點(diǎn)分為新加入節(jié) 點(diǎn)以及一般狀態(tài)下的普通節(jié)點(diǎn)兩個(gè)狀態(tài)進(jìn)行不同的數(shù)據(jù)調(diào)度
A. 新加入節(jié)點(diǎn)
新節(jié)點(diǎn)加入時(shí),首先向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器根據(jù)請(qǐng)求發(fā)送伙 伴節(jié)點(diǎn)信息給新加入節(jié)點(diǎn)。新節(jié)點(diǎn)根據(jù)接收到的伙伴節(jié)點(diǎn)信息,向伙 伴節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,伙伴節(jié)點(diǎn)如果有相應(yīng)數(shù)據(jù),則發(fā)送相應(yīng)數(shù)據(jù)和 BufferMap給新節(jié)點(diǎn),如果沒(méi)有,則發(fā)送BufferMap作為響應(yīng)。
B. 普通節(jié)點(diǎn)
普通節(jié)點(diǎn)根據(jù)接收到的伙伴節(jié)點(diǎn)BufferMap信息以及伙伴節(jié)點(diǎn) 的傳輸延時(shí),把伙伴節(jié)點(diǎn)分成兩份親密伙伴節(jié)點(diǎn)以及后備伙伴節(jié)點(diǎn)。 親密伙伴節(jié)點(diǎn)會(huì)周期性發(fā)送BufferMap信息給該節(jié)點(diǎn),而后備伙伴則 是以幾倍于親密伙伴節(jié)點(diǎn)的周期發(fā)送BufferMap信息給該節(jié)點(diǎn)。
(4) 伙伴管理和優(yōu)化模塊所述的伙伴管理和優(yōu)化模塊中,節(jié)點(diǎn)加入網(wǎng)絡(luò)后,首先服務(wù)器獲 取初始伙伴列表,記為伙伴節(jié)點(diǎn)列表,在程序運(yùn)行中,伙伴節(jié)點(diǎn)列表 會(huì)被動(dòng)動(dòng)態(tài)的更新,節(jié)點(diǎn)會(huì)不斷從服務(wù)器中選擇新的節(jié)點(diǎn)作為新的伙 伴。
所述的伙伴管理和優(yōu)化模塊定期監(jiān)測(cè)所有伙伴節(jié)點(diǎn)的連接狀況。
在這段時(shí)間內(nèi),如果沒(méi)有收到伙伴節(jié)點(diǎn)的任何數(shù)據(jù)(包括BM),則 刪除該伙伴節(jié)點(diǎn)信息,從服務(wù)器端重新獲取新的伙伴節(jié)點(diǎn)。為了對(duì)伙 伴節(jié)點(diǎn)進(jìn)行優(yōu)化,需要定期更新不好連接的伙伴節(jié)點(diǎn)。 (5)網(wǎng)絡(luò)接口25,負(fù)責(zé)與底層P2P網(wǎng)絡(luò)的連接。 本發(fā)明具有以下技術(shù)特點(diǎn)
(1) 低播放延時(shí)本發(fā)明針對(duì)現(xiàn)有的pull-based流媒體協(xié)議存 在的延遲問(wèn)題,提出了改進(jìn)Future-based流媒體協(xié)議,能 夠很好的減低時(shí)延;
(2) 網(wǎng)絡(luò)帶寬利用率高本發(fā)明通過(guò)降低網(wǎng)絡(luò)中的控制包數(shù)量, 對(duì)節(jié)點(diǎn)間的伙伴管理優(yōu)化,充分利用網(wǎng)絡(luò)帶寬資源進(jìn)行傳 輸;
(3) 擴(kuò)展性好本發(fā)明中,加入視頻流媒體網(wǎng)絡(luò)的用戶越多性 能越好。
(4) 容易實(shí)現(xiàn):本發(fā)明的FBStream模型是在典型的P2P流媒體 模型上進(jìn)行改進(jìn),因而不需要維護(hù)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
圖1是本發(fā)明實(shí)施例所支持的FBStream模型架構(gòu)圖;圖2是新節(jié)點(diǎn)加入流程圖3是本發(fā)明實(shí)施例所支持的Future-based數(shù)據(jù)具體調(diào)度算法流 程圖。
具體實(shí)施例方式
圖1 圖3是本發(fā)明的實(shí)施例。下面結(jié)合附圖對(duì)本發(fā)明提出的技 術(shù)方案作進(jìn)一步的說(shuō)明。
如圖1所示, 一種基于P2P網(wǎng)絡(luò)的FBStream流媒體直播模型, 采用網(wǎng)狀的拓?fù)浣Y(jié)構(gòu),所述的FBStream模型分為服務(wù)器端1和客戶 端2。
本發(fā)明實(shí)施例所述的一種基于P2P網(wǎng)絡(luò)的FBStream模型的服務(wù) 器端1由節(jié)點(diǎn)管理模塊11來(lái)協(xié)調(diào)節(jié)點(diǎn)間的控制信息,主要完成以下 功能
(1)維護(hù)和更新所有節(jié)點(diǎn)的列表PeerList,其中節(jié)點(diǎn)列表PeerList (Node—ID, Info, time)主要由三部分組成Node—ID標(biāo)記 節(jié)點(diǎn)唯一,節(jié)點(diǎn)的信息Info (包括節(jié)點(diǎn)IP)以及節(jié)點(diǎn)加入時(shí) 間time;
本實(shí)施例所述的維護(hù)節(jié)點(diǎn)列表PeerList信息又包括
A. 新節(jié)點(diǎn)加入,收到新節(jié)點(diǎn)的加入請(qǐng)求后,服務(wù)器把新節(jié)點(diǎn)信 息加入PeerList;
B. 節(jié)點(diǎn)的正常退出,服務(wù)器收到節(jié)點(diǎn)的退出請(qǐng)求時(shí),簡(jiǎn)單的從 PeerList刪除該節(jié)點(diǎn)信息;
C. 節(jié)點(diǎn)的非正常退出,每個(gè)節(jié)點(diǎn)需要周期性的向服務(wù)器發(fā)送消息說(shuō)明自己工作正常,如果服務(wù)器在幾個(gè)周期內(nèi)都沒(méi)有收到
某節(jié)點(diǎn)的消息,則認(rèn)為該節(jié)點(diǎn)已經(jīng)從PeerList刪除該節(jié)點(diǎn)。
(2) 從PeerList中選取一定數(shù)量的節(jié)點(diǎn)作為新節(jié)點(diǎn)的初始伙伴 針對(duì)現(xiàn)有的兩種選取初始伙伴節(jié)點(diǎn)策略一一面向系統(tǒng)健壯性與
網(wǎng)絡(luò)負(fù)載均衡性的初始伙伴節(jié)點(diǎn)選取策略和面向流服務(wù)質(zhì)量的初始 伙伴節(jié)點(diǎn)選取策略的優(yōu)缺點(diǎn),本實(shí)施例在伙伴節(jié)點(diǎn)選取時(shí)做了優(yōu)化處 理假設(shè)伙伴節(jié)點(diǎn)個(gè)數(shù)為n,則服務(wù)器首先檢索處n/2個(gè)與加入節(jié)點(diǎn) IP最近的節(jié)點(diǎn),剩下的n/2個(gè)節(jié)點(diǎn)則是隨機(jī)檢索出來(lái);
(3) 根據(jù)節(jié)點(diǎn)請(qǐng)求從PeerList中選取新的伙伴節(jié)點(diǎn)-節(jié)點(diǎn)在數(shù)據(jù)傳輸過(guò)程中,會(huì)根據(jù)伙伴節(jié)點(diǎn)的反饋信息,刪除那些
低"貢獻(xiàn)"的節(jié)點(diǎn),然后向服務(wù)器請(qǐng)求新的伙伴節(jié)點(diǎn),服務(wù)器根據(jù)節(jié) 點(diǎn)的請(qǐng)求發(fā)送新的伙伴節(jié)點(diǎn)信息給請(qǐng)求節(jié)點(diǎn)。
本實(shí)施例所述的FBStream模型的客戶端2包括以下部分
(1) 數(shù)據(jù)緩沖區(qū)21
在本發(fā)明實(shí)施例所述的FBStream模型中,視頻數(shù)據(jù)被分割成為 相同大小的片斷Packet一Strm,并通過(guò)序列號(hào)Seq_num來(lái)標(biāo)志每個(gè)片 斷,同時(shí)使用時(shí)間Time—Stamp來(lái)標(biāo)志該片斷的播放時(shí)間;
網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)都有自己的一個(gè)緩沖區(qū)Strm一Buf[n],用來(lái)存放 接收到的視頻片斷Packet—Strm。
(2) 緩存映射22
本實(shí)施例使用一個(gè)緩存映射Packet—Buf—Map來(lái)表示節(jié)點(diǎn)中是否 擁有某個(gè)片斷數(shù)據(jù),通過(guò)瀏覽數(shù)據(jù)緩沖區(qū)Stan Buf的存儲(chǔ)情況可以很快生成節(jié)點(diǎn)的Packet—Buf_Map。本實(shí)施例用一個(gè)滑動(dòng)窗口 (Sliding window)來(lái)表示Packet_Buf_Map,大小為N個(gè)片斷,Packet—Buf—Map 中用N個(gè)比特來(lái)記錄,每個(gè)比特代表一個(gè)數(shù)據(jù)片斷,值為1表示有 這個(gè)片斷,O表示沒(méi)有。
(3) 數(shù)據(jù)調(diào)度模塊23
數(shù)據(jù)調(diào)度模塊23運(yùn)用了在傳統(tǒng)的pulled-based基礎(chǔ)上提出的改進(jìn) 的Future-based流媒體協(xié)議,完成網(wǎng)絡(luò)節(jié)點(diǎn)之間的數(shù)據(jù)調(diào)度功能。
(4) 伙伴管理和優(yōu)化模塊24 本發(fā)明實(shí)施例所述的伙伴管理和優(yōu)化模塊24中,節(jié)點(diǎn)加入網(wǎng)絡(luò)
后,服務(wù)器獲取初始伙伴列表,記為PartnerList,在程序運(yùn)行中, PartnerList會(huì)被動(dòng)動(dòng)態(tài)的更新,節(jié)點(diǎn)會(huì)不斷從服務(wù)器中選擇新的節(jié)點(diǎn) 作為新的伙伴。
本實(shí)施例所述的伙伴管理和優(yōu)化模塊24定期監(jiān)測(cè)所有伙伴節(jié)點(diǎn) 的連接狀況。在這段時(shí)間內(nèi),如果沒(méi)有收到伙伴節(jié)點(diǎn)的任何數(shù)據(jù)(包 括BM),則刪除該伙伴節(jié)點(diǎn)信息,從服務(wù)器端重新獲取新的伙伴節(jié) 點(diǎn)。為了對(duì)伙伴節(jié)點(diǎn)進(jìn)行優(yōu)化,需要定期更新不好連接的伙伴節(jié)點(diǎn)。
(5) 網(wǎng)絡(luò)接口25,負(fù)責(zé)與底層P2P網(wǎng)絡(luò)的連接。 本實(shí)施例所述的改進(jìn)的Future-based流媒體協(xié)議,其具體實(shí)現(xiàn)流
程為發(fā)送節(jié)點(diǎn)主動(dòng)發(fā)送數(shù)據(jù)請(qǐng)求,然后伙伴節(jié)點(diǎn)根據(jù)節(jié)點(diǎn)的請(qǐng)求, 如果有則發(fā)送相應(yīng)數(shù)據(jù)包,以及Buffer Map,如果沒(méi)有,則發(fā)送Buffer Map;伙伴節(jié)點(diǎn)也不是全部都周期性發(fā)送Buffer Map,而是根據(jù)伙伴 節(jié)點(diǎn)的貢獻(xiàn)度發(fā)送BufferMap。本實(shí)施例所述的Future-based流媒體協(xié)議的數(shù)據(jù)調(diào)度中,把節(jié)點(diǎn) 分為新加入節(jié)點(diǎn)以及一般狀態(tài)下的普通節(jié)點(diǎn)兩個(gè)狀態(tài)進(jìn)行不同的數(shù) 據(jù)調(diào)度
A. 新加入節(jié)點(diǎn)
如圖2所示,新節(jié)點(diǎn)加入時(shí),首先向服務(wù)器發(fā)送請(qǐng)求①,服務(wù) 器根據(jù)請(qǐng)求發(fā)送伙伴節(jié)點(diǎn)列表信息給新加入節(jié)點(diǎn)②。新節(jié)點(diǎn)根據(jù)接 收到的伙伴節(jié)點(diǎn)列表信息,向伙伴節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求③,伙伴節(jié)點(diǎn) 如果有相應(yīng)數(shù)據(jù),則發(fā)送相應(yīng)數(shù)據(jù)和BufferMap給新節(jié)點(diǎn)④,如果沒(méi) 有,則發(fā)送BufferMap作為響應(yīng)⑤。 B. 普通節(jié)點(diǎn)
普通節(jié)點(diǎn)根據(jù)接收到的伙伴節(jié)點(diǎn)BufferMap信息以及伙伴節(jié)點(diǎn) 的傳輸延時(shí),把伙伴節(jié)點(diǎn)分成兩份親密伙伴節(jié)點(diǎn)以及后備伙伴節(jié)點(diǎn)。 親密伙伴節(jié)點(diǎn)會(huì)以周期T發(fā)送BufferMap信息給該節(jié)點(diǎn),而后備伙伴 則是以周期5T發(fā)送BufferMap信息給該節(jié)點(diǎn)。
如圖3所示,本實(shí)施例所述的FBStreaml流媒體協(xié)議中,F(xiàn)BStream 數(shù)據(jù)調(diào)度算法實(shí)現(xiàn)流程如下
(a) 節(jié)點(diǎn)檢索自己的緩沖區(qū),得到自己的BM和待請(qǐng)求的片斷序 號(hào)集Set。
(b) 判斷待請(qǐng)求的片斷序號(hào)集Set是否為空。如果為空,則跳到步 驟(f),否則取出下一個(gè)待填充的片斷序號(hào)S,繼續(xù)下一步。
(c) 査看自己的緩沖區(qū)中序號(hào)S對(duì)應(yīng)的數(shù)據(jù)片斷是否已經(jīng)被請(qǐng)求 過(guò),如果被請(qǐng)求過(guò)而且最近請(qǐng)求時(shí)間距現(xiàn)在不超過(guò)一定的時(shí)間范圍,則不再請(qǐng)求,將當(dāng)前檢索序號(hào)加1,返回到步驟(b)。 否則繼續(xù)下一步。
(d) 檢索所有伙伴節(jié)點(diǎn)BM信息,根據(jù)伙伴節(jié)點(diǎn)BM信息中對(duì)應(yīng) 序號(hào)S是否為1來(lái)判斷伙伴節(jié)點(diǎn)是否擁有數(shù)據(jù)片斷S。設(shè)擁有 數(shù)據(jù)片斷S的伙伴數(shù)目為num,如果num不為O,在擁有數(shù)
據(jù)片斷S的伙伴節(jié)點(diǎn)中尋找/A值最小的節(jié)點(diǎn)(其中w'為這
次檢索中向節(jié)點(diǎn)i請(qǐng)求的片斷數(shù),《為單位時(shí)間內(nèi)從節(jié)點(diǎn)i平 均獲取的數(shù)據(jù)包),把該節(jié)點(diǎn)的id和num記錄到待請(qǐng)求集合C
中,將當(dāng)前檢索序號(hào)加1,返回到步驟(b)。否則繼續(xù)下一步。
(e) 檢索伙伴節(jié)點(diǎn)BM信息,根據(jù)伙伴節(jié)點(diǎn)BM信息,選擇擁有 與片斷S最靠近的前片斷的節(jié)點(diǎn)。例如當(dāng)前片斷S的序列號(hào) 為8,節(jié)點(diǎn)A擁有片斷1、 2、 4、 5,節(jié)點(diǎn)B擁有節(jié)點(diǎn)1、 6, 則選擇節(jié)點(diǎn)B作發(fā)送數(shù)據(jù)請(qǐng)求,如果滿足該條件的節(jié)點(diǎn)有多
個(gè),則根據(jù)M/《值選擇最小的節(jié)點(diǎn),把節(jié)點(diǎn)的id和數(shù)據(jù)片斷 S放進(jìn)請(qǐng)求包隊(duì)列中,并在緩沖區(qū)中標(biāo)記該片斷已被請(qǐng)求,并
記下請(qǐng)求的時(shí)間和請(qǐng)求的伙伴節(jié)點(diǎn)信息,將當(dāng)前檢索序號(hào)加 1,返回到步驟(b)。
(f) 在系統(tǒng)中,如果某個(gè)片斷的提供者越少,就越難滿足播放時(shí) 間Deadline的要求,因此,根據(jù)數(shù)據(jù)片斷擁有的節(jié)點(diǎn)數(shù)多少, 對(duì)節(jié)點(diǎn)進(jìn)行排列,節(jié)點(diǎn)先從稀少的數(shù)據(jù)開始調(diào)度。我們使用 稀少數(shù)據(jù)優(yōu)先根據(jù)集合C中的num進(jìn)行排序,然后把排序得 到的集合中的id和數(shù)據(jù)片斷S放進(jìn)請(qǐng)求包隊(duì)列中,并在緩沖區(qū)中標(biāo)記該片斷已被請(qǐng)求,并記下請(qǐng)求的時(shí)間和請(qǐng)求的伙伴 節(jié)點(diǎn)信息,返回到步驟(a)。
權(quán)利要求
1. 一種基于P2P網(wǎng)絡(luò)的FBStream流媒體直播模型,其特征在于采用網(wǎng)狀的拓?fù)浣Y(jié)構(gòu),包括以下兩部分(1)依靠節(jié)點(diǎn)管理模塊11來(lái)協(xié)調(diào)節(jié)點(diǎn)間的控制信息,負(fù)責(zé)維護(hù)和更新所有節(jié)點(diǎn)的列表、從節(jié)點(diǎn)列表中選取一定數(shù)量的節(jié)點(diǎn)作為新節(jié)點(diǎn)的初始伙伴以及根據(jù)節(jié)點(diǎn)請(qǐng)求從節(jié)點(diǎn)列表中選取新的伙伴節(jié)點(diǎn)的服務(wù)器1;(2)由5個(gè)模塊構(gòu)成的客戶端2,其中,所述的5個(gè)模塊分別為A、用來(lái)存放接收到的視頻片斷的數(shù)據(jù)緩沖區(qū)21;B、用來(lái)表示節(jié)點(diǎn)中是否擁有某個(gè)片斷數(shù)據(jù),并通過(guò)瀏覽數(shù)據(jù)緩沖區(qū)的存儲(chǔ)情況可以很快生成的緩存映射22;C、運(yùn)用了在傳統(tǒng)的pulled-based基礎(chǔ)上提出的改進(jìn)的Future-based流媒體協(xié)議進(jìn)行流媒體數(shù)據(jù)調(diào)度的數(shù)據(jù)調(diào)度模塊23;D、定期監(jiān)測(cè)所有伙伴節(jié)點(diǎn)的連接狀況,管理及優(yōu)化伙伴節(jié)點(diǎn)列表的伙伴管理和優(yōu)化模塊24;E、負(fù)責(zé)與底層P2P網(wǎng)絡(luò)連接的網(wǎng)絡(luò)接口25。
2、 根據(jù)權(quán)利要求1所述的一種基于P2P網(wǎng)絡(luò)的FBStream流媒體 直播模型,其特征在于所述的維護(hù)和更新所有節(jié)點(diǎn)的列表, 其中列表由三部分組成——標(biāo)記節(jié)點(diǎn)唯一的節(jié)點(diǎn)ID,節(jié)點(diǎn)的信 息,包括節(jié)點(diǎn)IP以及節(jié)點(diǎn)加入時(shí)間。
3、 根據(jù)權(quán)利要求1所述的一種基于P2P網(wǎng)絡(luò)的FBStream流媒體 直播模型,其特征在于所述的維護(hù)節(jié)點(diǎn)列表信息又包括新節(jié)點(diǎn)加入、節(jié)點(diǎn)的正常退出和非正常退出。
4、 根據(jù)權(quán)利要求1所述的一種基于P2P網(wǎng)絡(luò)的FBStream流媒體 直播模型,其特征在于所述的從節(jié)點(diǎn)列表中選取一定數(shù)量的 節(jié)點(diǎn)作為新節(jié)點(diǎn)的初始伙伴中,在伙伴節(jié)點(diǎn)選取時(shí)做了優(yōu)化處 理假設(shè)伙伴節(jié)點(diǎn)個(gè)數(shù)為n,則服務(wù)器首先檢索處n/2個(gè)與加入 節(jié)點(diǎn)IP最近的節(jié)點(diǎn),剩下的n/2個(gè)節(jié)點(diǎn)則是隨機(jī)檢索出來(lái)。
5、 根據(jù)權(quán)利要求1所述的一種基于P2P網(wǎng)絡(luò)的FBStream流媒體 直播模型,其特征在于所述的根據(jù)節(jié)點(diǎn)請(qǐng)求從節(jié)點(diǎn)列表中選 取新的伙伴節(jié)點(diǎn)中,節(jié)點(diǎn)在數(shù)據(jù)傳輸過(guò)程時(shí),會(huì)根據(jù)伙伴節(jié)點(diǎn) 的反饋信息,刪除那些低"貢獻(xiàn)"的節(jié)點(diǎn),然后向服務(wù)器請(qǐng)求 新的伙伴節(jié)點(diǎn),服務(wù)器根據(jù)節(jié)點(diǎn)的請(qǐng)求發(fā)送新的伙伴節(jié)點(diǎn)信息 給請(qǐng)求節(jié)點(diǎn)。
6、 根據(jù)權(quán)利要求1所述的一種基于P2P網(wǎng)絡(luò)的FBStream流媒體 直播模型,其特征在于所述的FBStream模型中,視頻數(shù)據(jù)被 分割成為相同大小的片斷,并通過(guò)序列號(hào)來(lái)標(biāo)志每個(gè)片斷,同 時(shí)使用時(shí)間來(lái)標(biāo)志該片斷的播放時(shí)間。
7、 根據(jù)權(quán)利要求1所述的一種基于P2P網(wǎng)絡(luò)的FBStream流媒體 直播模型,其特征在于所述的Future-based流媒體協(xié)議,發(fā) 送節(jié)點(diǎn)主動(dòng)發(fā)送數(shù)據(jù)請(qǐng)求,然后伙伴節(jié)點(diǎn)根據(jù)節(jié)點(diǎn)的請(qǐng)求,如 果有則發(fā)送相應(yīng)數(shù)據(jù)包,以及Buffer Map,如果沒(méi)有,則發(fā)送 Buffer Map,而伙伴節(jié)點(diǎn)也不是全部都周期性發(fā)送Buffer Map, 而是根據(jù)伙伴節(jié)點(diǎn)的貢獻(xiàn)度發(fā)送Buffer Map。
8、 根據(jù)權(quán)利要求1所述的一種基于P2P網(wǎng)絡(luò)的FBStream流媒體 直播模型,其特征在于所述的Future-based數(shù)據(jù)調(diào)度算法, 把節(jié)點(diǎn)分為新加入節(jié)點(diǎn)以及一般狀態(tài)下的普通節(jié)點(diǎn)兩個(gè)狀態(tài)進(jìn) 行不同的數(shù)據(jù)調(diào)度。
9、 根據(jù)權(quán)利要求1所述的一種基于P2P網(wǎng)絡(luò)的FBStream流媒體 直播模型,其特征在于所述的伙伴管理和優(yōu)化模塊中,節(jié)點(diǎn) 加入網(wǎng)絡(luò)后,首先服務(wù)器獲取初始伙伴列表,記為伙伴節(jié)點(diǎn)列 表,在程序運(yùn)行中,伙伴節(jié)點(diǎn)列表會(huì)被動(dòng)動(dòng)態(tài)的更新,節(jié)點(diǎn)會(huì) 不斷從服務(wù)器中選擇新的節(jié)點(diǎn)作為新的伙伴。
10、 根據(jù)權(quán)利要求1所述的一種基于P2P網(wǎng)絡(luò)的FBStream流媒體 直播模型,其特征在于所述的伙伴管理和優(yōu)化模塊定期監(jiān)測(cè) 所有伙伴節(jié)點(diǎn)的連接狀況。
全文摘要
本發(fā)明公開了一種基于P2P網(wǎng)絡(luò)的FBStream流媒體直播模型,它涉及了P2P流媒體直播的技術(shù)領(lǐng)域。本發(fā)明采用網(wǎng)狀的拓?fù)浣Y(jié)構(gòu),包括了依靠節(jié)點(diǎn)管理模塊11來(lái)協(xié)調(diào)節(jié)點(diǎn)間的控制信息的服務(wù)器1和由數(shù)據(jù)緩沖區(qū)21、緩存映射22、數(shù)據(jù)調(diào)度模塊23、伙伴管理和優(yōu)化模塊24以及網(wǎng)絡(luò)接口25組成的客戶端2,在DONet模型的基礎(chǔ)上通過(guò)節(jié)點(diǎn)管理、數(shù)據(jù)調(diào)度策略以及伙伴的管理三個(gè)方面的優(yōu)化來(lái)實(shí)現(xiàn)一個(gè)低時(shí)延、高網(wǎng)絡(luò)帶寬利用率的P2P流媒體數(shù)據(jù)的傳輸。
文檔編號(hào)H04L12/56GK101282231SQ200810028299
公開日2008年10月8日 申請(qǐng)日期2008年5月27日 優(yōu)先權(quán)日2008年5月27日
發(fā)明者楊志偉, 羅笑南, 陳巧珍 申請(qǐng)人:中山大學(xué)