摘 要:VNC是由A7T劍橋?qū)嶒?yàn)室開發(fā)的一個(gè)強(qiáng)大的遠(yuǎn)程桌面共享工具,能夠讓多個(gè)用戶通過復(fù)雜的互聯(lián)網(wǎng)環(huán)境實(shí)時(shí)觀看到遠(yuǎn)端的服務(wù)器桌面并進(jìn)行操作。但VNC系統(tǒng)的星型結(jié)構(gòu)在實(shí)際應(yīng)用中很容易造成服務(wù)器端網(wǎng)絡(luò)的擁塞,使得可用性大大降低。文章對(duì)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)了一個(gè)低成本高效率的實(shí)時(shí)課堂直播系統(tǒng)。
關(guān)鍵詞:虛擬網(wǎng)絡(luò)計(jì)算;P2P;實(shí)時(shí)課堂直播;遠(yuǎn)程教學(xué)
0 引言
以互聯(lián)網(wǎng)為主要媒介的現(xiàn)代遠(yuǎn)程教育是當(dāng)今教育的發(fā)展趨勢(shì)。據(jù)統(tǒng)計(jì),現(xiàn)有的遠(yuǎn)程教學(xué)系統(tǒng),大多采用客戶機(jī)/服務(wù)器(C/S)結(jié)構(gòu)。C/S結(jié)構(gòu)系統(tǒng)在管理上具有優(yōu)勢(shì),但存在以下問題:①多客戶單服務(wù)器構(gòu)架難以應(yīng)付大規(guī)模并發(fā)客戶;②資源集中于服務(wù)器易形成瓶頸,客戶端資源利用率低;③魯棒性低,易出現(xiàn)單點(diǎn)故障,系統(tǒng)容錯(cuò)能力低且易受攻擊。考慮到對(duì)等網(wǎng)絡(luò)(Peer-to-Peer,P2P)系統(tǒng)具有負(fù)載均衡、自適應(yīng)、自組織和容錯(cuò)力強(qiáng)等優(yōu)點(diǎn),很多研究者開始將對(duì)等網(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ò)計(jì)算)是ATT劍橋?qū)嶒?yàn)室所研發(fā)的遠(yuǎn)程桌面共享工具,它能夠讓多個(gè)用戶通過復(fù)雜的互聯(lián)網(wǎng)環(huán)境實(shí)時(shí)觀看到遠(yuǎn)端的服務(wù)器桌面并進(jìn)行操作。VNC所采用的是RFB(RemoteFrame Buffer,遠(yuǎn)程幀緩沖)協(xié)議,它是基于TCP/IP傳輸協(xié)議上的一個(gè)簡(jiǎn)單的圖形界面?zhèn)鬏攨f(xié)議。如果要使用VNC系統(tǒng)來實(shí)現(xiàn)多個(gè)客戶端能夠同時(shí)觀看到同一遠(yuǎn)程計(jì)算機(jī)的桌面,就必須在該遠(yuǎn)程計(jì)算機(jī)上維持多個(gè)VNC客戶端的TCP連接。由于每個(gè)TCP連接都要實(shí)時(shí)傳送VNC服務(wù)器和客戶端的控制信息以及反饋圖像,所以當(dāng)控制者數(shù)目增大時(shí),服務(wù)器端所需要的網(wǎng)絡(luò)帶寬和處理器速度都會(huì)線性增長(zhǎng)。當(dāng)客戶端數(shù)目增多到一定程度,這種點(diǎn)對(duì)點(diǎn)通信的RF33協(xié)議就顯得力不從心,從而導(dǎo)致系統(tǒng)癱瘓。
由于VNC是一個(gè)開放源代碼項(xiàng)目,我們可以針對(duì)上述VNC的不足之處,通過擴(kuò)展VNC的RFB協(xié)議,增加音/視頻多播的支持,并改進(jìn)身份識(shí)別認(rèn)證、授權(quán)機(jī)制,來實(shí)現(xiàn)一個(gè)比較安全和穩(wěn)定的實(shí)時(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ī),該計(jì)算機(jī)上安裝了VNC Server(VNC的服務(wù)器端軟件)。VNC Server將自動(dòng)錄制教師在計(jì)算機(jī)屏幕上的一系列動(dòng)作,形成屏幕數(shù)據(jù)流。該屏幕數(shù)據(jù)流將通過RFB協(xié)議傳送給中間服務(wù)器(其上安裝了VNC Client),然后再通過P2P網(wǎng)絡(luò)傳輸?shù)綄W(xué)生的計(jì)算機(jī)上。在RFB協(xié)議中,它采用了一些編碼算法來減少傳輸?shù)臄?shù)據(jù)量,目前支持如下幾種編碼方法,包括Raw、Copy Rectangle、RRE、CoRRE、Hextile和ZRLE等方法。

