摘 要:VNC是由A7T劍橋?qū)嶒?yàn)室開發(fā)的一個強(qiáng)大的遠(yuǎn)程桌面共享工具,能夠讓多個用戶通過復(fù)雜的互聯(lián)網(wǎng)環(huán)境實(shí)時觀看到遠(yuǎn)端的服務(wù)器桌面并進(jìn)行操作。但VNC系統(tǒng)的星型結(jié)構(gòu)在實(shí)際應(yīng)用中很容易造成服務(wù)器端網(wǎng)絡(luò)的擁塞,使得可用性大大降低。文章對VNC系統(tǒng)進(jìn)行了改進(jìn),增加了音/視頻方面的支持,增強(qiáng)了安全性能,并引進(jìn)了P2P技術(shù),利用現(xiàn)有網(wǎng)絡(luò)架構(gòu),通過優(yōu)化和改進(jìn)多媒體數(shù)據(jù)流的傳送技術(shù),實(shí)現(xiàn)了一個低成本高效率的實(shí)時課堂直播系統(tǒng)。
關(guān)鍵詞:虛擬網(wǎng)絡(luò)計算;P2P;實(shí)時課堂直播;遠(yuǎn)程教學(xué)
0 引言
以互聯(lián)網(wǎng)為主要媒介的現(xiàn)代遠(yuǎn)程教育是當(dāng)今教育的發(fā)展趨勢。據(jù)統(tǒng)計,現(xiàn)有的遠(yuǎn)程教學(xué)系統(tǒng),大多采用客戶機(jī)/服務(wù)器(C/S)結(jié)構(gòu)。C/S結(jié)構(gòu)系統(tǒng)在管理上具有優(yōu)勢,但存在以下問題:①多客戶單服務(wù)器構(gòu)架難以應(yīng)付大規(guī)模并發(fā)客戶;②資源集中于服務(wù)器易形成瓶頸,客戶端資源利用率低;③魯棒性低,易出現(xiàn)單點(diǎn)故障,系統(tǒng)容錯能力低且易受攻擊??紤]到對等網(wǎng)絡(luò)(Peer-to-Peer,P2P)系統(tǒng)具有負(fù)載均衡、自適應(yīng)、自組織和容錯力強(qiáng)等優(yōu)點(diǎn),很多研究者開始將對等網(wǎng)絡(luò)運(yùn)用到流媒體的傳輸中來。
本文所討論的系統(tǒng)將通過擴(kuò)展和改進(jìn)VNC系統(tǒng)并結(jié)合P2P技術(shù)來實(shí)現(xiàn)所需的功能。VNC(Virtual Network Computing,虛擬網(wǎng)絡(luò)計算)是ATT劍橋?qū)嶒?yàn)室所研發(fā)的遠(yuǎn)程桌面共享工具,它能夠讓多個用戶通過復(fù)雜的互聯(lián)網(wǎng)環(huán)境實(shí)時觀看到遠(yuǎn)端的服務(wù)器桌面并進(jìn)行操作。VNC所采用的是RFB(RemoteFrame Buffer,遠(yuǎn)程幀緩沖)協(xié)議,它是基于TCP/IP傳輸協(xié)議上的一個簡單的圖形界面?zhèn)鬏攨f(xié)議。如果要使用VNC系統(tǒng)來實(shí)現(xiàn)多個客戶端能夠同時觀看到同一遠(yuǎn)程計算機(jī)的桌面,就必須在該遠(yuǎn)程計算機(jī)上維持多個VNC客戶端的TCP連接。由于每個TCP連接都要實(shí)時傳送VNC服務(wù)器和客戶端的控制信息以及反饋圖像,所以當(dāng)控制者數(shù)目增大時,服務(wù)器端所需要的網(wǎng)絡(luò)帶寬和處理器速度都會線性增長。當(dāng)客戶端數(shù)目增多到一定程度,這種點(diǎn)對點(diǎn)通信的RF33協(xié)議就顯得力不從心,從而導(dǎo)致系統(tǒng)癱瘓。
由于VNC是一個開放源代碼項(xiàng)目,我們可以針對上述VNC的不足之處,通過擴(kuò)展VNC的RFB協(xié)議,增加音/視頻多播的支持,并改進(jìn)身份識別認(rèn)證、授權(quán)機(jī)制,來實(shí)現(xiàn)一個比較安全和穩(wěn)定的實(shí)時課堂直播系統(tǒng)。
1 系統(tǒng)模型
該遠(yuǎn)程教學(xué)系統(tǒng)主要由三部分組成:源服務(wù)器,中間服務(wù)器以及基于P2P網(wǎng)絡(luò)的客戶端。如圖1所示,下面就各功能模塊分別進(jìn)行介紹。
1.1 源服務(wù)器
源服務(wù)器就是教師利用其進(jìn)行授課的計算機(jī),該計算機(jī)上安裝了VNC Server(VNC的服務(wù)器端軟件)。VNC Server將自動錄制教師在計算機(jī)屏幕上的一系列動作,形成屏幕數(shù)據(jù)流。該屏幕數(shù)據(jù)流將通過RFB協(xié)議傳送給中間服務(wù)器(其上安裝了VNC Client),然后再通過P2P網(wǎng)絡(luò)傳輸?shù)綄W(xué)生的計算機(jī)上。在RFB協(xié)議中,它采用了一些編碼算法來減少傳輸?shù)臄?shù)據(jù)量,目前支持如下幾種編碼方法,包括Raw、Copy Rectangle、RRE、CoRRE、Hextile和ZRLE等方法。
VNC主要面向遠(yuǎn)程控制,所以它只支持計算機(jī)屏幕數(shù)據(jù)的獲取和傳輸,目前還沒有實(shí)現(xiàn)對音/視頻數(shù)據(jù)的支持。好在VNC是開放源代碼軟件,本系統(tǒng)對VNC進(jìn)行了進(jìn)一步的改進(jìn),使得在學(xué)生計算機(jī)上不僅可以見到教師在其計算機(jī)上的操作過程,而且還可以同步聽到教師的聲音和看到教師的視頻,這樣大大增加了網(wǎng)絡(luò)課堂的真實(shí)性。同樣,VNC所依賴的RFB協(xié)議也是不支持音/視頻的傳輸?shù)模虼?,在源服?wù)器上所采集的教師的音/視頻信號必須通過其它途徑進(jìn)行傳輸??紤]到RTP(Real Time Transport Protocol,實(shí)時傳輸協(xié)議)是實(shí)現(xiàn)多媒體數(shù)據(jù)實(shí)時傳輸非常有效的協(xié)議,能夠提供端對端的網(wǎng)絡(luò)傳輸功能,適合單播或多播網(wǎng)絡(luò)的多媒體數(shù)據(jù)實(shí)時傳輸應(yīng)用,因此,本系統(tǒng)通過RTP將音/視頻流傳輸?shù)街虚g服務(wù)器。
源服務(wù)器將教師的音/視頻流和桌面數(shù)據(jù)流都傳到中間服務(wù)器進(jìn)行進(jìn)一步的處理和轉(zhuǎn)發(fā),這樣,對于源服務(wù)器的計算性能和帶寬資源要求就可以大大降低。
1.2 中間服務(wù)器
中間服務(wù)器擔(dān)負(fù)著內(nèi)容轉(zhuǎn)發(fā)服務(wù)器和網(wǎng)絡(luò)管理服務(wù)器的兩大功能。通過設(shè)置中間服務(wù)器,可以轉(zhuǎn)移教師計算機(jī)(源服務(wù)器)性能和帶寬的壓力,同時也可實(shí)現(xiàn)對遠(yuǎn)程教學(xué)系統(tǒng)的統(tǒng)一管理。
1.2.1 內(nèi)容轉(zhuǎn)發(fā)功能
中間服務(wù)器上安裝了VNC客戶端(VNC Client)程序,它從源服務(wù)器接收桌面數(shù)據(jù),同時也接收音/視頻數(shù)據(jù)流,并將這些多媒體內(nèi)容進(jìn)行分塊、編碼、打包,以供其他客戶節(jié)點(diǎn)下載,也就是為P2P網(wǎng)絡(luò)提供原始的流媒體內(nèi)容,當(dāng)客戶機(jī)向中間服務(wù)器請求多媒體內(nèi)容的時候,中間服務(wù)器便開始查找緩存有請求內(nèi)容的在線客戶機(jī)節(jié)點(diǎn)列表,選擇一空閑節(jié)點(diǎn)(沒有為其他客戶服務(wù))返回給請求者,并將狀態(tài)置為忙;請求者得到服務(wù)提供者的地址后,便向提供者請求提供服務(wù)??蛻艄?jié)點(diǎn)得到請求內(nèi)容后,就在中間服務(wù)器注冊其所緩存內(nèi)容以便為其他客戶服務(wù)。
1.2.2 網(wǎng)絡(luò)管理功能
VNC的網(wǎng)絡(luò)安全性差,因?yàn)閂NC僅使用單一的固定密碼對用戶進(jìn)行認(rèn)證,無法做到用戶的權(quán)限管理和多個會話的訪問控制。在本系統(tǒng)中,利用中間服務(wù)器負(fù)責(zé)對學(xué)生用戶在服務(wù)器上的合法身份進(jìn)行安全認(rèn)證,并對學(xué)生用戶的權(quán)限進(jìn)行控制。這樣,就摒棄了VNC的用戶身份認(rèn)證機(jī)制,大大地增加了系統(tǒng)的安全性。
中間服務(wù)器還充當(dāng)著P2P網(wǎng)絡(luò)的管理服務(wù)器的角色。為了使從源服務(wù)器傳送過來的數(shù)據(jù),能夠高效地在P2P網(wǎng)絡(luò)中傳輸,需要對這些數(shù)據(jù)進(jìn)行一定的處理和包裝。關(guān)于這部分內(nèi)容將在下面具體闡述。
1.3 P2P網(wǎng)絡(luò)
通過中間服務(wù)器,把多媒體數(shù)據(jù)同時發(fā)送給多個客戶端,無論是采用重復(fù)點(diǎn)對點(diǎn)通信方式,還是采用廣播方式,都會嚴(yán)重浪費(fèi)網(wǎng)絡(luò)帶寬,而且效率很低。對此,可以借鑒PPlive這類網(wǎng)絡(luò)電視的原理,它提供了基于P2P技術(shù)的流媒體傳輸解決方案,每一臺P2P網(wǎng)絡(luò)內(nèi)的主機(jī)既是客戶機(jī)又是服務(wù)器,在接收服務(wù)的同時又向別人提供服務(wù)。在本系統(tǒng)中使用混合型P2P網(wǎng)絡(luò),使得P2P網(wǎng)絡(luò)的高效和C/S結(jié)構(gòu)的穩(wěn)定以及易于管理的優(yōu)點(diǎn)得以體現(xiàn)。
2 多媒體數(shù)據(jù)分塊與調(diào)度機(jī)制
為了能夠充分使用網(wǎng)絡(luò)帶寬和提高課堂直播的質(zhì)量,我們對P2P網(wǎng)絡(luò)上的數(shù)據(jù)流進(jìn)行分類,即:控制流,桌面數(shù)據(jù)流以及音/視頻數(shù)據(jù)流。
2.1 桌面數(shù)據(jù)的處理
源服務(wù)器上的VNC Server將桌面環(huán)境通過RFB協(xié)議送給中間服務(wù)器的VNC Client端,并不是通過連續(xù)抓取全屏數(shù)據(jù)然后發(fā)送來達(dá)到目的的。它會在抓屏之前動態(tài)跟蹤屏幕變化矩形區(qū)域,通過只保存變化矩形區(qū)域的數(shù)據(jù)和位置的方法來減少圖像處理和傳輸?shù)臄?shù)據(jù)量,提高效率和帶寬。
當(dāng)中間服務(wù)器收到來自源服務(wù)器的變化矩形區(qū)域的數(shù)據(jù)時,并不是直接將它通過P2P網(wǎng)絡(luò)就發(fā)送給各個學(xué)生客戶機(jī)。因?yàn)樽兓匦螀^(qū)域的大小是不固定的,如果太大的話,在網(wǎng)絡(luò)中傳輸?shù)臅r間長,而且易出錯,這樣網(wǎng)絡(luò)延遲也就會比較大,因而不能充分體現(xiàn)P2P網(wǎng)絡(luò)的高效性。所以,在中間服務(wù)器中,會對來自源服務(wù)器的矩形數(shù)據(jù)進(jìn)行相應(yīng)的處理,也就是對較大的矩形進(jìn)行分割,進(jìn)一步分成小的矩形塊(如圖2所示)。
究竟要把多大的矩形進(jìn)行進(jìn)一步分塊呢?通過試驗(yàn)證明,如果對大于64×64的矩形進(jìn)行分塊的話,效果會比較好。分塊后的小矩形進(jìn)行編碼打包后,發(fā)送到各個學(xué)生客戶機(jī)上,進(jìn)行解碼后重新拼成大的矩形。正因?yàn)閿?shù)據(jù)包通過P2P網(wǎng)絡(luò)傳輸?shù)娇蛻魴C(jī)上并不是按順序進(jìn)行傳送的,所以客戶機(jī)并不知道一幀的數(shù)據(jù)包是否都收到了,是否有丟包的情況發(fā)生,這些情況下都會造成客戶機(jī)上面畫面的顯示效果很差。因此,中間服務(wù)器會對各個小矩形進(jìn)行編號,還會給出每一幀上總共有幾個小矩形等參數(shù)。圖3給出了代表每個小矩形的數(shù)據(jù)包的結(jié)構(gòu)。其中FRM NUM用來標(biāo)識該小矩形是屬于第幾幀;RECT_SUM表示每一幀的變化區(qū)域劃分成小矩形的數(shù)目;SEQ NUM表示每個小矩形的編號;RECT_POS表示每個小矩形在屏幕上的位置,包括X坐標(biāo)和Y坐標(biāo);RECT_SIZE則表示每個小矩形的大小,包括寬和高;ENC_WAY表示每個小矩形所采用的編碼方法;RECT_DATA表示每個小矩形編碼以后的數(shù)據(jù)。
下面就圖2所示桌面數(shù)據(jù)在P2P網(wǎng)絡(luò)的傳輸過程進(jìn)行簡要的介紹。
(1)中間服務(wù)器將對源服務(wù)器發(fā)過來的矩形數(shù)據(jù)進(jìn)行處理。如圖2所示,R1和R2表示有變化的大的矩形區(qū)域,中間服務(wù)器則將它進(jìn)一步劃分成小的矩形區(qū)域如r1,r2,r3,…,rn,然后進(jìn)行編碼,并按照圖3的格式封裝成數(shù)據(jù)包。
(2)中間服務(wù)器上保存著通過合法身份認(rèn)證后的學(xué)生客戶機(jī)列表,根據(jù)這個列表,中間服務(wù)器向每個學(xué)生客戶機(jī)隨機(jī)發(fā)送一個小矩形數(shù)據(jù)包。學(xué)生客戶機(jī)根據(jù)這個數(shù)據(jù)包就可以了解該幀的數(shù)據(jù)情況,包括總共分成多少個小矩形,當(dāng)前收到的是哪一個小矩形等等。
(3)學(xué)生客戶機(jī)根據(jù)第2步得到的信息,得知還缺哪些小矩形數(shù)據(jù)包,于是向其鄰近區(qū)域的計算機(jī)發(fā)出請求,如果哪臺計算機(jī)擁有所請求的數(shù)據(jù)包的話就發(fā)送給它。同時,該學(xué)生客戶機(jī)也將已經(jīng)收到的數(shù)據(jù)包作為共享,向其它計算機(jī)提供數(shù)據(jù)源,
(4)學(xué)生客戶機(jī)將收到的小矩形數(shù)據(jù)包進(jìn)行解碼,然后根據(jù)RECT_POS將小矩形顯示在適當(dāng)?shù)奈恢蒙稀?/p>
2.2 音/視頻數(shù)據(jù)的處理
對于音/視頻數(shù)據(jù)的處理與桌面數(shù)據(jù)的處理略有不同,這里我們采用分段順序下載法。為了保證學(xué)生客戶端能夠流暢播放音/視頻,中間服務(wù)器先緩存一段音/視頻數(shù)據(jù)(在該系統(tǒng)是10秒),然后將這一段數(shù)據(jù)分成小塊打包成小數(shù)據(jù)塊,每個數(shù)據(jù)塊播放時間為0.2秒,并且為每一個數(shù)據(jù)塊分配一個編號。學(xué)生客戶機(jī)在通過P2P網(wǎng)絡(luò)下載音/視頻數(shù)據(jù)的過程中,會按先后順序下載一個區(qū)段(一個區(qū)段10秒鐘)。但是,一個區(qū)段是由一個個小數(shù)據(jù)塊(0.2秒的數(shù)據(jù))組成的,因此,下載這些小數(shù)據(jù)塊就不是按順序下載了,而是采用類似于2.1節(jié)所描述的桌面數(shù)據(jù)中小矩形數(shù)據(jù)包的下載機(jī)制。當(dāng)學(xué)生客戶端下載完一個區(qū)段的數(shù)據(jù)時,就可以進(jìn)行播放,同時繼續(xù)下載下一個區(qū)段的數(shù)據(jù)。通過上述的分段順序下載法就可以基本保證音/視頻在學(xué)生客戶端的流暢播放。
3 結(jié)束語
本文提出了一種基于VNC和P2P技術(shù)的實(shí)時課堂直播系統(tǒng)。VNC是一款優(yōu)秀的開放源碼的遠(yuǎn)程桌面控制軟件,但是VNC所采用的安全機(jī)制不夠完善,存在明顯的安全漏洞。雖然VNC也支持多個客戶端同時對同一個遠(yuǎn)程計算機(jī)(服務(wù)器端)進(jìn)行控制,但是它采用的是基于TCP協(xié)議之上的點(diǎn)對點(diǎn)傳輸協(xié)議,當(dāng)客戶端的數(shù)目增大時,服務(wù)器端所需要的網(wǎng)絡(luò)帶寬和處理器速度都會線性增長。本系統(tǒng)就針對VNC的不足之處進(jìn)行改進(jìn),改善其安全機(jī)制,增加音/視頻的支持,特別是引進(jìn)了P2P技術(shù),能充分利用客戶端的資源,減輕服務(wù)器的負(fù)擔(dān),提高了系統(tǒng)的性能、效率和穩(wěn)定性。
該系統(tǒng)目前在局域網(wǎng)內(nèi)進(jìn)行測試,基本上能夠滿足100人左右規(guī)模的正常使用。今后打算從以下幾方面對系統(tǒng)進(jìn)行改進(jìn):
(1)改進(jìn)P2P網(wǎng)絡(luò)調(diào)度機(jī)制,使得實(shí)時課堂直播的效率更高。
(2)目前該系統(tǒng)還只能在局域網(wǎng)中使用,還沒有考慮在跨網(wǎng)段情況下P2P技術(shù)的實(shí)現(xiàn)問題。因此要對系統(tǒng)在這方面進(jìn)行完善,使得它能夠穿越大多數(shù)防火墻和NAT網(wǎng)關(guān)設(shè)備,使內(nèi)外網(wǎng)用戶都可以得到同樣的服務(wù)質(zhì)量。