今天你想看什么

数通HCIE面试必杀技:Qos深度剖析+热点问答揭秘

  首先来讲讲QOS是啥?

  文档定义如下:服务质量QoS(Quality of Service)用于评估服务方满足客户服务需求的能力。通过配置QoS,对企业的网络流量进行调控,避免并管理网络拥塞,减少报文的丢失率,同时也可以为企业用户提供专用带宽或者为不同的业务(语音、视频、数据等)提供差分服务。

  用简单的一句话概括一下:对不同业务区别对待,达到客户满意!

  好 接下来呢 我们用一图 来引入我们的QOS(建议考生记住这个图,然后平时练习的时候也照着这个图来练习)

  这个图非常好哈,一张图概括了QOS的大致框架及逻辑。接下来,我们来一一解释。

  首先呢,我们的QOS目前常用于差分服务模型中,那么QOS到底有几个模型呢

  ①尽力而为模型——-简单粗暴 不区别对待 谁先来就帮谁转发

  ②综合服务模型——利用RSVP协议(资源预留协议)预留出比如一个10M的带宽给客户的特殊流量单独使用 优点:特殊流量得到区分对待 缺点:客户不用时,10M带宽也无法给其他流量使用,浪费带宽

  ③差分服务模型—–就是我们现在要讲的啦

  PS:如果考试遇到OQS,我们从头讲这三个模型快速讲 刚好讲到差分服务模型时,顺利的承接到下文。

  那我们差分服务模型是如何做到既兼顾区分对待,又能做到不浪费带宽呢,是这样的。首先

  ①数据 语音 视频流量 进入接口 然后我们对其进行一个分类和标记!画重点,分类又是怎么分?标记又是怎么标记?标记在哪里呢?交换机或者路由器是怎么识别这份流量是数据,语音or视频呢?

  分类有两种。

  一为简单流分类:利用我们在vlan,mpls,ip报文里面标记的字段 进行分类 称简单流分类

  二为复杂流分类:通过五元组(源IP,目的IP,源端口,目的端口,传输层协议)来唯一区分一条流。

  OK 分类完 然后呢?当然是我们的标记啦。

  标记可以标记在三个地方。

  1. vlan tag中的pri字段(这里要把vlan的格式+长度记住)

  2.mpls中的exp字段(同上 要记住!Mpls头部也是一个大题来的,题为:mpls头部字段分别是什么和其作用)

  IP Precedence 一共3个bit 所以可以定义的优先级为7-0;后续呢 觉得不够用了边又开发了D,T,R位 叫DSCP

  所以可以定义的优先级为0-63

  所以用前3位称IPP 用前五位称DSCP(这边还遗留一点知识 我们卖个关子 后面会讲到)

  OK,接下来是流量监管和限速这个我们放到后面讲。

  我们先讲入队列。我们再一次捋一捋思路,现在我们的语音 数据 视频流量分类好了,标记好了,要进入交换机or路由器的内部了,内部的有一个虚拟出来的队列,高优先级的则会进入高队列,低优先级则进入低队列。

  那么是哪个协议定义了我们标记的优先级7就比优先级0更牛,更优呢?

  好,是我们的PHB(Per Hop Behavior)协议,一句话概括这个协议的作用:定义了服务等级也就是7>6>5>4>3>2>1>0

  接下来大家来看一下一张表,我们来具体的讲一讲我们的PHB协议。

  PS:PHB协议了解即可。

  在PHB协议定义了CS,EF,AF,BE队列 我们这样理解,

  A为DSCP一共有0-63个优先级

  B为IPP,mpls,vlan有0-7个优先级

  我们来做一个划分,我们把DSCP称A,IPP,mpls,vlan称B,那么

  B=0时,A=0-7 CS0 B=1时,A=8-15 CS1 B=2时,A=16-23 CS2 B=3时,A=24-31 CS3

  B=4时,A=32-39 CS4 B=5时,A=40-47 CS5 B=6时,A=48-55 CS6 B=7时,A=56-63 CS7

  大家仔细观察一下这个表格可以看出 A-B-CS之间的关系,也就是说PHB把这些优先级都纳入到了CS的范围,而EF,AF,BE则是什么呢?

  BE则是CS0中DSCP为0时一个特殊称呼(如果标记成0,进入BE队列,尽力转发)

  EF 则是CS5中DSCP为46时的一个特殊称呼(如果标记成46,进入EF队列 加速转发)

  AF1则是CS1中DSCP为10,12,14时的特殊称呼(如果标记成10,12,14(对应AF11,AF12,AF13)则进入AF1队列 确保转发)

  AF2则是CS1中DSCP为18,20,22时的特殊称呼(如果标记成18,20,22(对应AF21,AF22,AF23)则进入AF2队列 确保转发)

  AF3则是CS1中DSCP为26,28,30时的特殊称呼(如果标记成26,28,30(对应AF31,AF32,AF33)则进入AF3队列 确保转发)

  AF4则是CS1中DSCP为34,36,38时的特殊称呼(如果标记成34,36,38(对应AF41,AF42,AF43)则进入AF4队列 确保转发)

  PS:CS7,CS6默认用于协议报文,如STP等报文。优先级比较:EF>AF4 3 2 1>BE

  这边在注意一个点:在AF1中 AF13的丢弃等级>AF12>AF11 为啥呢? 我们来看一下补回前面DSCP的一个知识点。

  AF11则是标记成10写成8bit的二进制则是 001010 00(回忆一下一个字节的Tos字段 前6bit为DSCP 后2bit保留)

  AF12则是标记成12写成8bit的二进制则是 001100 00

  AF13则是标记成14写成8bit的二进制则是 001110 00

  OK Tos字段 前3bit为IPP 然后是D T R位 这三位 置1越多代表丢弃概率越高(D、T、R三个比特,分别表示延迟要求、吞吐量和可靠性。)故AF11比AF12 AF13重要 而AF21比AF11重要。

  好,我们扩展了一下PHB协议 了解了PHB是定义了服务等级的就OK

  然后呢我们的语音 视频 数据这三份流量进入到了各自的队列中,然后我们对其进行一个叫做调度的方法(拥塞管理)。

  调度怎么理解呢?就是如何安排进来的流量有次序有主次的出去。

  OK 我们的调度又分两种。

  ①基于队列的调度,大家了解路由器or交换机内部是虚拟出了7个队列

  假如我们的语音进入了队列5 视频队列4 数据队列3.

  那么我来讲讲基于队列的调度是怎么工作的。

  首先基于队列的调度分RR(轮询)—-WRR(加权轮询)—-WFQ(加权公平)—PQ(按优先级出流量)

  很明显我们语音(队列5)>视频>数据

  则RR呢就语音走一个包,视频走一个包,数据走一个包,然后循环 RR虽说非常公平,但是吧我们要的就是区别对待,高优先级先溜,低优先级排后面。

  所以呢又开发了WRR,我们给语音队列加一个权重值3 视频2 数据不给 这样 每一个循环 语音就走3个包,视频走2个 数据还是走1个 这样就解决高优先级先溜的问题,不过又有一个问题,现实中,我们通常是以带宽来衡量的,假如数据的一个包1500字节,语音1个包100个字节,那么这样的一个循环,数据反而占用的带宽更高

  所以又开发了WFQ 加权又公平,基于带宽来分配,语音呢 分30M 视频呢分20M 数据分10M 这样就解决了上述问题。

  不过一般来说,现实中,一般会采用结合的方式比如PQ+WRR,PQ+WFQ这种方式

  讲完基于队列的调度,那么接下来到了基于类的调度

  ②CBQ(Class-based Queueing)基于类的加权公平队列是对WFQ功能的扩展,为用户提供了定义类的支持。CBQ首先根据IP优先级或者DSCP优先级、输入接口、IP报文的五元组等规则来对报文进行分类,然后让不同类别的报文进入不同的队列。对于不匹配任何类别的报文,送入系统定义的缺省类。

  类的概念呢可以理解成语音为一类,视频一类,数据一类,我匹配语音这一类报文,然后送到我CBQ规划的3个队列里面

  EF队列—满足低时延

  AF队列—-满足需要带宽保证的关键数据业务

  BE队列:满足不需要严格QoS保证的尽力发送业务

  在EF队列中采用PQ调度,在AF队列中采用WFQ,在BE采用WFQ

  所以我们会为EF队列设置一个最大带宽(毕竟用PQ免得BE的流量饿死了) 会为AF队列设置一个最小带宽(怎么样都得给我发出去一点) BE呢就剩下的带宽给BE用。在EF中还有一个特殊的队列LLQ LLQ比EF更优。

  这样呢我们就调度完了 该分配的也分配好了 接下来是不是该出去了?这个时候呢我们可以在出接口的地方做流量管理。讲流量管理前我们再想想,假如流量真的很多很多,我再怎么调度,所有队列都满了,但是入口还一直进来流量,这个时候怎么办?会发生拥塞对吧?堵住了,难进,出去又慢。这个时候我们就要讲一讲发生拥塞时候的拥塞避免。

  当我们拥塞的时候,队列满了 会造成什么问题呢?尾丢弃,是个什么意思?就是后面进来的流量直接就丢包了。所以尾丢弃会造成3个问题

  一.不加分区丢包
