基于多粒度虚拟化的虚实融合网络仿真*

2018-06-05 01:44李剑锋王晓锋
传感器与微系统 2018年6期
关键词:实物路由器路由

李剑锋, 刘 渊, 王晓锋,蒋 敏

0 引 言

为了对抗日益增长的网络空间安全威胁,需要建立网络仿真平台。当前网络仿真相关研究工作如下:在网络模拟方面,文献[1]基于并行离散时间模拟技术,实现超大规模的网络快速构建,但难以支持真实软件以及用户行为的加载,存在逼真度的局限性。文献[2]基于全虚拟化技术结合开源路由软件实现虚拟路由器原型,并构建了网络仿真创新平台,但扩展性不足。文献[3]以LXC容器为虚拟化单元仿真出具有千节点规模的网络,提高了网络的可扩展性,但存在路由协议逼真性的不足。节点虚拟化方面,云计算中最具代表性的Openstack以及当前主流的Docker容器技术可用于大规模网络仿真[4]。在多粒度虚拟化研究方面,文献[5]结合轻量级虚拟化以及全虚拟化技术实现了大规模、高逼真的网络节点仿真平台并用于网络安全训练,但并未提供与实物网络的一体化融合,一定程度上限制了仿真的逼真度。在互联网体系中,大型网络的主要节点是路由器,因此,仿真出高逼真的虚拟路由器成为网络仿真研究的关键之一。在虚拟路由器的研究方面,可编程虚拟化软件路由器(如Click[6],XORP[7],Quagga[8]等)被越来越多的研究者采用,文献[9]实现了虚拟路由器原型,可用于仿真实验环境的动态路由协议,但其仿真网络中,每个虚拟路由器需要重复手动配置路由协议,易用性不足。文献[9]指出可依托Openstack平台的虚拟化节点实现网络功能虚拟化。总体来看,当前网络仿真的研究存在着逼真度不够、虚拟路由器易用性不足、虚拟网络扩展性差等问题。

本文基于Openstack开源云计算平台,提出了一种融合全虚拟化、轻量级虚拟化的多粒度虚实网络仿真方法:通过融合轻量级虚拟化,提升了网络仿真的可扩展性;通过实现多粒度虚拟路由器路由协议的自动化部署、无缝互通,提升了网络仿真的易用性;通过虚实网络一体化融合,进一步提升了网络仿真的逼真性。

1 多粒度虚实网络仿真体系

基于多粒度虚拟化的虚实融合网络仿真体系如图1所示,包括2个部分:平台层和资源层。

图1 系统体系架构

在平台层中,基于Openstack平台根据用户需求从资源层中选取多粒度虚拟化路由器进行虚拟网络仿真;同时从资源层中选取实物路由器进行实物网络部署;并通过虚实融合技术将相对孤立的虚拟网络和实物网络融合成一个具备统一网络拓扑结构和逻辑视图的目标网络。

1.1 平台层设计

平台层包括3个部分:虚拟网络仿真、实物网络构建以及虚实网络融合。本文对Openstack云平台进行了扩展,通过集成对Docker容器的支持实现对多粒度虚拟节点的统一管控,并基于Openstack 应用程序编程接口(application programming interface,API)开发了虚拟网络自动化部署系统。同时用户可从资源层中选取实物路由器进行实物网络的构建。

虚实网络融合,主要包括虚实网络对接模块和虚实网络一体化模块。为了解决Openstack中虚实节点通信不透明的问题,本文基于Openflow流表重新实现了一种透明的虚实网络对接方法,并基于边界网关协议(border gateway protocol,BGP)实现虚拟网络区域和实物网络区域有机融合。

1.2 资源层设计

资源层中主要包括全虚拟化节点、轻量级虚拟化节点、以及实物节点。考虑以基于内核的虚拟机(kernel-based virtual machine,KVM)为代表的全虚拟化技术和以Docker容器为代表的轻量级虚拟化技术存在的不足,本文所设计的资源层中提供了多种粒度的虚拟化节点以供仿真平台使用。同时,基于全虚拟化和轻量级虚拟化技术在云平台中进行虚拟路由器仿真,为了解决文献[8]中虚拟路由器协议手动配置繁琐的问题,提高虚拟路由器的部署效率,设计了一种虚拟路由器自动配置方法,可用于在云平台中快速部署虚拟路由器节点。

2 仿真平台关键技术

2.1 多粒度虚拟化网络平台

本文所述虚拟网络平台基于开源云平台Openstack实现,当前Openstack平台默认只支持全虚拟化KVM节点部署,为了实现多粒度虚拟化节点混合部署、无缝互通,需要在Openstack中集成对Docker容器的支持。Nova-docker[10]是Openstack社区提出的一种对容器的集成方式,能够使Openstack以管理虚拟机的方式管理容器。因此,本文对Nova-docker源码的权限管理[11]部分进行了进一步开发,使得Openstack中能够以特权模式启动Docker容器。

为了简化用户交互复杂度,本文对Openstack原生API进行封装并开发了虚拟网络自动化部署系统,用户可通过该系统选取多粒度虚拟化镜像进行虚拟网络自动部署。

