QoS核心之拥塞避免和拥塞管理(第三版)

两个玩意有点复杂,其实也很好区别,拥塞避免就是直接干掉数据包,干掉了肯定就避免了拥塞啊,拥塞管理就是留下来慢慢再教育。按照常规学习方法是很难掌握的,但是用日常生活打比方,就容易掌握多了。其实最复杂的还是拥塞管理,拥塞管理里面的最复杂的就是队列调度。拥塞避免只是个尾丢弃或者WRED。

 

拥塞避免

学术型:切尾(TCP全局同步)

市井型:室内有点挤,排队排在后面的全部滚蛋,管你是谁;但是后面的一起滚蛋,一旦放开,又会一起来,再次变挤。


学术型:WRED(加权随机先期检测,这尼玛谁能听懂?)

(不丢)<阀值下限<(随机丢弃新收报文,随机数大于丢弃概率)阀值上限<(丢弃所有新收报文)避免TCP全局同步

市井型:公交车,下限就是车上还有位置,新来的人都可以上;上限就是车上站的空间都没有,新来的谁都不让上;如果是上下限中间,就是说没座位,还可以站人,那司机就是看人说话了,漂亮美眉被拒绝的几率低,但是也是有随机性的,因为有时候漂亮也会不对司机胃口,所以随机数大于丢弃概率的时候,漂亮美眉也不能上车,这样就不会有前面大家一窝蜂的上,重新变挤的情况。

    随机数就是司机对乘客的第一印象,主观性很强。

 

拥塞管理

这个比拥塞避免温和点,好比医院看病,谁都不能拒绝,只不过是领导优先而已,如果难以搞清楚,就搞清楚PQWFQ就行了。


1.       PQPriority Queuing)调度

高优先级队列报文全部调度完毕,低优先级才有调度机会,缺点高优先级队列总有报文,低优先级就没有机会。

领导病治好了,一般人才能治病,缺点就是如果总有领导有病,一般人就没有治病机会,只能等死了。


2.       WRRWeighted Round Robin加权轮询调度)调度

为每个队列分配加权值,虽然资源不均,起码每个队列都有调度机会,缺点就是有的队列报文大,你就无法配置想要的带宽,而且语音类,无法及时调度。

领导和群众排成几队,领导那一队可以享受高级病房,但是也得和群众轮着看病,缺点就是有的队里面人病重治疗时间长,你就难以按时得到你的高级病房,而且急症类病人得不到及时治疗会死掉。


3.       DRRDeficit Round Robin)都叫RR,所以是两兄弟

WRR差不多,不过可以按照报文长度来调度,如果报文长度超过调度能力,可以出现负权重,下次轮不到,直到权重为正。

如果一队有治疗时间过长的病人,这队先不治疗,挂免治牌,直到牌子摘掉位置,缺点也是急症类得不到及时治疗。


4.       WFQWeighted Fair Queue加权公平队列)

按流的会话信息进行流分类,尽可能多的提供队列,每个流均匀放在不同队列中,出队按照优先级分配流占出口带宽。

把病人按病情成不同种类,然后按照种类排队,最后按照优先级(病情)分配病房,这样对病不对人,比较公平。


5.       PQ+WRR/PQ+DRR/PQ+WFQ调度

混合用,最高级领导和急症病人放进PQ,并制定病房,其余人等按照WRR/DRR/WFQ分配。这个出队列处理的顺序是PQ最优先,然后再是其它。


6.       CBQClass-based Queuing)调度

按照IP优先级、DSCP优先级、输入接口、IP报文五元组分类,不同类进入不同队列。

EF队列(PQ队列)

AF队列 (WFQ队列)

BE队列(LLQ队列

按照身高、长相、背景、能力分类,然后住进高低中三等病房,而且每类人住多大面积也定好,如果还有空房,可以用来放东西。但是高等病人多,会占用低等病房,所以只有高等病人不挤爆高等病房的时候,才有相对公平。

 

队列调度

FIFO,尾丢弃

注意这里还有个队列深度,也就相当于端口缓存。太深时延大,太短丢包多,鱼和熊掌不可兼得也。

对于Diff-Serv模型,系统为每个端口预留8个业务队列,分别对应BEAF1AF4EFCS6CS7等业务类别,AF1~AF4以及BE队列默认配置成WFQ调度,根据配置的权重参数按比例分配带宽。EFCS6CS7队列默认配置PQ调度


猜你喜欢

转载自blog.51cto.com/dcboy/2473242