作者:??????來源:zz?????發(fā)表時(shí)間:2006-06-26?????瀏覽次數(shù):?1348??????字號(hào):大??中??小
原文地址:http://bbs.tvkoo.com/dispbbs.asp?boardID=3&ID=4017&page=1
最近對P2P直播技術(shù)進(jìn)行了一些研究,談?wù)剛€(gè)人對Tvkoo軟件的優(yōu)缺點(diǎn)的看法,一方面希望Tvkoo能做的更好,另一方面也拋磚引玉一下:
P2P直播的技術(shù)難點(diǎn)有:
一、防火墻的穿透:超過90%的電腦都在防火墻后面,如果讓2臺(tái)在防火墻后面的電腦能夠?qū)崿F(xiàn)P2P互聯(lián),這是一個(gè)技術(shù)的難點(diǎn)。有2種方式:
1.?要求用戶配置TCP端口:BT和電驢采用的方式,配置需要網(wǎng)絡(luò)專業(yè)知識(shí)。一般做法是通過在防火墻上開啟TCP端口來實(shí)現(xiàn),如果開啟了端口或者本身有Internet?IP地址的,為高聯(lián)通性電腦;在防火墻內(nèi)并且沒有開啟TCP端口的電腦,為低聯(lián)通性電腦。高聯(lián)通性電腦可以和其它的高聯(lián)通性電腦已經(jīng)低聯(lián)通性電腦進(jìn)行P2P;而低聯(lián)通電腦只能和高聯(lián)通性電腦進(jìn)行P2P。因此在BT、電驢中,有Internet?IP或者已經(jīng)在防火墻上開啟端口的電腦速度很快,而在防火墻后面的電腦(一般為局域網(wǎng)上網(wǎng)方式)就比較慢了。而通過局域網(wǎng)方式上網(wǎng)的電腦超過70%,如果沒有網(wǎng)絡(luò)基礎(chǔ),或者沒有網(wǎng)管特殊配置,只能處于低聯(lián)通性,速度很慢。
2.?防火墻自動(dòng)穿透。無需用戶配置,自動(dòng)讓2臺(tái)在防火墻后面的電腦能P2P互聯(lián)。P2P連接可以使用TCP和UDP?2種方式。由于WinXP?SP2限制了一個(gè)應(yīng)用程序的TCP連接數(shù),因此采用TCP方式進(jìn)行P2P的話,要安裝TCP限制的破解軟件。而Tvkoo是使用UDP進(jìn)行數(shù)據(jù)傳送的,因此不會(huì)有TCP限制。這是為什么有些用戶說:通過Netstat看不到很多的TCP連接而懷疑Tvkoo是不是P2P軟件的原因。
Tvkoo的P2P穿透力是我見到最強(qiáng)的軟件了,當(dāng)然由于沒有使用TCP,使得在僅允許HTTP訪問的防火墻后面的計(jì)算機(jī)沒有辦法訪問。Skype在P2P穿透時(shí)有一個(gè)技巧,讓一些有Internet?IP的電腦使用TCP的80端口,在僅允許HTTP訪問的防火墻后面的電腦通過類似HTTP的訪問方式連接這些80端口的電腦進(jìn)行P2P連接。Tvkoo也可以考慮一下這個(gè)方式。
二、WMV格式的分析
目前P2P直播都是使用WMV格式,通過模擬HTTP服務(wù)器的方式,把WMV數(shù)據(jù)流傳送給Media?Player。這是P2P直播的關(guān)鍵點(diǎn)。需要將Media?Encoder發(fā)出的HTTP數(shù)據(jù)進(jìn)行拆包,然后組成30秒-1分鐘的P2P數(shù)據(jù)塊,然后通過P2P方式將數(shù)據(jù)塊發(fā)送給Tvkoo客戶端,Tvkoo模擬成HTTP服務(wù)器將傳輸完成的數(shù)據(jù)塊發(fā)送給Media?Player。這部分Tvkoo做的也不錯(cuò)。
三、如何有效的選擇P2P的節(jié)點(diǎn)
這是Tvkoo的弱項(xiàng)。因?yàn)橐慌_(tái)電腦在P2P傳輸時(shí),最多連接幾十臺(tái)其它的電腦。當(dāng)幾萬臺(tái)電腦同時(shí)傳送一個(gè)P2P數(shù)據(jù)塊時(shí),要有一個(gè)優(yōu)化算法。比如:美國有5000個(gè)用戶,中國電信有5000個(gè)用戶,中國網(wǎng)通有5000個(gè)用戶,而每個(gè)用戶最多只能連30-50個(gè)節(jié)點(diǎn),如果不湊巧,一個(gè)電信的用戶連接了20個(gè)網(wǎng)通的用戶和30個(gè)美國的用戶,就不斷的出現(xiàn)斷斷續(xù)續(xù)的情況了。這就是為什么人一多,Tvkoo就卡,并且Tvkoo要把國外IP封掉的原因了。
有什么好的方式解決這個(gè)問題呢?我先拋磚引玉一下:
(1)????作為P2P直播的營運(yùn)商,可以多設(shè)幾臺(tái)P2P種子服務(wù)器,分布在不同的網(wǎng)段中。比如:北方網(wǎng)通設(shè)一臺(tái)(組),南方電信設(shè)一臺(tái)(組),種子的內(nèi)容是一樣的。種子服務(wù)器多了,可以降低優(yōu)化算法的難度。
(2)????種子服務(wù)器和普通節(jié)點(diǎn)的優(yōu)先級(jí):種子服務(wù)器的優(yōu)先級(jí)總數(shù)低于普通節(jié)點(diǎn)的,如果普通節(jié)點(diǎn)的速度快了,就減少從種子服務(wù)器獲取的數(shù)據(jù)量。
(3)????全球IP地址表。P2P節(jié)點(diǎn)仲裁服務(wù)器中,應(yīng)該有一個(gè)全球IP地址表,分中國大陸、香港、臺(tái)灣、北美、歐洲、澳洲、其它。中國大陸先按照營運(yùn)商分:電信、網(wǎng)通、鐵通、聯(lián)通、教育網(wǎng)等,再按照省份分類。(網(wǎng)上有下載,可以整理)
(4)????高速網(wǎng)段表。在P2P訪問中,節(jié)點(diǎn)動(dòng)態(tài)地將速度快的其它節(jié)點(diǎn)IP地址傳回服務(wù)器,服務(wù)器根據(jù)全球IP地址表算出網(wǎng)段,以網(wǎng)段-網(wǎng)段的方式記錄在數(shù)據(jù)庫中。
(5)????當(dāng)一個(gè)新用戶連入節(jié)點(diǎn)時(shí),在全球IP地址表中找到最近的節(jié)點(diǎn),按照比例依次分配最快網(wǎng)段的節(jié)點(diǎn);最近的節(jié)點(diǎn);差一個(gè)級(jí)別的稍近的節(jié)點(diǎn);隨機(jī)節(jié)點(diǎn)以及種子服務(wù)器。
(6)????P2P在數(shù)據(jù)傳送中,可以將30秒視頻作為1塊數(shù)據(jù)包;數(shù)據(jù)包中按照每16KB作為一個(gè)數(shù)據(jù)塊。每個(gè)時(shí)間段(如2秒),本節(jié)點(diǎn)向其它節(jié)點(diǎn)交換一下數(shù)據(jù)塊的傳送情況,然后計(jì)算一下數(shù)據(jù)包中每個(gè)數(shù)據(jù)塊的擁有率,優(yōu)先傳送擁有率低的數(shù)據(jù)塊。在擁有率相當(dāng)?shù)那闆r下,隨機(jī)選擇。
(7)????在數(shù)據(jù)交換中,對于傳送慢的節(jié)點(diǎn),定期剔除,然后問節(jié)點(diǎn)仲裁服務(wù)器要新的節(jié)點(diǎn)。
(8)????如果數(shù)據(jù)包中小于10%的數(shù)據(jù)塊沒有傳送完畢,在時(shí)間充足的情況下,對于余下的數(shù)據(jù)塊,可以同一個(gè)數(shù)據(jù)塊向多個(gè)節(jié)點(diǎn)請求。
(9)????節(jié)點(diǎn)仲裁服務(wù)器也會(huì)將新的P2P節(jié)點(diǎn)強(qiáng)行加載到另一個(gè)節(jié)點(diǎn)上,但不能超過節(jié)點(diǎn)最大連接數(shù)。