SDN环境下网络路由的设计与实现
2017-07-05周杭霞
任 欢,周杭霞
(中国计量大学 信息工程学院,浙江 杭州 310018)
SDN环境下网络路由的设计与实现
任 欢,周杭霞
(中国计量大学 信息工程学院,浙江 杭州 310018)
软件定义网络(SDN)将数据层与控制层相分离,是一种新型网络体系架构.针对目前SDN网络还不能提供路由服务问题,设计了一种基于OpenFlow技术,使得SDN网络拥有路由转发功能的方案.依托RouteFlow平台,以内核虚拟化技术为基础,以Quagga软件为路由引擎,通过OpenFlow控制器为数据平面提供路由逻辑控制策略.实验结果表明,该方案不仅让SDN网络具有了路由转发功能,还能使系统保持较好的稳定性.
软件定义网络;路由转发;OpenFlow技术;RouteFlow平台
随着云计算、大数据、物联网、移动互联网等新技术新应用的爆发式增长,导致传统的网络架构承载的功能不断扩大,也愈发复杂,变得越来越难以适应当前的网络环境.为了解决这些问题,很多国家和地区都开展了下一代互联网研究,例如美国GENI项目、日本JGN2plus项目、欧盟RIRE项目以及我国FINE项目等[1].诞生于美国GENI项目资助下的软件定义网络(SDN)架构[2]就是其中的代表.与传统网络架构相比,SDN架构能提供一个更加灵活、可编程、与厂商无关的创新型网络框架,其核心是OpenFlow技术[3].
但是,由于SDN技术目前正处于发展初期,现有的SDN路由机制主要是二层技术.其不同子网之间的互联,主要采用的是Vlan Translation技术、隧道技术等,不能很好的融合网络层路由协议[4].本文针对SDN的路由问题,借助RouteFlow平台,设计通过POX控制器根据路由组件提供的逻辑控制策略使得SDN网络具有路由转发功能.
1 OpenFlow与SDN
OpenFlow起源于美国斯坦福大学的Clean Slate项目组.2008年,该项目组的主要负责人Nick McKeown教授首次向人们详细地介绍OpenFlow技术,引发学术界的广泛关注[5].随后,在2009年,McKeown等研究者又提出了SDN概念.到了2011年,Google、Facebook等业界巨头推动成立了开放网络基金会(Open Networking Foundation,ONF)组织[6],正式提出软件定义网络的概念并制定SDN标准化工作,同时把OpenFlow技术列为唯一的南向接口协议.从此,SDN技术引发全球浪潮.
1.1 OpenFlow技术
OpenFlow包括三个方面的技术:OpenFlow交换机(OF交换机)、OpenFlow协议和OpenFlow控制器.在OpenFlow v1.0中,OF交换机则主要包含流表(Flow Table)和安全通道(Secure Channel)这两个部分.流表是指针对特定的“流”的策略表项的一种抽象集合,负责OF交换机上的数据的查询与转发.安全通道承载着OpenFlow协议消息,负责传递OF交换机与控制器的之间所有的管理与控制信息[7],其重要性不言而喻.随着OpenFlow版本的不断更迭,OF交换机内部结构也在不停地变化,见图1.
图1 OpenFlow v1.0、v1.1和v1.5对比图Figure 1 Comparison of OpenFlow v1.0,v1.1 and v1.5
从图1中可以清晰地看出,在v1.1版的OF交换机中,增加了“流水线+组表”这样的体系架构[8].这样的改进主要是为解决流表的转发性能,于是该架构在后续OpenFlow协议的版本中一直得到沿用.在v1.5中OF交换机又增加了“计量表+端口”这样的架构[9],可实现各种简单的QoS功能,比如限制速率等.若再结合每个“端口”的“队列”,还可以实现更加复杂的QoS框架.
流表的功能类似于传统的MAC地址表或路由表,但还是和这些传统的网络设备有许多不同.流表具有各种层次的网络特征,其转发规则也有更多的形式,包含的信息量也更加复杂[10].流表是OF交换机的关键部分,OpenFlow控制器通过部署流表来指导数据平面.从2009年ONF组织发布的第一个正式版本OpenFlow v1.0,到2014年推出OpenFlow v1.5,流表组成部分的名称以及内容也在不断地演变和完善,具体变化过程如图2.
在2014年最新的OpenFlow v1.5版本中,流表项变成主要由以下七部分组成[9].
•匹配域:其功能主要是对数据包进行匹配,它包含很多匹配项,包括数据链路层到传输层的大部分标识.
•优先级:表示当流表在OF交换机中发生冲突时,流表项执行的先后次序,优先级高的先匹配,低的后匹配.它和匹配域联合定义了一个唯一的流表项.
•计数器:不断更新需要匹配的数据包的计数,主要是用来统计OF交换机中的全部数据流量的相关信息.
•指令:用于指示OF交换机在收到匹配的数据包后应该怎么样处理这个数据包.
当然,事实上,周小羽到了我们岭北周村之后,麻糍基本上是天天有得吃的。也就是说麻糍不管有没有被卖光,周麻糍总会留个一小块麻糍回来。
•超时定时器:表示一个流在失效前最长的有效时间或最大的空闲时间.
•Cookie:其功能是被控制器用来过滤流统计数据、流改变或流删除,但在处理数据包时不使用.
•Flags:表示改变流表项被管理的方式.
图2 OpenFlow各版本中流表的结构变化Figure 2 Change of the flow table in various OpenFlow edition
2 系统设计
2.1 路由与RouteFlow
路由作为网络的基础功能,是一个网络所必备的.然而传统网络的路由技术并不能直接应用于OpenFlow环境中.目前,在OpenFlow环境中最具有代表性的路由解决方案当属巴西RouteFlow项目[11].RouteFlow通过由一组虚拟机组成的虚拟网络,利用虚拟机中运行的现有路由协议产生路由表以及路由交互报文,最后通过POX控制器使用这些表项和报文控制OF交换机完成转发功能.其结构概念如图3.
RouteFlow平台的逻辑结构主要由三大部分组成:虚拟路由,控制协调和控制器[12],如图4.RFServer是平台的核心,主要用来动态维护整个系统的拓扑结构,以及处理来自RFProxy和RFClient的RouteFlow消息.数据库(DB)是各组件之间进程通信或远程过程调用的通道.虚拟路由部分是由内核虚拟化技术(LXC)来实现,主要由Quagga和RFClient组成.RFProxy的主要功能是把RFServer发送的RouteFlow消息解析为OpenFlow命令,并通过控制器POX发送给数据平面的OF交换机.
2.2 系统设计实现过程
在OpenFlow环境中,当数据包仅在同一网段内进行转发时,只需要OF交换机组件对其进行处理即可,遵循OpenFlow网络现有的工作流程[5].但当在OF交换机处理数据包跨网段时,则另需要OpenFlow路由组件提供路由计算功能,选出最佳路径,然后通过控制器下发命令,才能完成流表的最终转发.针对这种相对复杂的状况,本文基于RouteFlow平台,搭建如图5所示的跨网络通信拓扑图.设计实现主机H1(172.16.1.2/24)到H4(172.16.4.2/24)的跨网段通信.
图3 RouteFlow结构概念图Figure 3 Architecture concept of the RouteFlow
图4 RouteFlow平台逻辑图Figure 4 Logical diagram of the RouteFlow platform
图5 实验拓扑图Figure 5 Experiment topology
根据底层OF交换机接口的数量,对应关系以及IP地址,打开并配置虚拟机相应的接口MAC、虚拟机端口以及端口对应的IP等,具体配置如下表1.主机H1到H4的跨网段具体通信过程如下:
1)对于主机H1到H4的ICMP数据包,OF交换机S1在收到后,首先进行OpenFlow封装,主要包含目的IP(172.16.4.2)和原IP(172.16.1.2)等信息,然后发送给POX控制器(10.132.100.16).
2)RFProxy收到该ICMP数据包,由于该报文中包含了dp_id=1和dp_port=1等信息,与本身维护的映射关系表进行对比后通过OVS端口发送给虚拟路由器rfvmA.
3)rfvmA接收到来自OVS端口发送来的报文后,首先改变原先的路由表,然后将该ICMP数据包再发送出去.当RFProxy收到发送来的ICMP报文后,再通过查找本身维护的映射关系表,重定向到对应OF交换机S1的端口.
4)由于之前虚拟路由器rfvmA的路由表发生了更改,于是RFClient会监听到这些变化并翻译成对应的流表规则,构造出RouteFlow消息并发送给RFServer.
5)RFServer收到该RouteFlow消息后,通过RFProxy发送给对应的S1.此时S1中会出现一条新的流表,在该流表中,S1端口1的源mac地址被修改成S1端口2的mac地址,并增加下一跳S2端口2的mac地址,从S1出端口(output:2)发出.
6)在接下来的报文中,由于此时S1中已有重定向的流表,所以先匹配这些流表,然后发送到S2中,不需要再将协议包发送给控制器.S2到S4也是相同的道理,最终该ICMP报文到达H4.
3 系统实现与分析
3.1 流表的方向
在图6可以看到,去往172.16.4.0/24有两条链路,它们分别是:H1→S1→S2→S4→H4和H1→S1→S3→S4→H4.下面以第一条链路为例,分析其具体的通信过程:
1)在OF交换机S1上,将源mac地址dl_dst=08:11:11:11:11:11,修改成S1端口2的mac地址并增加下一跳S2端口2的mac地址,从S1出端口(output:2)发出.
2)接着在S2中,将从S1端口2接收的mac地址dl_dst=08:22:22:22:22:22,改为S2端口3的mac地址并增加下一跳S4端口2的mac地址,从S2的出端口(output:3)发出.
3)最后在S4上,将从S2端口3接收到的源mac地址dl_dst=08:08:42:42:42:42:42,修改成S4端口1的mac地址并增加下一跳h4的mac地址,从S4出端口(output:1)发出,最终达到H4.
3.2 路由表与路由路径
由图7可以分析出路由条目24.2.2.0/24、34.3.3.0/24、172.16.4.0/24等都是虚拟路由器rfvmA通过OSPF路由协议学习得到,表明虚拟路由器rfvmA已建立路由表,并能正常工作.另外,在图7中,还可以看出rfvmA去往172.16.4.0/24网段需要经过S1的eth2端口(12.1.1.2)或者eth3端口(13.1.1.3).
图6 H1 ping H4 过程中OF交换机的流表方向Figure 6 Flow table of OpenFlow switches after H1 ping H4
图7 虚拟路由器rfvmA中的路由条目Figure 7 Route table of virtual router rfvmA
图8中可分析得到,数据包去往172.16.4.0/24一共有两条路径,分别是:12.1.1.2→24.2.2.4→172.16.4.2与13.1.1.3→34.3.3.4→172.16.4.2.
图8 H1去往H4的路径Figure 8 The path of H1 to go to H4
综合以上实验数据表明,数据平面中的OF交换机的流表项走向与其对应的虚拟路由器中的路由走向是完全一致,都是沿着H1→S1→S2→S4→H4或者H1→S1→S3→S4→H4.说明数据平面通过来自POX控制器下发的路由策略来对流量进行处理,使OF交换机拥有了路由转发的能力.
3.3 系统的整体性能
在两台系统为Ubuntu 12.04的虚拟机中安装流量监测工具sFlow,该工具由sFlow Agent和sFlow Collector两部分组成.Agent作为客户端,将获取到的接口统计信息和数据信息封装成sFlow报文,发送到指定的Collector中,由Collector负责对sFlow报文的分析和汇总,生成流量报告.分别在已部署RouteFlow平台的虚拟机VM1中安装sFlow Collector,在已安装Mininet(支持OpenFlow1.0协议)的虚拟机VM2上安装sFlow Agent.具体情况如图9.
图9 系统性能测试图Figure 9 System performance test
依次选取8、64、128、256、512、1 024、2 048和4 096 字节大小的8种数据包来检测网络的吞吐量状况.由图10可看到,当OpenFlow网络开启路由功能时,系统的吞吐量会有一定的影响,但是影响是有限的,所以总体来说系统性能较为稳定.
图10 系统的吞吐量测试Figure 10 System throughput test
4 结 语
软件定义网络技术具有广阔的应用前景,是下一代网络技术发展的新方向.路由功能对一个网络的运行和扩展都至关重要.鉴于目前SDN网络实现路由功能不理想,本文通过设计,解决了在SDN环境下,不同网段间主机的通信问题,使SDN网络实现路由转发功能.实验结果表明,当整个系统开启路由功能时,不仅保证了流量可以在不同网段间成功转发,而且还能保持较为稳定的性能.
[1] 左青云,陈鸣,赵广松,等.基于OpenFlow的SDN技术研究[J].软件学报,2013,24(5):1078-1094. ZUO Q Y,CHENG M,ZHAO G S, et al.Research on OpenFlow-based SDN technologies [J].Journal of Software,2013,24(5):1078-1094.
[2] 黄韬,刘江,赵广松,等.未来网络体系架构研究综述[J].通信学报,2014,35(8):184-197. HUANG T, LIU J, ZHAO G S, et al. Survey of research on future network architectures[J]. Journal on Communications,2014,35(8):184-197.
[3] MCKEOWN N, ANDERSON T,BALAKRISHNAN H,et al.OpenFlow: Enabling innovation in campus networks[J].ACM SIGCOMM Computer Communication Review,2008,38(2):69-75.
[4] 侯长逸.OpenFlow网络软件路由研究[J].兰州大学学报(自然科学版),2013,49(2):260-263. HOU C Y.Research on the routing mechanism in Open Flow networks[J].Journal of Lanzhou University (Natural Sciences),2013,49(2):260-263.
[5] 邓书华,卢泽斌,罗成程,等.SDN研究简述[J].计算机应用研究,2014,31(11):3208-3213. DENG S H,LU Z B,LUO C C,et al.Outline of software defined networking[J].Application Research of Computers,2014,31(11):3208-3213.
[6] 张朝昆,崔勇,唐翯祎,等.软件定义网络(SDN)研究进展[J].软件学报,2015,26(1):65-76. ZHANG C K,CUI Y,TANG H Y,et al.State-of-the art survey on software-defined networking(SDN)[J].Journal of Software,2015,26(1):65-76.
[7] 吴许俊,王永利.基于POX的软件定义网络平台的研究与实践[J].计算机测量与控制,2013,21(12):3414-3417. WU X J,WANG Y L. Research and practices of software defined network based on POX[J]. Computer Measurement & Control,2013,21(12):3414-3417.
[8] 曾珊,陈刚,齐法制.软件定义网络性能研究[J].计算机科学,2015,42(6A):243-248. ZENG S,CHEN G, QI F Z. Survey on performance of software defined networking[J]. Computer Science,2015,42(6A):243-248.
[9] Open Networking Foundation(ONF).OpenFlow Switch Specification[EB/OL].(2017-03-02) [2014-12-19]. https://www.openetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-switch-v1.5.0.pdf.
[10] 张俊帅,杨昊.OpenFlow交换机流表转发设计与实现[J].中国计量学院学报,2015,26(3):316-323. ZHANG J S,YANG H.Design and implementation of OpenFlow switch flow table forwarding [J].Journal of China University of Metrology,2015,26(3):316-323.
[11] MARCELO R,CHRISTIAN E,MARCOS R,et al. Virtual routers as a service: the RouteFlow approach leveraging software-defined networks[C]//Proceedings of the 6th International Conference on Future Internet Technologies.Seoul:ACM,2011:34-37.
[12] 蒋浩海,黄小红.基于OpenFlow平台的路由实验研究与实现[J].小型微型计算机系统,2015,36(10):2300-2304. JIANG H H,HUANG X H.Research and implementation of network experiment based on OpenFlow platform[J].Journal of Chinese Computer Systems,2015,36(10):2300-2304.
Design and implementation of routing in SDN network environment
REN Huan, ZHOU Hangxia
(College of Information Engineering, China Jiliang University, Hangzhou 310018, China)
As a new type of network architecture, software defined network (SDN) can separate the data and control planes. Aiming at the problem that the SDN network can not provide the routing service, this paper proposed an openflow protocol-based method of implementing the routing and forwarding function for SDN. This solution relied on the RouteFlow platform. It was based on LXC and took Quagga as a routing engine. It provided the logic control strategy of routing by the OpenFlow controller. The experimental result shows that this solution can help the SDN network realize the function of routing forwarding and can also ensure the stable performance of the system.
software defined network; routing forwarding; OpenFlow; RouteFlow platform
2096-2835(2017)02-0219-07
10.3969/j.issn.2096-2835.2017.02.014
2017-03-02 《中国计量大学学报》网址:zgjl.cbpt.cnki.net
任欢(1989-),男,安徽省六安人,硕士研究生,主要研究方向为软件定义网络、网络虚拟化. E-mail: nokia_hp@163.com 通信联系人:周杭霞,女,教授.E-mail:zhx@cjlu.edu.cn
TP393
A