孔德鳳, 韓秀玲, 陳 光, 任卓君(東華大學 信息科學與技術學院, 上海 201620)
?
實時同步協(xié)同虛擬實驗平臺
孔德鳳, 韓秀玲, 陳 光, 任卓君
(東華大學 信息科學與技術學院, 上海 201620)
針對協(xié)同虛擬實驗平臺中多人協(xié)同實驗時組員之間無法實時同步實驗操作的問題,提出將實驗操作全部配置化的設計思想,并且在.NET平臺下,基于UDP協(xié)議,利用自行設計的連線算法,結合Socket技術、委托技術及C#編程語言,實現了協(xié)同實驗時同組成員實時同步實驗操作的功能。實踐結果表明,基于此功能的平臺能夠讓同組成員共同構建實驗拓撲,實時同步組員實驗操作,查看設備實時的配置信息,從而滿足了協(xié)同虛擬實驗平臺的實時同步多人操作的功能需求,學生可以同時操作同一項實驗,實時同步實驗過程,最終同步完成實驗,很大程度上提高了虛擬實驗的效率。
協(xié)同虛擬實驗; 實時同步; 操作配置化; 連線算法
虛擬實驗室是一種基于VR虛擬現實技術、Web技術構建的網絡化的開放式虛擬教學系統(tǒng),是解決目前高校實驗資源短缺、經費緊張等問題的有效措施[1-2]。而建立在虛擬實驗及遠程協(xié)作理論與技術基礎上的多人協(xié)作虛擬實驗室,是人們正在研究的一種新的虛擬實驗模式,它能夠為用戶提供一個共享協(xié)作式的教學、學習和實驗環(huán)境[3]。
本課題組根據高?!坝嬎銠C網絡”教學實際和本學院的實驗教學需求,基于現實教學環(huán)境下的通信網絡實驗室,研發(fā)了B/S架構的遠程虛擬實驗平臺,用戶只要通過瀏覽器,如IE,Firefox等,就可以不受時間、空間限制,隨時隨地進行各種網絡實驗[4]。然而該系統(tǒng)只具備單人虛擬實驗室,而無允許協(xié)同操作的多人實驗室,使得設備配置重復率高,實驗效率低下,且系統(tǒng)不適用于一些大型復雜的實驗。
針對這一問題,本文基于自行提出的實驗操作配置化的設計思想,利用自行設計的連線算法,結合UDP協(xié)議,Socket網絡技術、代理技術及加鎖法+消息隊列的并發(fā)控制方法[5-6]開發(fā)了一個多人協(xié)同虛擬實驗平臺,此實驗平臺具有多人共同操作實驗,同時構建實驗拓撲,實時同步組員實驗操作,查看設備實時配置信息等功能,大大提高了虛擬實驗的效率。
本實驗平臺前期開發(fā)的“單人在線虛擬組網實驗平臺”中一個虛擬實驗過程的網絡拓撲截圖[7]如圖1所示。
圖1 單人虛擬實驗過程的一個截圖
圖1是學生通過瀏覽器訪問網站,進行虛擬實驗時的操作界面,實驗過程中學生不能多人協(xié)作完成實驗,只能單人按照實驗指導書的要求組建該網絡拓撲并進行相應配置,單人配置的設備操作重復率較高,而且不適于大型實驗的完成。
實際上,一個網絡實驗的完成,特別是大型復雜實驗的完成需要多個組員的共同協(xié)作完成,協(xié)同功能實現的重點便是每個組員實驗操作的實時同步。所謂“實驗操作的實時同步”指的是:任何一個組員的實驗操作結果顯示到自己平臺的同時也會顯示到其他組員的平臺上,同組成員同時完成一項實驗,任何一個組員都可以查看任何一個設備當前實時的配置信息。根據本文提出的方法可以很好地解決這一問題,同組學生通過“多人在線虛擬組網實驗平臺”可以在一定的范圍內實時同步的共同完成一項實驗。
本文設計的多人協(xié)同虛擬實驗室是以“計算機網絡”課程為背景,利用了Windows Forms的控件技術、C#開發(fā)語言、Visual Studio 2008開發(fā)工具以及SQL SERVER數據庫進行虛擬實驗程序設計,并在實驗操作配置化的創(chuàng)新思想下,利用前人未在虛擬實驗中使用過的Socket網絡技術、代理技術結合自行設計的連線算法來實現,具有多人同步構建實驗拓撲,實時同步實驗操作,查看設備實時配置信息,提高工作效率等優(yōu)點。設計完成后將窗體控件生成的動態(tài)鏈接庫(.dll)文件嵌入.NET網頁中,完成以上操作之后,學生便可通過瀏覽器輕松地訪問網頁,進行虛擬實驗操作[7]。
2.1 實驗操作配置化
為實現同組成員實驗操作及結果的實時同步,提出實驗操作配置化的的設計思想,即實驗中所有的實驗操作包括構建實驗拓撲都是對于實驗設備的配置,實驗操作的結果也全部來自于實驗設備的配置操作。
實驗操作配置化的優(yōu)勢是:與真實“計算機網絡”的實驗過程和目的相吻合,真實的實驗過程中,為了防止實驗設備端口的損壞,實驗拓撲的構建是通過對設備進行配置而不是通過插拔連接線實現的,此方式既保護了設備,也讓學生學習到了有關交換機配置的知識。同時,由于配置信息易于實時傳輸,為多人同步搭建實驗拓撲這一問題的解決提供了基礎。
2.2 實時同步配置信息
為了實現多人虛擬實驗中實驗操作的實時同步,在實驗操作配置化的思想下,實時同步配置信息成為了實時同步實驗的關鍵。本文基于UDP協(xié)議,使用Socket通訊技術將組員配置的虛擬實驗設備信息廣播到其他組員對應的虛擬實驗設備上,并利用Delegate技術喚醒主窗體平臺將接收到配置信息,實時地同步到每個組員的操作平臺上,從而使每個組員的虛擬設備上都有了最新的實驗配置信息,即實現了配置信息的實時同步。
2.2.1 基于UDP協(xié)議的Socket技術
Socket技術是開發(fā)局域網通訊工具常使用的技術,在C#中Socket類用于連接管理,實現通信端套接字接口,同時它還定義了綁定、連接網絡端點以及傳輸數據的各種方法,提供處理端點連接傳輸等細節(jié)所需要的功能[8-11]。
本文使用Socket技術,基于UDP協(xié)議,將配置信息當做消息發(fā)送給同局域網的其他組員,從而實現配置信息的實時同步,此功能分為發(fā)送和接受兩部分,具體實現如下:
(1) 發(fā)送配置信息。組員在虛擬設備配置框中輸入配置信息,便觸發(fā)了textconf文本框的KeyPress事件,每次鍵盤輸入enter鍵,代表組員此句配置已經完成,這時便會調用senddata函數,使用Socket網絡技術將此句配置發(fā)送給本廣播組的所有成員;
(2) 接受配置信息。Platform窗體一運行后便啟動了Socket網絡技術中的監(jiān)聽線程,監(jiān)聽端口是否有發(fā)送來的配置信息,若有,便接收,處理后利用Delegate技術添加到操作平臺相應的textcheck上,繼續(xù)監(jiān)聽;若沒有,繼續(xù)監(jiān)聽。
2.2.2 委托(Delegate)技術
委托是一個類,它定義了方法的類型,一旦為委托分配了方法,委托將與該方法具有完全相同的行為。委托允許傳遞一個類的方法給另一個類的對象,使得另一個類的對象能夠調用這個方法[12-13]。
本文通過委托將監(jiān)聽子線程接收到的配置信息添加到主線程的配置信息文本框中,使組員可以同步查看所有設備的實時配置信息,以了解到整個實驗的進度。部分主要代碼如下[14]:
delegate void del(string t);//聲明一個委托
private void prif1(string t1)
{
if (!InvokeRequired)//判斷是否在同一個線程中
{
textBox_check1.AppendText(t1);
}
else
{
del dele = new del(prif1);
Invoke(dele, new object[] { t1 });//執(zhí)行喚醒操作
}
}
2.3 連線算法
實驗拓撲圖的構建是實驗的基礎,目前協(xié)同實驗平臺中實驗拓撲的構建是異步的,即組員輪流操作,導致組員被動,實驗效率低下,協(xié)同的概念也沒有完全體現出來。對此,本文利用自行設計的連線算法實時同步同組成員構建的實驗拓撲。
多人協(xié)同虛擬實驗平臺的拓撲效果圖,如圖2所示。
圖2 多人協(xié)同虛擬實驗拓撲例圖
圖2中,實驗拓撲圖由本用戶和遠程端組員合作完成,交換機一(左SW1)的連線是本用戶配置交換機一形成的,交換機二(右SW2)的連線是遠程端組員配置交換機二形成的,兩者的結果都可以實時地顯示在實驗平臺上。
2.3.1 連線算法的流程
由于實際實驗中用戶搭建本實驗組的網絡拓撲是通過劃分vlan來實現的。在本文中將這一操作虛擬化的實現方法是:在用戶配置設備劃分好vlan后,利用實時同步配置信息技術相應的改變本組所有成員的ConnectPoint數組值,用timerliner計時器根據ConnectPoint數組的值實時的刷新連線,以獲取最新的實驗拓撲,從而實現與實際實驗相同的實驗操作,進一步提高虛擬實驗室的仿真程度。
本文設計的連線算法依據的是劃分vlan構建網絡拓撲的方式,算法基本流程圖如圖3所示。
圖3 連線算法基本流程圖
圖3 中,實驗拓撲的共同構建主要分為兩個方面,左側流程是根據用戶自己的操作步驟(包括選取并配置交換機)進行設備連線,右側流程是根據接受到的遠程端組員的交換機配置信息實時的進行設備連線。
2.3.2 連線算法流程的實現
針對圖3連線算法的基本流程,下面詳細的介紹每個階段的實現技術。
(1) 左側流程。首先是Router_Switch數組和ConnectPoint數組初始化,其中Router_Switch用來存放網絡設備名,ConnectPoint數組用來存放設備間的連線情況,Router_Switch數組初始化的值如表1所示。
表1 Router_Switch數組初始化
表1中i代表Router_Switch數組的索引值,j代表設備名稱picturebox_j中的j變量。
由于線兩端連接的是網絡設備,所以ConnectPoint數組的橫縱索引值應為設備名稱,本文為了方便實現,將橫縱索引值設為設備名稱在Router_Switch中對應的索引值。ConnectPoint數組初始化依據實際實驗室網絡設備的拓撲,為了清晰表示設備連線關系,表2中第一行和第一列的值是ConnectPoint數組橫縱索引對應于同索引號的Router_Switch數組值。
表2 ConnectPoint數組初始化
表2中,1代表橫縱坐標設備之間有連線,0代表橫縱坐標設備之間無連線。本文使用畫線技術畫出連線。
① 畫線的具體實現[15]為:
Pen myPen = new Pen(Color.DimGray, 1);//
② 畫筆的顏色
Graphics g = this.CreateGraphics();//
③ 初始畫一幅圖
g.DrawLine(myPen, Router_Switch[m].Location.X + 20, Router_Switch[m].Location.Y + 20, Router_Switch[n].Location.X + 20, Router_Switch[n].Location.Y + 20);//
根據設備位置畫線,在用戶開始實驗時timerliner計時器便開始啟動,根據ConnectPoint數組和Router_Switch數組的值實時的刷新連線,此時用戶便有了一個初始化的實驗界面。其中timerliner的Interval屬性值設為1,即每隔1s執(zhí)行一次tinerliner_Tick事件。ConnectPoint[m, n]的值不同時會有不同的顏色粗細的線代表現在設備連接的狀態(tài),ConnectPoint[m, n]值的不同含義如下:① 值為1代表設備之間有雙絞線,但并沒連通;② 值為2代表設備之間的連線已經連通;③ 值為3代表設備之間存在虛擬的連線,即可以通過兩個及兩個以上的交換機連通,見圖4。
在整個實驗初始化后用戶配置vlan構建自己的網絡拓撲,此時會根據配置信息響應改變ConnectPoint數組的值,進而改變了實驗設備之間的連線狀態(tài)。實際的網絡設備劃分vlan必須在端口打開之后進行,因此虛擬實驗中使用公共靜態(tài)數組undo來保存需要打開的端口的狀態(tài),0代表未打開不可配置vlan,1代表打開可以進行vlan的配置。用戶配置設備構建實驗拓撲的核心代碼[16]如下:
圖4 ConnectPoint[m,n]值的含義
string a;
a=(textBox_conf4.GetLineFromCharIndex(textBox_conf4.
SelectionStart)).ToString();
int i = int.Parse(a);
if (e.KeyChar == 13)
{
if (textBox_conf4.Lines[i].Length < 21)
{
switch (textBox_conf4.Lines[i])
{
…
case "[SW2-vlan3]port E1/0/21 to E1/0/22":
if (undo[5] == 1 && undo[6] == 1)
{
textBox_conf5.AppendText(" ");
textBox_conf5.AppendText("[SW2-vlan3]");
ConnectPoint[0, 1] = 3;
ConnectPoint[4, 0] = 2;
ConnectPoint[4, 1] =2;
}
else
{
textBox_conf5.AppendText(" ");
textBox_conf5.AppendText("The port is closed!");
textBox_conf5.AppendText(" ");
textBox_conf5.AppendText("[SW2-vlan3]");
}
e.Handled = true;
break;
…
(2) 右側流程。在實驗開始后平臺便利用Socket 技術獲取其他成員的遠程配置信息,并根據配置信息以左側流程相同的邏輯改變接受方的ConnectPoint數組值,timerliner計時器根據ConnectPoint數組的值實時刷新連線,進而將發(fā)送方構建的實驗拓撲實時的同步到接受方的平臺上,從而實現多人協(xié)同實驗的效果。
通過左右兩個流程實現同組組員共同構建實驗拓撲,并且每個組員都可實時同步到最新的實驗拓撲圖。
2.4 多人協(xié)同實驗的實現實例
以上詳細的介紹了實時同步協(xié)同虛擬實驗的實現過程,下面以“華為協(xié)同rip路由選擇協(xié)議實驗”作為演示實例來驗證設計的有效性。
首先用戶A注冊登錄,選擇“rip路由選擇協(xié)議實驗”并選擇創(chuàng)建rip實驗組。
用戶B注冊登錄,選擇加入rip實驗組,進入實驗平臺后A、B分別選擇不同的SW(交換機)進行實驗,A選擇SW1,B選擇SW2,然后進行預先計劃好的實驗拓撲構建,搭建好實驗拓撲之后便選擇不同路由器并對其進行配置直至完成實驗。用戶A的實驗中間過程如圖5所示。
圖5 實驗過程圖
圖5中實驗拓撲是A、B共同搭建的,右側“配置窗口”中是用戶A對SW1的配置信息,左側“查看配置”窗口用來顯示遠程用戶的配置信息,默認值是空。由于用戶B此時正在配置交換機(SW2),所以對于用戶A來說交換機SW2是不可配置的,點擊提示信息“正在配置,請點擊查看代碼”即可在左側“查看配置”窗口中查看用戶B的當前配置信息。中間的拓撲圖是用戶A、B共同完成的拓撲圖,灰色線代表設備間有雙絞線但是端口未打開,紫色線代表設備間有雙絞線端口已打開,紅色線代表設備間比較直觀的虛連接。此結果表明,本協(xié)同虛擬實驗平臺允許多人共同完成一個實驗,不僅實現了組員同步構建本組的實驗拓撲,且在這個過程中每個組員的平臺都具有最新的協(xié)同實驗狀態(tài),每個組員都可以查看設備的實時配置信息,大大提高了實驗效率。
本文研究并開發(fā)了實時同步協(xié)同虛擬實驗平臺。實例驗證,該平臺可以滿足多人實時同步完成同一實驗的需求,提高了大型和復雜實驗的工作效率。
[1] 三維仿真.虛擬實驗室[EB/OL].(2012-09-18) [2012-09-18].http://baike.baidu.com/link?url=v6uyyLcStN0b9tLCOl1ygdCr-FCeJQn9toy1VS8CbJXdLV7OFrwGMSo4q7ikrlKSoO2AQuK0Hf5DQ-LUN79ANnlK
[2] 張偉欣.虛擬計算機網絡組網平臺的設計及虛擬現實技術的應用[D].上海:東華大學,2008.
[3] 馮 琦.基于互聯網的協(xié)同實驗的研究[D].西安:西安電子科技大學,2006.
[4] 潘 淼,韓秀玲,陳 光.在線虛擬網絡實驗系統(tǒng)命令行提示技術的研究與實現[J]. 計算機應用與軟件,2013,30(9):327-331.
[5] 范 志.實時協(xié)同編輯系統(tǒng)中并發(fā)控制算法的研究[D].蘭州:蘭州理工大學,2009.
[6] 劉新福,王光彩,代雯君,等.集中式CSCW環(huán)境中對實時共享對象的并發(fā)控制算法[J].小型微型計算機系統(tǒng),2002,23(6):667-672.
[7] 戴維燁,韓秀玲,陳 光.利用動態(tài)控件技術實現自由組網拓撲構建[J].計算機應用與軟件,2013,30(7):119-123.
[8] 馬艷芳.協(xié)同虛擬實驗的研究與設計[D]. 北京:北京郵電大學,2011.
[9] 王繼剛,顧國昌,徐立峰,等.可靠UDP數據傳輸協(xié)議的研究與設計[J]. 計算機工程與應用,2006,42(15):34-37.
[10] 黃海芳,宋筱媛,許 聰.基于UDP廣播的局域網聊天室設計[J]. 福建電腦,2008,24(4):70-74.
[11] Sunev.基于C 的UDP協(xié)議的同步實現[EB/OL].(2012-08-10)[2012-08-10].http://www.cnblogs.com/sunev/archive/2012/08/08/2627247.html
[12] 王小科.C#開發(fā)實戰(zhàn)寶典[M].北京:清華大學出版社,2010.
[13] 我已經飄過.C#委托 [EB/OL].(2014-05-20). http://baike.baidu.com/view/1935199.htm?fr=aladdin
[14] Wei-Meng Lee. C# 2008 Programmer’s Reference[M]. New Jersey:Wiley Publishing,Inc, 2009.
[15] Jesse Liberty,Donald Xie.Programming C# 3.0 5th Edition[M]. Massachusetts:O’Reilly Media, Inc , 2009.
[16] 張 青,郭亞萍. C#編程思想與實踐[M]. 北京:冶金工業(yè)出版社,2002.
如果你問一個善于溜冰的人怎樣獲得成功時,他會告訴你:“跌倒了,爬起來。”這就是成功。
——牛頓
Real-time and Synchronous Collaborative Virtual Experiment Platform
KONGDe-feng,HANXiu-ling,CHENGGuang,RENZhuo-jun
(College of Information Sciences and Technology, Donghua University, Shanghai 201620, China)
When it comes to the issue that experimental operation can not be real-time synchronization in collaborative virtual experiment platform, the paper proposes the design ideas that make experimental operation configured. The design applies a connectivity algorithm, Socket technology, delegate technology and C# which based on .Net platform, and achieves a real-time synchronization of experimental operation among team members. It turns out that the platform makes joint building of experimental topology and real-time synchronization operation in one team, and meets the functional needs of real-time virtual experiment platform.
virtual collaborative experiment; real-time synchronization; operation configuration; connectivity algorithms
2014-07-25
上海市教育科學2011年度重點項目(A1119)
孔德鳳(1990-),女,山東臨沂人,碩士,研究方向:計算機網絡。Tel.:18817842331; E-mail: kdf156@126.com
陳 光(1957-),男,廣東汕頭人,教授,碩士生導師,研究方向:無線移動通信,電磁場理論。
Tel.: 13651990193; E-mail: gchen@dhu.edu.cn
TP 393.09
A
1006-7167(2015)02-0117-05