构建SDN仿真实验平台的探讨与实践

2015-12-26 12:34刘果陈凡李剑锋吴京京
软件 2015年6期
关键词:软件定义网络仿真软件

刘果+陈凡+李剑锋+吴京京

摘要:软件定义网络(SDN)是一种新型的网络架构,其控制逻辑集中、转发与控制分离、网络可编程化三个特点,给网络资源管理带来新的思路,SDN的研究也对仿真实验平台提出要求。文章介绍了SDN及其主要协议OpenFlow,分析了支持OpenFlow协议的主要网络仿真软件的功能特点和可操作性。最后描述了基于Mininet的SDN仿真实验平台搭建过程,同时实现一个简单的逻辑隔离策略来验证该平台的有效性。

关键词:软件定义网络;仿真软件;Mininet;逻辑隔离

中图分类号:TP393

文献标识码:A

DOI:10.3969/j.issn.1003-6970.2015.06.019

本文著录格式:刘果,陈凡,李剑锋,等.构建SDN仿真实验平台的探讨与实践[J].软件,2015,36(6):103-108

DiscussionandPracticeonSDNSimulationPlatformConstruction

LIUGuo,CHENFan,LIJian-feng,WUJing-jing

[Abstract]:Software-DefinedNetworking(SDN)isnovelnetworkarchitecturewiththreemajorfeatures-controlcentralization,separationofcontrollingandforwardingandnetworkprogrammability,andthishasbroughtnewideasfornetworkresourcemanagement.ResearchonSDNmakesdemandsonthesimulationplatform.ThispaperintroducesSDNanditsmostimportantprotocolOpenFlow,anddiscussesthefeaturesandoperabilityofsomemainnetworksim-ulatorsthatsupporttheOpenFlowprotocol.Finally,wetakeMininetasanexampletodescribetheconstructionprocessofSDNsimulationplatform,andimplementasimplestrategyoflogicisolationtoverifyitsvalidity.

[Keywords]:Software-DefinedNetworking;Simulator;Mininet;LogicIsolation

0引言

伴随着信息技术的高速发展,众多新的互联网在线业务的用户量也在急剧增长,网络数据量的增多和规模的扩大对网络承载和管理都提出了巨大的挑战。2009年提出的SDN(Software-DefinedNetworking,软件定义网络)是近几年兴起的一种新型网络架构,对这些挑战提出了新的思路[1],其核心协议是OpenFlow[2]。OpenFlow允许远程控制器通过控制网络中的交换机来决定数据包的路径。这种控制与转发分离的方式可以用来进行更为灵活、精细的流量管理[3]。

模拟构建真实网络是网络技术研究的主要手段之一。实现方式有试验床、纯粹数学模型和网络仿真,其中最常用的方法是网络仿真[4]。许多学者利用仿真软件或者自定义仿真模型来进行网络相关的研究[5-8]。网络仿真软件有很多,其中对OpenFlow提供较好支持的有Mininet[9]、NS-3[10],OpenvSwitch[11]、Estinet9.0[12]。建立SDN仿真实验平台对SDN相关研究与开发工作顺利开展非常必要。

1SDN与OpenFlow

SDN是一种新型的网络架构设计理念,它将网络的控制平面与数据转发平面进行分离,并实现可编程化控制。ONF提出的典型SDN架构定义如图1所示[13]。其中最上层为应用层,包括各种不同的业务和应用。控制层主要负责处理数据平面资源的编排、维护网络拓扑状态信息等。基础设施层负责基于流表的数据处理转发和状态收集。

OpenFlow是控制器与交换机间通信遵循的协议。OpenFlow最早由斯坦福大学的NickMcKeown教授提出,它将控制功能从网络设备中分离出来,在网络设备上维护流表结构。数据分组按照流表进行转发,而流表的生成、维护、配置由中央控制器来管理。传统的转发设备(交换机或者路由器)的数据转发依赖于设备中保存的地址信息(MAC地址转发表或者IP地址路由表),而OpenFlow交换机使用的流表规则包括网络各层的基本配置信息,所以在数据转发时规则更灵活丰富。控制器提供了可供编程的北向接口,网络管理者可以基于这些接口开发出特定的网络应用[14]。

2支持OpenFlow的网络仿真软件

随着SDN的快速发展,SDN的研究和仿真己成为从事SDN的研究人员所必须从事的一项工作。网络仿真软件是支持网络研究工作的工具和平台。本节将会介绍当前主流的几款支持OpenFlow协议并能用于SDN网络研究的仿真软件。

2.1Mininet

Mininet[9]是2010年斯坦福大学基于LinuxContainer架构开发的一款轻量级的SDN网络仿真平台。使用者可以通过Mininet轻易地在一台机器上(本地PC机、云平台或VM虚拟机)搭建一个SDN环境,同时可通过Mininet的命令行界面与搭建的网络环境进行交互,并且可将其部署在一个真实的硬件中。

