任元超++吳許俊++董奇++王巍



摘要:針對專業實驗室網絡設備的功能不足以及模擬器的使用限制,提出采用面向對象程序設計方法設計一個B/S結構的虛擬網絡實驗室。本文分析了國內外部分虛擬實驗室的典型案例和開發技術,介紹了虛擬網絡實驗室的系統組成、體系架構和PHP開發的關鍵技術,闡述了IOU系統的的組件與工作原理,以及仿真實驗的操作流程。本系統實現了遠程開展虛擬網絡實驗的功能,具有一定的實際使用價值。
關鍵詞:虛擬化技術;虛擬網絡實驗室;B/S結構;Web編程
中圖分類號:TP391.9
文獻標識碼:A
DOI:10.3969/j.issn.1003-6970.2015.07.006
0 引言
虛擬化(Virtualization)技術可以將宿主計算機的實體資源進行抽象、轉換后供多個邏輯表示,得到了廣泛應用。使用Boson NetSim、Packet Trancer、Dynamips等模擬器已經成為學生自主學習計算機網絡技術的常用手段,也是實驗室教學資源的有益補充。但是,模擬器也有很多局限,如不同模擬器的運行環境和操作方法差別較大,模擬較多虛擬設備時會導致宿主計算機性能降低,虛擬設備不支持遠程操作等。
虛擬實驗室(Virtual Laboratory)最早于1989年由美國的William Wulf教授提出,用來描述一個計算機網絡化的虛擬實驗室環境。虛擬實驗室本質是一個在線實驗平臺。使用在線實驗平臺有助于突破傳統實驗教學模式進行創新,提升實驗教學水平和學生的實踐能力。虛擬實驗室的構建技術已經受到國內外學者的廣泛關注和研究。
通過分析國內外虛擬實驗室的典型案例和開發技術,本文提出采用面向對象程序設計方法設計一個B/S結構的虛擬網絡實驗系統。
1 相關研究
國外學者率先采用虛擬化技術成功構建了很多虛擬實驗室。其中代表性的有,美國Gentral Florida大學的虛擬系統實驗室(Virtual Systems Laboratory,VSL)、UCB的MASH系統、MIT的微電子網絡實驗室(Microelectronics WebLab)、CMU的虛擬實驗室(Virtual Lab)、UNC的虛擬物理實驗室(Learn AnytimeAnywhere Physics,LAAP)以及德國JHU的虛擬工程與科學實驗室(Virtual Engineering/Science Laboratory)等。
近些年,國內學者也對虛擬實驗室技術進行了大量實踐研究。文獻提出了使用VMware和Dynamips等仿真軟件搭建虛擬網絡實驗室的建設方案,方法簡單、成本低,究其本質是在兩個不同的模擬器中分別開展各自的虛擬網絡實驗。文獻闡述了計算機網絡虛擬實驗室的系統結構和主要模塊設計,使用C#語言開發實驗管理系統,應用Flash技術、VRML插件在網頁中演示不同的實驗腳本。文獻提出利用Matlab的數值分析及圖形處理功能,結合Web服務器技術,開發了B/S結構的遠程網絡虛擬實驗室系統。文獻從理論層面探討了B/S結構的網絡虛擬實驗室的參考模型、網絡結構、虛擬器件的建模等技術。文獻提出以LabVIEW為開發平臺,利用LabVIEW的網絡通信功能,構建B/S或C/S混合模式的遠程虛擬實驗室,以實現軟件共享和硬件共享。
研究表明,虛擬實驗室大致可以分為兩類:仿真類虛擬實驗室和遠程操作類虛擬實驗室。構建虛擬實驗室主要采用了虛擬化技術、自動控制技術、網絡通信技術和編程技術。
2 系統設計
2.1 設計方案
根據實現原理,虛擬網絡實驗室屬于仿真類虛擬實驗室。方案采用思科的虛擬化IOU技術結合Web編程技術,構建一個分布式環境下共享的虛擬網絡實驗室。系統體系采用B/S結構的三層架構設計,如圖1所示。
表示層使用PHP5編寫虛擬實驗室的網站程序和實驗管理,業務邏輯層使用IOU仿真服務器和Apache服務器分別實現系統的仿真控制功能和響應HTTP請求命令,數據訪問層使用SQLite數據庫實現實驗數據的讀取或存儲。
用戶使用瀏覽器訪問虛擬網絡實驗室,設置網絡實驗的參數和拓撲結構腳本,加載具備IOS特性的IOU軟件,自行啟動或關閉仿真實驗。用戶使用虛擬終端遠程操作虛擬網絡設備。基于Web的虛擬網絡實驗室可以彌補實驗室網絡設備的性能不足,可以不受時間和地域的限制供學生自由使用。
2.2 系統構成
基于Web的虛擬網絡實驗室主要有五個組成部分,系統組成結構如圖2所示。
(1) Apache服務器:用于響應瀏覽器端的命令請求。
(2)仿真服務器:用于運行IOU仿真軟件,處理實驗操作數據。
(3) SQLite數據庫:用于讀取或存儲實驗數據。
(4)(5)瀏覽器端:用于生成網絡實驗系統的人機對話界面。
(5)虛擬終端:用于遠程登錄虛擬網絡設備進行操作。
2.3 系統功能模塊
基于B/S結構的虛擬網絡實驗室網站主要包括系統登錄、實驗管理、賬號管理、系統維護和數據備份等功能模塊,如圖3所示。
3 關鍵Web技術
PHP( Hypertext Preprocessor)是一種簡單、輕便的服務器端腳本語言。PHP5支持面向對象的程序設計方法。虛擬網絡實驗室網站采用PHP5設計腳本,應用了Aj ax、iQuery、PDO、SQLite和IOU等關鍵技術。
3.1 Aj ax技術
Aj ax全稱為Asynchronous Javascript and XML(異步Javascript和XML),是一種支持異步請求、創建交互式網頁應用的開發技術。Aj ax的核心是Javascript的XmlHttpRequest對象,該對象在IE5中開始支持。XmlHttpRequest對象使用Javascript向服務器發送異步請求,從服務器獲得數據,然后用Javascript來操作DOM (Document Object Model)更新頁面。通過在后臺與服務器進行少量數據交換,AJAX可以使網頁的局部內容實現異步更新。例如本項目中,在PHP網頁中實現異步提交表單信息,通過調用aj ax.php中腳本實現,代碼如下所示:
3.2 iQuery技術
iQuery是一個開源的小型JavaScript庫。iQuery兼容CSS3,兼容多種瀏覽器,使用戶能夠方便地處理HTML、events、制作動畫效果和AJAX交互。iQuery能夠實現頁面中JavaScript代碼和html內容的分離,通過調用iQuery庫定義的方法ID或API。頁面中可以本地調用從官網下載的iQuery庫,也可以遠程調用CDN(Content Delivery Network,內容分發網絡)服務器上的iQuery庫,后者可以提高因特網用戶訪問網站的響應速度。使用HTML5重構的頁面可省略掉type=”text/javascript”。例如本項目中,使用iQuery庫提示用戶端瀏覽器版本,代碼如下所示:
iQuery(function($){
if
(iQuery.browser.msie
&&
(iQuery.browser.version
==
”6.0”)&& liQuery.support.style){
window.location.href=”/BrowserUpdate.htm”;
}
});
3.3 SQLite技術
SQLite是一個開源的輕量型、嵌入式、關系型數據庫管理系統。它占用較少的系統資源,適合在嵌入式設備中運行。同時能夠支持Windows、Linux、Unix等操作系統,能夠支持Tcl、C#、PHP、Java等編程語言,帶有ODBC接口,處理速度比Mysql和PostgreSQL都快。SQLite最新版本是SQLite 3。例如本項目中,使用devices表存儲所有實驗中的虛擬網絡設備的信息,查詢結果如下所示:
sqlite> select * from devices;
3.4 PDO技術
PDO全稱是PHP Data Objects(PHP數據對象),是PHP擴展的訪問數據庫的兼容性接口。PDO擴展提供了一個數據訪問抽象層,支持多種數據庫,通過調用一致的函數執行查詢和獲取數據。PDO擴展本身不能執行數據庫操作,需要使用一個針對特定數據庫的PDO驅動(database-specific PDO driver)訪問數據庫服務器。PDO在PHP5.1后續版本中支持,PDO需要在PHP編譯時與特定數據庫驅動一起構建為共享擴展,并讓PHP運行時自動加載。例如本項目中,在PHP網頁中使用PDO初始化SQLite數據庫,部分代碼如下所示:
try{
$db=new PDO(SQLite:/data/db.sdb);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query=‘CREATE TABLE bin (bin_fa TEXT PRIMARY KEY, bin_name TEXT);';
$statement= $db->prepare($query);
$statement->execute();
} catch (PDOException $e){
error_log(DB: error "'.$e->getMessage()."' (query was….$query.…,);
return false; }
}
3.5 IOU技術
IOU全稱是IOS On Unix,是在Unix環境下以用戶模式運行Cisco互聯網操作系統IOS( Internet OperatingSystem)的仿真程序。IOU早期只在Solaris (SPARC)平臺運行,現在可以在Linux環境運行。根據功能特性,IOU有多種軟件版本,虛擬設備可以模擬真實思科網絡設備的功能,甚至可以與GNS3、eNSP仿真實驗中的虛擬設備進行互聯。相比其它網絡模擬器,它的優勢顯著,一是運行時占用較少的宿主機系統資源,虛擬設備數量沒有嚴格限制,二是支持網卡橋接技術使得用戶可以使用宿主機的端口號遠程登錄虛擬設備。
在本系統中,使用IOU管理控制程序Wrapper-linux管理IOU程序的啟動或停止。使用Shell腳本可以一次性啟動多個IOU程序,模擬多個虛擬網絡設備,并通過指定啟動參數來設置虛擬網絡設備的具體狀態,如運行內存大小、遠程管理端口號等。例如以用戶模式啟動一個虛擬路由器,設置Ethernet模塊數為4,Serial模塊為4,默認內存為128M,路由器的進程名為1,Telnet端口為2000,代碼如下所示。
./wrapper-linux -m ./i86bi_linux-adventerprisek9-ms-p 2000-- -e 4-S 4 1
4 仿真實驗的基本原理
4.1 基本服務組件及其功能
基本服務組件主要為Iourc、IOS管理器、Wrapper-linux、NETMAP和SQLite。Iourc程序負責錄入系統注冊的License信息,否則系統無法正常運行。IOS管理器負責管理IOU程序。Wrapper-linux為IOU管理控制程序。NETMAP文件是根據用戶實驗設置生成的網絡拓撲鏡像文件,內容具有特殊的格式,臨時存儲實驗運行時的網絡拓撲結構信息。SQLite數據庫用于存取系統配置信息和用戶設置的所有實驗數據。各服務組件與仿真實驗之間的關系如圖4所示。
4.2 用戶操作流程
用戶通過Web方式登錄虛擬網絡實驗室,根據管理員與非管理員的身份差別被賦予不同的操作權限。假設以非管理員身份登錄本系統,開展虛擬網絡實驗,用戶操作流程如圖5所示。
5 結束語
本項目組在對現有虛擬實驗室的典型案例和開發技術進行分析、比較的基礎上,詳細介紹了虛擬網絡實驗室的組成結構和體系結構以及PHP開發使用的關鍵技術。B/S結構的虛擬網絡實驗室實現了遠程開展思科網絡實驗的功能,具有一定的實際使用價值。