亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法

文檔序號(hào):7824216閱讀:170來源:國(guó)知局
一種流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法
【專利摘要】本發(fā)明公開了一種流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法,采用C/S模式,以流媒體發(fā)送源為服務(wù)器端,以流媒體接收設(shè)備為客戶端,能夠不借助于交換機(jī)或者路由器在IGMP協(xié)議的支持和配置下使組播數(shù)據(jù)包能夠跨越大中小型局域網(wǎng)內(nèi)的各個(gè)不同網(wǎng)段,從而實(shí)現(xiàn)流媒體IP組播技術(shù)的應(yīng)用。本發(fā)明在跨網(wǎng)段的環(huán)境下,無需修改路由器配置和組播路由協(xié)議的環(huán)境下,實(shí)現(xiàn)了組播業(yè)務(wù)流的單向傳輸,非常適合在音視頻組播業(yè)務(wù)流單向推送的應(yīng)用系統(tǒng)中實(shí)施。
【專利說明】一種流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法

【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于多媒體和網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,尤其涉及一種流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法。

【背景技術(shù)】
[0002]目前流媒體技術(shù)廣泛應(yīng)用于網(wǎng)上的新聞發(fā)布、在線直播、網(wǎng)絡(luò)廣告、遠(yuǎn)程教育等領(lǐng)域。如果采用傳統(tǒng)的點(diǎn)到點(diǎn)的單播通信方式來實(shí)現(xiàn)這種I到多的業(yè)務(wù),會(huì)消耗大量的網(wǎng)絡(luò)帶寬并且擴(kuò)展性和部署性都比較差。而IP組播(也稱作多址廣播或者多播)技術(shù)則可以發(fā)送單一數(shù)據(jù)包到特定的組播組,從而使得加入該組播組的主機(jī)都能收到該數(shù)據(jù)包。由于這種方式能夠節(jié)省大量的網(wǎng)絡(luò)帶寬,使得IP組播技術(shù)被廣泛應(yīng)用于網(wǎng)絡(luò)音視頻廣播,多媒體遠(yuǎn)程教育等方面。
[0003]而在數(shù)據(jù)網(wǎng)絡(luò)中,雖然容許組播存在,但是其被通常限制在本地子網(wǎng)范圍內(nèi),如果沒有路由器和三層交換機(jī)的支持,組播數(shù)據(jù)會(huì)被禁止穿越路由器,從而防止組播數(shù)據(jù)影響大面積的網(wǎng)路。
[0004]在實(shí)際應(yīng)用中,采用傳統(tǒng)的方法來全面部署跨網(wǎng)段組播服務(wù)也是一個(gè)復(fù)雜的系統(tǒng)工程,其復(fù)雜性包括:
[0005]1.組播服務(wù)涉及網(wǎng)絡(luò)的各個(gè)層面:MAC地址層,IP層,應(yīng)用層,需要在主機(jī)-接入L2交換-L3交換機(jī)甚至路由器的每個(gè)層次配置相應(yīng)的組播協(xié)議;
[0006]2.網(wǎng)絡(luò)中的網(wǎng)絡(luò)交換設(shè)備難以保持一致性,品牌較多,不同網(wǎng)絡(luò)設(shè)備對(duì)組播的支持水平也參差不齊,有的甚至不支持網(wǎng)管和相關(guān)協(xié)議,防止交換機(jī)端口“泛洪”關(guān)機(jī)技術(shù)“IGMP Snooping”難以在整網(wǎng)中保持一致;
[0007]3.組播應(yīng)用對(duì)網(wǎng)絡(luò)管理的技術(shù)水平相對(duì)要求較高,專業(yè)性非常強(qiáng)。
[0008]一種跨網(wǎng)段組播數(shù)據(jù)系統(tǒng)及其方法(專利號(hào):CN 101707526)提出了一種無需修改路由器配置和組播路由協(xié)議的環(huán)境下,在應(yīng)用層實(shí)現(xiàn)跨網(wǎng)段組播的方法。該方法較好地實(shí)現(xiàn)了在應(yīng)用中簡(jiǎn)單,快速地部署組播應(yīng)用,但也存在以下局限性:
[0009]1.針對(duì)每個(gè)子網(wǎng),仍需部署額外的coaster節(jié)點(diǎn)。
[0010]2.Coaster為每個(gè)子網(wǎng)的關(guān)鍵節(jié)點(diǎn),所有的組播流均需要通過coaster傳送到子網(wǎng)中,當(dāng)系統(tǒng)中存在多個(gè)組播業(yè)務(wù)流時(shí),coaster的負(fù)載將加大,且一旦coaster節(jié)點(diǎn)失效,將會(huì)照成整個(gè)子網(wǎng)的業(yè)務(wù)中斷。
[0011]目前一般是通過在路由器上配置IGMP協(xié)議來實(shí)現(xiàn)跨網(wǎng)段組播,但由于IGMP協(xié)議發(fā)復(fù)雜性,在實(shí)際工程應(yīng)用對(duì)現(xiàn)場(chǎng)的施工人員和用戶均有著較高的技術(shù)要求。


【發(fā)明內(nèi)容】

