基于SDN的网络虚拟化实验教学方案

2018-01-26 07:27申海杰陈靖2陈晓范田新志
微型电脑应用 2018年1期
关键词:租户交换机端口

申海杰, 陈靖2, 陈晓范, 田新志

(1.西安思源学院 电子信息工程分院,西安 710038;2.空军工程大学 信息与导航学院,西安 710077)

0 引言

SDN(Software-Defined Networking,软件定义网络)起源于斯坦福大学Nick McKeown教授的Clean Slate项目,其目标是重新定义网络体系结构,诞生至今已经快十年。作为一种新的网络体系结构,SDN已经掀起了一场网络变革的技术浪潮,对网络学术界和工业界的发展都产生了巨大的冲击[1]。SDN是一种基于软件的网络架构和技术,支持集中化的网络控制,实现了底层网络设备对上层应用的透明,具有灵活的软件编程能力,采用软件定义网络的方式,灵活满足不同用户的应用需求[2]。

网络虚拟化旨在解决现代网络架构中的僵化问题,核心目标是通过虚拟化技术,将一个物理网络分割为多个虚拟网络,或者将多个物理网络抽象为一个逻辑虚拟网络,不同的虚拟网络之间的服务质量能够得到不同级别的保障,从而为上层的应用提供网络服务[3]。网络虚拟化打破了物理设备和逻辑业务层之间的绑定关系,满足更加复杂的业务需求[4]。随着软件定义网络技术的提出[5][6],SDN 成为网络虚拟化的一个新思路和新方法[7],已经在全球网络创新实验环境(GENI)[8]以及数据中心[9]中开展了研究与应用。如何利用SDN 去实现网络虚拟化成为一个热门话题。随着Openstack、Cloud Stack等开源云计算平台的出现,云计算得以迅猛发展。在云计算时代,随着社会对计算需求的不断扩大,数据中心的规模也在迅速变大。但是,在庞大的数据中心背后,其资源的平均利用率却相对较低,大部分设备空闲,给数据中心增加巨大的能耗负担。多租户是云计算中的一个重要概念,云计算中多租户概念要求通过虚拟化技术将物理资源池化后,可以按需、动态分配租户的资源请求,同时这些资源也可以随时随地被租户撤销。新一代的网络架构SDN主张控制与转发分离、控制逻辑集中的思想。通过从全局来管理和优化网络,SDN 技术在数据中心的应用可以极大提高资源利用率和管理效率。在多租户数据中心中,SDN 技术可以快速实现多租户隔离、海量租户支持和虚拟机无缝迁移等功能[10]。

计算机网络技术专业具有理论性强和知识更新快的特点,在教学中可以通过实验来帮助学生理解相关的理论知识并掌握相关的操作。但是笔者在讲授SDN及网络虚拟化相关内容时发现以下问题:

1)SDN交换机设备较贵,难以大规模部署用于实验教学;

2)SDN 网络的主要协议Open Flow版本更新频繁,实验环境构建与切换较为复杂;

3)SDN及网络虚拟化实验内容比较匮乏。

以上因素导致的结果就是学生不能通过实验理解最新的SDN及网络虚拟化技术理论知识,更缺乏可实际操作锻炼动手能力的机会,最终影响相应课程的教学效果和能力的培养[11]。

为解决SDN及网络虚拟化实验教学中存在的硬件设备资源不足、设备灵活性不够和实验内容匮乏等问题[12],笔者基于Mininet[13]平台,以Floodlight[14]为控制器,OpenVirteX[15][16]作为中间层,仿真实现了面向多租户的vSDNs(虚拟SDN网络),并通过其实现租户间的网络隔离。该实验方案基于Linux多用户操作系统,可以部署于服务器供多名学生通过局域网远程登录同时使用,实验方案具有价格低廉、贴近现实、配置灵活、扩展性强和具有可重复性的特点,通过该实验方案学生可以深入理解并掌握计算机网络技术中SDN及网络虚拟化技术,并掌握相应网络设备的操作能力。

1 网络虚拟化方案的选择

目前基于SDN的网络虚拟化主要方向为基于中间件的网络虚拟化方案。其主要思想是在SDN设备和控制器之间添加一个虚拟化层,从物理SDN设备来看,网络虚拟化中间件就是它的控制器;从虚拟网络的控制器角度来看,控制器所面对的就是一系列虚拟的交换机以及他们之间的虚拟链路。FlowVisor和OpenVirteX是采用这种思想实现网络虚拟化的典型代表。

