APP下载

基于OpenFlow的SDN架构研究与仿真分析

2016-12-26翔,王

电子科技 2016年12期
关键词:流表表项交换机

邱 翔,王 宇

(空间无线电技术研究院 神州学院,陕西 西安 710000)



基于OpenFlow的SDN架构研究与仿真分析

邱 翔,王 宇

(空间无线电技术研究院 神州学院,陕西 西安 710000)

随着网络设备支持协议的增多,变得日趋复杂,难以满足多元化网络服务的需求。软件定义网络(SDN)是一种新型网络架构,其以控制面与数据面分离为主要特征,简化了网络设备,并提供了编程接口,使得网络更加灵活、高效。文中在研究了SDN架构与其主要实现方式OpenFlow技术的基础上,搭建了基于Mininet与POX的仿真平台,在该环境下研究OpenFlow的流表产生与下发过程,分析其通信流程,验证了软件如何“定义网络”。

SDN;OpenFlow;Mininet;POX

随着网络规模的扩大与应用类型的不断增加,网络正变得越来越复杂与臃肿。对于不同厂商的网络设备,其中运行着各自不同的封闭的控制软件,有各种不同的专用接口,在这种控制软件与底层硬件紧紧耦合在一起的环境中,难以进行基于真实流量的大规模网络创新实验。因此网络急需变革[1-2]。这种情况下,软件定义网络(SDN)的概念应运而生[3-4]。软件定义的网络是一种新型的网络体系结构,通过将网络控制与网络转发解耦合构建开放可编程的网络体系结构。本文在研究SDN架构与OpenFlow[5]技术的基础上,搭建了用于研究的仿真平台,通过仿真平台研究了OpenFlow通信流程与流表的原理。

1 SDN架构

SDN核心思想是通过管控软件化、集中化,使网络变得更加开放、灵活、高效。其最主要的特征就是将网络的数据转发与控制功能解耦和,形成数据层面与控制层面,即将网络设备如路由器中的软件控制的功能剥离,使底层网络设备仅仅具有数据的转发功能,而将网络的各种控制工作全部交给控制层面。在控制层面中通过开发的API接口来开发各种应用。SDN的核心架构如图1所示[6]。

数据层面负责数据的转发工作,网络设备根据控制层下发的转发规则进行转发。控制层是SDN的核心层,一般表现为一个软件平台,其享有对数据层的网络设备的集中的控制权,其算法、逻辑、规则均可配置。通过控制层面开放的API可以开发用户所需要的各种功能。

图1 SDN核心结构

作为一种概念,SDN并没有规定实现的途径,目前也没有一个统一的实现标准。而作为引出SDN概念的OpenFlow技术,以其良好的灵活性、规范性已被看作SDN 通信协议事实上的标准,类似于TCP/IP 协议作为互联网的通信标准。该实现方案主要由OpenFlow交换机与控制器两部分组成。OpenFlow 交换机根据流表来转发数据流,代表着数据转发平面;控制器通过全网络视图来实现管控功能,其控制逻辑表示控制平面。

2 OpenFlow技术

在当前所有SDN实现方式之中,OpenFlow是应用广泛,技术上也是相对成熟的一种。OpenFlow起源于斯坦福大学的Clean Slate[7]项目组。OpenFlow当初被提出来是为了方便在校园网中进行网络创新实验活动[8]。

OpenFlow架构包括控制器,OpenFlow交换机与安全通道,如图2所示[9]。

OpenFlow交换机负责数据转发功能, OpenFlow 的交换机包括一个流表,执行分组查找和转发,和到一个外部控制器的OpenFlow通道。

图2 OpenFlow架构

安全通道是连接OpenFlow 交换机和控制器的接口,控制器通过这个接口,按照OpenFlow 协议规定的格式来配置和管理OpenFlow 交换机。

控制器使用OpenFlow 协议,通过安全通道,使用OpenFlow协议定义的标准信息可以添加、更新和删除流表中的表项,主动或者被动响应数据包。在交换机中的每个流表中包含的一组流表项;每个流表项包含匹配字段,计数器和一组指令,用来匹配数据包。

流表是OpenFlow交换机中的匹配规则,类似于路由器的路由表,每个流表由多条流表项组成,一个流表项包括一个头域,一个动作集与一组计数器,其结构如图3所示。

头域含12 个字段,包括:进入接口,Ethernet源地址、目标地址、类型,vlan id,vlan 优先级,IP 源地址,目标地址,IP协议类型,IP ToS 位,TCP/UDP 目标端口,源端口。通过这些字段OpenFlow交换机可以匹配目前网络中的大部分数据包,从而OpenFlow网络已经淡化了层的概念,相应的也淡化了路由器与交换机的概念,从链路层到传输层的各种数据包都可以正确地匹配转发,在OpenFlow网络中转发设备统称为OpenFlow交换机。

