基于SDN的QoS研究
2018-03-20吕光宏
周 飞,吕光宏
(四川大学 计算机学院,四川 成都 610065)
0 引 言
随着互联网的发展,网络中的新兴应用和服务日益增多,例如一些对网络性能要求较高的新业务,如VoIP、网络直播、网络游戏和电子商务等[1]。这些应用程序和服务产生了自己的特殊流,需要网络来传输。要保证这些特殊流在网络中进行高质量传输,就必须要具体分析每项业务流的特性。例如,视频会议需要一定的带宽,VoIP等应用对网络延迟非常敏感。解决这些问题需要在网络中定义一个良好的QoS机制。然而,当今的网络只能提供best-effort的服务,不能保证流量的可靠传输。另外,现今的QoS解决方案还不能解决传统网络中的QoS问题。
软件定义网络(SDN)[2-3]是一种新兴的网络架构。在SDN架构中,控制平面和数据平面解耦,控制逻辑集中化以及实现控制逻辑可编程。这种解耦使得网络运营商更容易管理和分配网络资源。此外,SDN的可编程特性可以方便地改变网络状态。网络运营商可以方便快捷地管理、动态优化网络资源和编写自己的应用程序。
SDN控制层是逻辑集中的,所以控制器有整个网络的全局拓扑及链路状态信息,因此,它可以动态优化流量和管理资源。基于SDN的优点,每流或每应用程序的QoS实现变得非常容易。近年来,SDN得到了学术界和产业界的极大关注。
1 OpenFlow协议和SDN概述
基于OpenFlow协议[4]的SDN架构,使得网络运营商能够以细粒度的方式来控制流。在传统网络中,流量(或包)主要是对基于数据包报头单个或多个属性进行区分,如目的IP地址、目的MAC地址、TCP/UDP端口号等。在SDN架构中,可通过南向接口以更多匹配关键字来细粒度地管理流。
1.1 OpenFlow协议
OpenFlow协议是一个开放的新型网络协议,它是控制平面(控制器)和数据平面(OpenFlow交换机)相互通信的标准协议。OpenFlow交换机和控制器通过OpenFlow通道来建立连接,控制器通过OpenFlow通道下发消息来管理OpenFlow交换机以及接收并处理OpenFlow交换机发送的消息。
控制器和OpenFlow交换机之间的消息可以分为三种类型:
(1)Controller-to-Switch:控制器发送给交换机的消息,用于对交换机的管理;
(2)Asynchronous消息:由交换机主动发送给控制器的消息,该消息主要用来将网络事件或交换机状态变化更新到控制器。
(3)Symmetric消息:任何一方都可以发起,比如一些echo等握手报文等消息。
1.2 SDN控制器
如图1所示,开放网络基金会(ONF)将SDN架构[5-6]划分为三层:
图1 SDN系统架构
(1)数据平面。
数据平面由若干个网元(例如OpenFlow交换机等)构成,每个网元可以包含一个或多个SDN路径。每个SDN路径是一个逻辑上的网络设备,它没有控制能力,只是单纯用来转发和处理数据,在逻辑上代表全部或部分的物理资源。
(2)控制平面。
SDN控制器是一个逻辑上集中的实体,主要负责两个任务,一是将SDN应用层请求转换到SDN路径,二是为SDN应用提供底层网络的抽象模型。
(3)应用平面。
由若干SDN应用构成,SDN应用是用户关注的应用程序,它可以通过北向接口与SDN控制器进行交互,即这些应用能够通过可编程方式将需要请求的网络行为提交给控制器。
2 OpenFlow对QoS的支持
Openflow目前还在不断发展,本小节对不同版本的OpenFlow协议所实现的QoS功能进行分析[7]。
OpenFlow1.0:该版本中定义了用于实现QoS功能的队列支持。它有一个可选的Enqueue动作,Enqueue动作是指将数据包转发至现有的已设定好的队列中。一个OpenFlow交换机可以根据其端口拥有一个或多个队列。控制器可以查询交换机的队列信息。但是,队列的配置由Of-Config协议[8]负责。这个协议要在OpenFlow1.2以上的版本中才支持。此外,在头字段中包括VLAN优先级和IP TOS字段。
OpenFlow1.1:该版本中将1.0版本的头字段改名为“匹配字段”,并且在匹配字段中新增加了MPLS标签、MPLS流量类别字段。在1.0版本中,仅可以处理一级VLAN标签。在该版本中,实现了VLAN标签的添加、删除、变更,从而可在多级中处理VLAN标签,也可以实施QinQ。另外,也可以实现MPLS shin头的添加、删除、变更。
OpenFlow1.2:该版本中控制器能够查询到交换机中的所有队列,而且还增加了实验性扩展的队列属性;另一个与QoS相关的改进是增加了一个最大速率队列属性。此外,可以指定队列连接到端口。
OpenFlow1.3:在1.2及以前的版本中,不能在OpenFlow的框架内直接对各流进行计量,所以OpenFlow并不能直接实现QoS功能。在1.3中,添加了计量表用于流的计量。通过使用计量表对各流进行测量,可实现之前很难实现的基于OpenFlow的直接QoS功能。
如图2所示,计量表中包含多个计量表项,计量表项可附着到流表项上使用。在该版本中,新添加了一个名为Meter的指令。Meter指令将执行该指令的数据包发送至指定的计量表项中。使用一个计量表项可以统一测量和控制多个流表项的流。每个计量表项由计量ID、计量带、计数器三个要素构成,其中计量带有1个或1个以上。计量带是描述数据包如何进行处理的项目,由Band类型、计量速率(Rate)、计数器、类型参数构成。在1.3中定义的计量带类型,分为丢弃数据包的drop和改写DSCP的dscp remark两种。通过使用这些计量带,可以实现类似带宽限制的简单QoS、类似DiffServ那样与各端口的队列链接的复杂QoS框架。
图2 计量表
OpenFlow1.4:该版本提出了流量监控框架,允许控制器实时监控其他控制器对流表的任何子集所做的更改。控制器可以定义若干个监视器,每个监视器监视流表的一个子集。每个监视器包括一个表ID和一个匹配模式来定义监测子集。当流监视器对流表子集中的流表项进行添加、修改和删除时,会触发事件来告知控制器更改的实时情况。
OpenFlow1.5:将Meter指令改为Meter动作。这个改动使得多个meter可以属于一条流表项以及被使用到组桶中。
3 控制器对QoS的支持
由于OpenFlow目前不支持队列配置,队列配置是由特定的OF-CONFIG或OVSDB(open vswitch database management protocol)协议[9]来处理。OF-CONFIG和OVSDB分别是ONF和IETF制定的协议标准。虽然OVSDB已经在OVS交换机实现,但控制器还不能提供标准的队列管理。现阶段有许多开源的SDN控制器,比如Floodlight、ODL、ONOS等。
Floodlight:Floodlight是一款基于Java语言的开源SDN控制器。Floodlight的日常开发与维护工作主要由开源社区支持,其中包括部分来自BigSwitch Networks公司的工程师,同时Floodlight也是该公司商业控制器产品的核心部分。Floodlight使用了“层次化”架构来实现控制器的功能,同时提供了非常丰富的应用,可以直接在网络中部署数据转发、拓扑发现等基本功能,此外还提供了友好的前端Web管理界面。Wallner等[10]在Floodlight中加入了一个QoS模块,该模块主要对QoS进行匹配,分类,流插入、流删除和策略处理。该模块使用OpenFlow1.0的Enqueue动作和TOS字段,根据DSCP值跟踪和存储服务以及跟踪交换机中的策略。该模块还可跟踪偏移QoS策略的拓扑更新并通知给网络管理员。QueuePusher模块[11]使用OVSDB协议集成了Floodlight的北向API来生成队列配置消息。QueuePusher模块使用Floodlight公开的CRUD(创建,读取,更新,删除)API,允许外部实体来管理Open vSwitch。
OpenDaylight:OpenDaylight项目在2013年初由Linux协会联合业内18家企业创立,旨在推出一个开源的通用SDN平台。OpenDayLight项目的设计目标是降低网络运营的复杂度,扩展现有网络架构中硬件的生命期,同时还能够支持SDN新业务的新能力的创新。OpenDaylight开源项目希望能够提供开放的北向API,同时支持包括OpenFlow在内的多种南向接口协议,底层支持传统交换机和OpenFlow交换机。OpenDaylight拥有一套模块化,可插拔且极为灵活的控制器,能够被部署在任何支持Java的平台上。在2015年6月发布的Lithium版本中增加了PCMM(packet cable multimedia)协议来进行DOCSIS QoS Gates的管理。PCMM提供一个接口为CMTS网络元素控制和管理服务流。OVSDB协议用来管理和配置交换机中的队列。另外,ODL的预留模块提供动态低级的资源预留,使用户在特定时间段能获得网络服务、连接或资源池(端口、带宽)。
“人们普遍同意,空间和时间是社会构造物。”[3]93空间的社会化趋势是人类社会实践和历史发展的必然结果。社会活动即空间,是赋予空间以意义的本体性存在。社会空间即意义空间,社会关系构成社会空间的核心内容,而城市社会主导的城乡关系则是社会空间的主要表现形式。对城乡关系的空间社会学研究,旨在突破传统工业化现代化形成的城乡相排斥的局限,通过赶超式现代性的方式实现城乡融合,走向空间正义和社会价值的归属。
ONOS(open network operating system):该控制器是首款开源的SDN网络操作系统,主要面向服务提供商和企业骨干网。ONOS的设计宗旨是满足网络需求实现可靠性强、性能好、灵活度高。此外,ONOS的北向接口抽象层和API支持简单的应用开发,而通过南向接口抽象层和接口则可以管控OpenFlow或者传统设备。ONOS目前对QoS的支持很有限,它支持OpenFlow的计量机制。这个功能在现有的交换机中很少被实现,ONOS的目的是要支持OpenFlow的set_queue功能。另外,ONOS还定义了一个新的高级指令:setQueueInstruction,以支持QoS。该指令已经在org.onosproject.net.flow.instructions库中实现。
4 SDN与QoS的关系
服务质量是服务性能的一种体现,这种性能决定了网络在多大程度上满足业务用户的要求。常见的技术指标有带宽、延迟、抖动、损失等。要提供QoS保障,区分应用流量是必不可少的环节。因为各个应用流共同争夺有限的网络资源,所以要确保给高优先级的应用分配到更多的网络资源。该过程需要了解当前的网络状态以便能做出正确的分配策略。
QoS主要分为两种类型:Hard QoS和Soft QoS。Hard QoS能提供QoS保障,但却受到资源限制。典型的模型是综合服务模型(Int-Serv)。Soft QoS不像Hard QoS那样要求苛刻,但缺点是不能很好地提供QoS保障。区分服务模型(Diff-Serv)是一种典型的Soft QoS。
SDN将数据平面和控制平面相分离。这种分离增强了控制器对网络的控制能力。在SDN架构中,网络应用程序不用与数据平面设备打交道。控制平面可以获得全局网络拓扑信息和网络状态信息。有了控制器提供的这些信息,管理员可以在一个高度抽象级别上对网络进行管理。
显然,SDN的出现对实现QoS机制受益颇多。基于流的转发使得网络可以对不同业务流进行不同的对待处理。动态流规则更新使网络运营商能够在不中断设备的情况下在设备上更新和安装规则。SDN有网络的全局拓扑信息可以维持流的完整路径的相关状态。此外,SDN可以实现基于每流、每端口以及每设备等不同级别的网络监视统计。在支持OpenFlow的SDN网络中,队列管理和调度操作可以通过一些南向协议(如OF-CONFIG和OVSDB)来实现。下面列出QoS受益于SDN架构的几个方面:
(1)SDN可以改善基于QoS的路由[12]。在SDN架构下,基于流的路由更具可扩展性并且相对于传统网络变得更简单且耗时更少。OpenFlow网络运营商使用控制器内的各种路由算法来生成转发表,这些转发表用于管理数据平面中不同的隔离流,例如QoS流[13]。利用SDN架构中控制和转发解耦的特性可以较为容易地实现流的动态路由。有了上述这些特性,网络管理员可以找到更多的基于QoS的路由机制。
(2)SDN的资源预留、队列管理和分组调度等策略可帮助网络运营商设计出易用的QoS自动管理框架[14-15]。由于网络资源的动态特性,网络应用的QoS需要定义良好的控制机制。SDN的集中控制特性使得控制机制变得异常简单。
(3)SDN有助于提高用户体验质量(QoE)[16-17]。用户满意度不能只是通过QoS参数来保证,这些参数不能真实地代表用户QoE。真正的用户满意度需要QoS参数随时间动态变化。SDN通过自动化控制的流规则以更精细的方式来管理网络流,可以提高网络中的用户QoE。
(5)SDN的每流控制和基于多报头字段路由的特性可以实现基于虚拟化的QoS、QoS策略管理和内容传递等机制[19]。
5 基于SDN的QoS相关研究
文献[12]提出了HiQoS应用,它利用基于SDN的ECMP算法找到源和目的地之间的多个路径以及使用排队机制为不同类别的业务提供带宽保证。它区分不同类型的流量,并通过SDN交换机上的排队机制为不同的服务提供不同的带宽保证。多路径路由组件找到满足源节点和目的地节点之间的某些QoS约束的多个路径,并且通过网络状态的实时监视来计算每个流的最优路径。实验结果显示,HiQoS方案可以减少延迟和增加吞吐量以保证QoS,而且HiQoS从故障链路重新路由到其他可用路径的速度非常快。
文献[14-15]提出了FlowQoS,它是一种将应用标识和QoS配置给SDN控制器来实现每流应用的QoS系统。家庭网络设备的处理能力一般都较弱,很难实现对基于流和基于应用的QoS配置。文章中描述用户可以从边缘网络(家庭网络)登录门户网站为特定应用程序配置优先级。FlowQoS控制器为上行和下行流量执行应用识别和QoS配置,以实现用户的偏好。对于每个流,FlowQoS动态执行应用识别。它还在数据平面中安装规则,根据用户为这些应用程序指定的优先级转发各个流。系统在家庭路由器的虚拟拓扑中创建链路,使用用户指定的速率配置每个链路并且将流分配给这些链路,以对每个应用提供速率整形。
文献[18]提出一种基于SDN的QoS感知AP节能机制,利用SDN可以达到流级流量统计的能力来估计移动用户的网络带宽需求。因此,资源分配问题可以转换为二次分配问题(QAP)并且可通过整数规划来解决。系统可以智能地决定每个用户应该与哪个AP连接,然后关闭空闲的AP。基于SDN架构,系统可以减少切换引起的额外延迟。该方案可以在高密度WLAN AP环境中节省多达50%的AP使用,而且仍然提供QoS保证。
文献[16]提出一种QoS/QoE映射和调整模型。该模型由3部分组成:QoE功能、实际测量和统计分析以及视频流模拟平台。在文献[17]中,作者将该模型应用于SDN架构中,设计分为两步:第一步,设计一个NAApp(network architecture application)来获取OF-Switch网络架构中的信息,并将信息存储在MySQL数据库中。第二步细分为两小步。第一小步,在用户端设计QoE测量接口(QoEMI),以便收集用户在观看视频过程中生成的BT(buffering time)和SVD(streaming video discontinuity),并在观看视频之后收集用户给出的分数。第二小步,设计QoE应用(QoEApp)来执行QoS/QoE映射和调整模型并调整用户的QoE。
从以上QoS方案中可以看出,当前大多数的研究都集中在域内提供QoS保障。虽然单域中提供QoS保障非常重要,但互联网中大多数流量是跨域的而且网络管理员不会分享他们内部网络的相关配置。所以,想要在真实网络中部署实现基于SDN的QoS,域间QoS保障是必须要做的研究。另外,SDN是逻辑上集中的架构。在这种架构下控制器要收集所有关于QoS的相关信息。在现有的基于SDN的QoS方案中,网络运营商可以收集不同流级别的统计信息,例如基于每流或流聚合。但这些收集方法都会产生开销,这会带来控制器可扩展性的问题。聚合统计信息可以减缓可扩展性问题,但同时也限制了流的细粒度区分。在基于SDN的网络中,控制器可以轮询交换机来收集数据平面信息或者让交换机以特定频率发送信息到控制器。基于这个特性,可以对控制器在什么频率范围内收集QoS相关信息进行研究分析。即可转变为找到一种在测量精度、及时性和信令开销之间的折衷方案来减缓扩展性问题。
6 结束语
提供高质量的QoS保障仍然是现有网络架构中热门的研究话题。新兴应用所产生的不同的流要对其进行不同的处理,对于尽力而为的网络是不可能实现的。IETF提出了很多的QoS框架,但是没有真正实现各业务要求的QoS。因此,研究人员把视线转移到了SDN,因为它提供了全局网络拓扑以及更细粒度的流量管理等优势。它以更简单和灵活的方式为应用提供QoS。文中对传统网络中用的最多的QoS框架进行阐述并分析了其优缺点。然后对OpenFlow的SDN架构下对QoS的支持情况做了分析,发现基于OpenFlow的SDN架构实现QoS比传统网络中更容易且更灵活。最后对现今基于SDN架构的QoS实现方案做了阐述并分析了会遇到的挑战和问题。
[1] 中国互联网络信息中心.第39次中国互联网络发展状况统计报告[R/OL].2017.http://www.cnnic.cn/gywm/xwzx/rdxw/20172017/201701/t20170122_66448.htm.
[2] 张朝昆,崔 勇,唐翯祎,等.软件定义网络(SDN)研究进展[J].软件学报,2015,26(1):62-81.
[3] 毕 军.SDN体系结构与未来网络体系结构创新环境[J].电信科学,2013,29(8):6-15.
[4] MCKEOWN N,ANDERSON T,BALAKRISHNAN H,et al.OpenFlow:enabling innovation in campus networks[J].ACM SIGCOMM Computer Communication Review,2008,38(2):69-74.
[5] Open Networking Foundation.Software-defined networking:the new norm for networks[M].[s.l.]:Open Networking Foundation,2012.
[6] 黄 韬.软件定义网络核心原理与应用实践[M].北京:人民邮电出版社,2014:9-15.
[7] 晃 通,宫永直树,岩田淳.图解OpenFlow[M].北京:人民邮电出版社,2016:66-72.
[8] Open Networking Foundation.OF-CONFIG 1.2:OpenFlow management and configuration protocol[M].[s.l.]:Open Networking Foundation,2014.
[9] PFAFF B,DAVIE E B.The open vSwitch database management protocol[S].[s.l.]:[s.n.],2013.
[10] WALLNER R,CANNISTRA R.An SDN approach:quality of service using big switch’s floodlight open-source controller[C]//Proceedings of the Asia-Pacific advanced network.[s.l.]:[s.n.],2013:14-21.
[11] PALMA D,GONCALVES J,SOUSA B,et al.The QueuePusher:enabling queue management in OpenFlow[C]//Third European workshop on software defined networks.Washington DC,USA:IEEE Computer Society,2014:125-126.
[12] YAN Jinyao,ZHANG Hailong,SHUAI Qianjun.HiQoS:an SDN-based multipath QoS solution[J].China Communications,2015,12(5):123-133.
[13] TOMOVIC S,RADUSINOVIC I,PRASAD N.Performance comparison of QoS routing algorithms applicable to large-scale SDN networks[C]//International conference on computer as a tool.[s.l.]:IEEE,2015:1-6.
[14] SEDDIKI M S,SHAHBAZ M,DONOVAN S,et al.Flow QoS:QoS for the rest of us[C]//The workshop on hot topics in software defined networking.[s.l.]:[s.n.],2014:207-208.
[15] SEDDIKI M S,SHAHBAZ M,DONOVAN S,et al.Flow QoS:per-flow quality of service for broadband access networks[C]//The workshop on hot topics in software defined networking.[s.l.]:[s.n.],2015:211-218.
[16] HSU W H, LO C H. QoS/QoE mapping and adjustment model in the cloud-based multimedia infrastructure[J].IEEE Systems Journal,2014,8(1):247-255.
[17] HSU W H,WANG X H,YEH S C,et al.The implementation of a QoS/QoE mapping and adjusting application in software-defined networks[C]//International conference on intelligent green building and smart grid.[s.l.]:IEEE,2016:1-4.
[18] CHEN Y J,SHEN Y H,WANG L C.Achieving energy saving with QoS guarantee for WLAN using SDN[C]//International conference on communications.[s.l.]:IEEE,2016:1-7.
[19] PARK T,KIM Y,PARK J,et al.QoSE:quality of security a network security framework with distributed NFV[C]//International conference on communications.[s.l.]:IEEE,2016:1-6.