2.2 虚拟路由器设计

2.2.1 虚拟路由器实现原理

设计的虚拟路由器系统架构如图2所示。

图2 虚拟路由器结构

结合全虚拟化KVM和轻量级虚拟化Docker等多种虚拟化方式实现虚拟路由器原型,同时使用Quagga路由软件作为路由控制层完成路由学习。

2.2.2 路由协议自动配置

为了提高虚拟路由器的易用性,设计了一种虚拟路由器自动配置方法。基于Python实现,采用模块化设计,配置流程如图3所示。

图3 虚拟路由器自动配置流程

网络嗅探模块用于自动识别路由器端口信息;自动配置模块用于与Quagga路由进程动态交互,并基于Pexpect开发工具根据默认参数进行OSPF协议自动配置;增量配置模块负责提供Web服务对外部提供Rest API,可提供用户自定义增量配置。

该自动配置方法适用于2种部署场景:

1)默认情况下虚拟路由器镜像提供基于OSPF协议的自动部署,用户直接启动虚拟路由器镜像无需任何配置即可自动与邻接路由器进行数据报文转发和路由协议学习。

2)若用户需要进行路由器自定义增量配置,仅需在路由器启动后通过Rest API向其发送增量配置信息。本文设计的虚拟路由器主要提供静态路由、包过滤、路由表查询、路由协议附加等常用功能增量配置,配置接口和方法如表1。

表1 增量配置API

例如在虚拟路由器中增量配置BGP协议,需发送如下信息,JSON数据内容为网络场景所需的BGP协议参数:

Curl -X POST -H "Content-Type:application/json"-d '{"BGP":{}}' http:∥ip:port/addprotocol

2.3 虚实网络融合

2.3.1 虚实网络对接

本文虚实对接方法基于标准的Openstack平台,采用Openvswitch构建虚拟链路。Openstack中通用的虚实结合方案是通过Neutron中的L3-agent为每个虚拟机提供一个与外部网络处在同一网段的浮动IP,虚实节点通信流量会通过该IP进行网络地址转换(network address translation,NAT)。虽然实现了虚实网络间流量互通,但存在虚实互联不透明的问题,即流量转发路径不是直达,而是经过了一跳浮动IP,因此,这种方式并不是真正意义上的虚实互连。

为了实现虚实网络透明互联,本文结合可配置交换机并基于Openflow流表设计了一种透明的虚实互联方法。参照图4,具体实施流程为:

1)在Openstack数据库中查询虚拟机(virtual machine,VM)所在网络的网络ID号,根据该网络ID查找到其对应的虚拟局域网(virtual local area networks,VLAN)号,假设该网络VLAN号为5;

2)将控制节点的em3网卡接入可配置实物交换机端口2,并将该端口配置成中继(Trunk)模式且放行VLAN号为5的流量;

3)将实物机PC2的IP配置成与VM同网段的地址,并接入实物交换机端口3,同时将端口3划分到VLAN5中;

4)对控制节点中的br-ex和br-int桥添加如下流表,使虚实网络间的流量正常转发,无需经过qrouter转换。

ovs-ofctl add-flow br-ex ta-ble=0,priority=5,actions=normal

ovs-ofctl add-flow br-int ta-ble=0,priority=5,actions=normal

至此,实物机PC2和虚拟机VM可以任意配置成同网段的IP地址进行通信,无需进行浮动IP的转换,保证了虚实对接的逼真性。

图4 虚实网络对接

2.3.2 虚实网络一体化融合

将虚拟网络和实物网络作为单独的自治区域,基于BGP协议实现虚实网络一体化融合。

在实验平台中,虚拟网络边界设备采用上节设计的虚拟路由器,实物网络边界设备采用Cisco路由器,两者互为外部BGP(external BGP,EBGP)邻居,且边界路由器与所属网络区域其他路由器形成内部BGP协议(intermal BGP,IBGP)邻居,实物网络和虚拟网路各自运行内部网络协议。虚实网络边界路由器之间通过Updata报文向不同自治区域发送路由更新,经过路由计算同步后,全网路由表一致,将虚拟网络与实物网络有机融合成了一个具备统一网络拓扑结构和逻辑视图的目标网络。

3 实验验证与评估

3.1 仿真平台实验流程

实验平台基于Openstack标准的部署方案,采用图4所示基本架构。包括一台控制节点,若干台计算节点,物理服务器基于千兆以太网交换机连接,其中控制节点第三块网卡接入可配置交换机用于实现虚实网络融合,仿真实验流程如图5所示。

图5 实验流程

3.2 仿真网络拓扑构建

部署了一个覆盖多粒度虚拟化网络和实物网络的统一目标网络,网络拓扑如图6所示。

图6 虚实网络拓扑

其中虚拟路由器VR1和VR2为全虚拟化虚拟路由器,VR3为轻量级虚拟化路由器。经过自动化部署后的虚拟网络拓扑中各虚拟路由器已自动运行开放式最短路径优先(open shortest path first,OSPF)协议。同时,需要通过远程API为VR1和VR2增量配置BGP以实现虚实网络融合。另外,为了突出实验效果,VR3未进行BGP增量配置。