图3 流表结构

动作域包含了一系列动作,包括转发、修改、丢弃等,当进入交换机的数据包经过解析与头域中字段匹配成功后,便会执行动作字段指定的动作。如果没有动作,则默认为丢弃。多个行动的执行需要依照优先级顺序依次进行,但对包的发送不保证顺序,另外交换机可以对不支持的行动返回错误。

计数器可以针对交换机上每张流表(Per Table)、每个流(Per Flow)和每个端口(Per Port)以及每个队列(Per Queue)上个特殊信息进行维护,用于统计流量的部分信息,例如活动表项数、查找次数、发送报文数、接收报文数、出错报文数等。计数器为众多统计信息进行计数,并提供特定容量的计数器。特定的容量用不同长度的位数进行量化。

Openflow匹配流程为:当数据包进入OpenFlow交换机后,交换机提取数据包头部字段,与流表中各流表项进行匹配,如果匹配成功,则根据后面的动作集执行相应操作;如果匹配失败,则交换机会将数据包的部分或者全部发送给控制器,由控制器决策。

3 仿真平台搭建与仿真分析

3.1 搭建仿真平台

研究SDN的环境通常由开源的软件包搭建[10-15],目前应用比较广泛的主要是Mininet这款轻量化的开源软件,搭载一个优良的控制器从而组成便于研究的SDN环境,本文选用POX控制器。在该环境中,Mininet软件负责生成需要研究的网络拓扑结构以及生成的网络结构中各个交换机、主机以及链路的相关参数的设定,如交换机的dpid、主机的Mac地址等,POX控制连接到Mininet生成的网络,通过POX上预留的API开发相应的组件以达到预期目的。

安装完成后,首先启动Mininet,通过启动参数设定控制器为远程控制器,Mininet会生成一个包含一台交换机与两台主机的网络拓扑,然后启动POX控制器,根据Mininet与POX界面打印出的信息可以得知Mininet与POX已经正确连接。

3.2 仿真分析

在仿真环境下,通过POX的开放接口,编写一个组件,以研究流表的生成与下发以及OpenFlow网络的工作原理[15]。仿真分析用的拓扑结构如图4所示,该拓扑结构包含一台OpenFlow交换机s1与两台主机H1与H2,H1与H2的IP与MAC设置如图4所示。

在POX中编写的组件定义的规则为:

If desmac is broad:

Flood

Elseif desmac is h1:

Forward to port 1

Elseif desmac is h2:

Floward to port 2

Other

Pass

图4 实验用网络拓扑

启动POX与Wireshark,启动Mininet,待控制器与交换机经过3次握手建立稳定的TCP连接后,查看Wireshark界面,可以看到交换机与控制的定时的of_ehco_request与of_ehco_reply信息,该消息是为了保持交换机与控制器之间的连接。

这时候交换机与控制器建立连接,没有任何数据进入交换机,因此交换机内部的流表此时为空。

在Mininet界面内,令H1pingH2,查看Wireshark中的信息。

图5 Wireshark抓包结果

该操作的整个流程为:

(1) 从H1执行ping操作,首先H1会查询自己的ARP表,发现没有没有目的地址H2即10.0.0.2的MAC地址,于是H1会先缓存ping数据,先向全网络广播一个ARP数据包以寻找H2的MAC地址,ARP数据包进入交换机,OpenFlow模块会解析数据头域;此时交换机中无流表项,触发packet_in事件,即图5中403行,其详细信息如图6(a),可见这是一个广播的ARP请求包;

(2) 控制器解析该数据包之后,判断为一个广播包,控制器根据提取出的文件包的源MAC,目的MAC,源IP地址与目的IP地址等,通过of.ofp_flow_mod()方法生成一个添加流的消息,其匹配规则就是数据包提取出的各项匹配字段,设置其软超时与硬超时均为0,表示该流表不会自动删除,定义其动作为泛洪,然后按照OpenFlow协议封装该信息,通过packet_out事件发送往交换机,交换机将该条规则安装到自己的流表中,按照该条规则,泛洪广播包。即图5中的第404行的flow_add事件,详细信息如图6(b)所示;

图6 packet_in事件与流表下发

(3)H2收到该广播包后发现自己的MAC地址符合要求,于是发送以H1地址00:00:00:00:00:01为目的地的ARP-reply的应答包,而此时交换机中没有对应的匹配条目,于是再次触发packet_in事件,而根据控制器中组件中的规则,判断出其目的地址为H1的MAC地址后,控制器下发流规则,更新流表,即再次触发flow_add事件;

(4)H1收到H2的ARP应答之后获得H2的MAC地址,添加H2的MAC地址后发送封装好的ICMP报文,同样进入交换机经过解析再次触发packet_in事件,在Wireshark中查看其详细信息,可以看到这是一个ICMP协议的ping请求;