VNC主要面向遠(yuǎn)程控制,所以它只支持計(jì)算機(jī)屏幕數(shù)據(jù)的獲取和傳輸,目前還沒有實(shí)現(xiàn)對(duì)音/視頻數(shù)據(jù)的支持。好在VNC是開放源代碼軟件,本系統(tǒng)對(duì)VNC進(jìn)行了進(jìn)一步的改進(jìn),使得在學(xué)生計(jì)算機(jī)上不僅可以見到教師在其計(jì)算機(jī)上的操作過程,而且還可以同步聽到教師的聲音和看到教師的視頻,這樣大大增加了網(wǎng)絡(luò)課堂的真實(shí)性。同樣,VNC所依賴的RFB協(xié)議也是不支持音/視頻的傳輸?shù)模虼耍谠捶?wù)器上所采集的教師的音/視頻信號(hào)必須通過其它途徑進(jìn)行傳輸。考慮到RTP(Real Time Transport Protocol,實(shí)時(shí)傳輸協(xié)議)是實(shí)現(xiàn)多媒體數(shù)據(jù)實(shí)時(shí)傳輸非常有效的協(xié)議,能夠提供端對(duì)端的網(wǎng)絡(luò)傳輸功能,適合單播或多播網(wǎng)絡(luò)的多媒體數(shù)據(jù)實(shí)時(shí)傳輸應(yīng)用,因此,本系統(tǒng)通過RTP將音/視頻流傳輸?shù)街虚g服務(wù)器。
源服務(wù)器將教師的音/視頻流和桌面數(shù)據(jù)流都傳到中間服務(wù)器進(jìn)行進(jìn)一步的處理和轉(zhuǎn)發(fā),這樣,對(duì)于源服務(wù)器的計(jì)算性能和帶寬資源要求就可以大大降低。
1.2 中間服務(wù)器
中間服務(wù)器擔(dān)負(fù)著內(nèi)容轉(zhuǎn)發(fā)服務(wù)器和網(wǎng)絡(luò)管理服務(wù)器的兩大功能。通過設(shè)置中間服務(wù)器,可以轉(zhuǎn)移教師計(jì)算機(jī)(源服務(wù)器)性能和帶寬的壓力,同時(shí)也可實(shí)現(xiàn)對(duì)遠(yuǎn)程教學(xué)系統(tǒng)的統(tǒng)一管理。
1.2.1 內(nèi)容轉(zhuǎn)發(fā)功能
中間服務(wù)器上安裝了VNC客戶端(VNC Client)程序,它從源服務(wù)器接收桌面數(shù)據(jù),同時(shí)也接收音/視頻數(shù)據(jù)流,并將這些多媒體內(nèi)容進(jìn)行分塊、編碼、打包,以供其他客戶節(jié)點(diǎn)下載,也就是為P2P網(wǎng)絡(luò)提供原始的流媒體內(nèi)容,當(dāng)客戶機(jī)向中間服務(wù)器請(qǐng)求多媒體內(nèi)容的時(shí)候,中間服務(wù)器便開始查找緩存有請(qǐng)求內(nèi)容的在線客戶機(jī)節(jié)點(diǎn)列表,選擇一空閑節(jié)點(diǎn)(沒有為其他客戶服務(wù))返回給請(qǐng)求者,并將狀態(tài)置為忙;請(qǐng)求者得到服務(wù)提供者的地址后,便向提供者請(qǐng)求提供服務(wù)。客戶節(jié)點(diǎn)得到請(qǐng)求內(nèi)容后,就在中間服務(wù)器注冊(cè)其所緩存內(nèi)容以便為其他客戶服務(wù)。
1.2.2 網(wǎng)絡(luò)管理功能
VNC的網(wǎng)絡(luò)安全性差,因?yàn)閂NC僅使用單一的固定密碼對(duì)用戶進(jìn)行認(rèn)證,無法做到用戶的權(quán)限管理和多個(gè)會(huì)話的訪問控制。在本系統(tǒng)中,利用中間服務(wù)器負(fù)責(zé)對(duì)學(xué)生用戶在服務(wù)器上的合法身份進(jìn)行安全認(rèn)證,并對(duì)學(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ò)中傳輸,需要對(duì)這些數(shù)據(jù)進(jìn)行一定的處理和包裝。關(guān)于這部分內(nèi)容將在下面具體闡述。
1.3 P2P網(wǎng)絡(luò)
通過中間服務(wù)器,把多媒體數(shù)據(jù)同時(shí)發(fā)送給多個(gè)客戶端,無論是采用重復(fù)點(diǎn)對(duì)點(diǎn)通信方式,還是采用廣播方式,都會(huì)嚴(yán)重浪費(fèi)網(wǎng)絡(luò)帶寬,而且效率很低。對(duì)此,可以借鑒PPlive這類網(wǎng)絡(luò)電視的原理,它提供了基于P2P技術(shù)的流媒體傳輸解決方案,每一臺(tái)P2P網(wǎng)絡(luò)內(nèi)的主機(jī)既是客戶機(jī)又是服務(wù)器,在接收服務(wù)的同時(shí)又向別人提供服務(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ì)量,我們對(duì)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á)到目的的。它會(huì)在抓屏之前動(dòng)態(tài)跟蹤屏幕變化矩形區(qū)域,通過只保存變化矩形區(qū)域的數(shù)據(jù)和位置的方法來減少圖像處理和傳輸?shù)臄?shù)據(jù)量,提高效率和帶寬。
當(dāng)中間服務(wù)器收到來自源服務(wù)器的變化矩形區(qū)域的數(shù)據(jù)時(shí),并不是直接將它通過P2P網(wǎng)絡(luò)就發(fā)送給各個(gè)學(xué)生客戶機(jī)。因?yàn)樽兓匦螀^(qū)域的大小是不固定的,如果太大的話,在網(wǎng)絡(luò)中傳輸?shù)臅r(shí)間長(zhǎng),而且易出錯(cuò),這樣網(wǎng)絡(luò)延遲也就會(huì)比較大,因而不能充分體現(xiàn)P2P網(wǎng)絡(luò)的高效性。所以,在中間服務(wù)器中,會(huì)對(duì)來自源服務(wù)器的矩形數(shù)據(jù)進(jìn)行相應(yīng)的處理,也就是對(duì)較大的矩形進(jìn)行分割,進(jìn)一步分成小的矩形塊(如圖2所示)。

