吴 慧,陈秋红,刘国辉
(1.武汉邮电科学研究院,湖北武汉430074;2.光纤通信技术和网络国家重点实验室,湖北武汉430074)
随着网络的快速发展,传统网络模型已经很难满足网络发展的需求,软件自定义网络(Software-Defined Networks,SDN),一种新型的网络模型越来越受到重视。OpenFlow是一个标准化SDN应用协议,旨在以现有TCP/IP技术条件为基础,将传统网关设备的控制平面与数据平面分离,以分布式、集中式控制的管理架构,实现网络流量的灵活控制和设备的灵活部署[1]。然而,OpenFlow技术才刚起步,想要大规模部署还存在很多问题,比如与IP网络的互通性、QoS等问题,因此对OpenFlow网络中QoS管理机制的研究极具意义。
OpenFlow是美国斯坦福大学于2007年提出的一种支持网络创新研究的新型网络交换模型,该模型通过开放流表支持用户对网络处理行为进行控制,从而为新型互联网体系结构研究提供新的实验途径[2]。
OpenFlow是一种SDN网络,由一个包含整个网络拓扑的OF(OpenFlow)控制器和拥有流表的OF交换机组成,前者通过开放的OF协议对OF网关设备中的流表进行编程,决定每个数据包的传输路径,而后者只负责对数据进行转发,简化底层设备的工作负载。
1个OF交换机至少包含3个部分[3]:Flow Table(流表)、Secure Channel(安全通道)、OpenFlow Protocol(开放流协议)。OpenFlow交换机的体系结构如图1所示。
图1 OF交换机的体系结构
OF(OpenFlow)交换机中每个Flow Table流表项包含3 个域[4]:Head Fields(包头域)、Action(动作)、Counter(计数器),如图2所示。
图2 OF交换机中流表项的组成
当有数据包到达时,OF交换机将其送入Pipeline流水线中进行处理,即查询流表项,若查询到,就按照匹配的流表中Action域进行处理;若未查询到,就把数据包的第一个有效分组进行OF协议封装并通过安全通道发送到控制器,等待后续动作的确认。
QoS(Quality of Service)即服务质量,它是一种网络安全机制,用来保证网络延迟、带宽和阻塞等性能[5]。目前,IETF为QoS机制提供3种服务模型:BestEffort(尽力而为服务模型)、IntServ(综合服务模型)和DiffServ(区分服务模型)。
DiffServ通过定义几种特定的服务类型对业务流进行分类,并为不同的分类提供对应的每跳行为(Per Hop Behavior,PHB)来保证服务质量,实现多业务类型的QoS保证[6]。该模型灵活性好,易扩展,但只能提供逐跳行为的QoS保证,而非端到端的。
本系统在OF控制器NOX上添加QoSCLI组件、QoS管理器和QoS数据库,实现QoS的管理层功能,在OF交换机Open Vswitch(OVS)上添加QoS代理和DiffServ流量控制模块,实现分类业务的流量控制机制,系统体系结构如图3所示。
系统控制平面主要负责控制管理模块之间的信息交互,将管理员的服务质量需求通过指令的形式在整个管理域内生效,提供QoS配置和查询功能,例如对管理域内结点的QoS配置更改、状态查询和历史信息查看等。
当管理员从QoSCLI界面输入配置指令时,管理器会将指令信息进行OF协议封装,并通过安全通道发送给代理,同时更改数据库中实时配置信息。QoS代理会将收到的配置信息解析出来,并更改DiffServ模块的参数,例如分类规则、端口带宽限制、队列配置等,同时负责将Diff-Serv模块执行的结果反馈给代理,由代理封装并上传反馈结果给管理器。最后,反馈消息会被解析并显示在CLI界面上,整个QoS指令配置任务完成。
图3 OpenFlow QoS管理系统体系结构图
DiffServ流量控制模块负责对底层交换机上的数据流进行流量控制,采用传统的区分服务模型与OF交换机的转发机制相结合,将前者的主要功能移植到OF软交换机上。在OF软交换机的数据流转发过程中添加了流分类、标记测量和队列处理等处理机制。
由于OF交换机只根据匹配到的流表项的Action域对数据流进行处理,所以系统在流进入Pipeline流水线处理之前,对流进行分类和标记,即修改IP包头中的DSCP值,然后在匹配到的转发端口上进行队列操作,保证不同DSCP值的包进入不同的队列,获得不同的PHB处理。OpenFlow QoS管理系统的DiffServ流量控制模块的数据流处理流程如图4所示。
DiffServ流量控制模块中各个部分的实现机制如下:
1)流分类:在DiffServ模型中,核心结点通过对DSCP值进行匹配并分类,而边缘结点则对包头中所有字段或部分字段的组合进行分类,将具有相同特征的单流汇聚成洪流,并送到不同的队列中进行处理。
2)测量和标记:按照事先约定好的规则,修改流分类处理后的聚合流IP包头中的DSCP值,确保拥有不同DSCP值的流进入到不同的队列中,进行调度。主要通过配置静态流规则对匹配到某种相同特征的流设置不同的Action动作,即通过set_nw_tos来修改IP的TOS值,此动作只需在边缘结点中执行。
图4 DiffServ流量控制模块数据流处理流程图
3)Pipeline:当数据流的DSCP字段被重新标记后,数据流被送入Pipeline流水线处理,负责将流送入到指定的端口进行下一步处理,此功能由Open vSwitch自动完成,不需要做任何改动。
4)队列:队列机制包括队列管理和队列调度,负责在交换机的端口上为拥有不同DSCP值的包提供不同队列的带宽资源分配、突发量、最大最小速率。在Open vS-witch的出端口上可以配置多个Linux-htb的队列,并设置不同的速率限制、突发和丢包率实现差别服务等级的流量调度。
为了验证系统的正确性和网络流量控制的性能,搭建了一个简单的DiffServ模型的小型网络,如图5所示。
图5 OpenFlow QoS管理系统实验拓扑
其中OpenFlow控制器为运行NOX及QoS控制程序的Linux(Ubuntu)主机,OVS为运行OpenVswitch及Diff-Serv组件的Linux(Ubuntu)主机,分别充当OpenFlow网络的控制器和交换机。OVS1为边缘结点,与控制器直连,OVS2为中心结点,PC1和PC2分别连接在2个结点上。为了简化网络路由,网络拓扑采用静态路由的方式实现,实验结果通过数据流获得的网络带宽和丢包率来验证。OVS配置如下:
#流分类,匹配tos值。1号端口流送入2号端口排队,不同tos值的流送入不同队列。
#ovs-ofctl add-flow br0"in_port=1 ip nw_tos=46 idle_timeout=0 actions=enqueue:2:0"
#ovs-ofctl add-flow br0"in_port=1 ip nw_tos=0 idle_timeout=0 actions=enqueue:2:1"
#标记 BE
ovs-ofctl add-flow br0"dl_type=0x0800 nw_proto=6 idle_timeout=0 actions=mod_nw_tos:0"
#标记EF,针对ftp流进行流量控制,设置不同的tos值。
ovs-ofctladd-flow br0"dl_type=0x0800 nw_proto=6 tp_dst=21 idle_timeout=0 actions=mod_nw_tos:46"
#PHB行为:通过linux-htb队列实现。不同dscp值的对应的队列速率限制不同。
#ovs-vsctl set port eth1 qos=@newqos
id=@newqos create qos type=linux-htb
other-config:max-rate=200000000 queues=0=@q0,1=@q1
id=@q0 create queue dscp=0
other-config:min-rate=100000000
other-config:max-rate=100000000
id=@q1 create queue dscp=46
other-config:min-rate=50000000
other-config:max-rate=50000000
从PC1向PC2发送2种优先级不同的流A、B,A为FTP流,B为普通无服务质量保证的流,网络总带宽为40 Mbit/s。在PC2上通过对A、B流量的分析,得到实验结果,如表1所示。
表1 系统实验结果
从实验结果可知,QoS管理系统能够正确地区分不同QoS等级的服务,并提供差别服务质量保证。系统使用前,不同的流公平占用网络流量,系统使用后,不同的QoS等级的数据流获得的网络带宽不同。
本文通过简要的分析OpenFlow和QoS技术,结合OpenFlow对数据流的处理机制,提出了一种适用于Open-Flow网络的QoS管理机制,通过控制器集中控制管理域内的所有结点的QoS配置,并在底层OF交换机上配置静态流规则实现流分类、标记和入队等流量控制机制,实现了高效可控的QoS管理系统。但此系统需要人工配置QoS参数,且控制平面缺乏对网络流量的实时监控和资源利用率等信息的采集,不能根据网络环境提供动态的QoS策略,缺乏自适应性,因此更加智能和自适应的QoS管理体系还有待进一步研究。
[1]何国锋.OpenFlow在下一代数据中心网络的应用研究[J].互联网天地,2013,3(3):71-74.
[2]王丽君,刘永强,张健.基于OpenFlow的未来互联网实验技术研究[J].电信网技术,2011(6):11-14.
[3]NICK M,TOM A,HARIB.OpenFlow:Enabling innovation in campus networks[J].SIGCOMM Computer,2008,38(2):69-74.
[4] PFAFF B,HELLER B,PETTIT J,et al.The openflow switch specification[EB/OL].[2013-04-30].http://www.openflow.org/documents/openflow-spec-v1.1.0.pdf.
[5]王海涛,宋丽华.IP网络的QoS通用框架及其体系结构[J].电视技术,2002,26(9):29-32.
[6]鲍慧,赵生岗,黄霞.基于DiffServ模型的调度算法[J].计算机工程,2008,10,34(20):130-132.