FlowVisor是建立在OpenFlow之上的网络虚拟化工具,它能够将物理网络划分为不同的虚拟网络。FlowVisor部署在标准OpenFlow控制器和OpenFlow交换机之间,成为二者的透明代理。FlowVisor是一个特殊的OpenFlow控制器,所有OpenFlow消息都将透过FlowVisor进行传送。FlowVisor会根据配置策略对OpenFlow消息进行拦截、修改、转发等操作。这样,OpenFlow控制器就只控制其被允许控制的流,并不知道其所管理的网络被FlowVisor进行过分片操作。相似地,从交换机发出的消息经过FlowVisor也只会被发送到相应的控制器。FlowVisor允许多个控制器同时控制一台OpenFlow交换机,但是每个控制器仅仅可以控制经过这个OpenFlow交换机的某一个虚拟网络(即slice切片),从而保证各虚网相互隔离。FlowVisor通过流规则来进行虚拟网络划分。FlowVisor网络的基本要素是网络切片,切片隔离是FlowVisor虚拟化的重要组成部分。

OpenVirteX(以下简写为OVX)是Onlab开发的网络虚拟化平台,和FlowVisor一样也可以实现多租户的网络虚拟化。OVX通过使租户能够获取到自己的虚拟拓扑和全网的地址空间来实现网络虚拟化。前者可以允许租户自定义网络拓扑,后者则是用于隔离不同租户的流量,防止冲突。

与FlowVisor通过切分slice使租户使用网络的一部分不一样的是,OVX通过同一个header space来区分所有租户的数据。也就是说两个租户可以使用同样的IP、子网掩码以及传输层和应用层的协议,而不会引起冲突,而这在FlowVisor下是不允许的。其实现原理在于OVX做了地址虚拟化,即面向用户的地址是OVX IP Address,而不是真正的Physical IP Address,OVX把地址从OVX IP Address的地址映射成唯一的Physical IP Address,而这个过程对于租户的控制器是透明的,从而实现了地址虚拟化。与切分slice原理不一样的另一点是,以前切分的slice限制在底层网络的同构子图中,即用户的虚拟拓扑实际上是物理真实拓扑的一个同构子图,也就是说,租户是可以看到真实的网络拓扑的。而在OVX中不一样的是,用户不需要关心底层的拓扑,而可以任意的定义自己的虚网拓扑,OVX会完成虚网拓扑到物理网络拓扑的映射,这是OVX区别于FlowVisor的重要特性。Open Virtex的另外一个重要的特性是其对上层的控制器是兼容的,也就是说,与OVX所通信的控制器无须做任何修改,就可以直接对虚拟网络进行管理。值得注意的一点是,整个OVX的虚拟化过程中都是基于主机只属于一个虚网的假设的。主机地址的虚拟化是整个网络虚拟化的核心,同时主机的硬件地址是用来区分租户的流量的关键。基于OVX的网络虚拟化,如图1所示。

图1 OVX网络虚拟化

基于上述的OVX特性,笔者选择使用OVX来设计网络虚拟化实验教学方案。

2 实验方案

Mininet是Stanford大学Nick McKeown的研究小组基于Linux Container架构,研发出的一套轻量级软件定义网络研发和测试平台。通过使用Mininet学生可以很容易在PC上模拟测试一个SDN网络,对基于Openflow、Open vSwitch的各种协议等进行开发验证,而且几乎所有的代码都可以无缝迁移轻松部署到真实的硬件环境中。

本实验方案中使用VMware软件建立虚拟机,通过利用虚拟机技术可以进一步降低实验部署成本,学生可以在自己的笔记本电脑上搭建实验平台,另外还可以通过虚拟机镜像文件架构实现对相关实验代码、配置和数据的快速迁移。虚拟机中操作系统使用14.04版Ubuntu系统,并事先已安装Mininet2.2.2、Oracle JDK1.7、Maven3.3.9、OpenVirteX0.1、Floodlight0.9和Wireshark等工具。 控制器Floodlight启动脚本位置为/home/ovx/ctrl/start-controllers.sh, 默认系统启动时已经启动了3个Floodlight的服务进程实例。3个Floodlight进程默认TCP连接端口为10000、20000和30000,而Web端UI默认端口为10001、20001、和30001。当租户1 的虚拟网络启动后OVX会连接到Floodlight的端口10000建立TCP连接;当租户2的虚拟网络启动后OVX会连接到Floodlight的端口20000建立TCP连接;当租户3的虚拟网络启动后OVX会连接到Floodlight的端口30000建立TCP连接。

2.1 创建物理拓扑

在基于标准的NDDI拓扑[17](该网络拓扑来源于美国下一代互联网建设项目Internet2)的网络中,一共有11个城市,每个城市有1个核心交换机,每个交换机上有4台主机与之相连。不同城市物理交换机的DPID,如表1所示。

表1 DPID编号表

其中DPID的最后6个字节表示主机的MAC地址,MAC地址的最后一个字节表示主机编号。根据下表中城市SFO的物理DPID,那么该城市第三台主机的MAC地址应是00:00:00:00:02:03。