究竟要把多大的矩形進(jìn)行進(jìn)一步分塊呢?通過試驗(yàn)證明,如果對(duì)大于64×64的矩形進(jìn)行分塊的話,效果會(huì)比較好。分塊后的小矩形進(jìn)行編碼打包后,發(fā)送到各個(gè)學(xué)生客戶機(jī)上,進(jìn)行解碼后重新拼成大的矩形。正因?yàn)閿?shù)據(jù)包通過P2P網(wǎng)絡(luò)傳輸?shù)娇蛻魴C(jī)上并不是按順序進(jìn)行傳送的,所以客戶機(jī)并不知道一幀的數(shù)據(jù)包是否都收到了,是否有丟包的情況發(fā)生,這些情況下都會(huì)造成客戶機(jī)上面畫面的顯示效果很差。因此,中間服務(wù)器會(huì)對(duì)各個(gè)小矩形進(jìn)行編號(hào),還會(huì)給出每一幀上總共有幾個(gè)小矩形等參數(shù)。圖3給出了代表每個(gè)小矩形的數(shù)據(jù)包的結(jié)構(gòu)。其中FRM NUM用來標(biāo)識(shí)該小矩形是屬于第幾幀;RECT_SUM表示每一幀的變化區(qū)域劃分成小矩形的數(shù)目;SEQ NUM表示每個(gè)小矩形的編號(hào);RECT_POS表示每個(gè)小矩形在屏幕上的位置,包括X坐標(biāo)和Y坐標(biāo);RECT_SIZE則表示每個(gè)小矩形的大小,包括寬和高;ENC_WAY表示每個(gè)小矩形所采用的編碼方法;RECT_DATA表示每個(gè)小矩形編碼以后的數(shù)據(jù)。
下面就圖2所示桌面數(shù)據(jù)在P2P網(wǎng)絡(luò)的傳輸過程進(jìn)行簡(jiǎn)要的介紹。
(1)中間服務(wù)器將對(duì)源服務(wù)器發(fā)過來的矩形數(shù)據(jù)進(jìn)行處理。如圖2所示,R1和R2表示有變化的大的矩形區(qū)域,中間服務(wù)器則將它進(jìn)一步劃分成小的矩形區(qū)域如r1,r2,r3,…,rn,然后進(jìn)行編碼,并按照?qǐng)D3的格式封裝成數(shù)據(jù)包。

