的接入互聯(lián)網(wǎng)的拓?fù)錉顟B(tài);(2)RD當(dāng)前傳輸?shù)纳闲?下行數(shù)據(jù)總量,根據(jù)不同時(shí)段得到的這個(gè)數(shù)據(jù)量的差值可以得出當(dāng)前RD消耗的上行/下行帶寬,再通過(guò)步驟1得到的RD上行/下行帶寬總量,可以計(jì)算出當(dāng)前RD所能提供的上行/下行帶寬總量;⑶當(dāng)前RD的服務(wù)狀態(tài),如是否在進(jìn)行直播加速服務(wù),直播加速服務(wù)的頻道,對(duì)等端的RD列表等;(4)用戶終端19的播放器連接到RD上的連接數(shù)。
[0099]其中,虛擬化控制器可以根據(jù)各RD的NAT拓?fù)錉顟B(tài),將其所轄RD分為三種類型:
[0100]1.不在NAT/防火墻后,具有公網(wǎng)IP ;
[0101]i1.在NAT后,且不是對(duì)稱網(wǎng)絡(luò)NAT類型;
[0102]ii1.在NAT后,且是對(duì)稱網(wǎng)絡(luò)NAT類型。
[0103]在提供直播節(jié)目⑶N加速服務(wù)時(shí),虛擬化控制器可以根據(jù)RD的NAT類型將其歸集到不同的轉(zhuǎn)發(fā)群體中。
[0104]然后,如圖3所示,當(dāng)有直播CDN需求時(shí),虛擬化控制器可以進(jìn)行如下步驟以便選取所管轄的RD進(jìn)行組網(wǎng):
[0105]步驟301、虛擬化控制器將RD按其作用分為2級(jí)。
[0106]第1級(jí)的RD是作為直播數(shù)據(jù)傳輸?shù)闹虚g者,作用是從云端CDN或者是其他的第1級(jí)RD獲取直播節(jié)目流,并將直播節(jié)目流分享給第1級(jí)的RD,或者是第2級(jí)的RD ;第2級(jí)的RD是作為整個(gè)虛擬化CDN加速方案的邊緣設(shè)備,直接向用戶終端的播放器提供直播節(jié)目流,并且第2級(jí)的RD之間不會(huì)分享數(shù)據(jù),只會(huì)被動(dòng)的從第1級(jí)RD接收數(shù)據(jù)。
[0107]步驟302、虛擬化控制器按照直播節(jié)目所需總帶寬的設(shè)定,從空閑RD池中選取一批RD作為第2級(jí)的設(shè)備。其中,選取依據(jù)可以是該RD的接入互聯(lián)網(wǎng)拓?fù)錇椴辉贜AT/防火墻的后邊,具有公網(wǎng)IP (即上述的i型),直接接入互聯(lián)網(wǎng)。此外選取的RD的數(shù)目可以按照如下示例方法確定:假定直播節(jié)目總帶寬是M,直播節(jié)目的碼流是b,每個(gè)RD可以提供的上行帶寬是Ri(i = 1,2, 3,…N),且Ri>2b,設(shè)置一個(gè)初始計(jì)數(shù)值Ms = M,每選取一個(gè)RDi設(shè)備,就讓Ms = Ms - Ri,直到Ms〈0,停止。
[0108]步驟303、虛擬化控制器從空閑RD池中剩余的RD中選取一批RD作為第1級(jí)的設(shè)備。其中,選取依據(jù)是該RD雖然在NAT/防火墻后,且不是對(duì)稱網(wǎng)絡(luò)的NAT類型(即上述的ii型)。如果這種RD類型的已經(jīng)分配完畢,可以選取具有公網(wǎng)IP(即上述的i型),不在NAT后的RD來(lái)代替。選取的第1級(jí)設(shè)備的數(shù)量,按照如下方法確定:假定一共選取了 η個(gè)第2級(jí)的RD,直播節(jié)目的碼流是b,那么總共需要第1級(jí)RD向第2級(jí)RD提供n*b的上行帶寬。與選取第2級(jí)的要求類似,假設(shè)每個(gè)RD可提供上行帶寬是Ri(i = 1,2,3…n),要求Ri>2b,設(shè)置一個(gè)初始計(jì)數(shù)值Ms = n*b,每選取一個(gè)RDi設(shè)備,就讓Ms = Ms_Ri,直到Ms〈0,停止。其中,第1級(jí)設(shè)備彼此之間不互相連接。這是因?yàn)榈?級(jí)設(shè)備有可能處在NAT后,不借助P2P的NAT穿透方式,難以建立直接的連接。
[0109]步驟304、所有RD之間通過(guò)HTTP的方式進(jìn)行連接。
[0110]具體地,首先虛擬化控制器可以將分級(jí)結(jié)果下發(fā)給對(duì)應(yīng)的RD,即每個(gè)RD都會(huì)知道自己是屬于第1級(jí)設(shè)備還是第2級(jí)設(shè)備。其次第2級(jí)設(shè)備可以運(yùn)行一個(gè)HTTP的服務(wù)器,并將自己監(jiān)聽(tīng)的HTTP服務(wù)端口通過(guò)虛擬化API報(bào)告給虛擬化控制器。另一方面,虛擬化控制器可以將第1級(jí)的RD編號(hào)列表通過(guò)API方式告訴第2級(jí)的RD,當(dāng)?shù)?級(jí)RD過(guò)多時(shí),虛擬化控制器可以只下發(fā)其中一部分RD編號(hào)列表到對(duì)應(yīng)的第2級(jí)的RD,下發(fā)的原則優(yōu)選為負(fù)載最輕/離第2級(jí)設(shè)備最接近等。下面以某一個(gè)第2級(jí)RD為例,具體說(shuō)明第1級(jí)和第2級(jí)的設(shè)備之間的數(shù)據(jù)傳輸過(guò)程:
[0111]步驟3041、某個(gè)第2級(jí)RD從接收到的第1級(jí)RD編號(hào)列表中選取若干感興趣的第1級(jí)RD編號(hào),并將感興趣的第1級(jí)RD編號(hào)通過(guò)虛擬化API上報(bào)給虛擬化控制器。
[0112]步驟3042、虛擬化控制器是消息傳遞的中間者,虛擬化控制器通過(guò)虛擬化API向每個(gè)第1級(jí)RD傳達(dá)對(duì)他感興趣的第2級(jí)RD的地址信息,包括該第2級(jí)RD的IP地址以及其監(jiān)聽(tīng)的HTTP端口等。
[0113]步驟3043、收到該第2級(jí)RD的地址信息的第1級(jí)RD (可能是一個(gè)或者多個(gè))可以嘗試建立和對(duì)他感興趣的第2級(jí)RD的HTTP連接,如果連接成功,該第1級(jí)RD可以嘗試將從云端CDN模塊獲取的數(shù)據(jù)發(fā)送給該第2級(jí)RD。發(fā)送時(shí)可以帶上一個(gè)私有協(xié)議的封裝報(bào)文頭部,頭部發(fā)送者,數(shù)據(jù)編號(hào)等信息。第2級(jí)RD收到該報(bào)文之后,可以返回的信息包括:確認(rèn)是否繼續(xù)接收數(shù)據(jù),如果第2級(jí)RD不愿意再接收數(shù)據(jù),可以在返回信息里說(shuō)明(例如攜帶拒絕命令),這時(shí)第1級(jí)設(shè)備就可以終止發(fā)送數(shù)據(jù)。
[0114]步驟3044、第2級(jí)RD按從若干第1級(jí)RD收到的數(shù)據(jù)按照編號(hào)進(jìn)行組合,可以得到一個(gè)完整的內(nèi)容例如視頻節(jié)目流,并轉(zhuǎn)發(fā)給用戶終端的播放器。
[0115]在一種可能的實(shí)現(xiàn)方式中,第2級(jí)RD可以維護(hù)一個(gè)能夠向其發(fā)送數(shù)據(jù)的第1級(jí)RD的狀態(tài)信息列表,剔除不可用或者是網(wǎng)速較慢的連接第1級(jí)RD,也可以選擇發(fā)送拒絕接收數(shù)據(jù)的命令(即、拒絕命令)給數(shù)據(jù)發(fā)送者(狀態(tài)信息列表中的某個(gè)第1級(jí)RD)。數(shù)據(jù)發(fā)送者(第1級(jí)RD)在收到拒絕發(fā)送數(shù)據(jù)的命令后,可以仍然保持和數(shù)據(jù)接收者(第2級(jí)RD)之間的連接,但是數(shù)據(jù)發(fā)送者可以定期向數(shù)據(jù)接收者發(fā)送一個(gè)心跳的報(bào)告,數(shù)據(jù)接收者可以選擇在合適的時(shí)候再次讓數(shù)據(jù)發(fā)送者發(fā)送數(shù)據(jù)。
[0116]進(jìn)一步地,當(dāng)?shù)?級(jí)設(shè)備覺(jué)得第1級(jí)設(shè)備不夠用時(shí),可以通過(guò)虛擬化API再向虛擬化控制器申請(qǐng)新的第1級(jí)設(shè)備列表。
[0117]此外,當(dāng)與虛擬化控制器的通信暫時(shí)不可用時(shí),所有的RD維持原有狀態(tài)不變。而虛擬化控制器可以將通信中斷的RD從可用設(shè)備列表中剔除,不再進(jìn)行調(diào)度,直到通信再次建立。
[0118]舉例而言,虛擬化控制器可以維護(hù)一張全局的第1級(jí)RD列表(S卩、可用設(shè)備列表),當(dāng)有第2級(jí)RD請(qǐng)求時(shí),虛擬化控制器從可用設(shè)備列表中選取一批第1級(jí)RD的編號(hào)發(fā)給請(qǐng)求設(shè)備。如果將通信中斷的RD從可用設(shè)備列表中刪除后,虛擬化控制器不再對(duì)該RD進(jìn)行調(diào)度,如果該RD的通信再次建立,可以將該RD的編號(hào)再次加入可用設(shè)備列表,這樣就可以繼續(xù)調(diào)度該RD 了。
[0119]本發(fā)明實(shí)施例由于按照HTTP組網(wǎng)方式,由于并非P2P方式,第1級(jí)RD之間默認(rèn)不能互相傳輸數(shù)據(jù)。但是作為一種優(yōu)化的方案,為了能更好的減輕云端CDN的訪問(wèn)壓力,如果第1級(jí)RD選取的也是具有公網(wǎng)IP不在NAT后的RD(即上述的i型),則其他的第1級(jí)RD也可以訪問(wèn)這樣的第1級(jí)RD,向其發(fā)送數(shù)據(jù)。建立HTTP連接的過(guò)程和上述方案相同。
[0120]本發(fā)明實(shí)施例的內(nèi)容分發(fā)網(wǎng)絡(luò),在進(jìn)行用戶側(cè)RD組網(wǎng)是,可以將RD分為2種級(jí)別,第1級(jí)可以和云端CDN服務(wù)器或者別的第1級(jí)設(shè)備連接,第2級(jí)從第1級(jí)獲取數(shù)據(jù),并作為整個(gè)CDN加速服務(wù)的邊緣設(shè)備向用戶終端的播放器(消費(fèi)者)傳輸數(shù)據(jù)。并且,通過(guò)在RD設(shè)備上增加新的數(shù)據(jù)收發(fā)模塊,可以利用HTTP協(xié)議在不同RD上傳輸數(shù)據(jù),優(yōu)點(diǎn)包括連接建立簡(jiǎn)單、易維護(hù)、成功率高等。此外,為了保證錯(cuò)誤處理,在各RD設(shè)備的數(shù)據(jù)收發(fā)模塊之間進(jìn)行數(shù)據(jù)傳輸時(shí),可以增加封裝的私有協(xié)議頭部,傳輸一些控制信息,又實(shí)現(xiàn)了 RD之間通信自管理的優(yōu)點(diǎn)。此外,由于采用P2P云端管理控制具有連接方式復(fù)雜、受云端服務(wù)器影響不方便大規(guī)模部署等缺點(diǎn),與P2P連接相比,本發(fā)明是類似采用虛擬化控制器控制設(shè)備之間建立HTTP連接,可以更有利于擴(kuò)展系統(tǒng)規(guī)模,還可以通過(guò)虛擬化控制器的全局調(diào)度,有利于保證系統(tǒng)的總體負(fù)載均衡。
[0121]實(shí)施例2
[0122]圖4示出根據(jù)本發(fā)明一實(shí)施例的虛擬化控制器的結(jié)構(gòu)框圖。如圖4所示,本發(fā)明實(shí)施例的虛擬化控制器13可以設(shè)置于上述實(shí)施例中的云端的內(nèi)容分發(fā)網(wǎng)絡(luò)中,作為上述實(shí)施例中所述的內(nèi)容分發(fā)網(wǎng)絡(luò)的一個(gè)組成部分。其中,該虛擬化控制器主要可以包括:
[0123]客戶端接口模塊31,與用戶終端19的播放器相通信,用于接收所述用戶終端19的播放器發(fā)送的內(nèi)容分發(fā)請(qǐng)求。
[0124]分級(jí)模塊33,與各網(wǎng)絡(luò)設(shè)備17相通信,用于根據(jù)各網(wǎng)絡(luò)設(shè)備17的狀態(tài)信息進(jìn)行設(shè)備分級(jí),其中,所述分級(jí)結(jié)果包括所述網(wǎng)絡(luò)設(shè)備17為第一級(jí)設(shè)備或第二級(jí)設(shè)備,所述第一級(jí)設(shè)備為中間設(shè)備,所述第二級(jí)設(shè)備為邊緣設(shè)備;其中,第一級(jí)設(shè)備和第二級(jí)設(shè)備的具體分級(jí)過(guò)程可以參見(jiàn)實(shí)施例1中圖3及其相關(guān)描述。
[0125]網(wǎng)絡(luò)設(shè)備接口模塊35,與各所述網(wǎng)絡(luò)設(shè)備17相通信,用于將所述分級(jí)結(jié)果下發(fā)給對(duì)應(yīng)的網(wǎng)絡(luò)設(shè)備17。
[0126]HTTP連接控制模塊37,與各所述網(wǎng)絡(luò)設(shè)備17相通信,用于控制所述第一級(jí)設(shè)備和所述第二級(jí)設(shè)備之間建立HTTP連接。
[0127]其中,所述客戶端接口模塊31還用于向所述用戶終端19的播放器返回至少一個(gè)第二級(jí)設(shè)備的地址信息,以利用所返回的第二級(jí)設(shè)備的可用帶寬向所述用戶終端19的播放器進(jìn)行內(nèi)容分發(fā)。
[0128]本實(shí)施例的虛擬化控制器,客戶端接口模塊在接收用戶終端的播放器的內(nèi)容分發(fā)請(qǐng)求后,分級(jí)模塊能夠根據(jù)各網(wǎng)絡(luò)設(shè)備的狀態(tài)信息將網(wǎng)絡(luò)設(shè)備分為第一級(jí)設(shè)備或第二級(jí)設(shè)備,網(wǎng)絡(luò)設(shè)備接口模塊將分級(jí)結(jié)果下發(fā)給對(duì)應(yīng)的網(wǎng)絡(luò)設(shè)備后,HTTP連接控制模塊控制所述第一級(jí)設(shè)備和所述第二級(jí)設(shè)備之間建立HTTP連接,能夠較好的聚合用戶側(cè)網(wǎng)絡(luò)設(shè)備的帶寬,來(lái)提供不弱于IDC服務(wù)器的較高質(zhì)量的服務(wù)內(nèi)容,例如高質(zhì)量的直播節(jié)目數(shù)據(jù)流,并且更有利于擴(kuò)展系統(tǒng)規(guī)模。
[0129]實(shí)施例3
[0130]圖5示出根據(jù)本發(fā)明另一實(shí)施例的虛擬化控制器的結(jié)構(gòu)框圖。圖5中標(biāo)號(hào)與圖4相同的組件具有相同的功能,為簡(jiǎn)明起見(jiàn),省略對(duì)這些組件的詳細(xì)說(shuō)明。
[0131]如圖5所示,與圖4所示虛擬化控制器的主要區(qū)別在于,該虛擬化控制器的分級(jí)模塊33具體可以包括:
[0132]NAT探測(cè)單元331,用于獲取所述虛擬化控制器所能管轄的網(wǎng)絡(luò)設(shè)備17的狀態(tài)信息,所述網(wǎng)絡(luò)設(shè)備17的狀態(tài)信息包括所述網(wǎng)絡(luò)設(shè)備17的可用帶寬和NAT拓?fù)錉顟B(tài),在所述NAT拓?fù)錉顟B(tài)中,第一狀態(tài)表示所述網(wǎng)絡(luò)設(shè)備17具有公網(wǎng)IP地址,第二狀態(tài)表示所述網(wǎng)絡(luò)設(shè)備17在NAT后且屬于非對(duì)稱網(wǎng)絡(luò)NAT類型,第三狀態(tài)表示所述網(wǎng)絡(luò)設(shè)備17在NAT后且屬于對(duì)稱網(wǎng)絡(luò)NAT類型;
[0133]第二級(jí)設(shè)備選取單元333,用于從所述虛擬化控制器所能管轄的網(wǎng)絡(luò)設(shè)備中選取多個(gè)空閑網(wǎng)絡(luò)設(shè)備,并根據(jù)內(nèi)容分發(fā)需求和各所述空閑網(wǎng)絡(luò)設(shè)備17的可用帶寬,選