基于虚拟化技术的网络实验教学研究
2020-03-15
(黑龙江科技大学 计算机与信息工程学院,黑龙江 哈尔滨 150022)
目前,国内外高校的网络实验主要采用真实网络硬件和模拟器软件2 种方式.采用真实网络硬件,存在网络设备资源不足、网络攻防演练会对网络设备造成危害等问题;采用NS3,Packet Tracer,Boson NetSim等模拟器软件,存在实验结果不能在真实网络中验证、无法进行可编程操作等问题[1-4].因此,研究一种在现有实验室条件下能够提供测试保真性的网络实验环境,具有重要的理论意义和实用价值.
基于SDN 的虚拟化技术为网络实验教学的开展提供了新的思路,在SDN 网络中支持用户定义自己的虚拟网络、网络规则和控制策略.目前,国内不少院校在虚拟化实验平台方面也做了许多有益的探索与尝试,清华大学自主研发了虚拟化网络实验平台TUNIE,华东理工大学提出了一个基于OpenStack 云计算框架的创新实验平台,南京航空航天大学设计了基于网络功能虚拟化NFV 的网络试验平台[5-8].但这些研究多偏向于网络功能测试和网络设备资源管理,对虚拟化技术应用于计算机网络课程实验教学的研究还比较少.
本文提出基于Mininet 的网络实验环境,使用虚拟化技术将物理资源转换为虚拟资源,解决了采用真实网络硬件和模拟器软件进行实验教学存在的问题,并为高校计算机网络课程创新实验教学提供有效支撑.
1 虚拟网络实验环境
虚拟化技术可以将物理硬件资源实体克隆出多个虚拟硬件资源,这些虚拟硬件资源与真实硬件资源完全一样,每一台虚拟机都如同真实主机,支持多种功能服务.Mininet 是一套进程虚拟化的网络仿真平台,可以构建出任意结构的大规模虚拟网络,新的服务、应用和协议都可以在这个虚拟网络中进行开发和验证[9-10].在Mininet 中构建虚拟网络,可以实现在同一台计算机中虚拟出一个完整的网络,包括控制器、路由器、交换机以及主机,其中控制器可以控制虚拟化环境中的所有网络资源,真实设备与虚拟节点之间构成一个有层次的网络,这样的网络完全满足计算机网络实验教学的需求.
1.1 总体架构
实验环境以Mininet 作为底层框架,以虚拟化技术作为技术支撑搭建一个虚拟网络实验环境,实验环境总体架构由物理资源层、虚拟化资源层和拓扑管理层3 层构成(见图1).
图1 实验环境总体架构
1.1.1 物理资源层 物理资源层提供了实验环境依赖的底层资源Mininet 平台.Mininet 中可以虚拟出网络拓扑中的虚拟节点和虚拟链路,可以在一台主机上构建虚拟网络,也可以在每个主机中构建一个虚拟子网,通过真实交换机连接多个Mininet,实现子网连接,提高网络规模性和真实性.
1.1.2 虚拟化资源层 虚拟化是网络实验环境的核心技术,包含存储虚拟化和计算虚拟化.存储虚拟化采用Ceph 分布式文件系统技术,有效整合物理资源服务器的存储能力;计算虚拟化采用Linux 系统下开源的KVM 技术来实现[11].
1.1.3 拓扑管理层 用户只需要描述虚拟网络组件就可以定制出特定的网络实验环境.这些虚拟网络组件包括:虚拟机组件,支持多IP 地址集合的虚拟机;虚拟网络设备组件,支持组网功能的网络设备;虚拟防御实体组件,支持多种防御行为的网络防御设备;控制器组件,支持多种类型的控制器等.拓扑管理层主要接收用户的虚拟网络拓扑描述数据,并对输入的拓扑描述进行存储和子网划分,通过Mininet 提供的Python API 构建用户需求的虚拟网络拓扑[12].
利用Mininet 平台自主构建虚拟网络,虚拟网络中可以真实地进行各种复杂的网络配置,满足了网络实验的需求.其次,Mininet 中提供了操作系统镜像上传、控制器集中管理、虚拟主机和设备创建删除等便利操作,有利于实验环境的恢复和网络资源的循环利用[13].
1.2 环境部署
基于Mininet 的虚拟网络部署十分灵活,可以搭建在单节点服务器上,也可以搭建在大型集群服务器上[14-15].根据高校实验室实际网络硬件资源情况,可以将Mininet 搭建在2 个节点上,其中一个节点为存储节点,负责存储网络实验所需的各类镜像文件,以及为网络攻防实验提供的靶场资源;另一个节点为计算节点,负责收集拓扑描述数据、计算子网划分和节点管理.环境部署拓扑结构见图2.
图2 环境部署
2 虚拟网络拓扑的形式化描述
在实验中,经常需要建立大规模的网络结构,可以通过Python 代码创建虚拟网络拓扑.因此,需要研究形式化描述虚拟网络拓扑的方法,根据该方法,可以唯一、准确地对虚拟网络拓扑中各个节点和链路的网络配置进行描述,进而根据描述文件来实现虚拟网络的构建和配置.研究形式化描述虚拟网络拓扑,首先分析虚拟网络拓扑的组分,设计一种虚拟网络拓扑描述语言VNTDL,将虚拟网络拓扑的组分用语言描述出来,并给出其BNF 范式.
虚拟网络拓扑的组分主要包括虚拟节点与虚拟链路.虚拟节点包括虚拟机、虚拟网络设备、虚拟防御实体、控制器和域;虚拟链路类型包括链路划分、链路串联和链路聚合等.
VNTDL 语法主要用来描述虚拟网络拓扑定义部分.虚拟网络拓扑表达式是虚拟网络拓扑的集合,虚拟网络拓扑包括拓扑声明语句和拓扑描述;拓扑描述包括实体描述和实体关系描述.虚拟网络拓扑的BNF范式:
2.1 实体描述
实体描述是一个描述各类虚拟节点的集合.实体可以是虚拟机、网络设备、网络安全防御实体、控制器或者是域.
2.2 实体关系描述
实体关系描述是一个描述虚拟链路的集合.
3 实验教学方案展示
通过测量数据传输路径损耗率实验对提出的虚拟化教学方案进行展示.本实验网络拓扑见图3.网络中2 台交换机s1和s2与2 台Windows 主机h1和h2相连,2 台交换机的一个端口分别与主机的一个物理接口相连,即s1端口1 与h1的eh1接口相连,s2端口1 与h2的eh1接口相连,同时,net1网络由控制器c1进行远程操控.
为了测量数据传输路径损耗率,需要完成的工作:
(1)通过虚拟网络拓扑描述语言生成网络拓扑脚本,构建实验网络拓扑.
图3 实验网络拓扑
(2)使用Python 编写Mininet 脚本,实现控制器c1向s1和s2发送flow_starts_request,当控制器收到s1和s2的response 时,分别将特定流的数据包数保存在input_pkts 和output_pkts 中,两者的差值则为丢失的数据包数量.
(3)在Mininet 网络中执行ping 命令,让主机互相通信,通过统计丢失的数据包数量得出损耗率.实验结果见图4,可以得出数据传输路径的平均损耗率为5%左右.
图4 实验结果
实验中,共测试3 次数据传输损耗率,3 次流量监测得到的损耗率变化的曲线见图5.这3 条流量损耗率曲线分别表示第1,2,3 次执行ping 命令时20 个数据包流量损耗率的情况.
通过测量数据传输路径损耗率的实验过程可以看出,这种通过网络流量监控获得路径损耗率的实验,在真实的网络环境中是无法实现的,而在虚拟化实验环境中,学生可以在Mininet 中构建SDN 网络,通过在控制器上编写程序较容易地完成损耗率测量并得出准确结果.
图5 数据传输损耗率变化曲线
4 结语
采用真实硬件和模拟器软件的方式都无法满足计算机网络课程实验的实际需求.本文提出了虚拟化网络实验教学方案,实现了自定义拓扑、构建虚拟网络、控制器集中管控网络设备、网络流量监测等功能,并以“测量数据传输路径损耗率”实验为例,展示了基于Mininet 平台进行网络实验的保真性、兼容性和可编程性.虚拟化技术的有效应用,为高校的计算机网络实验提供了很好的实验环境.