实物网络由4台思科C3600路由器构建,边界路由器接入Openstack集群的外部网络可配置物理交换机,通过配置交换机和添加Openflow流表实现虚实网络对接,路由器间配置OSPF协议和BGP。

3.3 系统评估测试

3.3.1 拓扑路由测试

经过目标网络中各路由器报文转发和路由学习,全网可以通过路由协议查找到达目的网络的路径。图7为实物路由器R4的路由表学习情况。

在图7中, R4通过OSPF协议学习到实物网络各网段,通过BGP协议学习到虚拟网络各网段。由于VR3未参与BGP路由,故实物路由器路由表中未学习到租户网3,路由表学习情况与理论分析相一致。

3.3.2 虚实节点通信测试

通过Ping程序测试了实物路由器R4到虚拟节点VM2的连通性并且通过Traceroute工具测试了节点间的数据转发路径,验证虚实网络数据传输的透明性,测试结果如图8所示。

图8 R4到VM2之间连通性测试

可以看出,虚实节点间数据报文无缝互通,且报文转发路径经过实物路由器R2、R1以及虚拟路由器VR1,VR2,虚实网络对接流量直接从实物路由器发往虚拟路由器,未经过Openstack中浮动IP的转换,验证了虚实网络对接的逼真性。

3.3.3 网络扩展性测试

通过虚拟网络自动化部署系统在融合了Docker容器的Openstack平台中进行大规模虚拟网络部署,构建了如图9所示虚拟网络拓扑。

图9 虚拟网络扩展性测试

由于多个Docker容器共享主机内核,因此,一个容器只相当于一个进程,突破了云平台中硬件资源对网络规模的限制。经过多次测试,结果表明该平台可基于多粒度虚拟化节点仿真节点规模大于1 000的虚拟网络,验证了仿真平台的可扩展性。

3.3.4 网络性能测试

基于Netperf网络性能测试工具对网络性能进行测试,经过测试,虚实网络间的吞吐量达到900 Mbps,接近物理交换机性能。另外,本文构建的虚拟网络,在提升了扩展性和逼真性的同时其性能有所降低,网络性能随着路由跳数的增加逐渐减弱,虚拟网络吞吐量的测试结果如图10所示。

图10 虚拟网络吞吐量测试

图10中所示,虚拟网络的性能会随着规模的扩大而逐渐降低。但经过多次测试,在有限的网络范围内,虚拟网络的性能稳定并且能够满足日常实验的需求。

4 结束语

分析了当前网络仿真的研究现状,针对当前研究中不完善的地方设计了改进方案。结合私有云平台Openstack,重点研究了多粒度虚拟化技术、虚拟路由器仿真技术以及虚实网络一体化融合技术。并构建了一个高逼真、可扩展、方便易用的网络仿真平台,通过实验验证了其有效性。

参考文献:

[1] Liu N,Carothers C,Cope J,et al.Model and simulation of exascale communication networks[J].Journal of Simulation,2012,6(4):227-236.

[2] 龚 宇,李 帅,李 勇,等.基于云计算的网络创新实验平台[J].计算机工程,2012(24):5-8,13.

[3] Dutta A,Gnawali O.Large-scale network protocol emulation on commodity cloud[C]∥2014 IEEE Global Communications Conference,Austin,TX,2014:1114-1119.

[4] 方滨兴,贾 焰,李爱平,等.网络空间靶场技术研究[J].信息安全学报,2016(3):1-9.

[5] Andel T R, Stewart K E,Humphries J W.Using virtualization for cyber security education and experimentation[C]∥14th Colloquium for Information Systems Security Education,2010:130-136.

[6] Kohler E,Morris R,Chen B,et al.The click modular router [J].ACM Transactions on Computer Systems (TOCS),2000,18(3):263-297.

[7] Handley M,Hodson O,Kohler E.XORP:An open platform for network research [J].ACM SIGCOMM Computer Communication Review,2003,33(1):53-57.

[8] 黄敏桓,张尧学,许 飞,等.基于虚拟化技术的路由仿真实验平台设计[J].系统仿真学报,2014(8):1672-1677.

[9] Franco Callegati,Walter Cerroni,Chiara Contoli.Virtual networking performance in openstack platform for network function virtualization[J].Journal of Electrical and Computer Engineering,2016,Article ID 5249421,15 pages,2016.doi:10.1155/2016/5249421.

[10] Nova-docker.https:∥wiki.openstack.org/wiki/Docker.

[11] 杨 鹏,马志程,彭 博,等.集成Docker容器虚拟化的OpenStack云计算平台性能研究[J].计算机工程,2017(8):26-31.

猜你喜欢
实物路由器路由
带你学习实物电路图的连接
买千兆路由器看接口参数
维持生命
路由器每天都要关
路由器每天都要关
铁路数据网路由汇聚引发的路由迭代问题研究
一种基于虚拟分扇的簇间多跳路由算法
探究路由与环路的问题
当手绘遇上实物
基于Arduino控制的半实物模拟驾驶系统