基于SDN的业务流量QOS保证一、研究背景随着云计算技术及其业务的普及,数据中心云化发展逐步走向大型化,自动化,虚拟化,越来越多的分布式数据密集型应用倾向于部署在云环境中,如MapReduce,Storm,Spark等,云网络中产生超大规模东西向数据流量已经成为必然趋势。上层应用共享底层物理网络带宽,网络拥塞成为常见现象,云业务服务质量需要保障。云基础设施本质是一个虚拟化资源池,单个操作系统和网络端口不再一一对应,同一台物理服务器上运行着的多台虚拟机对物理网卡存在竞争。传统网络QoS策略只针对物理端口,服务器所有网络行为由接入交换机直接控制。而在虚拟化环境中,虚拟机和交换机间隔一层服务器网卡,虚拟机层面的业务流量难以区分、管理和控制,其通过预定义SLA作为QoS的参数,缺乏一定的灵活性,SDN提供开放应用编程接口,为QoS保障带来新契机。设计一套基于SDN的云数据中心业务流量QoS保障的解决方案,为云中的虚拟机业务流量提供自动化QoS保障的同时,尽可能提高物理链路利用率。通过增加虚拟接入层软件交换机,将网络接入移至物理服务器内部,进而实现对虚拟机网络策略的管理。借助SDN南向接口,实现针对业务类型的个性化流表自动下发机制,达到虚拟机业务流量调度到特别端口队列的目的。借助SDN北向接口,监控全局虚拟机业务流量状态以及端口队列流量状态,并在此基础上设计基于实时业务流量端口队列带宽动态调整策略。与此同时,采取分级控制的思想,在端口队列针设计基于流的限速策略,从而达到虚拟机业务流量QoS保障的目的。二、方案特色和创新1.分级的虚拟机流量业务QoS保障解决方案传统网络流量QoS保障通常是基于业务类型的方式,这是一种粗粒度的实现,在同一业务占满物理带宽的情况下很难区分相同业务的优先级。本方案将虚拟机业务流量服务质量分两级保障,分别为基于业务的带宽保障和基于虚拟机的带宽保障,其在为云中虚拟机业务流量提供自动化QoS保障的同时,尽可能提高物理链路利用率,有效解决了满带宽时同类业务QoS保障的问题,在更精细的层面上实现了对虚拟机业务流量的QoS保障。2.个性化流表自动下发机制传统网络流量QoS保障实现中,SLA通常被用来作为QoS输入的参数,最终生成的网络层策略往往是预先定义的、静态的。本方案在控制器层面上实现动态流表自动化下发机制,捕获PACTET-IN消息,根据当前网络拓扑中实时业务流量的情形,动态生成个性化流表并下发至交换机。3.基于实时流量的端口队列带宽动态调整算法在做基于业务的带宽保障时,动态调整实时流量的端口队列带宽,提出一个简单带宽协商自适应算法,有效解决队列带宽竞争时业务流量QoS保障问题。4.QoS保障算法、策略动态管理本方案系统框架采取模块化和热插拔思想,支持QoS保障策略和算法动态加载、更新和删除,系统管理人员能够自定义多种算法或者策略,实现策略算法模块和系统本身的高内聚与低耦合。三、方案介绍1.背景介绍动态性是云计算的最大特征之一,虚拟机可以随时启动、关闭、迁移,当前基于传统网络架构的模式在支撑云计算时缺乏一定的灵活性,尤其体现在云中业务流量QoS保障方面。云环境下,同一台宿主机上的多台虚拟机共享其物理网络接口,在数据密集型业务负载过重时,势必会引发对网络资源的竞争。传统QoS保障技术因敏捷和灵活性的天然缺失导致其无法很好地解决云中存在的问题,SDN技术实现了控制平面与转发平面的分离,摆脱了硬件对网络架构的限制,实现网络层次较好的灵活性、敏捷性。除此之外,软件定义网络的可编程性带来了前所未有的灵活性,我们借助SDN,很好地解决了云环境下基于虚拟机业务流量的QoS保障问题。2.研究问题陈述云计算基础设施层服务采取集中式控制的架构,由云控制节点管理多个计算节点,虚拟机运行在计算节点之上,云控制节点负责虚拟机具体调度。本应用主要针对宿主机内部多台虚拟机流量做QoS保障,从而消除网络资源竞争带给虚拟机业务的影响。3.具体解决方法为体现虚拟机流量业务等级,本方案对虚拟机业务进行分类,大致分为重要和非重要两类。为体现不同业务流量的优先级,本方案在宿主机物理网卡对应虚拟交换机的端口上做多个限速队列,共享物理带宽,通过队列的带宽的大小实现不同虚拟机业务种类优先级的区分。业务流量通过SDN控制器将形成个性化流表,决策业务流匹配至不同队列,并下发至交换机。本方案在为虚拟机业务流量提供QoS保障的同时,尽可能提高链路利用率。故需满足以下情况:①优先保证重要业务的带宽,即不同种类业务竞争网络资源时,重要业务将尽可能占满带宽,非重要业务不参与竞争。②系统当前出现重要业务流量低谷时,非重要业务如若需要更多带宽,系统将动态对队列带宽动态调整,以满足非重要业务带宽需求。③重要业务占满物理带宽时,重要业务之间也会出现网络资源竞争的情况,按虚拟机所属用户的类别保障其业务QoS,即重要用户的虚拟机的重要业务将获得更多带宽资源。因此,本应用提出基于分级的虚拟机流量业务QoS保障解决方案,两级保障如下:①基于业务的带宽保障对端口设置队列,在队列上做带宽限制,将业务分类并映射到队列中,队列具备优先级,重要的应用映射到优先级最高的队列中,优先级最高的队列中的服务将优先被保障,也就是说,优先级最高的队列在其需要最大带宽时将获得默认最大带宽的权利。为提供业务的带宽保障,本方案设计了基于实时流量的端口队列带宽动态调整算法。②基于虚拟机的带宽保障当端口上的所有队列带宽比趋于稳态,并且每个队列带宽占用率处于饱和时,在相同队列里按不同虚拟机业务流的优先级做QoS保障,重要用户的虚拟机将拥有更多的带宽。为提供虚拟机的带宽保障,本方案设计了基于流的细粒度QoS保障策略。4.系统设计虚拟机流量数据包发送至虚拟交换机,若无流表匹配,则发至控制器。控制器截获Packet-in消息,根据特征库分析其业务类型,决定转发至不同优先级的端口队列,监控端口队列流量情况,综合虚拟机类别,决策是否对业务流限速,同时生成个性化流表下发至虚拟交换机。个性化流表下发模块接收到从openflow交换机发送过来的数据包,根据数据包分析其业务类型,进而调度到不同的队列,从而实现粗粒度的QoS保障,最大程度提高网络资源利用率,例如:当IP地址为10.0.0.1的虚拟机向位于不同计算节点的IP地址为10.0.0.2的虚拟机发送Http请求时,此时下发模块会解析数据包,判断其业务类型,从而在转发路径的节点下发流表,规划流量的转发细节。队列带宽动态调整模块主要负责对队列端口流量的实时监控,其主要实现一个简单带宽协商自适应算法,达到云中心重要业务优先保障的目的。业务流带宽动态调整模块主要解决当重要端口队列占满物理带宽时,根据用户虚拟机的优先级对若干业务流进行限速,重要级别低的若干虚拟机业务流将被限速。动态策略管理模块主要负责维护多种QoS策略的动态加载和删除。网络管理人员可以根据业务的变化随时添加和删除自定义的QoS策略,即时生效。同一服务在不同计算节点不同用户的SLA需求不同,同一服务在不同计算节点可能同一用户的SLA需求也不一样,导致同一服务在不同节点的QoS保障规则不同,如MapReduce任务,不同节点之间通信量大小不同,数据通信量大的节点需要高带宽。当重要业务占满带宽时,业务流带宽动态调整模块中基于流的带宽分配考虑业务本身的影响因子,该因子的生成根据定制服务策略产生。