欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于會(huì)話初始化協(xié)議的流媒體直播p2p網(wǎng)絡(luò)方法

文檔序號(hào):7953084閱讀:139來(lái)源:國(guó)知局

專(zhuān)利名稱(chēng)::基于會(huì)話初始化協(xié)議的流媒體直播p2p網(wǎng)絡(luò)方法
技術(shù)領(lǐng)域
:本發(fā)明屬于信息通信,尤其是互聯(lián)網(wǎng)通信領(lǐng)域。
背景技術(shù)
:互聯(lián)網(wǎng)是人類(lèi)邁入信息化社會(huì)一個(gè)偉大的里程碑。作為計(jì)算機(jī)技術(shù)與網(wǎng)絡(luò)通信技術(shù)融合的產(chǎn)物,互聯(lián)網(wǎng)正在由一般意義下的通信平臺(tái)逐步演變成為無(wú)處不在的計(jì)算平臺(tái)。如何對(duì)互聯(lián)網(wǎng)上日益增長(zhǎng)的巨大資源實(shí)施有效管理,實(shí)現(xiàn)互聯(lián)網(wǎng)資源的“有效聚合、合理分配、自主協(xié)同和可信共享”,不僅對(duì)于互聯(lián)網(wǎng)能否成為計(jì)算平臺(tái)至關(guān)重要,而且對(duì)于一個(gè)國(guó)家在信息化時(shí)代生產(chǎn)力水平和國(guó)際競(jìng)爭(zhēng)力的提高具有重要戰(zhàn)略意義。對(duì)等網(wǎng)絡(luò)(P2P)被美國(guó)《財(cái)富》雜志稱(chēng)為改變因特網(wǎng)發(fā)展的四大新技術(shù)之一,甚至被認(rèn)為是無(wú)線寬帶互聯(lián)網(wǎng)的未來(lái)技術(shù)。P2P技術(shù)不僅為個(gè)人用戶提供了前所未有的自由和便利,同時(shí)也試圖有效地整合互聯(lián)網(wǎng)的潛在資源,將基于網(wǎng)頁(yè)的互聯(lián)網(wǎng)轉(zhuǎn)變成動(dòng)態(tài)存取、自由交互的海量信息網(wǎng)絡(luò)。P2P技術(shù)的發(fā)展以及P2P與網(wǎng)格技術(shù)的結(jié)合,將影響整個(gè)計(jì)算機(jī)網(wǎng)絡(luò)的概念和人們的信息獲取模式,真正實(shí)現(xiàn)“網(wǎng)絡(luò)就是計(jì)算機(jī),計(jì)算機(jī)就是網(wǎng)絡(luò)”的夢(mèng)想。但是現(xiàn)存的P2P軟件的缺點(diǎn)很多1,管理性和可控性差;2,版權(quán)問(wèn)題很難解決;3,垃圾信息泛濫;4,吞噬網(wǎng)絡(luò)帶寬;5,慈善病毒橫行;而且,起協(xié)調(diào)作用的服務(wù)器的脆弱性是眾所周知的。由IETF最年輕的工作組之一的會(huì)話初始協(xié)議SIP工作組發(fā)布的SIP相關(guān)標(biāo)準(zhǔn)已經(jīng)成為通信和網(wǎng)絡(luò)界的研究熱點(diǎn)。目前SIP工作組發(fā)表的協(xié)議和草案超過(guò)30個(gè),除了核心協(xié)議以外,其他協(xié)議涵蓋服務(wù)質(zhì)量、安全、消息頭和方法擴(kuò)展、與公共交換電話網(wǎng)絡(luò)協(xié)議等其他協(xié)議的互操作性、穿透防火墻和NAT、應(yīng)用、多消息體、即時(shí)消息等諸多話題,其最終目標(biāo)是為所有Internet成功的應(yīng)用提供無(wú)所不在的接入,成為聯(lián)系Internet和電信、多媒體的媒介。然而目前卻并沒(méi)有SIP和P2P的聯(lián)合,我們已經(jīng)進(jìn)行的實(shí)驗(yàn)證明了把SIP和P2P結(jié)合起來(lái)是切實(shí)可行的。不僅如此,我們還可以從本源上看出SIP確實(shí)具有與生俱來(lái)的P2P的特性,盡管現(xiàn)在的很多的應(yīng)用并沒(méi)有利用它們,例如,SIP中所有的服務(wù)器都是可選的,用戶可以不經(jīng)過(guò)他們而在相互之間建立直接通信,甚至與像代理服務(wù)器這樣的服務(wù)器在使用他們的時(shí)候,在進(jìn)行了開(kāi)始的信息交換之后,后續(xù)的消息也可以利用URL來(lái)直接進(jìn)行端到端的路由的。我們的發(fā)明是根據(jù)“下一代互聯(lián)網(wǎng)可控制、可管理、可運(yùn)營(yíng)”的基本要求和技術(shù)發(fā)展趨勢(shì),采用下一代網(wǎng)絡(luò)的核心協(xié)議一SIP,基于第二代中國(guó)教育科研網(wǎng)的網(wǎng)絡(luò)環(huán)境,實(shí)現(xiàn)“可控、可管、可運(yùn)營(yíng)”的、標(biāo)準(zhǔn)化的、流媒體P2P播放系統(tǒng)(具有直播、點(diǎn)播等功能)的體系結(jié)構(gòu),并實(shí)現(xiàn)系統(tǒng)的原型。與我們想法相近想把SIP引進(jìn)到P2P網(wǎng)絡(luò),目前為止還只有SIPshareSIPshare是一個(gè)簡(jiǎn)單的、基于SIP協(xié)議應(yīng)用程序。SIPshare主要是向人們展示,SIP協(xié)議除了能實(shí)現(xiàn)語(yǔ)音、視頻等多媒體通信之外,也能實(shí)現(xiàn)常見(jiàn)的P2P應(yīng)用,即很方便地在SIP用戶間實(shí)現(xiàn)內(nèi)容共享。SIPshare與我們的區(qū)別是SIPshare只能傳輸文件和圖片,我們除了文件,語(yǔ)音和圖片還可以傳輸實(shí)時(shí)的視頻。
發(fā)明內(nèi)容本發(fā)明目的在于提供一種用戶可以通過(guò)SIP協(xié)議從節(jié)目源實(shí)時(shí)下載流媒體節(jié)目的流媒體直播P2P網(wǎng)絡(luò)方法。本發(fā)明的特征在于該方法是在一個(gè)基于會(huì)話初始化協(xié)議的IPTv系統(tǒng)中實(shí)現(xiàn)的,所述系統(tǒng)含有客戶端為各單獨(dú)的PC機(jī),或移動(dòng)通信終端,或其它的非PC機(jī)終端;在該客戶端上設(shè)有SIP消息接收、發(fā)送、解析模塊,所述SIP是會(huì)話初始化協(xié)議的簡(jiǎn)稱(chēng),下同;SIP消息處理模塊,與所述SIP消息接收、發(fā)送、解析模塊互連;同時(shí)設(shè)有與其它P2P用戶交互的接口;流媒體接收模塊,與所述SIP消息處理模塊互連;流媒體播放模塊,輸入接口與該流媒體接收模塊的輸出接口連接;下游節(jié)點(diǎn)連接處理模塊,分別設(shè)有所述SIP消息處理模塊、流媒體接收模塊輸出數(shù)據(jù)的輸入接口;流媒體發(fā)送模塊,與所述下游節(jié)點(diǎn)連接處理模塊互連,而且該流媒體發(fā)送模塊還設(shè)有該流媒體接收模塊輸出數(shù)據(jù)的輸入接口;下游節(jié)點(diǎn)探測(cè)模塊,設(shè)有該下游節(jié)點(diǎn)連接處理模塊輸出數(shù)據(jù)的輸入端口,分別向該流媒體發(fā)送模塊、SIP消息處理模塊輸送下游節(jié)點(diǎn)探測(cè)數(shù)據(jù)的輸出端口;備份節(jié)點(diǎn)探測(cè)模塊,與所述的SIP消息處理模塊互連;狀態(tài)信息處理模塊,設(shè)有向所述SIP消息處理模塊輸出處理后的狀態(tài)信息的輸出端口,以及接收所述下游節(jié)點(diǎn)連接處理模塊的下游節(jié)點(diǎn)信息的接收端口;延時(shí)計(jì)算模塊,與該狀態(tài)信息處理模塊互連,通過(guò)檢測(cè)本節(jié)點(diǎn)到某個(gè)標(biāo)準(zhǔn)節(jié)點(diǎn)的延時(shí),以確定自己的相對(duì)時(shí)延,傳送給狀態(tài)信息處理模塊;有效帶寬計(jì)算模塊,根據(jù)延時(shí)計(jì)算模塊提供的延時(shí)數(shù)據(jù)來(lái)計(jì)算有有效帶寬,再向狀態(tài)信息處理模塊發(fā)出發(fā)送的數(shù)據(jù)量/延時(shí)時(shí)間的比值;以上所述客戶端的程序?qū)崿F(xiàn)以下的操作與其他的客戶交互,從他們那里得到需求的節(jié)目信息;向下述SIP服務(wù)器注冊(cè)自己的信息;向下述擴(kuò)展媒體服務(wù)器實(shí)時(shí)的發(fā)送自己的更新消息,或者請(qǐng)求節(jié)目,并注冊(cè)自己的節(jié)目信息;從包括其他客戶端和下述媒體服務(wù)器在內(nèi)的節(jié)目源下載、存儲(chǔ)并播放節(jié)目;SIP服務(wù)器,分布在SIP高速路由服務(wù)器上,該服務(wù)器是一個(gè)工業(yè)增強(qiáng)型的基于SIP協(xié)議的自由SIP服務(wù)器;擴(kuò)展媒體服務(wù)器,擁有自己?jiǎn)为?dú)的通用資源標(biāo)識(shí)符URI,通過(guò)一下程序模塊為客戶端選擇最佳的節(jié)目源進(jìn)行節(jié)目下載SIP消息接收、發(fā)送、解析模塊與客戶端的相應(yīng)模塊等同;SIP消息處理模塊,與所述SIP消息接收、發(fā)送、解析模塊互連,該SIP消息處理模塊與客戶端的相應(yīng)模塊等同;信息收集模塊,設(shè)有從所述SIP消息處理模塊輸出的更新后的狀態(tài)信息,并且對(duì)發(fā)送來(lái)的離去節(jié)點(diǎn)是否刪除的信息進(jìn)行決策是否與該離去節(jié)點(diǎn)相關(guān)的所有節(jié)點(diǎn)都向信息收集模塊發(fā)出了該節(jié)點(diǎn)離去的信息;狀態(tài)信息數(shù)據(jù)庫(kù),接收所述信息收集模塊發(fā)來(lái)的狀態(tài)信息;最佳對(duì)等體選擇模塊,與所述SIP消息處理模塊互連,同時(shí)設(shè)有接收來(lái)自該狀態(tài)信息數(shù)據(jù)庫(kù)發(fā)送來(lái)的狀態(tài)信息輸入端口;該最佳對(duì)等體選擇模塊根據(jù)SIP消息處理模塊的節(jié)目對(duì)等體選擇需求,再根據(jù)狀態(tài)信息庫(kù)中的數(shù)據(jù),選擇最佳的對(duì)等體節(jié)點(diǎn),即針對(duì)一個(gè)節(jié)目請(qǐng)求,首先從狀態(tài)信息數(shù)據(jù)庫(kù)中選擇緩存了該節(jié)目的節(jié)點(diǎn),再考慮雙方的IP關(guān)系,分析是否在一個(gè)網(wǎng)段內(nèi),若是,則優(yōu)先考慮該節(jié)點(diǎn),否則,任選一個(gè)節(jié)點(diǎn)作為最佳對(duì)等體節(jié)點(diǎn);用戶更新模塊,設(shè)有從該狀態(tài)信息所發(fā)送來(lái)的狀態(tài)信息的接收端口,以及發(fā)向該SIP消息處理模塊的用戶更新消息,以完成向所有快要過(guò)期的節(jié)點(diǎn)發(fā)送即將過(guò)期用戶的信息;媒體服務(wù)器,用PC機(jī)實(shí)現(xiàn),相當(dāng)于一個(gè)普通用戶,把本地采集到的信息流化,發(fā)送給相關(guān)的提出請(qǐng)求的用戶,這是通過(guò)以下程序模塊實(shí)現(xiàn)的SIP消息接收、發(fā)送、解析模塊與客戶端的相應(yīng)模塊等同;SIP消息處理模塊,與所述SIP消息接收、發(fā)送、解析模塊互連;除了沒(méi)有設(shè)其他用戶交互接口外,該SIP消息處理模塊與客戶端相應(yīng)模塊相同;流媒體文件讀取模塊,從原始的編碼好的視頻文件中提取出必需的文件頭信息以及文件頭本身,并把這些內(nèi)容傳送給下述節(jié)點(diǎn)連接模塊,同時(shí)向下述流媒體模塊提供相關(guān)的遵守實(shí)時(shí)傳輸協(xié)議的流媒體包;下游節(jié)點(diǎn)連接處理模塊,設(shè)有所屬媒體文件讀取模塊輸出的編碼好的視頻文件信息的接收端口;同由設(shè)有接收SIP消息處理模塊輸出的下游節(jié)點(diǎn)信息的輸入端口;流媒體發(fā)送模塊,與所述下游節(jié)點(diǎn)及連接處理模塊互連,同時(shí)設(shè)有接收該流媒體文件讀取模塊輸出的遵守實(shí)時(shí)傳輸協(xié)議的流媒體包的輸入端口;下游節(jié)點(diǎn)探測(cè)模塊,設(shè)有來(lái)自該下游節(jié)點(diǎn)連接處理模塊發(fā)送來(lái)的下游節(jié)點(diǎn)連接處理信息接收端口,分別發(fā)往所述流媒體發(fā)送模塊和SIP消息處理模塊的下游節(jié)點(diǎn)探測(cè)信息輸出端口;狀態(tài)信息處理模塊,設(shè)有下游節(jié)點(diǎn)連接處理信息接收端口,以及發(fā)送到SIP消息處理模塊的狀態(tài)信息處理數(shù)據(jù)輸出端口;延時(shí)計(jì)算模塊,與所述的狀態(tài)信息處理模塊相連,通過(guò)檢測(cè)本節(jié)點(diǎn)到幾個(gè)標(biāo)準(zhǔn)節(jié)點(diǎn)的延時(shí)以確定自己的相對(duì)延時(shí),傳送給所述狀態(tài)信息處理模塊;有效帶寬計(jì)算模塊,根據(jù)延時(shí)計(jì)算模塊提供的延時(shí)數(shù)據(jù)來(lái)計(jì)算有有效帶寬,再向狀態(tài)信息處理模塊發(fā)出發(fā)送的數(shù)據(jù)量/延時(shí)時(shí)間的比值;所述基于會(huì)話初始化協(xié)議的流媒體直播P2P網(wǎng)絡(luò)主體依次含有如下的步驟步驟1.初始化客戶端,設(shè)定IP地址,端口號(hào),文件保存的位置以及編解碼方式;SIP服務(wù)器,設(shè)定IP地址,端口號(hào),初始化用戶信息數(shù)據(jù)庫(kù);擴(kuò)展媒體服務(wù)器,設(shè)定IP地址,端口號(hào),初始化媒體信息數(shù)據(jù)庫(kù);媒體服務(wù)器,設(shè)定IP地址,端口號(hào),以及編碼方式;步驟2.注冊(cè)客戶端向SIP服務(wù)器注冊(cè),包括用戶名和密碼在內(nèi)的自己的信息;SIP服務(wù)器在接收到用戶注冊(cè)后,更新用戶信息數(shù)據(jù)庫(kù);擴(kuò)展媒體服務(wù)器向SIP服務(wù)器注冊(cè),包括用戶名和密碼在內(nèi)的自己的信息,然后,等待媒體服務(wù)器來(lái)注冊(cè)媒體信息,更新媒體信息數(shù)據(jù)庫(kù);媒體服務(wù)器向SIP服務(wù)器注冊(cè)包括用戶名和密碼在內(nèi)的自己的信息,向擴(kuò)展媒體服務(wù)器注冊(cè)包括節(jié)目名稱(chēng)、下載速度在內(nèi)的自己的媒體信息;步驟3.客戶端向SIP服務(wù)器請(qǐng)求節(jié)目;步驟4.SIP服務(wù)器在接收到用戶的請(qǐng)求后,判斷目的地,向擴(kuò)展媒體服務(wù)器轉(zhuǎn)發(fā)用戶的請(qǐng)求;步驟5.擴(kuò)展媒體服務(wù)器在接收到客戶端的節(jié)目請(qǐng)求之后,進(jìn)行媒體信息數(shù)據(jù)庫(kù)查詢,找出最佳的節(jié)點(diǎn)來(lái)提供給客戶端;步驟6.客戶端收到擴(kuò)展媒體服務(wù)器的節(jié)目源地址后,向節(jié)目源請(qǐng)求節(jié)目;步驟7.客戶端接收、下載并播放節(jié)目源發(fā)送過(guò)來(lái)的節(jié)目,同時(shí),緩存一部分節(jié)目;同時(shí)向擴(kuò)展媒體服務(wù)器注冊(cè)自己的緩存的節(jié)目信息,該信息包括節(jié)點(diǎn)的IP、節(jié)點(diǎn)能提供的最大帶寬、節(jié)點(diǎn)的緩存大小、以及節(jié)點(diǎn)內(nèi)緩存的節(jié)目編號(hào);步驟8.客戶端等待下游節(jié)點(diǎn)的連結(jié),準(zhǔn)備向下游節(jié)點(diǎn)發(fā)送節(jié)目;退出時(shí)向下游節(jié)點(diǎn)、節(jié)目源、以及擴(kuò)展媒體服務(wù)器發(fā)送離開(kāi)消息;步驟9.客戶端或媒體服務(wù)器在狀態(tài)改變后,向擴(kuò)展媒體服務(wù)器發(fā)送更新消息,該擴(kuò)展媒體服務(wù)器在收到所述的更新消息后,存入,并更新媒體信息數(shù)據(jù)庫(kù)。本發(fā)明有以下的優(yōu)點(diǎn)1,使用了標(biāo)準(zhǔn)協(xié)議SIP,可以實(shí)現(xiàn)很好的移植性和兼容性。2,使用P2P作為節(jié)目提供者和下載者之間的協(xié)議,減輕了服務(wù)器的負(fù)擔(dān)。3,對(duì)SIP服務(wù)器的功能要求很低,只需要一些最基本的功能,可以方便以后的升級(jí)。4,將更多的功能分散到了終端,實(shí)現(xiàn)了網(wǎng)絡(luò)負(fù)擔(dān)的分散化,這也適應(yīng)了未來(lái)的終端越來(lái)越智能化的要求。5,把媒體處理功能單獨(dú)放在一個(gè)模塊(對(duì)等體選擇模塊)中,可以實(shí)現(xiàn)很好的擴(kuò)充性,以后如果需要修改什么,只需要改動(dòng)這一部分,可以不改動(dòng)SIP服務(wù)器的。6,通過(guò)及時(shí)的發(fā)送更新消息,可以讓擴(kuò)展媒體服務(wù)器始終可以掌握最新的網(wǎng)絡(luò)狀態(tài),便于全局的管理。7,可以很好的實(shí)現(xiàn)計(jì)費(fèi)功能。8,對(duì)于數(shù)字版權(quán),可以在節(jié)目源上實(shí)現(xiàn),所以不存在侵權(quán)問(wèn)題。本發(fā)明的硬件實(shí)現(xiàn)方式1服務(wù)器硬件配置要求cpu1.5G以上內(nèi)存512M以上硬盤(pán)80G以上LCD顯示器鍵盤(pán)鼠標(biāo)等輸入設(shè)備具備打印機(jī)接口具備接入INTERNET的能力軟件配置要求具有LINUX操作系統(tǒng),需要RedHat9.0以上版本具有C語(yǔ)言編輯器,需要VC6.0以上版本具有上網(wǎng),打印機(jī)接口2客戶端硬件配置要求cpu1.0G以上內(nèi)存128M以上硬盤(pán)10G以上LCD顯示器鍵盤(pán)鼠標(biāo)等輸入設(shè)備具備打印機(jī)接口具備接入INTERNET的能力軟件配置要求具有Windows操作系統(tǒng)具有C語(yǔ)言編輯器,需要VC6.0以上版本具有上網(wǎng),打印機(jī)接口3網(wǎng)絡(luò)要求網(wǎng)絡(luò)速度>512Kbps初步實(shí)驗(yàn)結(jié)果如下在只有一個(gè)節(jié)目源的情況下,只有一個(gè)SIP服務(wù)器和擴(kuò)展媒體服務(wù)器,可以同時(shí)下載的用戶數(shù)目可以達(dá)到100,并且相互之間延遲很小(<50ms)基本實(shí)現(xiàn)了同步,而且對(duì)帶寬消耗很小,只有128kbps,用戶感覺(jué)圖像和聲音效果較好。圖1.本發(fā)明的系統(tǒng)結(jié)構(gòu)圖;圖2.本發(fā)明的網(wǎng)絡(luò)層次結(jié)構(gòu)圖;圖3.本發(fā)明的原理示意圖;說(shuō)明其中的live@address表示地址為“address”上面的一個(gè)名為“l(fā)ive”的節(jié)目源;上面的表示就是SIP中的一個(gè)URI。圖4.用戶端協(xié)議層次結(jié)構(gòu)圖;圖5.擴(kuò)展服務(wù)器協(xié)議層次結(jié)構(gòu)圖;圖6.媒體服務(wù)器協(xié)議層次結(jié)構(gòu)圖;圖7.用戶端的程序模塊劃分關(guān)系圖;圖8.媒體服務(wù)器程序模塊劃分關(guān)系圖;圖9.用戶消息流程圖;圖10.媒體服務(wù)器消息流程圖;圖11.擴(kuò)展媒體服務(wù)器消息流程圖;圖12.SIP服務(wù)器消息流程圖;圖13.擴(kuò)展媒體服務(wù)器程序結(jié)構(gòu);具體實(shí)施例方式系統(tǒng)中包含4個(gè)部分客戶端,SIP服務(wù)器,擴(kuò)展媒體服務(wù)器(以下簡(jiǎn)稱(chēng)為EMS服務(wù)器),以及媒體服務(wù)器(以下簡(jiǎn)稱(chēng)為MS服務(wù)器),見(jiàn)圖1??蛻舳松厦孢\(yùn)行我們的客戶端軟件,功能是1,實(shí)現(xiàn)向SIP服務(wù)器注冊(cè)客戶端的信息,包括用戶名和密碼;2,請(qǐng)求節(jié)目;3,從節(jié)目源處下載節(jié)目;4,緩存一部分的節(jié)目;5,將緩存的節(jié)目的信息注冊(cè)到擴(kuò)展媒體服務(wù)器上;6,在狀態(tài)改變的時(shí)候,能實(shí)時(shí)的向擴(kuò)展媒體服務(wù)器報(bào)告自己的最新?tīng)顟B(tài)。SIP服務(wù)器上面運(yùn)行SIP協(xié)議棧實(shí)現(xiàn)基本的SIP服務(wù)器的功能,包括注冊(cè),代理,以及對(duì)數(shù)據(jù)包的尋址、路由和轉(zhuǎn)發(fā)等。媒體服務(wù)器是節(jié)目的初始提供者,擁有一個(gè)或者多個(gè)節(jié)目可供用戶下載。它實(shí)現(xiàn)的功能主要有開(kāi)始的時(shí)候向SIP服務(wù)器進(jìn)行注冊(cè)自己的信息,包括用戶名和密碼;向擴(kuò)展媒體服務(wù)器注冊(cè)自己的媒體信息;在狀態(tài)改變時(shí)能及時(shí)地向擴(kuò)展媒體服務(wù)器發(fā)出更新消息。擴(kuò)展媒體服務(wù)器實(shí)現(xiàn)的功能如下開(kāi)始的時(shí)候向SIP服務(wù)器注冊(cè)自己的信息,包括用戶名和密碼;接受媒體服務(wù)器的注冊(cè)信息,創(chuàng)建媒體信息數(shù)據(jù)庫(kù);根據(jù)用戶請(qǐng)求在媒體信息數(shù)據(jù)庫(kù)中進(jìn)行查詢和選擇滿足要求的最佳對(duì)等體以供用戶下載;在接收到用戶的更新消息的時(shí)候能及時(shí)地更新媒體信息數(shù)據(jù)庫(kù)??蛻舳耍瑪U(kuò)展媒體服務(wù)器,媒體服務(wù)器開(kāi)始的時(shí)候都需要向SIP服務(wù)器進(jìn)行注冊(cè)。并且開(kāi)始的時(shí)候所有的節(jié)目源媒體服務(wù)器通過(guò)SIP服務(wù)器向擴(kuò)展媒體服務(wù)器注冊(cè)自己的媒體信息,包括節(jié)目名稱(chēng),緩存大小等信息??蛻舳?在成功向SIP服務(wù)器注冊(cè)之后,可以向SIP服務(wù)器端請(qǐng)求節(jié)目,SIP服務(wù)器可以將請(qǐng)求節(jié)目的消息轉(zhuǎn)發(fā)給擴(kuò)展媒體服務(wù)器,后者再根據(jù)一定的算法(最佳對(duì)等體選擇算法)選出合適的節(jié)目源,并將結(jié)果返回給客戶端,從而,客戶端可以直接和節(jié)目源建立連接,接收媒體節(jié)目。同時(shí),客戶端1緩存一定的節(jié)目,并向擴(kuò)展媒體服務(wù)器注冊(cè)自己的緩存節(jié)目的情況。新的客戶端2成功注冊(cè)后,向SIP服務(wù)器請(qǐng)求節(jié)目,擴(kuò)展媒體服務(wù)器接收到SIP服務(wù)器轉(zhuǎn)發(fā)過(guò)來(lái)的信息之后,進(jìn)行最佳對(duì)等體選擇算法,選擇出最合適的下載節(jié)點(diǎn),并將結(jié)果返回給客戶端2,從而客戶端2可以和下載節(jié)點(diǎn)建立連接,上圖中客戶端2被安排在客戶端1下載節(jié)目。同時(shí),客戶端2也需要緩存一部分的節(jié)目,并向?qū)U(kuò)展媒體服務(wù)器注冊(cè)自己的緩存節(jié)目的情況。在上面所有的消息交互全部是按照SIP協(xié)議的標(biāo)準(zhǔn)格式實(shí)現(xiàn)的,而媒體信息則是在被我們擴(kuò)展的會(huì)話描述協(xié)議SDP中進(jìn)行傳輸?shù)?。針?duì)第3代P2P網(wǎng)絡(luò)存在的不足,基于國(guó)際標(biāo)準(zhǔn)協(xié)議SIP,結(jié)合IPv6網(wǎng)絡(luò)特點(diǎn)(更大、更快,更安全和支持服務(wù)質(zhì)量QoS),面向流媒體播放的特定應(yīng)用,提出一種新的P2P網(wǎng)絡(luò)體系結(jié)構(gòu),即所謂的第4代P2P網(wǎng)絡(luò),這種網(wǎng)絡(luò)的結(jié)構(gòu)特征主要體現(xiàn)在3個(gè)方面第1系統(tǒng)的核心協(xié)議標(biāo)準(zhǔn)化。數(shù)據(jù)的組織與分發(fā)、路由以及定位等方法是構(gòu)成P2P網(wǎng)絡(luò)的核心技術(shù),這些方法的標(biāo)準(zhǔn)化,是P2P網(wǎng)絡(luò)標(biāo)準(zhǔn)化的基礎(chǔ)。根據(jù)我們前期研究工作,我們證實(shí)了SIP和P2P技術(shù)結(jié)合的可行性和優(yōu)越性。例如通過(guò)SIP的代理服務(wù)來(lái)實(shí)現(xiàn)P2P網(wǎng)絡(luò)節(jié)點(diǎn)之間定位和路由,通過(guò)SIP的呼叫方式來(lái)實(shí)現(xiàn)節(jié)點(diǎn)之間的流媒體數(shù)據(jù)分發(fā)。因此,SIP作為互聯(lián)網(wǎng)普遍采用的標(biāo)準(zhǔn)控制協(xié)議,用它來(lái)構(gòu)建的P2P網(wǎng)絡(luò),具有較強(qiáng)的可管性和可控性,同時(shí),也提供了一種靈活的運(yùn)營(yíng)模式。第2系統(tǒng)將采用分層的混合結(jié)構(gòu)。根據(jù)前期研究成果,初步確定系統(tǒng)可以分為3層,見(jiàn)圖2。第1層為應(yīng)用管理層,由系統(tǒng)管理工作站以及認(rèn)證服務(wù)器等組成,利用第2層提供的接口,實(shí)現(xiàn)系統(tǒng)參數(shù)配置、管理員對(duì)系統(tǒng)的監(jiān)控和管理、以及認(rèn)證計(jì)費(fèi)等功能。第2層為SIP中間層,由分布式的SIP服務(wù)器組成,這些服務(wù)器具有SIP所有實(shí)體的功能,包括Proxy(代理)、Registrar(注冊(cè))等,這一層將采用結(jié)構(gòu)化的P2P網(wǎng)絡(luò)結(jié)構(gòu),主要實(shí)現(xiàn)系統(tǒng)數(shù)據(jù)的組織與分發(fā)、路由選擇和資源信息定位等功能,同時(shí)還能控制節(jié)點(diǎn)加入、退出以及第3層播放節(jié)點(diǎn)之間P2P連接建立和拆除;除此以外,還需要給應(yīng)用層提供計(jì)費(fèi)、認(rèn)證以及管理接口。第3層為流媒體數(shù)據(jù)傳輸層,由流媒體服務(wù)器、播放節(jié)點(diǎn)組成,采用非結(jié)構(gòu)化P2P組織方式,在第2層的控制下,節(jié)點(diǎn)之間可以建立P2P連接,實(shí)現(xiàn)數(shù)據(jù)的傳輸。這種多層結(jié)構(gòu)模型,既提高了系統(tǒng)的可擴(kuò)展性和靈活性,同時(shí)又不要求第3層播放節(jié)點(diǎn)維護(hù)鄰居信息和狀態(tài)信息,簡(jiǎn)化了系統(tǒng)的整體開(kāi)銷(xiāo),提高了系統(tǒng)性能。第3可以連接多種類(lèi)型的播放終端,例如非PC機(jī)終端。目前,P2P流媒體播放系統(tǒng)都是面向PC機(jī)而設(shè)計(jì)的,而且只能通過(guò)WEB的點(diǎn)擊方式來(lái)選擇流媒體文件。在第4代P2P網(wǎng)絡(luò)中,考慮到NGI無(wú)所不在的分布優(yōu)勢(shì)和泛在特點(diǎn),通過(guò)使用SIP協(xié)議,可以支持各種類(lèi)型的SIP終端,并且利用SIP的URI機(jī)制,可以采用E.164數(shù)字編號(hào)方式來(lái)選擇媒體文件。例如,可以采用帶有機(jī)頂盒的電視機(jī),利用數(shù)字鍵,使用類(lèi)似頻道選擇方式來(lái)選擇P2P網(wǎng)絡(luò)中直播的電視節(jié)目、或者視頻文件;也可以采用帶有MP3播放功能IP網(wǎng)絡(luò)話機(jī),利用電話撥號(hào)來(lái)選擇MP3歌曲,還可以采用PDA或者手機(jī)等手持設(shè)備來(lái)點(diǎn)播流媒體、或者選擇網(wǎng)絡(luò)電臺(tái)直播節(jié)目,而不需要登陸到WEB服務(wù)器上進(jìn)行節(jié)目的選擇。因此,可以在真正意義上實(shí)現(xiàn)三網(wǎng)業(yè)務(wù)的融合。本發(fā)明提出了下述的SIP-P2P的體系結(jié)構(gòu),見(jiàn)圖31.主要實(shí)體的實(shí)體功能該系統(tǒng)主要分為四種物理實(shí)體,如下圖3所示1.1客戶端實(shí)體客戶端程序分布在各個(gè)單獨(dú)的PC和其他的設(shè)備上,并且支持可移動(dòng)的。其主要的功能是1)與其它客戶進(jìn)行交互,從它們那里得到需求的節(jié)目信息;2)向SIP服務(wù)器注冊(cè)自己的信息;3)向EMS服務(wù)器請(qǐng)求節(jié)目;4)向EMS服務(wù)器注冊(cè)自己的節(jié)目信息;5)下載和存儲(chǔ)節(jié)目,并播放節(jié)目;6)向下游節(jié)點(diǎn)發(fā)送節(jié)目;7)實(shí)時(shí)的向EMS服務(wù)器發(fā)送自己的更新消息。1.2SIP服務(wù)器實(shí)體SIP服務(wù)器實(shí)體分布在SER服務(wù)器(即SIP高速路由服務(wù)器)上,主要完成注冊(cè)、代理功能。這一部分我們采用的是技術(shù)成熟的服務(wù)器,因而可以直接實(shí)現(xiàn)對(duì)數(shù)據(jù)包的路由,尋址,轉(zhuǎn)發(fā)功能。為了更好的說(shuō)明SIP服務(wù)器實(shí)體,下面我們來(lái)認(rèn)識(shí)一下SER服務(wù)器SER(SIPExpressRouter)是一個(gè)工業(yè)增強(qiáng)型的基于SIP協(xié)議的自由的SIP服務(wù)器,他被設(shè)計(jì)來(lái)擴(kuò)展IP電話組織到一個(gè)很大的范圍。SER可以記錄用戶行蹤,建立會(huì)話,轉(zhuǎn)播即時(shí)消息和為新的插件應(yīng)用創(chuàng)造空間,它的被證實(shí)了的協(xié)同工作能力保證了同其他的賣(mài)主的部件的無(wú)縫的整合,從而減少了遭遇單賣(mài)主陷阱的風(fēng)險(xiǎn)。他的性能和魯棒性允許他不僅僅能為數(shù)百萬(wàn)的用戶服務(wù),而且還能夠滿足非常大的運(yùn)營(yíng)商的要求。SER配置具有高度的靈活性,他不僅可以允許各種各樣的路由和管理策略而且可以設(shè)置新的或者用戶自定義的服務(wù)。他的可配置能力允許他承擔(dān)很多的角色,網(wǎng)絡(luò)安全屏障,應(yīng)用服務(wù)器,或者PSTN的網(wǎng)關(guān)守衛(wèi)。同時(shí),SER也可以被應(yīng)用到分布式的應(yīng)用中。1.3擴(kuò)展媒體服務(wù)器(以下簡(jiǎn)稱(chēng)EMS服務(wù)器)實(shí)體EMS服務(wù)器擁有自己?jiǎn)为?dú)的URI(例如livebroadcast@address),它的主要功能就是為客戶端選擇最佳的節(jié)目源進(jìn)行節(jié)目下載,具體的操作1)向SIP服務(wù)器實(shí)體進(jìn)行注冊(cè);2)接受媒體實(shí)體的媒體信息的注冊(cè),并建立媒體信息數(shù)據(jù)庫(kù);3)在接受了客戶端的節(jié)目請(qǐng)求的時(shí)候能從媒體信息的數(shù)據(jù)庫(kù)中找出最佳的節(jié)目源以供客戶端下載;4)能夠向用戶和媒體服務(wù)器提出求,要求他們隨時(shí)報(bào)告自己的狀態(tài);5)在接受到客戶端或者媒體服務(wù)器的更新消息的時(shí)候能夠及時(shí)的更新數(shù)據(jù)庫(kù)。而EMS服務(wù)器所作的這些都是對(duì)用戶透明的。1.4媒體服務(wù)器(以下簡(jiǎn)稱(chēng)MS)實(shí)體媒體服務(wù)器提供原始的流媒體信息,其利用普通的PC機(jī)來(lái)實(shí)現(xiàn)。在本系統(tǒng)中媒體服務(wù)器的地位和普通的用戶相當(dāng)。它將本地采集到的媒體信息流化,然后發(fā)送給相應(yīng)的提出請(qǐng)求的用戶。功能如下1)向SIP服務(wù)器注冊(cè)自己的信息;2)向EMS服務(wù)器注冊(cè)自己的媒體信息;3)將媒體流發(fā)送給下載的客戶端;4)實(shí)時(shí)的向EMS服務(wù)器發(fā)送自己的更新消息。上圖中基本表示出了各個(gè)物理實(shí)體之間的消息交互情況,所有交互的消息都是標(biāo)準(zhǔn)的SIP方法。2主要實(shí)現(xiàn)實(shí)體的協(xié)議層次結(jié)構(gòu)2.1用戶端的協(xié)議層次結(jié)構(gòu)用戶端的協(xié)議層次結(jié)構(gòu)如圖4所示用戶端分成信令處理和媒體處理兩個(gè)部分信令部分使用標(biāo)準(zhǔn)的SIP方法,媒體流通過(guò)RTP傳送,這兩者都是基于UDP之上的。通過(guò)SIP信令的交互,主要完成了最佳鄰居節(jié)點(diǎn)的獲取,備用節(jié)點(diǎn)的維護(hù),下游節(jié)點(diǎn)的探測(cè)等等一些功能,以實(shí)現(xiàn)直播的控制保證各個(gè)節(jié)點(diǎn)都能夠得到盡可能優(yōu)質(zhì)的流媒體數(shù)據(jù)。在RTP上傳送的流媒體和有SIP作為信令的直播控制共同構(gòu)成了直播的用戶平臺(tái)。2.2EMS服務(wù)器的協(xié)議層次結(jié)構(gòu)EMS的功能主要在于直播的控制,為請(qǐng)求的用戶提供最佳的鄰居節(jié)點(diǎn)。沒(méi)有涉及流媒體的傳輸。所以協(xié)議層次比較簡(jiǎn)單,見(jiàn)圖5。2.3媒體服務(wù)器的協(xié)議層次結(jié)構(gòu)媒體服務(wù)器的功能在本P2PSIP直播系統(tǒng)的作用與普通的用戶節(jié)點(diǎn)相似,協(xié)議層次相同,見(jiàn)圖6。3主要實(shí)現(xiàn)實(shí)體的模塊劃分以及相關(guān)接口3.1用戶端的程序模塊劃分,見(jiàn)圖7。各個(gè)模塊的功能和消息交互關(guān)系的敘述如下3.1.1SIP消息發(fā)送、接收、解析模塊該模塊負(fù)責(zé)完成SIP協(xié)議棧的基本功能,主要包括SIP方法的接收、SIP方法的解析、SIP方法相關(guān)內(nèi)容的提取、SIP方法的構(gòu)造等等。這部分的實(shí)現(xiàn),我們以eXosip為基礎(chǔ)。下面我們了解一下eXosip。Osip2是一個(gè)開(kāi)放源代碼的sip協(xié)議棧,是開(kāi)源代碼中不多使用C語(yǔ)言寫(xiě)的協(xié)議棧之一,它具有短小簡(jiǎn)潔的特點(diǎn),專(zhuān)注于sip底層解析使得它的效率比較高。eXosip是Osip2協(xié)議棧的封裝和調(diào)用。它實(shí)現(xiàn)了作為單個(gè)sip終端的大部分功能,如register、call、subscription等。eXosip使用UDPsocket套接字實(shí)現(xiàn)底層sip協(xié)議的接收/發(fā)送。并且封裝了sip消息的解釋器。他使用定時(shí)輪循的方式調(diào)用Osip2的transaction處理函數(shù),這部分是協(xié)議棧運(yùn)轉(zhuǎn)的核心。透過(guò)添加/讀取transaction消息管道的方式,驅(qū)動(dòng)transaction的狀態(tài)機(jī),使得來(lái)自遠(yuǎn)端的sip信令能匯報(bào)給調(diào)用程序,來(lái)自調(diào)用程序的反饋能通過(guò)sip信令回傳給遠(yuǎn)端。根據(jù)exosip中的定義的接口函數(shù)主要包括eXosip_call_dialog_find()eXosip_call_find()eXosip_call_free()eXosip_call_init()eXosip_call_send_request()eXosip_call_build_notify()eXosip_call_send_answer()eXosip_call_build_answer()eXosip_call_set_reference()eXosip_call_send_initial_invite()eXosip_call_build_initial_invite()eXosip_callbuild_request()eXosip_call_send_prack()eXosip_call_build_prack()eXosip_call_send_ack()eXosip_call_buildack()eXosip_event_add()eXosip_event_free()eXosip_event_get()eXosip_event_init()eXosip_event_wait()eXosip_init()eXosip_lock()eXosip_quit()eXosip_unlock()eXosip_update()eXosip_guess_localip()eXosip_listen_to()eXosip_add_authenticationinfo()eXosip_automatic_action()eXosip_options_send_request()eXosip_options_send_answer()eXosip_options_build_request()eXosip_message_send_answer()eXosip_message_build_answer()eXosip_masquerade_contact()eXosip_message_send_request()eXosip_message_build_request()eXosip_insubscription_send_request()eXosip_insubscription_build_notify()eXosip_insubscription_send_answer()eXosip_insubscription_build_answer()eXosip_get_audio_media()eXosip_get_audio_connection()eXosip_get_sdp_info()eXosip_get_remote_sdp()eXosip_get_local_sdp()eXosip_register_send_register()eXosip_register_build_register()eXosip_register_build_initial_register()eXosip_subscribe_build_initial_request()eXosip_subscribe_send_initial_request()eXosip_refer_send_request()eXosip_refer_build_request()3.1.2Sip消息處理模塊Sip消息處理模塊是用戶端程序中處于核心地位的模塊。一方面,通過(guò)從Sip消息發(fā)送、接收、解析模塊接收到的SIP方法的信息、對(duì)其進(jìn)行相應(yīng)的處理,然后將重要的消息或者傳送到其他相關(guān)的模塊,讓這些相關(guān)的模塊做出相應(yīng)的動(dòng)作,或者在模塊內(nèi)部綜合其他信息做出決策,然后調(diào)用Sip消息發(fā)送、接收、解析模塊的接口函數(shù)構(gòu)造相應(yīng)的SIP消息,在恰當(dāng)?shù)臅r(shí)候傳送到特定的地點(diǎn)。另一方面,通過(guò)其他模塊傳送過(guò)來(lái)的消息,在本模塊內(nèi)作出決策,然后或者發(fā)送消息到其他的模塊指導(dǎo)其進(jìn)行動(dòng)作,或者構(gòu)造消息傳送到指定的地點(diǎn)。而且該模塊還是與用戶交互的中間模塊,接收用戶輸入的消息,并向用戶傳送必要的程序運(yùn)行過(guò)程中產(chǎn)生的數(shù)據(jù)。3.1.3流媒體模塊該模塊主要完成與流媒體接收時(shí)的相關(guān)操作,包括流媒體接收之前的Socket的初始化、流媒體的接收、接收到的流媒體排序、將接收流媒體RTP包重新組成應(yīng)用層數(shù)據(jù)包、丟棄無(wú)效的流媒體包、流媒體接收停止等等。對(duì)外的接口Stream_Receive_Initiation()Stream_Receive_Begin()Stream_Receive_End()Get_Nec_Info()3.1.4下游節(jié)點(diǎn)連接處理模塊該模塊主要完成如下功能A.該模塊接收從Sip消息處理模塊傳送過(guò)來(lái)的消息Permit_another_subpeer_connect(),來(lái)處理所有已經(jīng)通過(guò)Sip消息處理模塊協(xié)商的下游節(jié)點(diǎn)的連接。B.通過(guò)對(duì)流媒體發(fā)送模塊發(fā)送消息Get_Nec_Info()來(lái)得到發(fā)送流媒體必須的流媒體文件頭信息C.將本節(jié)點(diǎn)的連接狀態(tài)向狀態(tài)信息處理模塊通告D.向下游節(jié)點(diǎn)探測(cè)模塊發(fā)送消息Subnode_Detect_Begin(),開(kāi)始對(duì)與下游節(jié)點(diǎn)存活狀態(tài)的檢測(cè)。E.向流媒體發(fā)送模塊發(fā)送Stream_Send_Begin(),開(kāi)始對(duì)下游節(jié)點(diǎn)提供流媒體的數(shù)據(jù)。對(duì)外的接口如下SubNode_Connect_Process_Begin()Permit_another_subpeer_connect()Refuse_another_subpeer_connect()SubNode_Connect_Process_End()3.1.5流媒體發(fā)送模塊該模塊主要負(fù)責(zé)向下游的節(jié)點(diǎn)發(fā)送流媒體數(shù)據(jù),同時(shí)接收從下游節(jié)點(diǎn)探測(cè)模塊傳送過(guò)來(lái)的反饋信息以決定是否繼續(xù)發(fā)送流媒體數(shù)據(jù)。主要的接口Stream_Send_Begin()Stream_Send_End()3.1.6下游節(jié)點(diǎn)探測(cè)模塊主要負(fù)責(zé)周期性的監(jiān)測(cè)下游節(jié)點(diǎn)的存活狀態(tài)。對(duì)外提供的接口如下Is_Subnode_Alive()Subnode_Detect_Initiation()Subnode_Detect_Begin()Subnode_Detect_End()3.1.7備份節(jié)點(diǎn)探測(cè)模塊主要負(fù)責(zé)周期性的監(jiān)測(cè)備用節(jié)點(diǎn)是否存活以及下游節(jié)點(diǎn)的能力狀況提供的接口主要有Backup_Node_Detect_Initiation()Backup_Node_Detect_Begin()Backup_Node_Detect_End()Backup_Node_Detect_Info()3.1.8狀態(tài)信息處理模塊該模塊的主要功能收集必要的狀態(tài)信息,傳送給Sip消息處理模塊以做出決策。其中的狀態(tài)信息目前只包含節(jié)點(diǎn)的IP,節(jié)點(diǎn)能提供的最大帶寬,節(jié)點(diǎn)的緩存大小以及節(jié)點(diǎn)的緩存的節(jié)目編號(hào)。這些狀態(tài)信息是要被發(fā)送給EMS服務(wù)器的信息數(shù)據(jù)庫(kù)的。接口Get_State_Info()State_Info_Process_Begin()State_Info_Process_End()3.1.9延遲計(jì)算模塊該模塊主要監(jiān)測(cè)本節(jié)點(diǎn)到幾個(gè)標(biāo)準(zhǔn)節(jié)點(diǎn)的延時(shí),以確定自己的相對(duì)延時(shí),傳送給狀態(tài)信息處理模塊接口Delay_Compute_Begin()Delay_Compute_End()Get_Delay()3.1.10帶寬計(jì)算模塊在延遲計(jì)算模塊的基礎(chǔ)上,目前只是根據(jù)計(jì)算帶寬公式發(fā)送的數(shù)據(jù)量/延遲。3.1.11流媒體播放模塊在本例中直接調(diào)用WindowsMediaPlayer的EXE3.2EMS程序模塊結(jié)構(gòu)關(guān)系,見(jiàn)圖13EMS主要的功能就是A.從用戶和MS收集相關(guān)的狀態(tài)信息,以便進(jìn)行最佳鄰居節(jié)點(diǎn)的選取B.給提出請(qǐng)求的用戶,尋求最佳的鄰居節(jié)點(diǎn)功能上的單一性決定了EMS程序模塊結(jié)構(gòu)的簡(jiǎn)單性。3.2.1SIP消息發(fā)送、接收、解析模塊等同于用戶模塊相應(yīng)部分的功能3.2.2SIP消息處理模塊功能上與用戶模塊相應(yīng)部分的功能類(lèi)似3.2.3信息收集模塊該模塊主要負(fù)責(zé)和狀態(tài)信息數(shù)據(jù)庫(kù)打交道。SIP消息處理模塊對(duì)收到的請(qǐng)求進(jìn)行分析,信息更新相關(guān)的請(qǐng)求與更新相關(guān)的數(shù)據(jù),直接轉(zhuǎn)交給信息收集模塊進(jìn)行處理。很多情況下,信息收集模塊可以直接將收到的數(shù)據(jù)依據(jù)一定的原則向狀態(tài)信息數(shù)據(jù)庫(kù)進(jìn)行寫(xiě)入。但是另外一些情況,則要進(jìn)行相應(yīng)的分析,才能夠決定是否向狀態(tài)信息數(shù)據(jù)庫(kù)寫(xiě)入以及寫(xiě)入什么信息。舉個(gè)例子當(dāng)一個(gè)節(jié)點(diǎn)的上游節(jié)點(diǎn)通告EMS該節(jié)點(diǎn)可能離去了,當(dāng)這個(gè)請(qǐng)求到達(dá)SIP消息處理模塊之后,立刻將該消息報(bào)告了信息收集模塊。但是現(xiàn)在并不能通知數(shù)據(jù)庫(kù)要求刪除與該節(jié)點(diǎn)相關(guān)的信息。因?yàn)閮H僅憑一個(gè)上游節(jié)點(diǎn)說(shuō)某某節(jié)點(diǎn)離去了,是不充分的。是否能夠?qū)⒃摴?jié)點(diǎn)刪除,這個(gè)決定由信息收集模塊來(lái)進(jìn)行決策。嚴(yán)格的說(shuō)應(yīng)該等到所有的與該節(jié)點(diǎn)相關(guān)的節(jié)點(diǎn)都通告該節(jié)點(diǎn)離去時(shí),才能判定該節(jié)點(diǎn)離去。當(dāng)然具體的算法還用根據(jù)實(shí)際情況合理的選定。該模塊主要提供的接口如下Information_Collect_Init()Information_Collcet_Begin()Information_Collect_End()Delete_correlative_data()Update_correlative_data()3.2.4最佳對(duì)等體選擇模塊該模塊是EMS的核心模塊,完成最佳對(duì)等體節(jié)點(diǎn)的選取的功能,他是根據(jù)狀態(tài)信息數(shù)據(jù)庫(kù)中的數(shù)據(jù),選擇對(duì)等體節(jié)點(diǎn)。針對(duì)一個(gè)節(jié)目請(qǐng)求,他首先從數(shù)據(jù)庫(kù)中選擇緩存了這個(gè)節(jié)目的節(jié)點(diǎn),然后考慮雙方的IP的關(guān)系,分析是否在一個(gè)網(wǎng)段內(nèi),如果是,則優(yōu)先考慮此節(jié)點(diǎn),否則,任意選擇一個(gè)節(jié)點(diǎn)作為最佳對(duì)等體節(jié)點(diǎn)。提供的接口Peer_Select_Init()Peer_Select_Begin()Peer_Select_End()3.2.5預(yù)定消息更新模塊該模塊主要完成向所有的預(yù)定消息期限時(shí)間快要過(guò)期的節(jié)點(diǎn)重新發(fā)送預(yù)定消息,以訂閱相關(guān)必要信息的更新。預(yù)定消息更新模塊通過(guò)搜索狀態(tài)信息數(shù)據(jù)庫(kù)以決定向哪些節(jié)點(diǎn)發(fā)送預(yù)定消息。接口Subscribe_Refresh_Begin()Subscribe_Refresh_End()3.2.6狀態(tài)信息數(shù)據(jù)庫(kù)模塊狀態(tài)信息數(shù)據(jù)庫(kù)接口Bind_dbroad()Db_init()Db_close()Db_query()Db_free_query()Db_insert()Db_delete()Db_update()Db_use_table()3.2MS程序模塊結(jié)構(gòu)框圖具體的MS程序模塊結(jié)構(gòu)框圖如圖8所示可以看出MS程序模塊結(jié)構(gòu)和用戶的程序模塊結(jié)構(gòu)沒(méi)有太大的區(qū)別。僅有的區(qū)別如下A.沒(méi)有流媒體接收模塊,改為流媒體文件讀取模塊B.沒(méi)有流媒體播放模塊以上的區(qū)別都是由于MS和普通用戶的定位不同MS是一個(gè)專(zhuān)門(mén)的流媒體發(fā)送服務(wù)器,然而普通的用戶是個(gè)兼職的流媒體發(fā)送服務(wù)器,普通用戶還要享用流媒體的樂(lè)趣。我們主要只討論流媒體文件讀取模塊。該模塊主要負(fù)責(zé)以下功能A.從原始的WMV文件中提取必要的文件頭信息以及文件頭本身B.將必要的文件信息和文件頭本身傳送給下游節(jié)點(diǎn)連接處理模塊C.向流媒體模塊提供相應(yīng)的按照實(shí)時(shí)傳輸協(xié)議傳輸?shù)牧髅襟w包主要的接口函數(shù)如下Get_File_Header()Get_File_Nec_Info()Stream_File_Reader_Begin()Stream_File_Reader_End()本發(fā)明的程序包含4部分客戶端程序,SIP服務(wù)器程序,擴(kuò)展媒體服務(wù)器(又名EMS用戶代理)程序,媒體服務(wù)器程序。網(wǎng)絡(luò)環(huán)境就是用的SER服務(wù)器和幾臺(tái)主機(jī),他們都在CERNET2中運(yùn)行,其中尋址和路由的實(shí)現(xiàn)都是用的SER服務(wù)器,數(shù)據(jù)傳輸采用的是UDP協(xié)議,其中各個(gè)功能部件的工作步驟如下3.3工作步驟3.3.1客戶端1.初始化,包括設(shè)定IP地址,端口號(hào),文件保存位置,編解碼方式。2.注冊(cè)向SIP服務(wù)器注冊(cè)自己的信息,包括用戶名和密碼等具體實(shí)現(xiàn)通過(guò)構(gòu)建SIP中的register消息,再通過(guò)套接字傳輸實(shí)現(xiàn)注冊(cè)3.向SIP服務(wù)器請(qǐng)求節(jié)目具體實(shí)現(xiàn)通過(guò)SIP的Invite消息構(gòu)建請(qǐng)求消息,其中包含節(jié)目的編號(hào)4.收到EMS服務(wù)器的消息后,向節(jié)目源請(qǐng)求節(jié)目,具體實(shí)現(xiàn)同35.下載并播放節(jié)目,同時(shí)緩存一部分節(jié)目。具體實(shí)現(xiàn)播放采用的是WindowsMediaPlayer直接播放。6.向EMS服務(wù)器注冊(cè)自己緩存的節(jié)目信息其中的節(jié)目信息目前只包含節(jié)點(diǎn)的IP,節(jié)點(diǎn)能提供的最大帶寬,節(jié)點(diǎn)的緩存大小以及節(jié)點(diǎn)的緩存的節(jié)目編號(hào)。7.等待下游節(jié)點(diǎn)的連結(jié)8.向下游節(jié)點(diǎn)發(fā)送節(jié)目9.向EMS服務(wù)器發(fā)送更新消息10.退出時(shí)向下游節(jié)點(diǎn),節(jié)目源,以及EMS服務(wù)器發(fā)送離開(kāi)消息。3.3.2SIP服務(wù)器1.初始化,包括設(shè)定IP地址,端口號(hào),初始化用戶信息數(shù)據(jù)庫(kù)。其中數(shù)據(jù)庫(kù)采用的是mysql。2.等待用戶的注冊(cè)3.接收到用戶注冊(cè)后,更新用戶信息數(shù)據(jù)庫(kù)4.在接收到用戶的請(qǐng)求時(shí),判斷目的地,并轉(zhuǎn)發(fā)用戶請(qǐng)求。具體實(shí)現(xiàn)就是SIP服務(wù)器的轉(zhuǎn)發(fā)功能,可以采用Exosip來(lái)實(shí)現(xiàn)。3.3.3EMS服務(wù)器1.初始化,包括設(shè)定IP地址,端口號(hào),初始化媒體信息數(shù)據(jù)庫(kù)其中數(shù)據(jù)庫(kù)采用的Mysql,對(duì)信息數(shù)據(jù)庫(kù)的初始化就是建一些只有屬性名的空表。2.注冊(cè)向SIP服務(wù)器注冊(cè)自己的信息,包括用戶名和密碼等3.接收注冊(cè)等待媒體服務(wù)器注冊(cè)他的媒體信息,更新媒體信息數(shù)據(jù)庫(kù)4.接收到客戶端的節(jié)目請(qǐng)求時(shí),進(jìn)行數(shù)據(jù)庫(kù)的查詢,找出最佳的節(jié)點(diǎn)來(lái)提供給客戶端。具體的實(shí)現(xiàn)在前面的EMS模塊說(shuō)明中有所說(shuō)明。5.發(fā)送subscribe更新消息請(qǐng)求,以便客戶端和節(jié)目源在他們的狀態(tài)改變的時(shí)候能夠?qū)崟r(shí)的通知EMS服務(wù)器。6.在收到客戶端和節(jié)目源的更新的消息的時(shí)候更新媒體信息數(shù)據(jù)庫(kù)。3.3.4媒體服務(wù)器1.初始化,包括設(shè)定IP地址,端口號(hào),編碼方式。2.注冊(cè)1向SIP服務(wù)器注冊(cè)自己的信息,包括用戶名和密碼等具體實(shí)現(xiàn)同4.2.1.1中的23.注冊(cè)2向EMS服務(wù)器注冊(cè)自己的媒體信息,包括節(jié)目名稱(chēng),下載速率等。具體實(shí)現(xiàn)同1.2.1.1中的64.向下游節(jié)點(diǎn)發(fā)送節(jié)目5.在狀態(tài)改變的時(shí)候發(fā)送更新消息給EMS服務(wù)器3.4消息交互流程圖,見(jiàn)圖9-圖12.權(quán)利要求1.基于會(huì)話初始化協(xié)議的流媒體直播P2P網(wǎng)絡(luò)方法,其特征在于,該方法是在一個(gè)基于會(huì)話初始化協(xié)議的IPTv系統(tǒng)中實(shí)現(xiàn)的,所述系統(tǒng)含有客戶端為各單獨(dú)的PC機(jī),或移動(dòng)通信終端,或其它的非PC機(jī)終端;在該客戶端上設(shè)有SIP消息接收、發(fā)送、解析模塊,所述SIP是會(huì)話初始化協(xié)議的簡(jiǎn)稱(chēng),下同;SIP消息處理模塊,與所述SIP消息接收、發(fā)送、解析模塊互連;同時(shí)設(shè)有與其它P2P用戶交互的接口;流媒體接收模塊,與所述SIP消息處理模塊互連;流媒體播放模塊,輸入接口與該流媒體接收模塊的輸出接口連接;下游節(jié)點(diǎn)連接處理模塊,分別設(shè)有所述SIP消息處理模塊、流媒體接收模塊輸出數(shù)據(jù)的輸入接口;流媒體發(fā)送模塊,與所述下游節(jié)點(diǎn)連接處理模塊互連,而且該流媒體發(fā)送模塊還設(shè)有該流媒體接收模塊輸出數(shù)據(jù)的輸入接口;下游節(jié)點(diǎn)探測(cè)模塊,設(shè)有該下游節(jié)點(diǎn)連接處理模塊輸出數(shù)據(jù)的輸入端口,分別向該流媒體發(fā)送模塊、SIP消息處理模塊輸送下游節(jié)點(diǎn)探測(cè)數(shù)據(jù)的輸出端口;備份節(jié)點(diǎn)探測(cè)模塊,與所述SIP消息處理模塊互連;狀態(tài)信息處理模塊,設(shè)有向所述SIP消息處理模塊輸出處理后的狀態(tài)信息的輸出端口,以及接收所述下游節(jié)點(diǎn)連接處理模塊的下游節(jié)點(diǎn)信息的接收端口;延時(shí)計(jì)算模塊,與該狀態(tài)信息處理模塊互連,通過(guò)檢測(cè)本節(jié)點(diǎn)到某個(gè)標(biāo)準(zhǔn)節(jié)點(diǎn)的延時(shí),以確定自己的相對(duì)時(shí)延,傳送給該狀態(tài)信息處理模塊;有效帶寬計(jì)算模塊,根據(jù)延時(shí)計(jì)算模塊提供的延時(shí)數(shù)據(jù)來(lái)計(jì)算有效帶寬,再向狀態(tài)信息處理模塊發(fā)出發(fā)送的數(shù)據(jù)量/延時(shí)時(shí)間的比值;以上所述客戶端的程序?qū)崿F(xiàn)以下的操作與其他的客戶交互,從他們那里得到需求的節(jié)目信息;向下述SIP服務(wù)器注冊(cè)自己的信息;向下述擴(kuò)展媒體服務(wù)器實(shí)時(shí)的發(fā)送自己的更新消息,或者請(qǐng)求節(jié)目,并注冊(cè)自己的節(jié)目信息;從包括其他客戶端和下述媒體服務(wù)器在內(nèi)的節(jié)目源下載、存儲(chǔ)并播放節(jié)目;SIP服務(wù)器,分布在SIP高速路由服務(wù)器上,該服務(wù)器是一個(gè)工業(yè)增強(qiáng)型的基于SIP協(xié)議的自由SIP服務(wù)器;擴(kuò)展媒體服務(wù)器,擁有自己?jiǎn)为?dú)的通用資源標(biāo)識(shí)符URI,通過(guò)以下程序模塊為客戶端選擇最佳的節(jié)目源進(jìn)行節(jié)目下載SIP消息接收、發(fā)送、解析模塊與客戶端的相應(yīng)模塊等同;SIP消息處理模塊,與所述SIP消息接收、發(fā)送、解析模塊互連,該SIP消息處理模塊與客戶端的相應(yīng)模塊等同;信息收集模塊,設(shè)有從所述SIP消息處理模塊輸出的更新后的狀態(tài)信息,并且對(duì)發(fā)送來(lái)的離去節(jié)點(diǎn)是否刪除的信息進(jìn)行決策是否與該離去節(jié)點(diǎn)相關(guān)的所有節(jié)點(diǎn)都向信息收集模塊發(fā)出了該節(jié)點(diǎn)離去的信息;狀態(tài)信息數(shù)據(jù)庫(kù),接收所述信息收集模塊發(fā)來(lái)的狀態(tài)信息;最佳對(duì)等體選擇模塊,與所述SIP消息處理模塊互連,同時(shí)設(shè)有接收來(lái)自該狀態(tài)信息數(shù)據(jù)庫(kù)發(fā)送來(lái)的狀態(tài)信息輸入端口;該最佳對(duì)等體選擇模塊根據(jù)SIP消息處理模塊的節(jié)目對(duì)等體選擇需求,再根據(jù)狀態(tài)信息庫(kù)中的數(shù)據(jù),選擇最佳的對(duì)等體節(jié)點(diǎn),即針對(duì)一個(gè)節(jié)目請(qǐng)求,首先從狀態(tài)信息數(shù)據(jù)庫(kù)中選擇緩存了該節(jié)目的節(jié)點(diǎn),再考慮雙方的IP關(guān)系,分析是否在一個(gè)網(wǎng)段內(nèi),若是,則優(yōu)先考慮該節(jié)點(diǎn),否則,任選一個(gè)節(jié)點(diǎn)作為最佳對(duì)等體節(jié)點(diǎn);用戶更新模塊,設(shè)有從該狀態(tài)信息所發(fā)送來(lái)的狀態(tài)信息的接收端口,以及發(fā)向該SIP消息處理模塊的用戶更新消息,以完成向所有快要過(guò)期的節(jié)點(diǎn)發(fā)送即將過(guò)期用戶的信息;媒體服務(wù)器,用PC機(jī)實(shí)現(xiàn),相當(dāng)于一個(gè)普通用戶,把本地采集到的信息流化,發(fā)送給相應(yīng)的提出請(qǐng)求的用戶,這是通過(guò)以下程序模塊實(shí)現(xiàn)的SIP消息接收、發(fā)送、解析模塊與客戶端的相應(yīng)模塊等同;SIP消息處理模塊,與所述SIP消息接收、發(fā)送、解析模塊互連;除了沒(méi)有設(shè)其他用戶交互接口外,該SIP消息處理模塊與客戶端相應(yīng)模塊相同;流媒體文件讀取模塊,從原始的編碼好的視頻文件中提取出必需的文件頭信息以及文件頭本身,并把這些內(nèi)容傳送給下述下游節(jié)點(diǎn)連接模塊,同時(shí)向下述流媒體模塊提供相關(guān)的遵守實(shí)時(shí)傳輸協(xié)議的流媒體包;下游節(jié)點(diǎn)連接處理模塊,設(shè)有所屬媒體文件讀取模塊輸出的編碼好的視頻文件信息的接收端口;同由設(shè)有接收SIP消息處理模塊輸出的下游節(jié)點(diǎn)信息的輸入端口;流媒體發(fā)送模塊,與所述下游節(jié)點(diǎn)及連接處理模塊互連,同時(shí)設(shè)有接收該流媒體文件讀取模塊輸出的遵守實(shí)時(shí)傳輸協(xié)議的流媒體包的輸入端口;下游節(jié)點(diǎn)探測(cè)模塊,設(shè)有來(lái)自該下游節(jié)點(diǎn)連接處理模塊發(fā)送來(lái)的下游節(jié)點(diǎn)連接處理信息接收端口,分別發(fā)往所述流媒體發(fā)送模塊和SIP消息處理模塊的下游節(jié)點(diǎn)探測(cè)信息輸出端口;狀態(tài)信息處理模塊,設(shè)有下游節(jié)點(diǎn)連接處理信息接收端口,以及發(fā)送到SIP消息處理模塊的狀態(tài)信息處理數(shù)據(jù)輸出端口;延時(shí)計(jì)算模塊,與所述的狀態(tài)信息處理模塊相連,通過(guò)監(jiān)測(cè)本節(jié)點(diǎn)到幾個(gè)標(biāo)準(zhǔn)節(jié)點(diǎn)的延時(shí)以確定自己的相對(duì)延時(shí),傳送給所述狀態(tài)信息處理模塊;有效帶寬計(jì)算模塊,根據(jù)延時(shí)計(jì)算模塊提供的延時(shí)數(shù)據(jù)來(lái)計(jì)算有有效帶寬,再向狀態(tài)信息處理模塊發(fā)出發(fā)送的數(shù)據(jù)量/延時(shí)時(shí)間的比值;所述基于會(huì)話初始化協(xié)議的流媒體直播P2P網(wǎng)絡(luò)主體依次含有如下的步驟步驟1.初始化客戶端,設(shè)定IP地址,端口號(hào),文件保存的位置以及編解碼方式;SIP服務(wù)器,設(shè)定IP地址,端口號(hào),初始化用戶信息數(shù)據(jù)庫(kù);擴(kuò)展媒體服務(wù)器,設(shè)定IP地址,端口號(hào),初始化媒體信息數(shù)據(jù)庫(kù);媒體服務(wù)器,設(shè)定IP地址,端口號(hào),以及編碼方式;步驟2.注冊(cè)客戶端向SIP服務(wù)器注冊(cè),包括用戶名和密碼在內(nèi)的自己的信息;SIP服務(wù)器在接收到用戶注冊(cè)后,更新用戶信息數(shù)據(jù)庫(kù);擴(kuò)展媒體服務(wù)器向SIP服務(wù)器注冊(cè),包括用戶名和密碼在內(nèi)的自己的信息,然后,等待媒體服務(wù)器來(lái)注冊(cè)媒體信息,更新媒體信息數(shù)據(jù)庫(kù);媒體服務(wù)器向SIP服務(wù)器注冊(cè)包括用戶名和密碼在內(nèi)的自己的信息,向擴(kuò)展媒體服務(wù)器注冊(cè)包括節(jié)目名稱(chēng)、下載速度在內(nèi)的自己的媒體信息;步驟3.客戶端向SIP服務(wù)器請(qǐng)求節(jié)目;步驟4.SIP服務(wù)器在接收到用戶的請(qǐng)求后,判斷目的地,向擴(kuò)展媒體服務(wù)器轉(zhuǎn)發(fā)用戶的請(qǐng)求;步驟5.擴(kuò)展媒體服務(wù)器在接收到客戶端的節(jié)目請(qǐng)求之后,進(jìn)行媒體信息數(shù)據(jù)庫(kù)查詢,找出最佳的節(jié)點(diǎn)來(lái)提供給客戶端;步驟6.客戶端收到擴(kuò)展媒體服務(wù)器的節(jié)目源地址后,向節(jié)目源請(qǐng)求節(jié)目;步驟7.客戶端接收、下載并播放節(jié)目源發(fā)送過(guò)來(lái)的節(jié)目,同時(shí),緩存一部分節(jié)目;同時(shí)向擴(kuò)展媒體服務(wù)器注冊(cè)自己的緩存的節(jié)目信息,該信息包括節(jié)點(diǎn)的IP、節(jié)點(diǎn)能提供的最大帶寬、節(jié)點(diǎn)的緩存大小、以及節(jié)點(diǎn)內(nèi)緩存的節(jié)目編號(hào);步驟8.客戶端等待下游節(jié)點(diǎn)的連結(jié),準(zhǔn)備向下游節(jié)點(diǎn)發(fā)送節(jié)目;退出時(shí)向下游節(jié)點(diǎn)、節(jié)目源、以及擴(kuò)展媒體服務(wù)器發(fā)送離開(kāi)消息;步驟9.客戶端或媒體服務(wù)器在狀態(tài)改變后,向擴(kuò)展媒體服務(wù)器發(fā)送更新消息,該擴(kuò)展媒體服務(wù)器在收到所述的更新消息后,存入,并更新媒體信息數(shù)據(jù)庫(kù)。全文摘要本發(fā)明屬于互聯(lián)網(wǎng)流媒體信息傳輸
技術(shù)領(lǐng)域
,其特征在于本發(fā)明含有客戶端程序,SIP服務(wù)器程序,對(duì)等體選擇程序和流媒體服務(wù)器程序,他們依次放在客戶端、SIP服務(wù)器、擴(kuò)展媒體服務(wù)器和流媒體服務(wù)器上,基于SIP協(xié)議,客戶端利用P2P網(wǎng)絡(luò)向SIP服務(wù)器請(qǐng)求節(jié)目,SIP服務(wù)器則把該請(qǐng)求轉(zhuǎn)發(fā)至擴(kuò)展媒體服務(wù)器,擴(kuò)展媒體服務(wù)器為客戶選擇最佳節(jié)目源,可以是別的客戶或者是流媒體服務(wù)器,客戶端便可根據(jù)該節(jié)目源的地址下載流媒體節(jié)目,并把節(jié)目緩存信息發(fā)往擴(kuò)展媒體服務(wù)器,客戶端或流媒體服務(wù)器也可向擴(kuò)展媒體服務(wù)器發(fā)送節(jié)點(diǎn)狀態(tài)的變更信息,從而引起媒體信息數(shù)據(jù)庫(kù)的刷新;本發(fā)明具有延時(shí)小、帶寬消耗小、視頻、音頻效果好的優(yōu)點(diǎn)。文檔編號(hào)H04L29/06GK1816053SQ20061001147公開(kāi)日2006年8月9日申請(qǐng)日期2006年3月10日優(yōu)先權(quán)日2006年3月10日發(fā)明者黃永峰,劉輝,何杰,李星申請(qǐng)人:清華大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
华宁县| 陈巴尔虎旗| 紫云| 庆云县| 英德市| 丽江市| 慈利县| 鲁甸县| 万盛区| 钟山县| 从化市| 长泰县| 太保市| 聊城市| 临猗县| 山阴县| 新津县| 嵊泗县| 绥滨县| 邵阳市| 甘洛县| 香格里拉县| 西华县| 息烽县| 阳西县| 垦利县| 东阳市| 屏东市| 咸丰县| 延寿县| 巴中市| 宁都县| 林周县| 阿尔山市| 通州市| 平武县| 巴林右旗| 长岛县| 石城县| 海原县| 南阳市|