数通HCIE面试必杀技:Qos深度剖析+热点问答揭秘
  二.TCP全局同步

  三.TCP流量饿死

  接下来我们来进入TCP,来聊聊TCP。

  我们知道TCP是一个可靠安全的传输协议,有确定机制,丢包会重传等。

  假如TCP丢包了,等待重传计时器超时,然后重传,称超时重传。

  假如TCP丢了一部分的包,接收方能够通过序列号等参数,确定你发来的数据不完整,这个时候接收方会立刻连续重复发三个ACK报文,发送方立刻意识到接收方刚刚没收完整我发的包,立刻重发,称快重传。

  接下来我们来看看在网络中,我们的TCP如何启动并且发送数据的(TCP的一个窗口)

  我们来看一下这个图,看上去有点懵不要紧,我们一步一步来 先解释一些名词

  拥塞窗口cwnd是发送方为一个动态变化的窗口叫做拥塞窗口,拥塞窗口的大小取决于网络的拥塞程度

  Ssthresh是慢启动门限(这里我们设置成16) cwnd=24时为阈值(默认是56636B)

  慢开始也称慢启动是指建立TCP连接时,把cwnd设置=1(536B)然后进行一个指数增长。

  OK接下来进入重点:

  现在有一个TCP连接–>开始一个慢启动从cwnd=1开始指数增长到cwnd=16的时候 到达门限了,开始拥塞避免,就不指数增加了,进入一个加法增长(发送的报文如果都收到ACK回复,cwnd会加法性的+1+1+1)—->到达cwnd=24阈值时检测到了拥塞—->立马把ssthresh门限降为阈值的一半也就是12 即新的ssthresh=12 为上图的②+③ 接来下有两种处理行为

  ①:拥塞后如果是超时重传造成的丢包则cwnd=1,此时的ssthresh则为12,为上图的④+⑤

  ②:拥塞后如果是快重传造成的丢包则cwnd=12,进行一个拥塞避免为上图的①

  大家捋清楚上图后 接下来是TCP全局同步是什么意思呢?上图是一个TCP连接,假如有100个N个TCP连接用时进行,那么这100个TCP连接同时到达阈值,同时把阈值下降一半,这样会造成一个带宽的浪费,如果50个先到阈值,下降一半,再慢启动,另外50个就可以利用之前50个的带宽。

  那TCP流量饿死又是什么呢?TCP流量饿死是指,当我的TCP在cwnd很小的时候,如果UDP流量大量的,持续的进来,就会造成TCP的cwnd一直很小最后TCP流量无法传出则称饿死。

  那我们是怎么解决这些拥塞造成的问题呢?在我们拥塞避免的阶段,我们用一个叫做wred(加权早期随机检测)的技术,这个技术呢,是我们为每一个队列配置一个丢弃模板,在队列还没满的时候,高优先级的丢10个包,低优先级丢20个包这样的处理方法。有效的解决了TCP全局同步+TCP流量饿死+不加区分的丢包。

  接下来我们的流量从入接口进来,经过了分类标记,调度(拥塞管理),拥塞避免终于到出接口了,在出接口这里呢,我们可以对其做一个流量管理。

  流量管理分三个

  流量监管TP(Traffic Policing)可以监督不同流量进入网络的速率,对超出部分的流量进行“惩罚”,使进入的流量被限制在一个合理的范围之内,从而保护网络资源和用户的利益。

  流量整形TS(Traffic Shaping)是一种主动调整流量输出速率的措施。流量整形将上游不规整的流量进行削峰填谷,使流量输出比较平稳,从而解决下游设备的拥塞问题。

  接口限速LR(Line Rate)可以对一个接口上发送或者接收全部报文的总速率进行限制。当不需要区分报文类型而要限制通过接口全部流量速率时,接口限速功能可以简化配置。

  一句话简单概括一下:监管则超出的流量丢弃,整形则超出的流量缓存待会再发,限速则懒得做配置直接在接口限速。

  现在有一个问题,那路由器或者交换机是如何知道流量是否超出呢?这里我们是用令牌桶技术,下面我们来聊聊令牌桶技术是如何检测出流量是否超出规格了呢。

  令牌桶技术

  我们直奔主题,有些概念我们边理解边想。

  1. 单速单桶

  CIR:承诺信息速率,表示向C桶中投放令牌的速率,即C桶允许传输或转发报文的平均速率

  CBS:承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量

  如果不理解这两个概念没关系,我们来举个例子,比如老丈人测女婿酒量这个场景就很符合,想象这个令牌桶是装酒的,那老丈人如何测得女婿的酒量呢?老丈人每秒往桶里放1ml的白酒,放了500S,满了,此时桶的CBS(容量)为500ml,CIR=1ml/s,我们用Tc表示桶现在有多少酒,用B表示女婿每秒喝的酒,然后女婿开始喝酒,女婿第一秒就喝了10ml,此时B=10ml,BTc,太猛,老丈人都喝不了这么多,把你标记为红色,代表你过分显摆自己酒量,并且让你把酒吐回桶里,换下一个女婿。

  也就是说我们把Tc用来表示令牌桶里的令牌,B代表目前到达的报文大小,系统会按照CIR速率往桶里丢令牌,CBS则是桶的容量,如果BTc 标记红色 Tc不减少 绿色就报文通行,红色则丢弃。

  2. 单速双通

  回到我们的老丈人测女婿酒量,这次老丈人吸取了上次的经验,放了两个桶,C桶和E桶,老丈人以CIR的速率往C桶倒酒,如果C桶满了,就把酒倒点给E桶,防一手。女婿来了,女婿一开始小酌一口,绿色,然后女婿上头了,C桶就剩10ml,女婿说满上,给我来杯50ml的,很尴尬,C桶没酒了,老丈人打开E桶,倒出40ml,给女婿喝,此时女婿被标记黄色,女婿还能喝,这次一次性喝100ml,E桶的酒也不够,被标记红色。

  EBS(Excess Burst Size):超额突发尺寸,表示E桶的容量,即E桶瞬间能够通过的超出突发流量。

  回归正题,Tc=C桶令牌,Te=E桶令牌B=报文大小,Cbs=C桶容量,Ebs=E桶容量

  如果C桶满了 CIR就把令牌给E桶,防止突发流量

  BTc且>Te 报文被标记红色

  3. 双速双桶

  再回到我们的老丈人测女婿酒量,这次老丈人不再一个人往两个桶倒酒了,叫上了老婆,一人负责一个桶。

  PIR(Peak information rate):表示向P桶中投放令牌的速率,PIR大于CIR;

  CIR:承诺信息速率,表示向C桶中投放令牌的速率,即C桶允许传输或转发报文的平均速率;

  PBS(Peak Burst Size):峰值突发尺寸,表示P桶的容量,即P桶瞬间能够通过的峰值突发流量;

  CBS:承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量

  Tc=C桶令牌,Tp=P桶令牌B=报文大小,Cbs=C桶容量,Pbs=E桶容量

  CIR往C桶丢令牌,PIR往P桶丢令牌 同步进行

  Tp  回到我们的流量管理

  流量监管TP 通常使用car来限制流量。使用的是双通双速**。

  可以根据**来自定义行为,默认是绿色转发,黄色重新分析再标记,红色丢弃。

  流量整形TS 通常使用gts来限制流量。使用单桶单速双色。

  绿色转发,红色缓存。

  接口限速LR 通常使用lr +inbound/outbound来限制流量速率。使用单速单通双色。

  绿色转发,红色(如果在交换机出方向为缓存,入则丢弃)

  接下来我们再来说说TP TS LR的区别

  路由器上:

  TP 可以基于接口和类

  TS 可以基于接口,队列和类

  LR 只支持配置在WAN的出口

  交换机

  TP 可以基于类

  TS 可以基于队列

  LR 可以基于接口

  好的 那我们的QOS就讲完啦!我们再来捋一捋,流量从入接口进入–分类标记–进入队列–拥塞管理(调度机制)–拥塞避免–流量管理!也就是我们的QOS的一个大致流程,希望这篇文章对备考的考生有用!如果QOS想学好,还需要多配置多试验哦!下面给大家几个考试中的常见追问!

  1. 整形和监管的区别

  2. 交换机上做整形可以基于队列和MQC吗?

  3. 交换机和路由器的整形有什么差别?

  4. 配置QOS而不应用的情况?

  5. 尾丢弃的问题?

  谢谢大家,祝大家考证一次过!