IP QoS历史 Internet的创建者在IP分组报头中预留了一个字节,为服务类型TOS,从而使得最初的IP规范就包括QoS。服务类型用于指示所需QoS的抽象参数,这些参数用于指导如何选择实际的服务参数。 1980年,Internet处于象牙塔,运行的应用和通信有限,因此,是否支持ToS显得无关紧要,IP应用没有明确地标明这个字节。 随着Internet的发展到大众化,商业化阶段,QoS的重要性逐渐增加,Internet基于无链路的端对端分组服务,传统使用TCP/IP协议族提供尽力而为的数据传输方式,虽然带来了灵活性与健壮性,但分组的动态特性也容易导致网络阻塞。 最初解决这种问题的办法是nagle算法,现在几乎所有IP主机部署都支持这种算法,nagle算法宣告了基于QoS的功能的开始。 1986年,Internet QoS工具出现,就是现在TCP部署中终端系统必须的拥塞避免机制,主要是使网络中的TCP流对拥塞信号做出反应,至于快速重传和快速恢复是1990年添加的,用来在分组丢失期间提供最佳的性能。 1990年左右QoS的重点是路由器,由于路由器只能进行先进先出的调度(FIFO),这样在分组调度算法中不能提供对通信进行区分或优先处理的机制,先进先出排队技术导致尾部分组被丢弃。WFQ(一种分组调度算法)和WRED(一种队列管理算法)就被广泛用来解决这项问题。 之后,为了标准化端到端QoS,IETF提出了RSVP。
QoS:在资源有限的情况下,提升网络的服务质量,优化网络质量。 QoS分为三类,先进先出,集中式,模块化。 QoS并不能增加带宽,只是优化利用带宽,无非就是紧要的流量优先出去,或者说牺牲大多数为了少数的服务。既然是这样的思想,那么部署QoS的步骤的第一步自然就是如何找到这些要紧的流量。 在企业环境中,我们假定路由器一个G口连接公网,那么不管路由器的接口带宽如何,运营商提供的带宽也不可能和路由器接口带宽一致,那么从多个接口收到的数据,如何确保重要流量优先传递呢? 流量的分类
五元组(源IP,目的IP,协议,源端口,目的端口)TOS字段,服务质量Packet类型,大小,内容等 可以使用的工具有ACL,route-map或者class-map(QoS中特有) TOS主要分为两类标记方法:IP prec 和DSIP 区别:前者用了高3位 后者用了前6位 IP prec:数值越高越先从接口出去,未被标识的流量就是0,协议产生的就是6. DSCP有两个维度,AF高3位映射的是IP PRECE,最后一位固定是0,剩下的2位代表丢弃原则,数值越低,越容易被丢。 比如EF流量,转发优先级很高,为6,丢弃原则为11,3,又不能几乎被丢,语音流量一般用EF标识。 标识的匹配或抓取: 我们刚才谈论了默认是0与6,那么怎么给做标记?有一般的规则:视频流量一般是往高设置,一般紧要的UDP流量设置大一点,不然丢了就没了。对于时效性不高的情况的可以设置低一点,但丢弃概率不能太低,中等就可以。 标记有两种做法: 1.policy-map里面挂class-map,再用set,作为in方向 2.PBR(route-map)流量的管理:队列机制 确保那些流量可以获取优先权(如何从接口优先出去的权利),比如一个接口最多排1M/S的队列,接收到1.5M流量,那么剩下的0.5M就被丢弃。 至于如果定义多个队列,又该如何走那条队列,引出队列调动机制。 1.PQ high medium normal low 将流量分为四个队列,高优先级,中等队列,一般队列,最低队列,只有高队列调动完毕,才会运行低队列调动。 导致的问题:出现饿死现象,低队列的流量很慢被转发出去 2.CQ ROBIN轮循队列 16个队列 0队列为优先队列 缺点:延时大,比如紧急流量第二次被轮循中间的间隔时间 3.WFQ 加权公平队列 256个队列 权重+1/各项权重加1 按照权重瓜分带宽 低于2.048串行线路的默认队列(大于2.048默认队列FIFO)。 缺点:不能手动调整,对于紧要但是占用带宽小的流量不友好, 4.CBWFQ 手动设置队列和占用带宽值(带宽的百分比占用默认不能大于75%)并且当语音数据到达,其他队列让道,让其先出 修改最大带宽% 练习:af21 20% af32 30% ef 10%
Match-all就是且的关系 match-any就是或的关系 Ef是语言流量,priority代表只要有流量就转发。 接口调用
流量的监管和整形 令牌桶算法:流量会在令牌桶中获取令牌,令牌的速度就对应了流量的速度。依次限制流量速度。 监管拿不到令牌就会丢弃,整型拿不到令牌就会缓存。 令牌桶:单速率双色单桶 单速率三色双桶 双速率三色双桶 CIR:承诺信息速率 CIR=BC/TC TC:令牌下发时间间隔 BC:每次下发令牌数量 BE:超发量 单速率就是每次固定速率下发多少令牌,取到令牌是绿色,没有取到就是红色,会被丢弃。 双桶:剩余令牌会被放到第二个桶,过一定时间第一个桶会产生新的,第二个桶保留第一个的,但是最多也只是保留第一个桶每次产生的最大令牌。如果流量大于令牌数,先取第一个桶,后取第二个桶。 取到第一个桶是绿色,第二个桶是黄色,没有取到是红色。 双速率三色双桶:两个桶速率不一样,CIR不变,流量小于第一个桶的令牌,取到第一个桶,如果大于第一个,只能取第二个。 好处:任何时候都可以超发,单速率三色双桶不行,它第二个桶有只是因为第一个桶没用完。
管制一般用于限速,整形一般用于对接,大带宽对接小带宽 单速率三色双桶,做第二个桶 整形: 整形也可以解决前置拥塞,将自己速率降下来
双速率三色双桶
绿色——黄色——红色
拥塞避免 当数量在入队时候,队列满了,该如何处理? 这样的流量不能进行队列管制的,管制只能针对入队的流量才能操作。 我们将队列满了叫做队列拥塞,进行拥塞避免处理——队列丢弃机制 一般情况下队列满了,再来的数据会被丢弃,这叫做尾丢弃。 尾丢弃会引发TCP“全局同步”,RED早期检测随机丢弃会避免这种现象,WRED加权的RED根据优先级来对数据进行丢弃,以允许后续流量进入。 优先级 最小门限值 最大门限值 丢弃概率(多少分之一)