[0012]本發(fā)明的目的在于提供一種流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法,旨在解決現(xiàn)有通過在路由器上配置IGMP協(xié)議來實(shí)現(xiàn)跨網(wǎng)段組播,由于IGMP協(xié)議發(fā)復(fù)雜性,在實(shí)際工程應(yīng)用對(duì)現(xiàn)場(chǎng)的施工人員和用戶均有著較高的問題。
[0013]本發(fā)明是這樣實(shí)現(xiàn)的,一種流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法,該流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法包括以下步驟:
[0014]步驟一,在業(yè)務(wù)節(jié)點(diǎn)上固定設(shè)置服務(wù)器的IP地址,業(yè)務(wù)節(jié)點(diǎn)啟動(dòng)后,直接向組播源發(fā)送心跳報(bào)文;
[0015]步驟二,組播源根據(jù)子網(wǎng)信息生成設(shè)備查找報(bào)文的組播轉(zhuǎn)發(fā)表,并發(fā)送設(shè)備查找報(bào)文,報(bào)文中包含服務(wù)器的IP地址,業(yè)務(wù)節(jié)點(diǎn)接收到此報(bào)文后確定當(dāng)前組播源的IP地址;
[0016]步驟三,組播源在發(fā)送設(shè)備查找報(bào)文時(shí),子網(wǎng)內(nèi)尚未包含在線的業(yè)務(wù)節(jié)點(diǎn),則以該子網(wǎng)的默認(rèn)轉(zhuǎn)發(fā)節(jié)點(diǎn)為轉(zhuǎn)發(fā)節(jié)點(diǎn),有節(jié)點(diǎn)上線后,則采用動(dòng)態(tài)調(diào)度的方式,始終以最后更新狀態(tài)的節(jié)點(diǎn)來進(jìn)行轉(zhuǎn)發(fā);
[0017]步驟四,組播源接收到業(yè)務(wù)節(jié)點(diǎn)的心跳報(bào)文后,標(biāo)識(shí)為該節(jié)點(diǎn)為上線狀態(tài),并根據(jù)IP地址確定該設(shè)備的子網(wǎng)號(hào),節(jié)點(diǎn)上線后,組播源啟動(dòng)超時(shí)定時(shí)器,超時(shí)未接收到新的心跳報(bào)文,則標(biāo)識(shí)該節(jié)點(diǎn)已下線;
[0018]步驟五,組播源發(fā)起一路組播業(yè)務(wù)時(shí),首先通過單播的方式向所有接收該業(yè)務(wù)的業(yè)務(wù)節(jié)點(diǎn)發(fā)送廣播啟動(dòng)命令,該命令中包含了用于接收此路流媒體數(shù)據(jù)的組播地址和端P ;
[0019]步驟六,業(yè)務(wù)節(jié)點(diǎn)接收到廣播啟動(dòng)命令后,打開目的端口的UDP接收socket,并加入接收目的組播地址,此時(shí),業(yè)務(wù)節(jié)點(diǎn)同時(shí)接收目的端口相同的組播和單播報(bào)文,然后,立即向組播源發(fā)送狀態(tài)更新報(bào)文;
[0020]步驟七,組播源接每次收到心跳報(bào)文,檢查當(dāng)前業(yè)務(wù)節(jié)點(diǎn)的狀態(tài)是否正確,不正確,重發(fā)廣播啟動(dòng)命令,廣播接收節(jié)點(diǎn)的狀態(tài)正確,則將此節(jié)點(diǎn)插入到組播轉(zhuǎn)發(fā)表對(duì)應(yīng)子網(wǎng)的隊(duì)首;
[0021]步驟八,組播源啟動(dòng)廣播會(huì)話后,隨即開始進(jìn)行流媒體數(shù)據(jù)的發(fā)送;組播源進(jìn)行流媒體數(shù)據(jù)轉(zhuǎn)發(fā)時(shí),均按照時(shí)間戳的要求定時(shí)發(fā)送;
[0022]步驟九,業(yè)務(wù)節(jié)點(diǎn)接收到廣播啟動(dòng)命令后,打開相應(yīng)UDP端口的SOCKET,并加入該組播業(yè)務(wù)流的組播地址;
[0023]步驟十,業(yè)務(wù)節(jié)點(diǎn)是以組播方式接收到業(yè)務(wù)數(shù)據(jù)后,只進(jìn)行音頻或者視頻流的解碼回放;是以單播的方式接收到數(shù)據(jù),在進(jìn)行解碼回放的同時(shí),將此數(shù)據(jù)向本子網(wǎng)內(nèi)進(jìn)行組播轉(zhuǎn)發(fā);
[0024]步驟十一,同一子網(wǎng)內(nèi)的不同的業(yè)務(wù)節(jié)點(diǎn)可以同時(shí)接收不同的廣播業(yè)務(wù)流,業(yè)務(wù)流的轉(zhuǎn)發(fā)均由參與此業(yè)務(wù)流的節(jié)點(diǎn)完成。
[0025]進(jìn)一步,在步驟二中,發(fā)送設(shè)備查找報(bào)文和步驟八組播源進(jìn)行流媒體數(shù)據(jù)轉(zhuǎn)發(fā)時(shí)定時(shí)發(fā)送的具體步驟如下:
[0026]首先讀取首個(gè)子網(wǎng)陣列,然后判斷子網(wǎng)陣列是否為空,為空則結(jié)束;子網(wǎng)陣列不為空,則判斷陣列成員是否為空,為空,則讀取下一個(gè)陣列,陣列成員不為空,則判斷組播源是否為本地子網(wǎng),不為本地子網(wǎng),則單播發(fā)送到隊(duì)列的首個(gè)節(jié)點(diǎn),在讀取下一個(gè)隊(duì)列,重新讀取首個(gè)子網(wǎng)陣列;為本地子網(wǎng),則組播發(fā)送到本地子網(wǎng),在讀取下一個(gè)隊(duì)列,重新讀取首個(gè)子網(wǎng)陣列。
[0027]進(jìn)一步,在步驟十中,業(yè)務(wù)節(jié)點(diǎn)以組播方式接收到業(yè)務(wù)數(shù)據(jù)的具體步驟如下:
[0028]首先打開命令接收socket,等待接收服務(wù)器數(shù)據(jù),之后判斷數(shù)據(jù)類型,數(shù)據(jù)類型為廣播啟動(dòng)命令,則打開業(yè)務(wù)流接收socket,加入組播地址,以發(fā)送狀態(tài)更新報(bào)文,返回打開命令接收socket ;數(shù)據(jù)類型為廣播停止命令,則關(guān)閉業(yè)務(wù)流接收socket,則退出組播地址,以發(fā)送狀態(tài)更新報(bào)文,返回打開命令接收socket ;數(shù)據(jù)類型為業(yè)務(wù)流,則判斷是否為組播報(bào)文,是組播報(bào)文,則進(jìn)行音視頻解碼回放,返回等待接收服務(wù)器數(shù)據(jù);是單播報(bào)文,則向目的組播地址和端口轉(zhuǎn)發(fā)報(bào)文,則進(jìn)行音視頻解碼回放,返回等待接收服務(wù)器數(shù)據(jù)。
[0029]進(jìn)一步,在步驟十一中,組播源進(jìn)行業(yè)務(wù)流發(fā)送時(shí),始終選取各網(wǎng)段內(nèi)參與此業(yè)務(wù)的最后更新狀態(tài)的業(yè)務(wù)節(jié)點(diǎn)作為轉(zhuǎn)發(fā)節(jié)點(diǎn),當(dāng)業(yè)務(wù)節(jié)點(diǎn)退出此業(yè)務(wù)流時(shí),組播源將立即切換到隊(duì)列中下一個(gè)節(jié)點(diǎn)作為轉(zhuǎn)發(fā)節(jié)點(diǎn);
[0030]正在進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)節(jié)點(diǎn)因各種原因失效后,將不再發(fā)送心跳報(bào)文,當(dāng)組播源接收收到參與相同業(yè)務(wù)的其它節(jié)點(diǎn)的心跳報(bào)文時(shí),自動(dòng)切換至該節(jié)點(diǎn)進(jìn)行轉(zhuǎn)發(fā)。
[0031]本發(fā)明提供的流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法,采用C/S模式,以流媒體發(fā)送源為服務(wù)器端,以流媒體接收設(shè)備為客戶端,能夠不借助于交換機(jī)或者路由器在IGMP協(xié)議的支持和配置下使組播數(shù)據(jù)包能夠跨越大中小型局域網(wǎng)內(nèi)的各個(gè)不同網(wǎng)段,從而實(shí)現(xiàn)流媒體IP組播技術(shù)的應(yīng)用。本發(fā)明在跨網(wǎng)段的環(huán)境下,無需修改路由器配置和組播路由協(xié)議的環(huán)境下,實(shí)現(xiàn)了組播業(yè)務(wù)流的單向傳輸,非常適合在音視頻組播業(yè)務(wù)流單向推送的應(yīng)用系統(tǒng)中實(shí)施。
[0032]本發(fā)明與現(xiàn)有技術(shù)相比:
[0033]1.在實(shí)際工程應(yīng)該中,無需更改路由器設(shè)置的,可以快速,簡(jiǎn)單地部署跨網(wǎng)段組播。
[0034]2.在進(jìn)行組播業(yè)務(wù)轉(zhuǎn)發(fā)的過程中,由于采用了動(dòng)態(tài)調(diào)整各個(gè)子網(wǎng)內(nèi)業(yè)務(wù)轉(zhuǎn)發(fā)節(jié)點(diǎn)的策略,避免了單個(gè)節(jié)點(diǎn)失效導(dǎo)致大面積業(yè)務(wù)中斷的狀況,增強(qiáng)跨網(wǎng)段組播傳輸系統(tǒng)的健壯性。
[0035]3.由于組播業(yè)務(wù)轉(zhuǎn)發(fā)均由參與業(yè)務(wù)流的業(yè)務(wù)節(jié)點(diǎn)完成,有效地實(shí)現(xiàn)跨網(wǎng)段組播傳輸?shù)呢?fù)載均擔(dān)和流量平衡,提高了組播業(yè)務(wù)系統(tǒng)的并發(fā)性。