Mininet具有如下特征:(1)可自定义拓扑和节点结构,(2)允许多个并行开发人员在同一个拓扑结构上独立工作,(3)支持系统级的回归测试,(4)提供了简单的和可扩展的PythonAPI,(5)可运行标准的Unix/Linux网络应用,(6)良好的硬件移植性和可扩展性。但是,Mininet的使用也有一些限制,如基于Mininet的网络不能超出一个服务器上的可用CPU和带宽资源,并且不能运行不与Linux兼容的OpenFlow交换机或应用。2.2NS-3

NS-3[lo]是Berkley大学发开的一个离散事件的网络仿真器,它是在GNUGPLv2license下授予许可的一个免费的网络仿真软件,采用了C++/Python语言对其进行开发,可广泛地用于研究和开发。N3-3并不是NS-2的扩展,二者的脚本语言不同,NS-3也不支持NS-2的API。

NS-3仿真支持OpenFlow交换机。NS-3模拟的OpenFlow交换机可通过OpenFlowAPI对交换机进行配置,以及使用MPLS(MultipleprotocolLabelSwitching,多协议标签交换技术)的扩展来支持服务质量和服务水平协定。NS-3目前使用OpenFlow交换库(OpenFlowswitchlibrary,OFSID),OFSID是OpenFlow软件实现的分配,它被爱立信的研究人员创建,并加入了MPLS功能。为了在NS-3中使用OpenFlow模块,必须下载和构建OFSID,将OFSID构建到libopenflow.a库,以及链接OpenFlowswitchmodule到NS-3bulid中。

2.30penSwitch

OpenSwitch[ll]是一个多层的虚拟交换软件,通过编程扩展可使得大规模网络自动化,并支持标准的管理接口和协议,在开源Apache2.0license下授予许可。OpenSwitch可移植到多个虚拟平台和交换芯片上,如Xen、KVM和Virtualbox等,并且它已经被集成到多个虚拟管理系统中,如OpenStack、OpenQRM和OpenNebula等,其程序包可安装于Ubuntu、Debian和Fedora等多个Linux操作系统上。

OpenSwitch提供了对OpenFlow的支持,可用于模拟单个OpenFlow交换机。在实际的OpenFlow环境搭建中,一个Ubuntu系统的PC机上安装OpenSwitch的程序包,通过简单的配置网桥、端口,就可将该PC机配置为一台OpenFlow交换机。OpenSwitch也支持查询交换机状态和操作流表。

2.4EstiNet

EstiNet[15]是台湾思锐科技推出的网络仿真器,可用于网络规划、测试、协议开发和应用性能预测。它运行在Linux操作系统中,直接采用LinuxTCP/IP协议栈来产生高可信度的仿真结果,支持基于UNIX的应用程序和网络监控软件。

EstiNet的最新版本9.0提供了对OpenFlow网络仿真的支持,便于开展软件定义网络的相关研究。它可以模拟几千个1.0.0或1.3.4版本的OpenFlow交换机。EstiNet允许OpenDaylight、NOX、POX、Floodlight等常用SDN控制器直接运行在EstiNet中的控制器节点之上,并且支持研究人员自己开发的控制器应用。它能准确、快速地模拟控制器应用和OpenFlow交换机之间的交互,以及交换机之间链路的特性,例如带宽、链路延迟、链路故障时间。

3基于Mininet的仿真实例

在介绍了几种主要的仿真软件后,这里将基于专业的SDN仿真软件Mininet,介绍搭建SDN仿真环境的过程,并实现一个简单的网络逻辑隔离策略。实验场景设置为:云平台服务器上搭建有不同的虚拟服务器,分属于不同的用户。用户远程登录自己的虚拟服务器之后,安全上不允许直接访问同一局域网的其他虚拟服务器。

3.1实验方案

方案采用图2所示拓扑,包含一个控制器Controller,一台主机Hostl,两台服务器Serverl、Server2,两台交换机Switchl、Switch2。通过控制器对交换机的控制,实现主机Hostl可以分别访问服务器Serverl、Server2,但是Serverl和Server2不能互相访问,以此实现逻辑隔离。

3.2环境搭建

仿真实验使用开源的Floodlight项目作为控制器,网络拓扑在Mininet里实现。具体步骤如下:

(1)启动控制器Floodlight

.java-jarfloodlight.jar

(2)用Python编写自定义拓扑3h2s.py;

(3)通过Xshell工具登录到Mininet,调用拓扑文件并连接至控制器,指令如下:

sudomn--custom~Mininet/custom/3h2s.py--topomytopo--controller=remote,ip=192.168.1.106,port=6633

