APP下载

OpenFlow 软交换机的性能测量

2013-09-20蒋培成

关键词:表项流表哈希

蒋培成,陈 鸣,李 兵

(中国人民解放军理工大学指挥信息系统学院,江苏 南京 210007)

0 引言

OpenFlow概念由美国斯坦福大学Nick McKeown教授首先提出,是斯坦福大学Clean Slate计划资助的一个开放式协议标准,后成为 GENI[1]计划的子项目。OpenFlow能为校园网络研究人员设计其创新网络提供真实的试验平台,目前OpenFlow技术的研究进展已经引起学术界和产业界的广泛关注,以开放软件模式的控制平面替代了传统的基于系统嵌入的控制平面,由软件驱动的中央控制结点来自动化控制整个网络,简化了网络的配置模式,增加了网络控制权的开放性,在某种程度上符合未来互联网的发展需求[2]。

OpenFlow交换机的实现方式主要有2种:一种是基于硬件的 OpenFlow交换机,另一种是基于Linux的PC运行OpenFlow软件的交换机[3]。由于当前OpenFlow标准仍在不断完善,支持OpenFlow标准的硬件交换机较少,而且OpenFlow软件交换机相对于硬件交换机成本更低、配置更为灵活,其性能基本可以满足试验网络以及中小型规模的Open-Flow网络的要求,因此OpenFlow软件交换机依然是当前进行OpenFlow研究以及构建试验平台与中小型OpenFlow网络的首选。各种实现方式的Open-Flow交换机及其性能对比,如表1所示。

表1 各种OpenFlow交换机参数对比Tab.1 Many kind of OpenFlow switches parameters contrast

当前,对于OpenFlow的研究主要集中在2方面:1)研究如何提高控制平面的规模、可靠性和可扩展性,比如 DIFANE[4],Onix[5],DevoFlow[6]和 HyperFlow[7]等;2)研究如何提高数据平面的性能,比如文献[8]设计实现了一种应用于校园网高速路由的OpenFlow交换机,文献[9]提出了一种提高OpenFlow软交换机转发性能的架构,文献[10]采用基于网络处理器的硬件加速卡来实现OpenFlow交换机,从而提高性能。对于OpenFlow交换机的性能测量分析,同样是研究OpenFlow数据平面性能的一个重要方面,Bianco等在文献[11]中对OpenFlow交换机的二层转发和三层路由转发的性能进行了对比分析,结果证实了OpenFlow交换机高效的性能,但未对其劣势进行分析。

OpenFlow交换机是当前研究管控分离架构和部署中小型试验网络的关键设备,本文对管控分离的架构和OpenFlow交换机的工作原理进行了分析,并对OpenFlow软交换机的性能进行了测量分析。OpenFlow软交换机的软件为开源软件,我们开展未来互联网研究时,需要OpenFlow交换机来搭建未来互联网试验环境,OpenFlow软交换机因易于部署实施并能够自行修改增加所需功能,往往是研究中的首选。尽管此时对交换机的性能要求都不会很高,然而采用OpenFlow软交换机的性能对于部署试验网络规模和评价新型应用仍是一个无法忽略的重要因素。不过,目前相关研究的文献很少。本文对OpenFlow1.0.0版本软件交换机进行了分析,并用网络测量对软交换机进行了研究。本文研究对理解OpenFlow交换机的工作原理、性能参数及其部署OpenFlow网络有指导作用。

1 OpenFlow交换机的工作过程

1.1 处理分组的过程

OpenFlow交换机拥有一个或多个流表,流表中包含多个流表项,每个流表项都包含匹配规则、操作和计数这3个部分。其中匹配规则由包括输入端口、源介质访问控制(media access control,MAC)地址、目的MAC地址、以太网类型、虚拟局域网(virtual local area network,VLAN)号、VLAN 优先级、源 IP地址、目的IP地址、协议类型、IPv4的差分服务标识(differentiate services code point,DSCP)、源端口和目的端口在内的用来匹配分组头部信息的12元组组成,操作部分记录着对分组的一系列处理动作,计数部分是对该流表项所匹配过的分组数量及比特的统计。

当一个分组到达OpenFlow交换机时,该分组的头部信息被提取出来并被用来与流表项进行匹配,如果交换机的流表中不存在与该分组匹配的流表项,则该分组的全部或部分被转发到控制器,并由控制器来决定如何对该分组或者此类流进行处理;如果该分组与交换机中的流表项匹配成功,OpenFlow交换机将会按照所匹配的流表项的操作字段的内容对分组进行转发处理。OpenFlow交换机对于到达分组的处理流程如图1所示。