(2)中間服務(wù)器上保存著通過合法身份認(rèn)證后的學(xué)生客戶機(jī)列表,根據(jù)這個(gè)列表,中間服務(wù)器向每個(gè)學(xué)生客戶機(jī)隨機(jī)發(fā)送一個(gè)小矩形數(shù)據(jù)包。學(xué)生客戶機(jī)根據(jù)這個(gè)數(shù)據(jù)包就可以了解該幀的數(shù)據(jù)情況,包括總共分成多少個(gè)小矩形,當(dāng)前收到的是哪一個(gè)小矩形等等。
(3)學(xué)生客戶機(jī)根據(jù)第2步得到的信息,得知還缺哪些小矩形數(shù)據(jù)包,于是向其鄰近區(qū)域的計(jì)算機(jī)發(fā)出請(qǐng)求,如果哪臺(tái)計(jì)算機(jī)擁有所請(qǐng)求的數(shù)據(jù)包的話就發(fā)送給它。同時(shí),該學(xué)生客戶機(jī)也將已經(jīng)收到的數(shù)據(jù)包作為共享,向其它計(jì)算機(jī)提供數(shù)據(jù)源,
(4)學(xué)生客戶機(jī)將收到的小矩形數(shù)據(jù)包進(jìn)行解碼,然后根據(jù)RECT_POS將小矩形顯示在適當(dāng)?shù)奈恢蒙稀?/p>
2.2 音/視頻數(shù)據(jù)的處理
對(duì)于音/視頻數(shù)據(jù)的處理與桌面數(shù)據(jù)的處理略有不同,這里我們采用分段順序下載法。為了保證學(xué)生客戶端能夠流暢播放音/視頻,中間服務(wù)器先緩存一段音/視頻數(shù)據(jù)(在該系統(tǒng)是10秒),然后將這一段數(shù)據(jù)分成小塊打包成小數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊播放時(shí)間為0.2秒,并且為每一個(gè)數(shù)據(jù)塊分配一個(gè)編號(hào)。學(xué)生客戶機(jī)在通過P2P網(wǎng)絡(luò)下載音/視頻數(shù)據(jù)的過程中,會(huì)按先后順序下載一個(gè)區(qū)段(一個(gè)區(qū)段10秒鐘)。但是,一個(gè)區(qū)段是由一個(gè)個(gè)小數(shù)據(jù)塊(0.2秒的數(shù)據(jù))組成的,因此,下載這些小數(shù)據(jù)塊就不是按順序下載了,而是采用類似于2.1節(jié)所描述的桌面數(shù)據(jù)中小矩形數(shù)據(jù)包的下載機(jī)制。當(dāng)學(xué)生客戶端下載完一個(gè)區(qū)段的數(shù)據(jù)時(shí),就可以進(jìn)行播放,同時(shí)繼續(xù)下載下一個(gè)區(qū)段的數(shù)據(jù)。通過上述的分段順序下載法就可以基本保證音/視頻在學(xué)生客戶端的流暢播放。
3 結(jié)束語
本文提出了一種基于VNC和P2P技術(shù)的實(shí)時(shí)課堂直播系統(tǒng)。VNC是一款優(yōu)秀的開放源碼的遠(yuǎn)程桌面控制軟件,但是VNC所采用的安全機(jī)制不夠完善,存在明顯的安全漏洞。雖然VNC也支持多個(gè)客戶端同時(shí)對(duì)同一個(gè)遠(yuǎn)程計(jì)算機(jī)(服務(wù)器端)進(jìn)行控制,但是它采用的是基于TCP協(xié)議之上的點(diǎn)對(duì)點(diǎn)傳輸協(xié)議,當(dāng)客戶端的數(shù)目增大時(shí),服務(wù)器端所需要的網(wǎng)絡(luò)帶寬和處理器速度都會(huì)線性增長(zhǎng)。本系統(tǒng)就針對(duì)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)行測(cè)試,基本上能夠滿足100人左右規(guī)模的正常使用。今后打算從以下幾方面對(duì)系統(tǒng)進(jìn)行改進(jìn):
(1)改進(jìn)P2P網(wǎng)絡(luò)調(diào)度機(jī)制,使得實(shí)時(shí)課堂直播的效率更高。
(2)目前該系統(tǒng)還只能在局域網(wǎng)中使用,還沒有考慮在跨網(wǎng)段情況下P2P技術(shù)的實(shí)現(xiàn)問題。因此要對(duì)系統(tǒng)在這方面進(jìn)行完善,使得它能夠穿越大多數(shù)防火墻和NAT網(wǎng)關(guān)設(shè)備,使內(nèi)外網(wǎng)用戶都可以得到同樣的服務(wù)質(zhì)量。