在该拓扑中连接在每个核心交换机上的主机IP地址分配为10.0.0.1到10.0.0.4,端口为1到4,其他端口一般用于城市间交换机互联,具体连接情况,如图2所示。

图2中连线上的数字表示物理交换机端口号。例如城市EWR交换机6号端口与城市IAD交换机的7号端口相连。

图2 拓扑图

本实验方案中首先选取西雅图(SEA)和洛杉矶(LAX)两个城市下的各一台主机来做创建租户1的虚拟网络,主机名分别是h_SEA_1和 h_LAX_2(即洛杉矶交换机上的第二台主机,因为各交换机下接的4台主机IP均为10.0.0.1—10.0.0.4,为避免混淆选择第二台主机)。最终租户1的虚拟网络,如图3所示。

图3 虚拟网络1

接下来选取旧金山(SFO)、华盛顿(IAD)和堪萨斯(MCI)3个城市下的各一台主机来做创建租户2的虚拟网络,主机名分别是h_SFO_1、h_IAD_2和h_MCI_3。最终租户2的虚拟网络,如图4所示。

图4 虚拟网络2

创建物理拓扑具体过程如下:

$ wget http://ovx.onlab.us/wp-content/uploads/internet2.py

//下载OVX官网提供的拓扑文件,此脚本中定义的默认控制器为本机的6633端口的控制器。

$ sh OpenVirteX/scripts /ovx.sh

//启动OVX,默认监听的端口正是6633.

$ sudo python internet2.py

//启动Mininet建立拓扑,连接OVX作为其控制器。

物理拓扑建立好后,可以通过ping命令验证主机h_SEA_1和主h_LAX_2能否互联、主机h_SFO_1、主机h_IAD_2和主机h_MCI_3能否互联。由于当前各物理交换机上均没有收到控制器下发的流表,无法进行有效转发,导致各主机间均无法ping通。

2.2 创建多租户虚拟网络

$ cd OpenVirteX/utils

$ python ovxctl.py -n createNetwork tcp:localhost:10000 10.0.0.0 16

//创建虚拟网络

$ python ovxctl.py -n createSwitch 1 00:00:00:00:00:00:01:00

$ python ovxctl.py -n createSwitch 1 00:00:00:00:00:00:02:00

$ python ovxctl.py -n createSwitch 1 00:00:00:00:00:00:03:00

//创建虚拟交换机

$ python ovxctl.py -n createPort 1 00:00:00:00:00:00:01:00 1

$ python ovxctl.py -n createPort 1 00:00:00:00:00:00:01:00 5

$ python ovxctl.py -n createPort 1 00:00:00:00:00:00:02:00 5

$ python ovxctl.py -n createPort 1 00:00:00:00:00:00:02:00 6

$ python ovxctl.py -n createPort 1 00:00:00:00:00:00:03:00 5

$ python ovxctl.py -n createPort 1 00:00:00:00:00:00:03:00 2

//创建虚拟端口

$ python ovxctl.py -n connectLink 1 00:a4:23:05:00:00:00:01 2 00:a4:23:05:00:00:00:02 1 spf 1

$ python ovxctl.py -n connectLink 1 00:a4:23:05:00:00:00:02 2 00:a4:23:05:00:00:00:03 1 spf 1

//创建虚拟链路

$ python ovxctl.py -n connectHost 1 00:a4:23:05:00:00:00:01 1 00:00:00:00:01:01

$ python ovxctl.py -n connectHost 1 00:a4:23:05:00:00:00:03 2 00:00:00:00:03:02

//连接主机

$ python ovxctl.py -n startNetwork 1

//启动虚拟网络

经过以上步骤,租户1的虚拟网络已经配置好并启动了,接着按照类似的方法创建租户2的虚拟网络并将其启动。需要注意的是虚网1中使用的OVX IP Address为1.0.0.0/8,而虚网2中使用的OVX IP Address为2.0.0.0/8。

2.3 仿真结果

在Mininet控制台,使用ping验证主机间互通。结果显示每个租户的虚拟网络内部主机间已经可以ping通,而属于不同租户虚拟网络的主机间依旧无法ping通,实现了面向多租户的vSDNs,如图5所示。

图5 连通性测试

也可以通过Floodlight的web界面http://localhost:10001/ui/index.html来观察租户1的虚拟网络的拓扑,如图6所示。

图6 虚拟网络1拓扑

通过Floodlight的web界面http://localhost:20001/ui/index.html来观察租户2的虚拟网络的拓扑,如图7所示。

图7 虚拟网络2拓扑

结果证明拓扑结构和最初试验预想一致。

