华为认证数通HCIE面试之Qos完整解析

腾科教育给大家分享下数通HCIE

PS:希望大家是一口气读完这篇文章 谢谢!
首先来讲讲QOS是啥?
文档定义如下:服务质量QoS(Quality of Service)用于评估服务方满足客户服务需求的能力。通过配置QoS,对企业的网络流量进行调控,避免并管理网络拥塞,减少报文的丢失率,同时也可以为企业用户提供专用带宽或者为不同的业务(语音、视频、数据等)提供差分服务。
用简单的一句话概括一下:对不同业务区别对待,达到客户满意!


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

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

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

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

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

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

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

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

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

分类有两种。

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

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

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

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

 

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

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

3.IP报文中的Tos字段

QOS4

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 则是CS4中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 这样就解决了上述问题。

 

QOS6

 

那么PQ是啥呢,PQ就是莽夫,冲就对了,语音优先级高,那我就先把语音的流量走完,再走视频再走数据。这样虽然高优先级的很开心,但是如果语音一直有流量,那么我的视频,数据就一个包都发不出了,会造成低优先级流量饿死的情况。

 

QOS7

 

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

 

QOS8QOS9

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

 

②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个问题 

一.不加分区丢包  

二.TCP全局同步  

三.TCP流量饿死 

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

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

 

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

 

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

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

 

QOS11

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

拥塞窗口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,B<Tc,桶里还有酒,继续,把你标记为绿色,代表继续测量,此时CBS=500-10+1(CIR)=489ml,第二秒,你喝了500ml一口,此时B=500ml,Tc=489ml,B>Tc,太猛,老丈人都喝不了这么多,把你标记为红色,代表你过分显摆自己酒量,并且让你把酒吐回桶里,换下一个女婿。

也就是说我们把Tc用来表示令牌桶里的令牌,B代表目前到达的报文大小,系统会按照CIR速率往桶里丢令牌,CBS则是桶的容量,如果B<Tc 标记绿色并拿走桶里的令牌  如果B>Tc 标记红色 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桶,防止突发流量

B<Tc  报文标记绿色

Tc<B<Te 报文标记黄色

B>Tc且>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<B,报文被标记为红色;

Tc<B≤Tp,报文被标记为黄色,且Tp减少B;

B≤Tc,报文被标记为绿色,且Tp和Tc都减少B。

Okk,总结一下也就是说,通过令牌桶技术,我们把报文标记成不同的颜色,来看出流量是否超出规格了。

回到我们的流量管理

流量监管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. 尾丢弃的问题?

谢谢大家,祝大家考证一次过!数通HCIE面试之Qos完整解析+常见追问-3217740-12 数通HCIE面试之Qos完整解析+常见追问-3217740-13 数通HCIE面试之Qos完整解析+常见追问-3217740-14

猜你喜欢

转载自blog.csdn.net/qq_42726883/article/details/113244610