APP下载

基于Web的虚拟网络实验室的设计

2015-12-25任元超吴许俊董奇王巍

软件 2015年7期

任元超++吴许俊++董奇++王巍

摘要:针对专业实验室网络设备的功能不足以及模拟器的使用限制,提出采用面向对象程序设计方法设计一个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库提示用户端浏览器版本,代码如下所示:

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结构的虚拟网络实验室实现了远程开展思科网络实验的功能,具有一定的实际使用价值。