图1 OpenFlow交换机对到达分组的处理流程Fig.1 Process of OpenFlow switches to reach packet

1.2 流表的实现方式

OpenFlow交换机中主要存在2种类型的流表:线性表和哈希表。当向OpenFlow交换机中插入一条流表项时,如果流表项中用来匹配分组的12元组信息都含有一个确定的值,那么这条流表项将先插入到哈希表中,在哈希表满的情况下才会向线性表中插入;然而,如果12元组中某些字段是以通配符的方式进行提供时,那么这条流表项将只能插入到线性表中。下面,就这2种表的工作原理进行分析。

1.2.1 线性表

线性表是以链表的形式构造的,当查找时需要遍历整个表,因此存在于这条链表上的流表项可以含有通配符,同时考虑遍历所带来的效率问题,线性表的长度一般不会太长。对线性表查找的时间复杂度为O(n)。

1.2.2 哈希表

由于在对哈希表进行查找时,需要对确切的分组的12元组信息进行哈希运算,因此存储在哈希表中的流表项也必须含有确切的12元组信息。为了解决哈希表项碰撞问题,一般在流表中会存在一个以上的哈希表。对哈希表查找的时间复杂度为O(1)。

当一个分组到达OpenFlow交换机时,流表的查询算法如下。

2 测量OpenFlow软件交换机的性能

2.1 网络测量环境

为了在网络测试中产生逼真的网络流量,我们使用思博伦公司的高性能流量发生器Spirent Test-Center 3.60来产生数据流,以满足高速、逼真的试验数据流要求,OpenFlow交换机处于流量发生器的闭合环路中间并与控制器直接相连。进行网络测量的试验网络的拓扑如图2所示。

图2 测量平台拓扑Fig.2 Topology of Measurement platform

该测量环境中相关的设备的参数如表2所示。

试验采用的是基于Linux平台下OpenFlow1.0.0版本的OpenFlow软件交换机,在该版本的交换机中存在1个线性表和2个哈希表,其中线性表的流表项容量为100,每个哈希表的流表项容量为64 K(即64 000)。在测量吞吐量的试验中,为了反映出OpenFlow交换机在最大压力下的性能,OpenFlow交换机最大长度为100的线性流表和128 K(即128 000)的哈希流表在进行吞吐量试验之前被全部填满,从而也保证了分组到达OpenFlow交换机后会直接查询流表并按照规则转发,而无需向NOX控制器请求。

表2 测量环境中相关设备的参数Tab.2 Related equipment parameters of Measurement environment

利用Spirent流量发生器自身双CPU的特点,试验中流量发生器同时在端口a和d上分别充当服务端和客户端;OpenFlow交换机在端口b和c上接收、转发分组,通过端口e和线路C与控制器进行交互;NOX控制器运行一种测量组件Measure,该测量组件采用Python语言开发,目的是测量OpenFlow交换机与控制器的交互情况,控制器在端口f上与OpenFlow交换机交互。通过对Spirent流量发生器进行配置,使其产生的分组首部12元组信息能够映射到OpenFlow交换机的128 K+100(即128 000+100)的流表项的匹配规则。同时Spirent流量发生器本身具有分组的实时发送速率、吞吐量和丢包率等性能参数的测量功能,因此试验中的部分参数可通过Spirent流量发生器获得。

2.2 测量吞吐量

考虑到TCP和UDP的传输机制不同,我们分别对OpenFlow的TCP吞吐量和UDP吞吐量进行了测量。

2.2.1 TCP 吞吐量

流量发生器在端口a上通过线路A向Open-Flow交换机的b端口发送分组长度为1 480 Byte的TCP报文,OpenFlow交换机在端口b上接收到TCP报文后会根据预先插入的流表项规则通过端口c和线路B向流量发生器的端口d转发TCP报文段。共进行了10次测量,每次测量持续60 s,测量结果如图3所示。

图3 OpenFlow交换机的TCP吞吐量Fig.3 TCP throughput of OpenFlow switch

