什么是QoS
QoS(Quality of Service,服务质量)是指管理数据流量以减少网络上的数据包丢失、延迟和抖动的服务保证技术。QoS通过为网络上特定类型的数据设置差异的优先级来控制和管理网络资源。如果没有QoS,网络数据可能变得杂乱无章,在网络带宽阻塞情况下,数据的完整性和安全性有可能受到损坏,甚至会出现网络完全中断情况。QoS技术本身不会给网络增加带宽,而是在网络中有限的带宽资源下,如何平衡地在网络中为各种业务分配带宽,针对各种业务流量的业务价值需求,为其提供服务质量保证。换句话说,网络在一定时间内只能传输这么多信息。因此,QoS 工具以某种方式对数据包进行优先级排序,以确保在固定时间内使用带宽来提供可能的最佳服务。
QoS好处
QoS 它保证企业网络中运行的应用程序的可用性,通过部署QoS来满足关键业务、实时语音、视频等敏感应用的流量要求,使网络提供安全、高效的数据传输,并防止因数据包丢失、延迟、抖动而导致的质量下降。通过部署QoS让网络现有带宽资源得到有效合理利用,而不是一味的投入成本去升级网络基础设施来扩展网络带宽。具体的好处包括:关键业务应用程序可以得到它所需要的资源、网络管理员可以更好地管理网络中的流量、企业消除升级基础设施的需要来降低成本、用户的体验得到改善。
QoS通常运用场景
企业的广域网通过租用运营商专线连接总部与各地分支机构,并配备冗余线路来提高网络可用性,由于运营商专线普遍采用带宽计价模式,所以广域网日常运营成本高昂。同时根据业务管理需要,企业一般会对广域网承载的流量进行管理和划分,一般会划分为语音、视频、生产、办公、测试、大数据传输等多个类似类型。由于广域网不同流量的业务价值不同,网络管控的要求不同,流量特点各异,对延时和带宽要求也各不相同;如何能够在广域网线路上合理的规划和分配线路资源,这时就需要使用QoS进行针对性的业务保障和管控。
QoS度量参数
企业可以通过使用多个参数来定量测量,为关键业务提供服务保证,使其达到预期的服务水平,参数包括如下:
Ø丢包率:这是数据包在网络传输过程中丢失报文的百分比,当网络链路发生拥塞并且路由器和交换机开始丢弃数据包时,就产生了丢包率。当队列或等待发送的数据包溢出时,数据包被丢弃。数据包如果在实时通信(例如语音或视频通话)期间丢失,语音可能会出现不清晰、不连贯,视频可能会出现卡顿、失帧等。
Ø抖动:这是网络拥塞、定时漂移和路由更改的结果。过多的抖动会降低语音和视频通信的质量。
Ø延迟:这是数据包从源到目的地所需的时间,延迟应尽可能的小,如果IP语音呼叫有大量延迟,用户可能会感觉到回声和重叠音频情况。
Ø带宽:这是网络通信链路在给定时间内将最大量的数据从一个点传输到另一个点的能力。QoS 通过管理带宽和为具有更严格性能要求的高优先级应用程序提供比其他应用程序更多的资源来优化网络性能。
Ø平均意见得分 ( MOS ): 这是使用五分制对语音质量进行评级的指标,五分表示最高质量。
QoS三种服务模型
网络应用都是端到端的通信,两个主机进行通信,中间可能要跨越多个物理网络,经过多个路由器,要实现端到端的QoS,就必须从全局考虑。QoS的服务模型就是研究采用什么模式实现全局的服务质量保证。
Ø尽力而为服务模型(Best-Effort):最简单的QoS服务模型,网络中所有数据包都是相同的优先级,网络尽最大努力来发送报文,但并不保证数据包的交付;当网络中未配置 QoS 策略或基础设施不支持 QoS 时,业务流量将在 Best Effort中传输。
Ø综合服务 (IntServ):IntServ模型是指应用程序在发送报文前,需要通过信令(signaling)向网络描述它的流量参数,申请特定的QoS服务。IntServ模式是在网络上的特定路径保留带宽。应用程序向网络请求资源预留,网络设备监控数据包流以确保网络资源可以交付数据包。实施 IntServ 需要支持 IntServ 的路由器,并使用资源预留协议 ( RSVP ) 进行网络资源预留。但IntServ可扩展性有限,对网络资源消耗大。
Ø差异化服务 ( DiffServ ):DiffServ模型的是将网络中的流量分成多个类,每个类享受不同的处理,尤其是网络出现拥塞时不同的类会享受不同的优先处理,从而得到不同的丢弃率、时延以及时延抖动。例如,可以为语音流量分配比其他类型流量更高的优先级,使用差分服务代码点 (DSCP) 为数据包分配优先级以进行分类。与Intserv模型相比,DiffServ模型不需要信令。在DiffServ模型中,应用程序发出报文前,不需要预先向网络提出资源申请,而是通过设置IP报文头部的QoS参数信息,来告知网络节点它的QoS需求。网络不需要为每个流维护状态,而是根据每个报文流指定的QoS参数信息来提供服务,对报文的服务等级划分,有差别地进行流量控制和转发,提供端到端的QoS保证。
QoS机制
某些 QoS 机制可以管理数据流量质量并维护 SLA 中指定的 QoS 要求。QoS 机制属于特定类别,具体取决于它们在管理网络中所扮演的角色。
Ø分类和标记:区分应用程序并将数据包分类为不同的流量类型,将每个数据包指示为网络类别的成员,识别流量并对其进行标记,以确保其他网络设备可以识别并确定其优先级。分类和标记在路由器、交换机和接入点等网络设备上实现,一般在网络设备入方向配置。
Ø拥塞管理:使用数据包分类和标记来确定将数据包放入哪个队列,拥塞管理工具包括优先级队列、先进先出和低延迟队列。
Ø拥塞避免:监控网络流量的拥塞情况,并在发生拥塞时丢弃低优先级的数据包。拥塞避免包括加权随机检测(WRED)和随机早期检测(RED),其中WRED为丢弃低优先级数据流以保护高优先级数据免受网络拥塞的影响。
Ø流量整形:与拥塞避免类似,区别于将超额流量排入缓冲区而不是完全丢弃它们。流量整形一般优先考虑实时应用程序而不是相对于时间敏感度较低的应用程序,例如电子邮件和消息传递。流量整形工具包括缓冲区、通用流量整形和帧中继流量整形。
QoS部署位置及方向
针对限速策略,应该尽可能的部署在流量始发地最近的入方向。针对保障策略,QoS应部署在流量出接口的出方向。对于双向流量,需要在出方向线路的两端设备分别部署QoS;对于单向数据传输流量,可仅在数据传输出口方向部署QoS。
流量分类基本原则
QoS分为保障类和限制类。对关键、重要业务流量,对时延敏感的重要流量,应使用保障类队列,即在链路流量拥塞时,保障队列中的流量可在一定限度内优先转发。流量大重要性高的业务应对其进行满足业务需求带宽保证加限制。流量大且重要性低的业务流量应对其进行限制,以避免其对非保障队列里的其他流量造成影响。
常见QoS类型
Ø优先级队列(PQ)会先服务高优先级的队列,高优先级子队列里没有数据后,再服务中等优先级子队列,依次类推。如果PQ正在服务中等优先级子队列,但是高优先级里又来了数据包,则PQ会中断中等优先级子队列的服务,转而服务高优先级子队列。每一个子队列都有一个最大队列深度,如果达到了最大队列深度,则进行尾丢弃。PQ的最大缺点是低优先级队列会被“饿死”,因为只有高优先级队列里有数据,PQ就不会服务低优先级队列。因此在流量简单且优先级明确的情况下,可以谨慎使用此种方式;在复杂流量线路上应尽量避免使用PQ,若需要使用PQ可以结合限速来保证其他队列流量的传输。
Ø基于类的加权公平队列(CBWFQ)通常使用ACL定义数据流类别,并将注入宽带和队列限制等参数应用于这些类别。CBWFQ是网络中的一种队列配置方案,其允许通信基于标准分类。CBWFQ能够给不同的类保障一定的带宽,对传统的WFQ(加权公平队列)作了扩展支持用户自己定义流量的分类,队列的个数和类别是一一对应,给每个class保留带宽。CBWFQ使用较为灵活,可以由管理员对流量进行灵活分类。
Ø低延迟队列(LLQ)为基于类别的加权公平排队(CBWFQ)提供绝对优先排队功能,减少了语音会话的抖动。LLQ相当于CBWFQ加上一个严格优先级队列,该队列优先级高于其他所有队列,非常适合时延敏感性应用。LLQ的严格优先级队列是一个有最小保证带宽的优先级队列,出现拥塞时,该队列的数据量不能超过所允许的带宽,否则会被丢弃。LLQ最大优势是可以为时延和抖动敏感型应用的流量提供一个或多个有带宽保证的严格优先级队列,LLQ并不局限于特定平台或传输介质。在有语音、视频传输的链路上,可以考虑使用此种队列。
Ø流量限制,需要进行速度限制的流量,大多在Best-effort队列中,当然也可新建队列,并对整个队列进行速度限制。对于不重要且流量大的数据流,需要进行限制处理,即使链路空闲,该部分流量也会被限制。该部分流量可降低其优先级,或提高其丢弃优先级。
QoS部署注意事项
ØPQ队列存在“饿死”的可能性,应谨慎选择或配合流量限制使用,由于PQ队列优先级最高,配置PQ队列后,其他队列都需要给它让路,这样容易造成其他队列被“饿死”,在配置时因充分考虑或选择配合流量限制进行使用。
Ø网络协议流量(一般默认高优先级队列)、监控流量应予以保障,否则可能会因网络协议流量拥塞造成邻居中断,或监控流量拥塞造成监控失效或误报。
Ø部署QoS时应根据需求从全局视角去规划带宽,并选择合适的模型,保障QoS设计的带宽小于实际使用带宽;针对复杂且关键的网络节点部署QoS,建议能在测试环境中通过打流测试,验证策略的可用性。
Ø部署QoS应考虑链路中断造成的流量切换。例如链路A上部署的QoS,也应部署在其备份链路上。考虑到实际流量情况,在备份链路部署的QoS可以不同于主链路的QoS,但保障关键、重要业务的总原则不应改变。
Ø网络管理员应定期对QoS策略进行重检,应定期与应用管理员梳理所有应用系统的行为,并按照梳理结果对QoS策略进行调整或增减。
Ø在网络设备上提前部署限速策略并制定操作工具箱,当网络中突然出现大流量数据传输时,可以通过工具箱快速将其放入限制策略中,来避免网络告警。
QoS的配置实例
Ø华为路由器
l 入向限制策略 //流定义 acl name AAA //流分类,匹配定义流 traffic classifier AAA AAA //流行为,限制多少带宽 traffic behavior AAA xxxxx kbps //流行为,限制多少带宽 traffic policy AAA AAA behavior AAA //链路入接口调用 interface x/x/x AAA inbound l 出向QOS保障策略 //流定义 acl name AAA advance //流分类,匹配定义流,允许匹配多个ACL流 traffic classifier AAA AAA //流行为,标记DSCP traffic behavior AAA af42 //流策略关联 traffic policy IN-QUEUE classifier AAA behavior AAA //流量入接口调用流策略标记DSCP值 interface IN-QUEUE //流量出接口配置流量调度策略 interface x/x/x port shaping af4 wfq weight 20 l HQoS分层调度策略 //流定义 acl name AAA //流分类,匹配定义流,允许匹配多个ACL流 traffic classifier AAA AAA //流行为,标记DSCP traffic behavior AAA ef //流策略关联 traffic policy IN-QUEUE classifier AAA behavior AAA //流队列调度方式 flow-queue BBB queue af4 wfq weight 30 //配置实际链路带宽和队列调度绑定 qos-profile CCC xxxx BBB //流量入接口调用流策略,将流标记DSCP值 interface x/x/x traffic-policy IN-QUEUEinbound //如果涉及流量到入接口分类完成后穿过其他链路再到出接口调度情况下需要在穿过的接口配置简单流分类 interface x/x/x //流量出接口配置流量调度策略,匹配qos-profil的调度策略 interface x/x/x CCC outbound xxx |
Ø思科路由器
l CBWFQ和限速 //定义一个匹配acl-1 acl-2的类 class-map match-all class-1 acl-1 class-map match-all class-2 match access-group name acl-2 //定义一个匹配http协议的类 class-map match-all class-3 match protocol http //定义一个策略,调用class-1/2/3,保障和限速,限速超出丢弃 policy-map CBWFQ class class-1 bandwidth classclass-2 bandwidth 1000 class class-3 police cir 1500000 //在接口出方向policy策略 interface x/x service-policy output CBWFQ |
ØJuniper
l CBWFQ //为1号板卡1号模块设置每端口最大队列数为8个 set chassis fpc 1 pic 1 //配置不同地址组 set groups group-1 firewall family inet filter <*> term <*> from source-address x.x.x.x/x set groups group-2 x.x.x.x/x //将不同转发类别映射至不同队列 set class-of-service forwarding-classes class class-1 queue-num 1 set class-of-service forwarding-classes class class-2 queue-num 2 //设置不同地址组的丢弃优先级及转发类别 set firewall family inet filter filter-1 term-1 group-1 set firewall family inet filter filter-1 term-1 set firewall family inet filter filter-1 term-1 then forwarding-class set firewall family inet filter filter-1 term term-1 set firewall family inet filter filter-1 term-2 apply-groups group-2 set firewall family inet filter filter-1 term-2 set firewall family inet filter filter-1 term-2 class-2 set firewall family inet filter filter-1 term-2 //在x/x/x子接口出方向应用filter-1 set interfaces unit x filter-1 //建立两个调度模板,分别设置保障带宽和队列优先级 set class-of-service schedulers scheduler-1 transmit-rate 2m set class-of-service schedulers scheduler-1 set class-of-service schedulers scheduler-2 transmit-rate 3m set class-of-service schedulers scheduler-2 //建立转发类别与调度模板的映射 set class-of-service scheduler-maps map-1 forwarding-class class-1 scheduler-1 set class-of-service scheduler-maps map-1 class-2 scheduler-2 //在服务等级中设置接口的调度映射 set class-of-service interfaces x/x/x x map-1 //在服务等级中设置接口流量整形速率 set class-of-service interfaces x/x/x x 20m |