【專利附圖】

【附圖說明】
[0036]圖1是本發(fā)明實(shí)施例提供的流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法流程圖;
[0037]圖2是本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)拓?fù)涫疽鈭D;
[0038]圖3是本發(fā)明實(shí)施例提供的組播轉(zhuǎn)發(fā)表的邏輯結(jié)構(gòu)示意圖;
[0039]圖4是本發(fā)明實(shí)施例提供的組播源在發(fā)送組播業(yè)務(wù)流時(shí)流程圖;
[0040]圖5是本發(fā)明實(shí)施例提供的業(yè)務(wù)節(jié)點(diǎn)的組播業(yè)務(wù)流的接收和轉(zhuǎn)發(fā)流程圖。

【具體實(shí)施方式】
[0041]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0042]下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明的應(yīng)用原理作進(jìn)一步描述。
[0043]如圖1所示,本發(fā)明實(shí)施例的流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法包括以下步驟:
[0044]SlOl:在業(yè)務(wù)節(jié)點(diǎn)上固定設(shè)置服務(wù)器的IP地址,業(yè)務(wù)節(jié)點(diǎn)啟動(dòng)后,可直接向組播源發(fā)“送心跳報(bào)文”;
[0045]S102:組播源根據(jù)子網(wǎng)信息生成“設(shè)備查找報(bào)文”的組播轉(zhuǎn)發(fā)表,并發(fā)送“設(shè)備查找報(bào)文”,該報(bào)文中包含服務(wù)器的IP地址,業(yè)務(wù)節(jié)點(diǎn)接收到此報(bào)文后可確定當(dāng)前組播源的IP地址;
[0046]S103:組播源在發(fā)送“設(shè)備查找報(bào)文”時(shí),若子網(wǎng)內(nèi)尚未包含在線的業(yè)務(wù)節(jié)點(diǎn),則以該子網(wǎng)的默認(rèn)轉(zhuǎn)發(fā)節(jié)點(diǎn)為轉(zhuǎn)發(fā)節(jié)點(diǎn),一旦有節(jié)點(diǎn)上線后,則采用動(dòng)態(tài)調(diào)度的方式,始終以最后更新狀態(tài)的節(jié)點(diǎn)來進(jìn)行轉(zhuǎn)發(fā);
[0047]S104:組播源接收到業(yè)務(wù)節(jié)點(diǎn)的“心跳報(bào)文”后,標(biāo)識(shí)為該節(jié)點(diǎn)為上線狀態(tài),并根據(jù)IP地址確定該設(shè)備的子網(wǎng)號(hào),節(jié)點(diǎn)上線后,組播源啟動(dòng)超時(shí)定時(shí)器,若超時(shí)未接收到新的心跳報(bào)文,則標(biāo)識(shí)該節(jié)點(diǎn)已下線;
[0048]S105:組播源發(fā)起一路組播業(yè)務(wù)時(shí),首先通過單播的方式向所有接收該業(yè)務(wù)的業(yè)務(wù)節(jié)點(diǎn)發(fā)送“廣播啟動(dòng)命令”,該命令中包含了用于接收此路流媒體數(shù)據(jù)的組播地址和端P ;
[0049]S106:業(yè)務(wù)節(jié)點(diǎn)接收到廣播啟動(dòng)命令后,打開目的端口的UDP接收socket,并加入接收目的組播地址。此時(shí),業(yè)務(wù)節(jié)點(diǎn)可同時(shí)接收目的端口相同的組播和單播報(bào)文。然后,立即向組播源發(fā)送狀態(tài)更新報(bào)文;
[0050]S107:組播源接每次收到“心跳報(bào)文”,均需要檢查當(dāng)前業(yè)務(wù)節(jié)點(diǎn)的狀態(tài)是否正確,若不正確,需重發(fā)“廣播啟動(dòng)命令”。如果廣播接收節(jié)點(diǎn)的狀態(tài)正確,則將此節(jié)點(diǎn)插入到組播轉(zhuǎn)發(fā)表對(duì)應(yīng)子網(wǎng)的隊(duì)首;
[0051]S108:組播源啟動(dòng)廣播會(huì)話后,隨即開始進(jìn)行流媒體數(shù)據(jù)的發(fā)送。流媒體數(shù)據(jù)源可以是預(yù)先上傳的音視頻文件,也可以是其它采集設(shè)備通過單播發(fā)送過來的實(shí)時(shí)數(shù)據(jù);組播源進(jìn)行流媒體數(shù)據(jù)轉(zhuǎn)發(fā)時(shí),均按照時(shí)間戳的要求定時(shí)發(fā)送;
[0052]S109:業(yè)務(wù)節(jié)點(diǎn)接收到“廣播啟動(dòng)命令”后,打開相應(yīng)UDP端口的SOCKET,并加入該組播業(yè)務(wù)流的組播地址;
[0053]SllO:業(yè)務(wù)節(jié)點(diǎn)如果是以組播方式接收到業(yè)務(wù)數(shù)據(jù)后,只進(jìn)行音頻或者視頻流的解碼回放;如果是以單播的方式接收到數(shù)據(jù),在進(jìn)行解碼回放的同時(shí),還需將此數(shù)據(jù)向本子網(wǎng)內(nèi)進(jìn)行組播轉(zhuǎn)發(fā);
[0054]Slll:同一子網(wǎng)內(nèi)的不同的業(yè)務(wù)節(jié)點(diǎn)可以同時(shí)接收不同的廣播業(yè)務(wù)流,業(yè)務(wù)流的轉(zhuǎn)發(fā)均由參與此業(yè)務(wù)流的節(jié)點(diǎn)完成。
[0055]在步驟S102中,發(fā)送“設(shè)備查找報(bào)文”和步驟S108組播源進(jìn)行流媒體數(shù)據(jù)轉(zhuǎn)發(fā)時(shí)定時(shí)發(fā)送的具體步驟如下:
[0056]首先讀取首個(gè)子網(wǎng)陣列,然后判斷子網(wǎng)陣列是否為空,若為空則結(jié)束;若子網(wǎng)陣列不為空,則判斷陣列成員是否為空,若為空,則讀取下一個(gè)陣列,陣列成員不為空,則判斷組播源是否為本地子網(wǎng),不為本地子網(wǎng),則單播發(fā)送到隊(duì)列的首個(gè)節(jié)點(diǎn),在讀取下一個(gè)隊(duì)列,重新讀取首個(gè)子網(wǎng)陣列;若為本地子網(wǎng),則組播發(fā)送到本地子網(wǎng),在讀取下一個(gè)隊(duì)列,重新讀取首個(gè)子網(wǎng)陣列;
[0057]在步驟SllO中,業(yè)務(wù)節(jié)點(diǎn)以組播方式接收到業(yè)務(wù)數(shù)據(jù)的具體步驟如下:
[0058]首先打開命令接收socket,等待接收服務(wù)器數(shù)據(jù),之后判斷數(shù)據(jù)類型,數(shù)據(jù)類型為廣播啟動(dòng)命令,則打開業(yè)務(wù)流接收socket,加入組播地址,以發(fā)送狀態(tài)更新報(bào)文,返回打開命令接收socket ;若數(shù)據(jù)類型為廣播停止命令,則關(guān)閉業(yè)務(wù)流接收socket,則退出組播地址,以發(fā)送狀態(tài)更新報(bào)文,返回打開命令接收socket ;若數(shù)據(jù)類型為業(yè)務(wù)流,則判斷是否為組播報(bào)文,是組播報(bào)文,則進(jìn)行音視頻解碼回放,返回等待接收服務(wù)器數(shù)據(jù);是單播報(bào)文,則向目的組播地址和端口轉(zhuǎn)發(fā)報(bào)文,則進(jìn)行音視頻解碼回放,返回等待接收服務(wù)器數(shù)據(jù)。
[0059]在步驟Slll中,一旦業(yè)務(wù)節(jié)點(diǎn)退出此業(yè)務(wù)流,將不再參與此業(yè)務(wù)流的轉(zhuǎn)發(fā)。組播源進(jìn)行業(yè)務(wù)流發(fā)送時(shí),始終選取各網(wǎng)段內(nèi)參與此業(yè)務(wù)的最后更新狀態(tài)的業(yè)務(wù)節(jié)點(diǎn)作為轉(zhuǎn)發(fā)節(jié)點(diǎn)。當(dāng)業(yè)務(wù)節(jié)點(diǎn)退出此業(yè)務(wù)流時(shí),組播源將立即切換到隊(duì)列中下一個(gè)節(jié)點(diǎn)作為轉(zhuǎn)發(fā)節(jié)點(diǎn)。
[0060]如果正在進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)節(jié)點(diǎn)因各種原因失效后,將不再發(fā)送“心跳報(bào)文”。當(dāng)組播源接收收到參與相同業(yè)務(wù)的其它節(jié)點(diǎn)的“心跳報(bào)文”時(shí),自動(dòng)切換至該節(jié)點(diǎn)進(jìn)行轉(zhuǎn)發(fā),從而實(shí)現(xiàn)業(yè)務(wù)的快速恢復(fù)。
[0061]本發(fā)明的具體步驟:
[0062]1、設(shè)備發(fā)現(xiàn):
[0063]靜態(tài)配置方式,即在業(yè)務(wù)節(jié)點(diǎn)上固定設(shè)置服務(wù)器的IP地址,業(yè)務(wù)節(jié)點(diǎn)啟動(dòng)后,可直接向組播源發(fā)“送心跳報(bào)文”。
[0064]動(dòng)態(tài)發(fā)現(xiàn)方式,組播源根據(jù)子網(wǎng)信息生成“設(shè)備查找報(bào)文”的組播轉(zhuǎn)發(fā)表,并按照?qǐng)D4所示的流程發(fā)送“設(shè)備查找報(bào)文”,該報(bào)文中包含服務(wù)器的IP地址,業(yè)務(wù)節(jié)點(diǎn)接收到此報(bào)文后可確定當(dāng)前組播源的IP地址。
[0065]組播源在發(fā)送“設(shè)備查找報(bào)文”時(shí),若子網(wǎng)內(nèi)尚未包含在線的業(yè)務(wù)節(jié)點(diǎn),則以該子網(wǎng)的默認(rèn)轉(zhuǎn)發(fā)節(jié)點(diǎn)為轉(zhuǎn)發(fā)節(jié)點(diǎn),一旦有節(jié)點(diǎn)上線后,則采用動(dòng)態(tài)調(diào)度的方式,始終以最后更新狀態(tài)的節(jié)點(diǎn)來進(jìn)行轉(zhuǎn)發(fā)。
[0066]組播源接收到業(yè)務(wù)節(jié)點(diǎn)的“心跳報(bào)文”后,標(biāo)識(shí)為該節(jié)點(diǎn)為上線狀態(tài),并根據(jù)IP地址確定該設(shè)備的子網(wǎng)號(hào)。節(jié)點(diǎn)上線后,組播源啟動(dòng)超時(shí)定時(shí)器,若超時(shí)未接收到新的心跳報(bào)文,則標(biāo)識(shí)該節(jié)點(diǎn)已下線。
[0067]2、組播業(yè)務(wù)流程(音視頻廣播):
[0068]組播源發(fā)起一路組播業(yè)務(wù)時(shí),首先通過單播的方式向所有接收該業(yè)務(wù)的業(yè)務(wù)節(jié)點(diǎn)發(fā)送“廣播啟動(dòng)命令”,該命令中包含了用于接收此路流媒體數(shù)據(jù)的組播地址和端口。
[0069]業(yè)務(wù)節(jié)點(diǎn)接收到廣播啟動(dòng)命令后,打開目的端口的UDP接收socket,并加入接收目的組播地址。此時(shí),業(yè)務(wù)節(jié)點(diǎn)可同時(shí)接收目的端口相同的組播和單播報(bào)文。然后,立即向組播源發(fā)送狀態(tài)更新報(bào)文。
[0070]由于“廣播啟動(dòng)命令”是UDP報(bào)文,為保證系統(tǒng)的健壯性,業(yè)務(wù)節(jié)點(diǎn)還需定時(shí)向組播源報(bào)告當(dāng)前的業(yè)務(wù)狀態(tài)。組播源接每次收到“心跳報(bào)文”,均需要檢查當(dāng)前業(yè)務(wù)節(jié)點(diǎn)的狀態(tài)是否正確,若不正確,需重發(fā)“廣播啟動(dòng)命令”。如果廣播接收節(jié)點(diǎn)的狀態(tài)正確,則將此節(jié)點(diǎn)插入到組播轉(zhuǎn)發(fā)表對(duì)應(yīng)子網(wǎng)的隊(duì)首。
[0071]組播源啟動(dòng)廣播會(huì)話后,隨即開始進(jìn)行流媒體數(shù)據(jù)的發(fā)送。流媒體數(shù)據(jù)源可以是預(yù)先上傳的音視頻文件,也可以是其它采集設(shè)備通過單播發(fā)送過來的實(shí)時(shí)數(shù)據(jù)。
[0072]組播源進(jìn)行流媒體數(shù)據(jù)轉(zhuǎn)發(fā)時(shí),均按照時(shí)間戳的要求定時(shí)發(fā)送。發(fā)送方式采用圖4所示的流程進(jìn)行發(fā)送。
[0073]業(yè)務(wù)節(jié)點(diǎn)接收到“廣播啟動(dòng)命令”后,打開相應(yīng)UDP端口的SOCKET,并加入該組播業(yè)務(wù)流的組播地址。
[0074]業(yè)務(wù)節(jié)點(diǎn)如果是以組播方式接收到業(yè)務(wù)數(shù)據(jù)后,只進(jìn)行音頻或者視頻流的解碼回放;如果是以單播的方式接收到數(shù)據(jù),在進(jìn)行解碼回放的同時(shí),還需將此數(shù)據(jù)向本子網(wǎng)內(nèi)進(jìn)行組播轉(zhuǎn)發(fā)。具體流程如圖5所示。
[0075]3、負(fù)載均衡和容錯(cuò):
[0076]同一子網(wǎng)內(nèi)的不同的業(yè)務(wù)節(jié)點(diǎn)可以同時(shí)接收不同的廣播業(yè)務(wù)流,業(yè)務(wù)流的轉(zhuǎn)發(fā)均由參與此業(yè)務(wù)流的節(jié)點(diǎn)完成。
[0077]—旦業(yè)務(wù)節(jié)點(diǎn)退出此業(yè)務(wù)流,將不再參與此業(yè)務(wù)流的轉(zhuǎn)發(fā)。組播源進(jìn)行業(yè)務(wù)流發(fā)送時(shí),始終選取各網(wǎng)段內(nèi)參與此業(yè)務(wù)的最后更新狀態(tài)的業(yè)務(wù)節(jié)點(diǎn)作為轉(zhuǎn)發(fā)節(jié)點(diǎn)。當(dāng)業(yè)務(wù)節(jié)點(diǎn)退出此業(yè)務(wù)流時(shí),組播源將立即切換到隊(duì)列中下一個(gè)節(jié)點(diǎn)作為轉(zhuǎn)發(fā)節(jié)點(diǎn)。
[0078]如果正在進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)節(jié)點(diǎn)因各種原因失效后,將不再發(fā)送“心跳報(bào)文”。當(dāng)組播源接收收到參與相同業(yè)務(wù)的其它節(jié)點(diǎn)的“心跳報(bào)文”時(shí),自動(dòng)切換至該節(jié)點(diǎn)進(jìn)行轉(zhuǎn)發(fā),從而實(shí)現(xiàn)業(yè)務(wù)的快速恢復(fù)。
[0079]本發(fā)明的工作原理:
[0080]本發(fā)明的目的在于提供一種基于C/S模式的流媒體跨網(wǎng)段IP組播支持技術(shù)。使得流媒體組播數(shù)據(jù)能夠在不依賴于路由器和交換機(jī)的支持在局域網(wǎng)的各個(gè)子網(wǎng)段進(jìn)行穿越和分發(fā)。
[0081]在應(yīng)用本技術(shù)的多媒體音視頻可尋址分組廣播系統(tǒng)中,流媒體服務(wù)器實(shí)現(xiàn)了組播源的功能,業(yè)務(wù)節(jié)點(diǎn)為各個(gè)獨(dú)立的音視頻廣播接收節(jié)點(diǎn)。
[0082]組播源上采用靜態(tài)方式配置部署業(yè)務(wù)節(jié)點(diǎn)的子網(wǎng)信息(子網(wǎng)號(hào)和子網(wǎng)掩碼),并為每個(gè)子網(wǎng)上設(shè)置一個(gè)默認(rèn)的“轉(zhuǎn)發(fā)設(shè)備查找報(bào)文”的業(yè)務(wù)節(jié)點(diǎn)。
[0083]本發(fā)明的具體實(shí)施例:
[0084]本發(fā)明適合在音視頻組播業(yè)務(wù)流單向推送的應(yīng)用系統(tǒng)中實(shí)施;
[0085]應(yīng)用系統(tǒng)由組播源和業(yè)務(wù)節(jié)點(diǎn)組成,網(wǎng)絡(luò)拓?fù)淙鐖D2所示;業(yè)務(wù)節(jié)點(diǎn)可以部署在組播源的同網(wǎng)段中,也可以分布在各個(gè)不同的子網(wǎng)中;
[0086]組播源的技術(shù)特征為:
[0087]負(fù)責(zé)構(gòu)建,維護(hù)系統(tǒng)中的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和所有節(jié)點(diǎn)的在線狀態(tài);
[0088]組播源可主動(dòng)并行發(fā)起多路內(nèi)容為音視頻廣播的組播業(yè)務(wù),并通過單播命令相關(guān)的業(yè)務(wù)節(jié)點(diǎn)進(jìn)入業(yè)務(wù)接收狀態(tài),隨后采用UDP方式發(fā)送組播業(yè)務(wù)流至相關(guān)的業(yè)務(wù)節(jié)點(diǎn);
[0089]組播源為系統(tǒng)的組播業(yè)務(wù)(音視頻廣播)的發(fā)起者和組播業(yè)務(wù)流的數(shù)據(jù)源.組播業(yè)務(wù)流通常為實(shí)時(shí)的音頻或者視頻數(shù)據(jù)流,在本系統(tǒng)中采用UDP組播方式傳送;
[0090]組播源通過接收業(yè)務(wù)節(jié)點(diǎn)的“心跳報(bào)文”和“狀態(tài)更新報(bào)文”實(shí)時(shí)更新當(dāng)前所有業(yè)務(wù)節(jié)點(diǎn)的在線狀態(tài)和當(dāng)前的業(yè)務(wù)流狀態(tài),并動(dòng)態(tài)維護(hù)所有組播業(yè)務(wù)流的組播轉(zhuǎn)發(fā)表;
[0091]組播轉(zhuǎn)發(fā)表的邏輯結(jié)構(gòu)如圖3所示;每個(gè)業(yè)務(wù)流的組播轉(zhuǎn)發(fā)表由多個(gè)子網(wǎng)隊(duì)列構(gòu)成,每個(gè)子網(wǎng)隊(duì)列包含了當(dāng)前子網(wǎng)中所有接收此組播業(yè)務(wù)流的業(yè)務(wù)節(jié)點(diǎn);組播源根據(jù)業(yè)務(wù)節(jié)點(diǎn)的狀態(tài)上報(bào)信息動(dòng)態(tài)更新轉(zhuǎn)發(fā)表,各子網(wǎng)隊(duì)列通過業(yè)務(wù)節(jié)點(diǎn)的狀態(tài)更新時(shí)間進(jìn)行排序,即最后上報(bào)狀態(tài)的節(jié)點(diǎn)始終排在隊(duì)列的首位;
[0092]組播源在發(fā)送組播業(yè)務(wù)流時(shí),需遍歷當(dāng)前組播業(yè)務(wù)轉(zhuǎn)發(fā)表的子網(wǎng)隊(duì)列不為空的隊(duì)列,如果是組播源所處子網(wǎng),則以組播的方式發(fā)送報(bào)文,否則,向子網(wǎng)隊(duì)列中排在首位的業(yè)務(wù)節(jié)點(diǎn)以單播的方式發(fā)送業(yè)務(wù)流數(shù)據(jù),具體流程如圖4所示;
[0093]為避免業(yè)務(wù)節(jié)點(diǎn)失效導(dǎo)致大面積業(yè)務(wù)中斷,組播源還為每個(gè)業(yè)務(wù)節(jié)點(diǎn)設(shè)置的超時(shí)機(jī)制,如果長(zhǎng)時(shí)間未接收到業(yè)務(wù)節(jié)點(diǎn)的“心跳報(bào)文”或者“狀態(tài)更新報(bào)文”,則判斷此節(jié)點(diǎn)失效,并從轉(zhuǎn)發(fā)表中刪除此節(jié)點(diǎn);
[0094]業(yè)務(wù)節(jié)點(diǎn)的技術(shù)特征:
[0095]業(yè)務(wù)節(jié)點(diǎn)將定期(間隔5秒)將本機(jī)的狀態(tài)通過“心跳報(bào)文”以單播UDP的方式上報(bào)給組播源;
[0096]組播源的IP地址可通過靜態(tài)配置或者動(dòng)態(tài)查找的方式獲得;
[0097]接收到組播業(yè)務(wù)(音視頻廣播)啟動(dòng)命令后,打開相應(yīng)Μ)Ρ端口的SOCKET,并加入該組播業(yè)務(wù)流的組播地址;
[0098]接收到組播業(yè)務(wù)(音視頻廣播)停止命令后,關(guān)閉相應(yīng)UDP端口的SOCKET,并退出該組播業(yè)務(wù)流的組播地址;
[0099]業(yè)務(wù)節(jié)點(diǎn)如果是以組播方式接收到業(yè)務(wù)流數(shù)據(jù)后,只進(jìn)行音頻或者視頻流的解碼回放;如果是以單播的方式接收到數(shù)據(jù)報(bào)文,在進(jìn)行解碼回放的同時(shí),還需將此數(shù)據(jù)報(bào)文向本子網(wǎng)內(nèi)進(jìn)行組播轉(zhuǎn)發(fā);
[0100]業(yè)務(wù)節(jié)點(diǎn)可動(dòng)態(tài)地加入或者退出某個(gè)組播業(yè)務(wù),當(dāng)退出組播業(yè)務(wù)后停止接收該組播業(yè)務(wù)流;
[0101]業(yè)務(wù)節(jié)點(diǎn)的接收狀態(tài)改變后,需通過“狀態(tài)更新報(bào)文”立即向組播源上報(bào)狀態(tài);
[0102]業(yè)務(wù)節(jié)點(diǎn)的組播業(yè)務(wù)流的接收和轉(zhuǎn)發(fā)流程如圖5所示。
[0103]本發(fā)明采用C/S模式,以流媒體發(fā)送源為服務(wù)器端,以流媒體接收設(shè)備為客戶端,能夠不借助于交換機(jī)或者路由器在IGMP協(xié)議的支持和配置下使組播數(shù)據(jù)包能夠跨越大中小型局域網(wǎng)內(nèi)的各個(gè)不同網(wǎng)段,從而實(shí)現(xiàn)流媒體IP組播技術(shù)的應(yīng)用。
[0104]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法,其特征在于,該流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法包括以下步驟: 步驟一,在業(yè)務(wù)節(jié)點(diǎn)上固定設(shè)置服務(wù)器的IP地址,業(yè)務(wù)節(jié)點(diǎn)啟動(dòng)后,直接向組播源發(fā)送心跳報(bào)文; 步驟二,組播源根據(jù)子網(wǎng)信息生成設(shè)備查找報(bào)文的組播轉(zhuǎn)發(fā)表,并發(fā)送設(shè)備查找報(bào)文,報(bào)文中包含服務(wù)器的IP地址,業(yè)務(wù)節(jié)點(diǎn)接收到此報(bào)文后確定當(dāng)前組播源的IP地址; 步驟三,組播源在發(fā)送設(shè)備查找報(bào)文時(shí),子網(wǎng)內(nèi)尚未包含在線的業(yè)務(wù)節(jié)點(diǎn),則以該子網(wǎng)的默認(rèn)轉(zhuǎn)發(fā)節(jié)點(diǎn)為轉(zhuǎn)發(fā)節(jié)點(diǎn),有節(jié)點(diǎn)上線后,則采用動(dòng)態(tài)調(diào)度的方式,始終以最后更新狀態(tài)的節(jié)點(diǎn)來進(jìn)行轉(zhuǎn)發(fā); 步驟四,組播源接收到業(yè)務(wù)節(jié)點(diǎn)的心跳報(bào)文后,標(biāo)識(shí)為該節(jié)點(diǎn)為上線狀態(tài),并根據(jù)IP地址確定該設(shè)備的子網(wǎng)號(hào),節(jié)點(diǎn)上線后,組播源啟動(dòng)超時(shí)定時(shí)器,超時(shí)未接收到新的心跳報(bào)文,則標(biāo)識(shí)該節(jié)點(diǎn)已下線; 步驟五,組播源發(fā)起一路組播業(yè)務(wù)時(shí),首先通過單播的方式向所有接收該業(yè)務(wù)的業(yè)務(wù)節(jié)點(diǎn)發(fā)送廣播啟動(dòng)命令,該命令中包含了用于接收此路流媒體數(shù)據(jù)的組播地址和端口 ; 步驟六,業(yè)務(wù)節(jié)點(diǎn)接收到廣播啟動(dòng)命令后,打開目的端口的m)P接收socket,并加入接收目的組播地址,此時(shí),業(yè)務(wù)節(jié)點(diǎn)同時(shí)接收目的端口相同的組播和單播報(bào)文,然后,立即向組播源發(fā)送狀態(tài)更新報(bào)文; 步驟七,組播源接每次收到心跳報(bào)文,檢查當(dāng)前業(yè)務(wù)節(jié)點(diǎn)的狀態(tài)是否正確,不正確,重發(fā)廣播啟動(dòng)命令,廣播接收節(jié)點(diǎn)的狀態(tài)正確,則將此節(jié)點(diǎn)插入到組播轉(zhuǎn)發(fā)表對(duì)應(yīng)子網(wǎng)的隊(duì)首; 步驟八,組播源啟動(dòng)廣播會(huì)話后,隨即開始進(jìn)行流媒體數(shù)據(jù)的發(fā)送;組播源進(jìn)行流媒體數(shù)據(jù)轉(zhuǎn)發(fā)時(shí),均按照時(shí)間戳的要求定時(shí)發(fā)送; 步驟九,業(yè)務(wù)節(jié)點(diǎn)接收到廣播啟動(dòng)命令后,打開相應(yīng)m)P端口的socket,并加入該組播業(yè)務(wù)流的組播地址; 步驟十,業(yè)務(wù)節(jié)點(diǎn)是以組播方式接收到業(yè)務(wù)數(shù)據(jù)后,只進(jìn)行音頻或者視頻流的解碼回放;是以單播的方式接收到數(shù)據(jù),在進(jìn)行解碼回放的同時(shí),將此數(shù)據(jù)向本子網(wǎng)內(nèi)進(jìn)行組播轉(zhuǎn)發(fā); 步驟十一,同一子網(wǎng)內(nèi)的不同的業(yè)務(wù)節(jié)點(diǎn)同時(shí)接收不同的廣播業(yè)務(wù)流,業(yè)務(wù)流的轉(zhuǎn)發(fā)均由參與此業(yè)務(wù)流的節(jié)點(diǎn)完成。
2.如權(quán)利要求1所述的流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法,其特征在于,在步驟二中,發(fā)送設(shè)備查找報(bào)文和步驟八組播源進(jìn)行流媒體數(shù)據(jù)轉(zhuǎn)發(fā)時(shí)定時(shí)發(fā)送的具體步驟如下: 首先讀取首個(gè)子網(wǎng)陣列,然后判斷子網(wǎng)陣列是否為空,為空則結(jié)束;子網(wǎng)陣列不為空,則判斷陣列成員是否為空,為空,則讀取下一個(gè)陣列,陣列成員不為空,則判斷組播源是否為本地子網(wǎng),不為本地子網(wǎng),則單播發(fā)送到隊(duì)列的首個(gè)節(jié)點(diǎn),在讀取下一個(gè)隊(duì)列,重新讀取首個(gè)子網(wǎng)陣列;為本地子網(wǎng),則組播發(fā)送到本地子網(wǎng),在讀取下一個(gè)隊(duì)列,重新讀取首個(gè)子網(wǎng)陣列。
3.如權(quán)利要求1所述的流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法,其特征在于,在步驟十中,業(yè)務(wù)節(jié)點(diǎn)以組播方式接收到業(yè)務(wù)數(shù)據(jù)的具體步驟如下: 首先打開命令接收socket,等待接收服務(wù)器數(shù)據(jù),之后判斷數(shù)據(jù)類型,數(shù)據(jù)類型為廣播啟動(dòng)命令,則打開業(yè)務(wù)流接收socket,加入組播地址,以發(fā)送狀態(tài)更新報(bào)文,返回打開命令接收socket ;數(shù)據(jù)類型為廣播停止命令,則關(guān)閉業(yè)務(wù)流接收socket,則退出組播地址,以發(fā)送狀態(tài)更新報(bào)文,返回打開命令接收socket ;數(shù)據(jù)類型為業(yè)務(wù)流,則判斷是否為組播報(bào)文,是組播報(bào)文,則進(jìn)行音視頻解碼回放,返回等待接收服務(wù)器數(shù)據(jù);是單播報(bào)文,則向目的組播地址和端口轉(zhuǎn)發(fā)報(bào)文,則進(jìn)行音視頻解碼回放,返回等待接收服務(wù)器數(shù)據(jù)。
4.如權(quán)利要求1所述的流媒體組播結(jié)構(gòu)及其數(shù)據(jù)流發(fā)送和接收方法,其特征在于,在步驟十一中,組播源進(jìn)行業(yè)務(wù)流發(fā)送時(shí),始終選取各網(wǎng)段內(nèi)參與此業(yè)務(wù)的最后更新狀態(tài)的業(yè)務(wù)節(jié)點(diǎn)作為轉(zhuǎn)發(fā)節(jié)點(diǎn),當(dāng)業(yè)務(wù)節(jié)點(diǎn)退出此業(yè)務(wù)流時(shí),組播源將立即切換到隊(duì)列中下一個(gè)節(jié)點(diǎn)作為轉(zhuǎn)發(fā)節(jié)點(diǎn); 正在進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)節(jié)點(diǎn)因各種原因失效后,將不再發(fā)送心跳報(bào)文,當(dāng)組播源接收收到參與相同業(yè)務(wù)的其它節(jié)點(diǎn)的心跳報(bào)文時(shí),自動(dòng)切換至該節(jié)點(diǎn)進(jìn)行轉(zhuǎn)發(fā)。
【文檔編號(hào)】H04L12/741GK104506441SQ201410837610
【公開日】2015年4月8日 申請(qǐng)日期:2014年12月30日 優(yōu)先權(quán)日:2014年12月30日
【發(fā)明者】湛輝來, 鐘仁文 申請(qǐng)人:深圳市艾迪思特信息技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1