图3中的纵轴是TCP的吞吐量,横轴是测量轮回。从图3可见,测量得到OpenFlow交换机的TCP吞吐量维持在450 Mbit/s左右,最大吞吐量没有超过500 Mbit/s。同时由于500 Mbit/s的速率远小于测量环境中其他设备的最大负载,因此可以得知,测量环境中的性能瓶颈在于OpenFlow交换机上,测量得到的数据是真实的TCP吞吐量。

2.2.2 UDP 吞吐量

测量UDP吞吐量的步骤同TCP,Spirent流量发生器向OpenFlow交换机发送UDP报文段,Open-Flow交换机根据流表项转发UDP报文段。试验中,UDP的发送速率从100~800 Mbit/s变化,共进行了12组试验,每组试验持续60 s,测量OpenFlow交换机在每一组负载流量速率下的吞吐量和丢包率。此次测量结果如图4所示。

图4 不同负载流量下的UDP吞吐量和丢包率Fig.4 UDP throughput and packet loss rate under

通过图4可见,当UDP分组负载流量速率在500 Mbit/s以下时,OpenFlow交换机的UDP吞吐量与负载流量速率几乎相等,丢包率也非常小;当UDP负载流量速率超过500 Mbit/s时,OpenFlow交换机的UDP吞吐量维持在500 Mbit/s左右,丢包率迅速升高。

这是由于OpenFlow交换机查找流表并转发UDP报文段的最大速率在500 Mbit/s左右,当负载流量速率超过500 Mbit/s时会导致大量的UDP报文段在OpenFlow交换机的缓冲队列中排队并最终导致队列溢出而被丢弃。

2.3 分组长度对交换机吞吐量的影响

试验中,通过传输不同分组长度的UDP报文段来研究分组长度对OpenFlow交换机吞吐量的影响。由Spirent流量发生器产生速率520 Mbit/s的UDP报文段,该值为本试验中所采用的极限吞吐量,报文段长度在100—1 480 Byte变化。共进行12组测量,每组测量持续60 s,测量OpenFlow交换机在每一组分组大小下的吞吐量和分组转发率。测量结果如图5所示。

图5 不同分组长度下的吞吐量和转发率Fig.5 Throughput and the forward rate of different packet length

通过图5可以看出,随着分组长度的增大,OpenFlow交换机的吞吐量逐渐增大;当分组长度在200 Byte以下时,OpenFlow交换机的吞吐量在50 Mbit/s以下;当分组长度超过 1 100 Byte时,OpenFlow交换机的吞吐量超过450 Mbit/s。在另一方面,OpenFlow交换机的分组转发率始终维持在20 000分组/s的速率左右,波动幅度不是很大。

出现上述结果是因为当负载流量不变时,分组越小必然导致分组到达率越高,分组到达率越高,就会对OpenFlow交换机的CPU产生更大的负载。由于CPU的处理能力是一定的,从而导致了OpenFlow交换机的吞吐量下降的趋势。然而,交换机对分组的转发率却能维持在一个稳定值的左右。

2.4 “传输中的”分组对性能的影响

OpenFlow交换机中控制平面与数据平面分离的机制决定了OpenFlow交换机与控制器之间存在着交换机状态不确定的情况。因为在OpenFlow交换机插入某个流表项之前,可能会有类似的分组到达OpenFlow交换机,此时,这些处于“传输中的(on the fly)”分组会以未知流的身份持续向控制器进行转发。如果控制器没有一定的容错能力有可能会引起网络故障,并且这些分组的数量较大时就会对控制器及网络产生较大压力,影响它们的工作效率。特别是因为UDP没有“3次握手”的建立连接过程,这导致了UDP在OpenFlow网络中创建流表的过程的效率比TCP的相应过程要低得多。例如,对于大流量的多媒体数据传输而言,过多的“传输中的”UDP报文可能会淹没控制器。我们将对这个问题进行研究。

在试验中,OpenFlow交换机中的流表不预先置入任何流表项,因此当某分组到达交换机后会向NOX控制器进行转发。NOX控制器利用Measure测量组件来处理OpenFlow交换机转发来的分组,并按照转发策略向OpenFlow交换机中插入流表项,使该分组拥有相同12元组首部信息的分组向端口c转发。

由Spirent流量发生器产生速率为520 Mbits/s的UDP报文,所产生的UDP报文的12元组头部信息必须保持一致,分组长度在480—1 480 Byte变化,我们进行11组测量,每组测量持续60 s,同时利用NOX控制器端的Measure测量组件对重复到达的相同的UDP报文进行统计分析,得到“传输中的”UDP报文的数量。图6显示了试验统计结果。