(4)xterm指令打开服务器节点终端,搭建web服务器。

Python-mSimpleHTTPServer80

各设备的主要参数见表1。

设备信息

3.3测试步骤

网络中测试连通性的最常用方法就是ping测试。本实验在节点Serverl和Server2节点上搭建了web服务器,除了ping测试外,也可通过访问服务器操作和服务器端的访问日志来验证连通性。逻辑隔离策略以流条目的形式,通过控制器下发至对应交换机。在下发前后,对设备间的连通性进行测试,以验证逻辑隔离策略是否有效。

3.3.1初始连通性测试

Floodlight控制器中有一个自动转发模块Forwarding,能够自动为数据包寻找可用的最短路径,该模块默认是开启状态。在此状态下,若各交换机中无流条目限制,各终端节点能互相访问。

首先进行pingall测试。然后测试各终端对服务器的访问情况。图2为Serverl访问Server2的示例。

3.3.2下发流条目

向靠近两个服务器的交换机Switch2下发两条流条目(图4),限制两个服务器间的互相访问。下发流条目后,再次进行pingall测试和访问服务器测试。

3.4结果分析

流条目下发前后,pingall测试结果见图5,服务器的访问情况统计见表2。

在默认流表的情况下,pingall测试无丢包,主机Hostl可以访问两个服务器,且服务器间也可以正常互相访问。

修改流表,对Serverl访问Server2的流量,Action里output与input端口设置为一致,这样便阻断了Serverl与Server2的连接。进行该操作后,主机Hostl仍能正常访问两个服务器。但两个服务器不能互访,实现了逻辑上的隔离,实验达到预期效果。

4总结

基于OpenFlow的SDN技术已经越来越得到学术界和工业界的认可,各机构对其研究力度也在不断增加。文章介绍了常用的几种SDN仿真软件,并以Mininet为例描述了SDN仿真环境的搭建过程,通过简单的逻辑隔离策略验证了所搭建平台的有效性。下一阶段,我们将进一步拓展该平台,开展流量监控、访存控制等实验。

参考文献

[1]MckeownN.Keynotetalk:Software-definednetworking[J].IEEEInfocom,2009,51(2):1一

[2]McKeownN,AndersonT,BalakrishnanH,etal.OpenFlow:enablinginnovationincampusnetworks[J].ACMSIGCOMMComputerCommunicationReview,2008,38(2):69-74.

[3]LaraA,KolasaniA,RamamurthyB.SimplifyingnetworkmanagementusingSoftwareDefinedNetworkingandOpenFlow[C]./Pro-ceedingsofthe2012AdvancedNetworksandTelecommunicationsSystems(ANTS'12),Bangalore,India,2012:24-29.

[4]袁晓,蔡志平,刘书昊,等.大规模网络仿真软件及其仿真技术[J].计算机技术与发展,2014,24(7):9-12.

[5]郝宁霆,忻向军.变速率OFDM光传输系统的仿真实现[J].新型工业化,2012,2(8):1-6.

[6]曹永盛,吴亚楠,赵安臻,等.16QAM/ASK正交调制光标记交换系统的设计与性能仿真[J].新型工业化,2014,4(2):45-50.

[7]罗星星,蒲保兴,赵颖,等.随机网络编码数据传输的仿真实现[J].软件,2014,35(8):32-37.

[8]刘维康,雷磊,周进华,等.WLAN-Mesh网络中MAC协议公平性问题的半实物仿真与分析[J]新型工业化,2012,2(4):16-22.

[9]Mininet.[01].[2015-06-10].http://mininet.org/.

[10]NS-3.[01].[2015-06-10].http://www.nsnam.org/.

[11]OpenvSwitch.[01].[2015-06-10].http://openvswitch.org/.

[12]Esttnet.[01].[2015-06-10].http://www.estinet.com/.

[13]Opennetworkingfoundation[01].[2015-06-10].https://www.opennetworking.org/sdn-resources/sdn-definition/.

[14]庞涛,魏含宁,武娟,等.SDN北向接口发展现状与趋势研究[J].互联网天地,2014,9(9):50-56.

[15]WangSY.ComparisonofSDNOpenFlownetworksimulatorandemulators:EstiNetvs.Mininet[C]//Proceedingsofthe2014IEEESymposiumonComputersandCommunications(ISCC'14),Madeira,Portugal,2014:1-6.

猜你喜欢
软件定义网络仿真软件
中国联通SDN的思考和应用实例
业务功能链技术及其应用探析
针对大规模软件定义网络的子域划分及控制器部署方法
一种新的SDN架构下端到端网络主动测量机制
电子类仿真软件应用的教学之道
仿真软件在“电力电子技术”课程教学中的应用