(5) 交换机再次将数据包发送到控制器,然后控制器添加流规则,下发流表,定义其转发到H2,H2收到ICMP报文后,也发送一个应答,同样经过packet_in与flow_add之后发送到H2,这时一个ping的通信流程已经完成。同时,交换机中增加了相应的流表。

在Mininet中再次进行H1pingH2,会发现此次所用的时间比第一次大幅度减少,这是因为交换机中已经存在对应的流表项,可以直接对数据进行处理而无需触发packet_in事件也无需控制器再下发流表,因此时间大幅缩短。

图7 交换机中增加的流表项

4 结束语

SDN架构以数据面与控制面分离为特征,是一种集中式的网络,具有更大的灵活性,作为当前SDN架构主要实现方式的OpenFlow技术也成为了研究的热点。介绍了SDN架构与OpenFlow技术,基于Mininet与POX搭建了研究OpenFlow的仿真平台,研究了OpenFlow中流表的生成与下发机制,以及控制器对底层网络的可控制编程操作,体现了网络的“软件定义”,从而为下一步的开发研究提供了参考。

[1] Nick F, Jennifer R, Ellen Z. The road to SDN: an intellectual history of programmable networks[J]. ACM SIGCOMM Computer Communication Review, 2014, 44(2): 87-98.

[2] 王文东,胡延楠.软件定义网络:正在进行的网络变革[J].中兴通讯技术,2013(1):39-43.

[3] 张顺淼,邹复民.软件定义网络研究综述[J].计算机应用研究,2013,30(8):4-6.

[4] 邓书华,卢泽斌,罗成程,等. SDN 研究简述[J].计算机应用研究,2014,31(11):3208-3213.

[5] Nick Mc Keown, Tom Anderson, Hari Balakrishnan, et al. OpenFlow: enabling innovation in campus networks [J]. ACM SIGCOMM Computer Communication Review, 2008, 38(2):69-74.

[6] Open Networking Foundation. Software-defined networking: the new norm for networks[M].USA:ONF White Paper, 2012.

[7] Greenberg A, Hjalmtysson G, Maltz D A, et al. A clean slate 4D approach to network control and management[J]. ACM SIGCOMM Computer Communication Review, 2005,35(5):41-54.

[8] 左青云,陈鸣,赵广松,等.基于OpenFlow的SDN技术[J].软件学报,2013,24(5):1078-1097.

[9] OpenFlow Consortium. OpenFlow switch specification v1.1.0[EB/OL].(2009-08-11)[2015-06-12] http://www.openflowswitch.org.

[10] 雷葆华,王峰,王茜,等.SDN核心技术剖析和实战指南[M].北京:电子工业出版社,2013.

[11] 尹雪蓉,宋耀光,倪巍. 云计算环境下OpenFlow网络研究与实验探索[J]. 实验室研究与探索, 2013(12): 22-25.

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

[13] 韦世红,卢威.基于OpenFlow 的未来互联网试验网[J].计算机应用系统,2013(5):21-24.

[14] 王丽君,刘永强,张健.基于OpenFlow 的未来互联网试验技术研究[J].电信网技术,2011,8(6):1-4.

[15] 赵联祥.SDN 架构下的Open Flow 原理探讨[J].电信技术, 2013(2):70-72.

Research and Simulation on SDN Architecture Based on OpenFLow Technology

QIU Xiang,WANG Yu

(China Acadeny,Xi’an Institute of Space Radio Technology,Xi’an 710000,China)

More and more protocols are added to network device which make the network more and more complex and hard to meet needs of so many services. The Software Defined Networking (SDN) is a new network architecture with the feature of control plane and data plane separated.SDN simplifies network devices and provides programmable interface so that network performs flexibly and efficiently. This paper researches the SDN architecture and its main technical method OpenFlow and establishes simulation platform with Mininet and POX; then we research the process of generation and sending of flow table and analyse communication process in OpenFlow to demonstrate how software defines network.

SDN; OpenFlow; Mininet; POX

10.16180/j.cnki.issn1007-7820.2016.12.024

2016- 02- 25

邱翔(1991-),男,硕士研究生。研究方向:计算机网络。

TN915.07;TP393

A

1007-7820(2016)12-085-04

猜你喜欢

流表表项交换机
一种改进的TCAM路由表项管理算法及实现
基于时序与集合的SDN流表更新策略
基于ARMA模型预测的交换机流表更新算法
基于缓存策略的OpenFlow流表存储优化方案研究
修复损坏的交换机NOS
简析yangUI流表控制
软件定义网络中一种两步式多级流表构建算法
使用链路聚合进行交换机互联
SDN数据中心网络基于流表项转换的流表调度优化
PoE交换机雷击浪涌防护设计