通过图6可以看出,随着UDP分组长度的增大,“传输中的”UDP报文的数量逐渐降低;当UDP分组长度小于1 180 Byte时,“传输中的”UDP报文数量在100以上;当UDP分组长度小于580 Byte时,“传输中的”UDP报文数量在300以上。这些重复的“传输中的”报文会导致NOX控制器重复处理相同的报文,OpenFlow交换机中会重复插入该处理流表项,给控制器和OpenFlow交换机带来性能压力。

图6 不同分组长度下的中间时刻分组数量Fig.6 Packet number of middle time under different packet length

3 结束语

OpenFlow软交换机是搭建中小型未来互联网技术研究试验网络的关键设备。本文对OpenFlow交换机的工作过程进行了分析,并对OpenFlow软交换机的性能进行了测量分析。测量结果表明,无论对TCP流还是UDP流,OpenFlow软交换机都具有良好的性能,能够满足搭建中小型试验网络的要求;如果有大量的短分组,其吞吐量也会明显下降;为高速率UDP流建立表项的过程,也会降低系统效率。本文工作对深入理解OpenFlow交换机的工作过程,以及利用OpenFlow软交换机构建OpenFlow网络有指导作用。下一步,将研究1.1.0版本的OpenFlow软交换机工作过程并测量其对性能的影响。

[1]ELLIOTT C.GENI:Opening up new classes of experiments in global networking[J].IEEE Internet Computing,2010,14(2):39-42.

[2]MCKEOWN N,ANDERSON T,BALAKRISHNAN H,et al.OpenFlow:Enabling Innovation in Campus Networks[C]//ACM.Proceeding of SIGCOMM.New York:ACM Press,2008:69-74.

[3]HELLER Brandon.OpenFlow Switch Specification 1.0.0[EB/OL].(2009-12-13)[2012-11-20].http://www.openflow.org/documents/openflow-spec-v1.0.0.pdf.

[4]YU M,REXFORD J,FREEDMAN MJ,et al.Scalable Flow-Based Networking with DIFANE[C]∥ACM.Proceeding of SIGCOMM.New York:ACM Press,2010:351-362.

[5]KOPONEN T,CASADO M,GUDE N,et al.Onix:A Distributed Control Platform for Large-scale Production Networks[C]//USENIX.Proceeding of Operating Systems Design and Implementation(OSDI).CA USA:USENIX ASSOCIATION BERKELEY,2010:1-14.

[6]MOGUL J,TOURRILHES J,YALAGANDULA P,et al.DevoFlow:Scaling Flow Management for High-Performance Networks[C]//ACM.Proceeding of SIGCOMM.New York:ACM Press,2011:254-265.

[7]TOOTOONCHIAN A,GANJALI Y.HyperFlow:A Distributed Control Plane for OpenFlow[C]//USENIX.Proceeding of INM/WREN,CA USA:USENIX ASSOCIATION BERKELEY,2010:21-34.

[8]ROSTAMI A,JUNGEL T,KOEPSER A,et al.ORAN:OpenFlow Routers for Academic Networks[C]//IEEE.Proceeding of HPSR.Belgrade:IEEE Press,2012:216-222.

[9]TANYINGYONG V,HIDELL M,SJODIN P.Improving PC-based OpenFlow Switching Performance[C]//ACM.Proceeding of ANCS.New York:ACM Press,2010:113-118.

[10]LUO Y,CASCON P,MURRAY E,et al.Accelerating OpenFlow Switching with Network Processors[C]//ACM.Proceeding of ANCS.New York:ACM Press,2009:70-71.

[11]BIANCO A,BIRKE R,GIRAUDO L,et al.OpenFlow Switching:Data Plane Performance[C]//IEEE.Proceeding of ICC.New York:IEEE Press,2010:1-5.

猜你喜欢

表项流表哈希
基于匹配动作表模型的可编程数据平面流表归并
一种改进的TCAM路由表项管理算法及实现
文件哈希值处理一条龙
基于时序与集合的SDN流表更新策略
基于ARMA模型预测的交换机流表更新算法
简析yangUI流表控制
软件定义网络中一种两步式多级流表构建算法
SDN数据中心网络基于流表项转换的流表调度优化
基于OpenCV与均值哈希算法的人脸相似识别系统
巧用哈希数值传递文件