此时各虚拟网络中的虚拟交换机上已经收到Floodlight控制器下发的流表,再由OVX进行映射后下发到真正的物理交换机,通过观察物理交换机上的流表信息可以进一步理解SDN中控制转发相分离的思想:控制器负责给交换机下发流表而交换机负责按照其上面的流表规则进行转发。另外还可以通过观察流表中内容理解OVX中的地址虚拟化技术。主机h_SEA_1和主机h_LAX_2间的icmp包转发过程,如图8所示。

图8 物理交换机流表

3 总结

从以上实验可以看出,通过使用OpenVirteX,仿真了一个面向多租户的vSDNs网络,并实现了租户间主机的隔离。在该虚拟网络上通过交互操作调用操作系统和SDN交换机的真实命令学生可以深入理解并掌握SDN及网络虚拟化技术,对于学生的知识掌握和动手能力都有一定的提升。基于SDN的网络虚拟化实验教学方案能够帮助学生简便和快速地搭建vSDNs实验环境,开展面向真实网络操作的相关实验课程。另外结合本实验平台中Wireshark工具进行抓包分析还可以帮助学生更好地理解计算机网络相关课程中的各种协议。本实验平台解决了SDN及网络虚拟化实验教学中存在的硬件设备资源不足、设备灵活性不够和实验内容匮乏等问题。笔者后续将进一步完善本文提出的实验教学方案,使用Mininet连接物理交换机,结合OVS虚拟交换机组建“传统+SDN”的混合型网络,扩展该方案的功能以实现更加复杂的实验。

[1] 杨泽卫,李呈. 重构网络:SDN架构与实现[M]. 北京:电子工业出版社, 2017.

[2] 李艳,郝志安,李宁,卢冀. 基于Mininet的SDN架构仿真研究[J]. 计算机与网络,2014(5):57-59.

[3] Chowdhury N. M. K, Boutaba R. A survey of network virtualization, CS-2008-25[R]. University of

Waterloo, Oct. 2008.

[4] 李佟,葛敬国,鄂跃鹏,等. 基于标签的POF网络虚拟化技术研究[J/OL]. 计算机应用研究,2017,(02):1-10. (2017-03-15). http://kns.cnki.net/kcms/detail/51.1196.TP.20170315.1537.110.html.

[5] Mc Keown N, et al. Openflow: Enabling Innovation in Campus Networks [J]. ACM SIGCOMM Computer Communication Review, 2008, 38(2): 69-74.

[6] Jin Xin, Gossels J, Rexford J, et al. Co Visor: a compositional hypervisor for software-defined networks[C]. // Proc. of NSDI. 2015: 87-101.

[7] Sherwood R, Chan M, Covington A, et al. Carving research slices out of your production networks with Open Flow[J]. SIGCOMM Comput. Commun. Rev., 2010, 40(1): 129-130.

[8] Berman M., Chase J. S., Landweber L., et al. GENI: A federated testbed for innovative network experiments [J]. Computer Networks, 2014,61(1): 5-23.

[9] Bari M. F., Boutaba R., Esteves R, et al. Data center network virtualization: A survey. IEEE Commun. Surveys & Tutorials[J]. 2013, 15(2): 909-928.

[10] 左成. 基于SDN的多租户数据中心网络研究[D].成都:电子科技大学,2016.

[11] 黄家玮,韩瑞,钟萍,等. 基于Mininet的计算机网络实验教学方案[J]. 实验技术与管理,2015(10):139-141.

[12] 张连成,奚琪,郭毅,等. 基于Mininet模拟环境的软件定义网络实验课程设计[J]. 计算机教育,2015(6):104-107.

[13] Mininet Team. Mininet Walkthrough. [EB/OL]. (2017-3-21). http://mininet.org/walkthrough/.

[14] Project Floodlight. Documentation. [EB/OL]. (2016-2-7). https://floodlight.atlassian.net/wiki/display/floodlightcontroller/Getting+Started.

[15] Al-Shabibi A, Leenheer M, Gerolay D M, et al. OpenVirteX: a network hypervisor [EB/OL]. (2014--). http: //ovx.onlab.us/wp-content/uploads/2014/04/ovx-ons14. pdf.

[16] Al-Shabibi A, De Leenheer M, Gerola M, et al. OpenVirteX: Make your virtual SDNs programmable[C]. // Proc of the 3rd Workshop on Hot Topics in Software Defined Networking. 2014:25-30.

[17] OVX. OpenVirteX documentation. [EB/OL]. (2015-2-6). http://ovx.onlab.us/documentation/architecture.

猜你喜欢
租户交换机端口
一种端口故障的解决方案
多租户数据隔离及加密研究
硬件解耦三端口变换器的软开关分析与仿真
基于多租户隔离的云安全建设
基于地铁交换机电源设计思考
交换机生成树安全
修复损坏的交换机NOS
缔造工业级的强悍——评测三旺通信IPS7110-2GC-8PoE工业交换机
基于MVC模式的多租户portlet应用研究*
卫星三端口DC-DC变换器技术综述