房海峰 赵亚婵 檀蓉 韩院彬
摘 要: SDN的出现开展了计算机虚拟网络模式新的转变,实现了将控制层面与数据转发分离的功能。利用OpenFlow协议对控制器与交换机进行交流。针对网络传输的能耗问题,提出虚拟网络动态切换技术,在该系统中虚拟机之间通信有两条路径可供选择,即光交换机和电交换机。通过对交换机的切换,实现虚拟网络流量的整合,减少物理网络资源的冗余浪费,从而达到优化数据网络能耗的目的。通过Ping与Netperf这两个测试工具测出丢包率、延迟及流量值,这些数值的变化证明了所提系统可正常运行。
关键词: 虚拟网络; 动态切换; SDN环境; 流量整合; 系统设计; 系统测试
中图分类号: TN915?34; TP393 文献标识码: A 文章编号: 1004?373X(2020)06?0061?04
Dynamic switching technology of virtual network in SDN environment
FANG Haifeng, ZHAO Yachan, TAN Rong, HAN Yuanbin
(School of Information and Electrical Engineering, Hebei University of Engineering, Handan 056038, China)
Abstract: The emergence of SDN has carried out a new transformation of computer virtual network mode and realized the function of separating control level from data forwarding. The OpenFlow protocol supports the communication of the controller and the switch. In allusion to the energy consumption of network transmission, a virtual network dynamic switching technology is proposed. In this system, there are two paths for communication between virtual machines, namely optical switch and electrical switch. By switching the switch, the integration of virtual network traffic is realized, and the redundancy and waste of physical network resources are reduced, so as to optimize the energy consumption of data network. Ping and Netperf are the system′s test tools, by which the packet loss rates, latency, and traffic value are measured. It proves that the proposed system can run normally.
Keywords: virtual network; dynamic switching; SDN environment; OpenFlow; traffic integration; system design; system test
0 引 言
軟件定义网络(Software Defined Network,SDN)是计算机网络模式的一种新的架构,它实现了网络结构的虚拟化。SDN的目的是将控制与转发功能分离,控制器主要负责决策,而交换机只负责转发。SDN架构分为三部分,即网络应用、OpenFlow控制器和OpenFlow交换机。控制器使用的是RYU,RYU是基于组件的SDN框架,支持OpenFlow,且采用Python实现。交换机使用的Open vSwitch具有可迁移性、对动态网络作出响应、维持逻辑标签和硬件集成等优点,因此目前已被移植到多个虚拟化平台上和交换机的芯片组中,成为很多平台的默认交换机[1]。网络应用和控制器通过北向接口通信,控制器和交换机则通过南向接口传递消息,即OpenFlow协议。
本文对在SDN环境下虚拟网络切换技术进行了介绍,SDN采用数据平面与控制平面相分离的架构,控制器负责下发命令,在交换机之间传递消息。在本系统中,虚拟机传输数据设计了两条路径:一条为光交换机;另一条为电交换机。根据所设定的流量阈值区分大流量与小流量。当流量超过阈值时,选择光交换机;小于阈值时,则选择电交换机。
本系统实现了虚拟网络路径切换的功能,但是光交换机与电交换机各有优缺点,故切换系统的实现大大减少了能源的损耗,提高了资源的利用率,同时可行性很高。
1 相关工作
多路径传输机制(OFMT)[2]通过对流计算路径,将流量分到多个路径上,同时通过周期轮询及动态调度实现了均衡负载的目的,从而提高了网络吞吐量并减少了传输时间。
文献[3]是一篇技术性论文,之前的研究主要是针对延迟、吞吐量和包丢失等网络性能。本文主要介绍了在SDN环境下OpenFlow协议的流量统计信息的收集特性,通过捕捉和分析控制器收集的请求信息和应答消息,计算其他流量工程的参数。
Opennetmon[4]是基于SDN的网络监控,监控OpenFlow网络中吞吐量、延迟和包丢失等流量指标的一种方法。OpenFlow提供TE接口,文章提出的方法提供监控,支持细粒度流量工程。Opennetmon通过轮询边缘交换机测量流量,流量减少时,降低自适应率及切换CPU,同时提高了测量精度。
OpenTM[5]是用来测量网络流量的矩阵系统,此系统通过获取的路由信息选择交换机获取流量。通过比较,发现OpenTM比OpenFlow协议提供的用于匹配和查询交换机数量、字节的函数更精确。但是本系统对交换机的要求较高,需要挑选合适的交换机。
2 相关技术
2.1 SDN
SDN起源于斯坦福大学在2006年的一个项目,该项目定义了新型的网络架构。SDN的出现使控制与执行转发分离,简化了网络管理与控制。SDN将控制权交给了控制器,控制器下达指令,交换机只负责数据包的转发,两者的分开使网络更加智能,更具有灵活性。
SDN分为应用层、控制层和基础设施层,如图1所示。应用层与控制层使用网络应用接口,即北向接口进行交互,控制层与基础设施层使用南向接口进行通信,到目前为止,北向接口并没有明确的定义,南向接口使用OpenFlow协议进行通信。SDN的网络应用程序在应用层中运行,应用层通过北向接口告诉控制层自身对网络资源的需求以及对网络行为的需要,同时通过北向接口从控制器中读取网络的当前状态与各种统计数据。控制层是SDN架构中最关键的部分,控制器则在控制层上运行,控制层通过南向接口对基础设施层发送指令,以达到控制的目的,通过北向接口对网络行为及策略进行控制[6]。交换机在基础设施层上运行,在本层可以进行数据交换与处理。
2.2 RYU
RYU[7]是基于组件的SDN控制器,由Python实现,同时支持所有版本的OpenFlow协议,跟其他控制器相比,便于开发。
RYU架构与SDN架构相似,SDN APP分为三类,分别是Operator,OpenStack cloud orchestration和User Apps。RYU SDN frame work是RYU的框架层,主要是用于实现控制器流表下发、拓扑发现等功能。OpenFlow switch层包含交换机,支持OpenFlow协议。
2.3 OpenFlow
控制器与交换机之间通信靠的是OpenFlow协议,通过安全信道来传递消息。安全信道是将交换机与控制器连接到一块的接口。当开启了交换机后,会向控制器发起TLS(传输层安全)连接,控制器默认的TCP接口[1]为6633。
消息传递过程为:交换机收到数据包后,对包头进行解析,然后进行查表,从流表的第一个记录开始依次查询,当发现有匹配的流记录时,交换机执行相应的动作,当没有匹配的流记录时,将数据包通过安全信道发送packet?in消息给控制器,控制器再给交换机发送packet?out消息来反馈相应的动作[8]。
2.4 Open vSwitch
OVS(Open vSwitch)是在开源Apache 2.0许可下授权且具有产品级质量的多层虚拟交换机[9]。该交换机由Nicira Networks开发,支持标准的网络接口和协议,也支持通过编程扩展的大规模的网络自动化。
Open vSwitch很适合在虚拟环境中运行,基本上是由C语言的独立平台编写,适合很多环境,便于应用。在虚拟机中,交换机的作用是传递消息,以及与外部环境通信,接收并執行控制器的命令。
3 系统设计
本系统实现了两个虚拟机在发送消息时切换路径的技术。在传输消息时,会出现能耗高、传输慢,或者能源浪费的情况。所以当流量小时,为节省成本及时间,应选择电交换机;当流量大时,为加快传输速率需要切换为光交换机。SDN交换机切换拓扑图如图2所示。
图2中,KVM1与KVM2互相发送数据,可以看到有两条路径,第一条是通过交换机1到光交换机的路径,光通信速度比较快,但是成本较高,当传输的数据流量大于控制器设定的阈值[10]时,应采用光交换机来传输数据,传输的数据也就是所谓的大象流[11]。当传输的流量小于控制器设定的阈值时,应选用第二条路径进行数据传输,也就是虚拟机1通过电交换机对虚拟机2进行数据传送。此次传输的数据叫作老鼠流。根据流量传输选择合适的路径,可以减少能源及时间的浪费。
4 系统实现
4.1 系统运行过程
在系统运行之前,需要进行环境准备。SDN控制器启动前应满足以下条件:首先,应保证不启动节点虚拟机,以防产生网络流量;其次,虚拟交换机的流表的初始值应为零;最后,要确定物理网络拓扑结构。
当启动控制器后,根据物理网络拓扑结构,进行配置。再启动监控线程,检查端口的状态信息,并将虚拟机信息、虚拟机交换机信息、端口信息、物理连接信息、流表连接信息、虚拟机通信路径信息、虚拟机通信路径中的流表配置计划信息和vxlan点对物理通路流表配置信息记录到数据库中。开启监控后,检查端口的状态信息,实现vxlan路径相关的流表的配置。根据流表的配置向指定通信路径相关的虚拟交换机配置流表项,检查是否存在导致环路的端口,将其禁用;再激活指定的通信路径,向指定通信路径中的入口端虚拟交换机配置CF流表项,便于捕获异常包。启动虚拟机后,正常运行,如图3所示。
最后,进行两个测试,即Ping和Netperf。测试完成后,在数据库中导出数据,进行分析。
4.2 系统切换过程
在初始環境进行配置,使虚拟机在未启动状态,流表为空。然后使SDN控制器启动,再使SDN控制器启动流量监控[12]来获取端口状态信息,更新路径信息和ARP信息。启动虚拟机后SDN控制器启动切换监控,监控器根据流量阈值判断是否启动了切换,若确定启动切换,则需要重新寻找路径,如:关闭路径1?2,启动路径3?4,最后输出路径丢包信息完成路径切换。
切换是本文最重要的部分,如何从1?2路径切换到3?4路径,再从3?4路径切换到1?2路径是关键的技术。
要想从1?2路径切换到3?4路径,需进行如下步骤:
1) 进行环境准备:before启动控制器,节点虚拟机未启动,虚拟交换机流表==0,确定物理网络拓扑结构;
2) 输入sudo ryu?manager haifeng_monitor_with_db_
and_websocket_2.py,开启控制器;
3) 启动KVM;
4) 启动切换监控查看流量值;
5) When need_switch==ok deactive_path_number=path?(1,2) 沿着path?1?2路径中的datapath下发c?flow,删除原有的flow;沿着path?1路径中的datapath删除路径中间的vxlan流表和ARP信息再禁用端点处datapath中的port;
6) If SDN控制器捕获到流量包pkt,切换到3?4,即:配置路径中间的vxlan流表和ARP信息,再向路径中间的datapath下发flow,删除路径中间的datapath的c?flow,启用端点处datapath中的port,path?3向源端点处datapath下发flow并向目端点处datapath下发flow,path?4向源端点处datapath下发flow并向目端点处datapath下发flow,Else return 1;
7) If KVM可以运行,切换完成,Else return 1,从path 3?4切换回path 1?2的过程与上述一致。
5 评 估
5.1 准备测试环境
本系统测试前需要准备测试环境,将Node?1?KVM和Node?2?KVM镜像备份,再将虚拟机进行快照准备,运行RYU控制器,将Node?1和Node?2中的Open vSwitch恢复到初始状态。最后对测试前的环境检查:确定控制器中安装了切换程序;网络拓扑已配置且端口全部启动。
5.2 开始测试新的KVM的运行情况
启动Node?1和Node?2,杀死当前运行的KVM,再启用新的KVM。再由Node?1和Node?2分别启动KVM1和KVM2,且每次测试时都需要重新启动KVM。启动控制器,上传RYU,再启动RYU。分别进入KVM1和KVM2,并运行两个网络测试工具,即Ping和Netperf。最后启动测试程序,发起任务。测试结束后将数据从数据库中导出。
5.3 测 试
在测试前,需要在测试界面进行相应的配置。根据测试计划,对本次测试进行相关的描述,在“Test Tools”选择Ping测试或者Netperf测试,填入测试总时间以及总字节,最后选择随机切换还是固定切换,填入切换的次数,测试配置界面如图4所示。
5.3.1 Ping测试
Ping是一个通信协议,主要是用来测试两个客户端之间网络是否连通[13]。在默认情况下,Ping测试默认包为64个字节。Ping测试格式为:Ping+空格+IP地址。
在Ping测试时需要配置IP地址,关闭KVM1和KVM2的防火墙。当进行Ping测试时,根据需要,再调整参数。图5证明KVM1与KVM2 Ping测试成功。
5.3.2 Netperf测试
Netperf是针对TCP/UDP协议的测试网络性能的工具。Netperf的测试结果展示了一个系统向另一个系统发送数据,第一个系统可以以多快的速度传输数据,以及另一个系统可以以多快的速度接收数据[14]。Netperf的5种工作模式分别为TCP_STREAM,TCP_RR,UDP_STREAM,UDP_RR,TCP_CRR。
Netperf测试时需关闭防火墙再进行测试,在KVM1(2)输入“netserver”开启服务器,在KVM2(1)中进行Netperf测试,如图6所示,Netperf测试成功。
6 结 论
本文介绍了在SDN环境下的虚拟网络的动态切换技术,系统路径分为两种,两条路径分别通过光交换机和电交换机。控制器启动后监控流量,获取当前路径信息,SDN监控器根据流量阈值判断是否启动切换。本系统的出现使虚拟机在传输数据时大大减少了能源的损耗,并且用户在高流量的访问过程中,可快速访问网页。本系统目前仅仅实现了路径切换,下一步计划通过测试所得的数据建立预测模型,优化系统。
注:本文通讯作者为赵亚婵。
参考文献
[1] SIAMAK Azodolmolky.软件定义网络:基于OpenFlow的SDN技术揭秘[M].徐磊,译.北京:机械工业出版社,2014.
[2] 陈鸣,胡慧,刘波,等.一种基于OpenFlow的多路径传输机制[J].电子与信息学报,2016,38(5):1242?1248.
[3] HAMAD D J, YALDA K G, OKUMUS I T. Getting traffic statistics from network devices in an SDN environment using OpenFlow [J]. International institute for Tibetan and Asian studies, 2015(16): 951?956.
[4] ADRICHEM N L M V, DOERR C, KUIPERS F A. OpenNetMon: network monitoring in OpenFlow software?defined networks [C]// 2014 IEEE Network Operations and Management Symposium. Krakow: IEEE, 2014: 1?8.
[5] AMIN Tootoonchian, MONIA Ghobadi, YASHAR Ganjali. OpenTM: traffic matrix estimator for OpenFlow networks [C]// International Conference on Passive and Active Network Measurement. Zurich: Springer, 2010: 201?210.
[6] TBOMAS D Nadeau, KEN Gery.软件定义网络:SDN与OpenFlow解析[M].毕军,单业,张绍宇,等译.北京:人民邮电出版社,2014.
[7] 傅妍芳,李敬伟,马静,等.基于Ryu的SDN网络动态路由算法实现[J].西安工业大学学报,2018,38(3):279?285.
[8] 晃通,宫永直树,岩田淳.图解OpenFlow[M].李战军,薛文玲,译.北京:人民邮电出版社,2016.
[9] 汤中运,金蓉,李传煌.支持SDN的高校计算机网络实验室设计与实现[J].计算机应用与软件,2018,35(9):189?194.
[10] 左青云,陈鸣,王秀磊,等.一种基于SDN的在线流量异常检测方法[J].西安电子科技大学学报,2015,42(1):155?160.
[11] AFEK Y, BREMLER?BARR A, FEIBISH S L, et al. Detecting heavy flows in the sdn match and action model [J]. Computer networks, 2017(14): 136.
[12] LI D Y, DAI N Y, LI F, et al. Estimating SDN traffic matrix based on online informative flow measurement method [C]// 2017 Fifth International Conference on Advanced Cloud and Big Data. Shanghai: IEEE, 2017: 75?80.
[13] 常莉.计算机网络中Ping命令的应用[J].科技风,2009(18):207.
[14] 林梅琴,李志蜀,陈黎,等.Netperf的工作原理及应用[J].四川大学学报(自然科学版),2006(2):310?314.