QoS技术的产生
随着网络的不断发展,网络规模及流量类型的不断增加,使得互联网流量激增,产生网络拥塞,增加转发时延,严重时还会产生丢包,导致业务质量下降甚至不可用。所以,要在IP网络上开展这些实时性业务,就必须解决网络拥塞问题,而解决网络拥塞的最直接的办法就是增加网络带宽,但从网络的建设成本考虑,这是不现实的。
传统端到端网络通信存在的问题、传统网络缺点:
先到先达,优先转发(会导致网络拥塞)
需要衡量的质量要求
1)带宽
最大带宽BWmax等于传输路径上的最小带宽 (木桶效应)
对于视频流量敏感,提升最小带宽值带来正收益
2)时延
端到端网络时延等于路径上所有时延之和
传输时延
处理时延
队列时延
串行化时延(从第一个bit到最后一个bit中间所使用的时间)
语音、视频流量敏感
语音流量对带宽不是很敏感,降低时延获得正收益
3)抖动
由于每个报文端到端时延不相等造成的
降低抖动获得正收益
4)丢包率
丢包可能在传输过程中的每一个环节发生
对于TCP流量很敏感,降低丢包率获得正收益
在带宽一定的情况下如何提升服务质量?
1)尽力而行服务模型(能传多少传多少,传不了就丢)
增大网络带宽
升级网络设备
2)综合服务模型 (相当于公交车道)
优点:可以为某些特定业务提供带宽、延迟保证
缺点:实现较复杂,无流量发送时仍然独占带宽,使用率低,所有设备必须运行RSVP协议
3)区分服务模型(使用最多)
1、在网络入口对报文进行分类,完成对报文的标记 (流量分类标记)
为什么要报文标记?
端到端进行QoS部署时,就需要每台设备都对报文进行分类,这样就会导致耗费大量地设备处理资源,为此提出了对报文进行标记的方法,这样下游设备只需要对标记进行识别即可提供差分服务。
收到标记,将其映射成本地对其定义的服务等级值(映射为自己本地可以使用)
根据不同的服务等级值进入相应的缓存队列,根据队列间的调度机制,实现不同的转发服务(发送拥塞进行拥塞管理—队列技术)
报文分类与标记
1、简单流分类
VLAN中802.1Q字域(PRI)
802.1P最多区分8类数据(0~7) ,802.1p占3bit
MPSL中Label字域(EXP)
MPLS EXP最多区分8类数据(0~7), exp占3bit
IP包头中的ToS字域(IPP/DSCP)
IP-Precedence字段最多区分8类数据(0~7),占一个字节大小,IP-Precedence占3bit
由于IP-p优先级8类不够使用,所以扩充了3bit称为DSCP(差分服务代码点)-->成为DS-field字段,占6bit大小,可区分64类(0~63)
IP头部经历过两次修改,最早的RFC791中,IP字段名称为TOS(type of service 服务类型)。
将三个字段作为IP优先级。随着IP网络的发展,IP优先级字段最多能将报文分为8类。2^3=8(0-7)
在新RFC2474中,将后三个字段加入作为DS,将IP优先级改名为DSCP,共有2^6=64个分类。(0-63)
2、复杂流分类(MQC)
配置流分类、流行为、流策略
1)流分类(traffic classifier)
将流量筛选出进行分类
and表示流分类中各规则之间关系为“逻辑与”,必须都匹配
or表示流分类各规则之间是“逻辑或”,匹配一个或全部
缺省情况下,流分类中各规则之间的关系为“逻辑或”
2)流行为(traffic behavior)
MQC流行为动作有:
报文过滤
重标记优先级
重定向
流量监管
流量统计
配置eg:
traffic behavior huawei
remark dscp ef
3)流策略(traffic policy)
将流分类与流行为关联应用
配置eg:
traffic policy huawei
classifier huawei behavior huawei
DSCP/查分服务代码点分类:
数字形式:DSCP取值范围为0~63;
关键字表达方式:用关键字标识的DSCP值。
1)CS
分类选择/类选择码
CS6、CS7默认用于协议报文,拥有最高优先级(转发等级最高)
整个CS都是用来兼容IP优先级的,IP优先级只有3个bit 所以每个CS后3bit都为0。
所有的CS都是映射的0-7。
2)EF
加速转发行为(常用于语音流量报文,DSCP号为46)
发包速率大于收包速率
3)AF
确保转发行为
未超出带宽值,确保数据转发
超出带宽值进行缓存,有空闲再发
AF4用于承载语音信令流量
AF3用于承载直播流量
AF2用来承载VOD/视频点播流量
AF1用来承载普通上网流量
AFij:丢弃优先级 j越大越优先丢弃
所有AF流量最后一位bit都为0
第4 5位bit为丢弃优先级
一共为6bit 例如计算AF42:
42计算 第一位1234 第二位123
也就是第一位0100为4 第二位0010为2
因为最后一位为0 所以最后为100100-->36
4)BE
尽力而为转发行为
(一般将不太重要的报文设置为BE,DSCP号为0)
DSCP/ IP-Precedence/ 802.1p/ EXP值表
拥塞管理与拥塞避免
拥塞管理与拥塞避免配置前提:
先有报文分类,根据报文分类和标记的队列类型进行QoS优化配置
什么时候会产生拥塞?
当多条带宽汇总到一条带宽上时,就会产生拥塞
拥塞管理的核心是什么?拥塞避免技术的前提是什么?
核心是队列,队列的核心是调度队列调度算法
当网络中间歇性的出现拥塞,且关键报文要求被更优先地转发时,此时就需要进行拥塞管理。
拥塞避免技术前提是队列满了,后续发往该队列的关键报文都被全部丢弃,此时需要拥塞避免
拥塞管理方法:
通过LP本地优先级映射到队列中
使用算法进行调度
常见队列算法
需要注意的是:缓存也成为硬件队列,硬件队列满了才会进行队列算法,否则不会拥塞。
队列算法只能称为软件队列,都是在进入缓存之前进行调度。
1.FIFO(先进先出):默认队列算法
先进先出,无紧急次紧急非紧急之分
2.PQ(优先级队列):分四种优先级报文
1、高优先级队列
2、中优先级队列
3、一般优先级队列
4、低优先级队列
特点:将紧急流量优先放到高优先队列,次紧急、低紧急放入中低队列,紧急流量转发完毕再转发中低流量
优点:保证了紧急报文转发,区分流量
缺点:低优先级队列饿死现象(如果高优先级队列一直有,低优先级无法转发)
3.WRR(权重轮询队列)
优点:解决了PQ饿死现象
缺点:基于报文个数调度,容易造成包长尺寸不同的报文出现不平等调度,低时延业务得不到及时调度
4.WFQ(加权公平队列):按照流特征进行分类(五元组),hash算法自动分配队列
优点:按照权重分配带宽,自动分类,配置简单
缺点:低延时业务仍得不到及时调度;无法实现用户自定义分类规则
5.PQ+WFQ:优先级队列+加权公平队列
优点:可保证低时延业务得到及时调度;实现按权重分配带宽等
缺点:无法实现用户自定义灵活分类报文的需求
6.CBQ(类加权公平队列):对WFQ的扩展
1、基于分类队列,将高优先级放入EF中、低中流量放到AF、BE中
优点:提供了自定义类的支持;可谓不同的业务定义不同的调度策略
缺点:由于涉及到复杂流分类,会消耗系统资源
2、分为三个队列:EF AF BE [还有LLQ(低延迟)队列,排在第一位,专为语音流量定制]
BE队列使用接口剩余带宽和WFQ调度方式进行发送。
处理简单且快速,但是无法为紧急报文提供优先转发服务
拥塞避免
某一队列已经被装满时,后续向该队列发送的报文全部丢弃,直至拥塞解除这种处理方式称为尾丢弃(Tail Drop)
为什么要拥塞避免?
1、因为会导致TCP全局同步问题
怎么产生的TCP全局同步?为什么会有TCP全局同步?
当大量TCP报文丢弃后会进行重连接,会造成TCP慢启动(滑动窗口大小的值从初始值慢慢增加),TCP确认包由于拥塞被丢掉,故发送方未收到TCP确认,则认为网络发生了拥塞,于是同时将TCP Window Size减小,则整体流量同时减小。流量减小拥塞消除。当流量越来越大时,队列满了进行尾丢弃,又会进行重连接,周而复始。
2、会导致TCP饿死现象
TCP报文将进行尾丢弃时Window Size减小,TCP流量整体减小,而UDP流量并不会减少,反而可能会占满整个队列,造成TCP饿死现象。
3、会导致无差别丢弃
尾丢弃很可能导致大量非关键数据被转发,而大量关键数据被丢弃。
解决尾丢弃办法1:
RED(早期随机检测)
在队列未装满时先随机丢弃一部分报文。
通过预先降低一部分TCP连接的传输速率来尽可能延缓TCP全局同步的到来。
解决尾丢弃办法2:
WRED(加权早期随机检测)
通过设置报文的丢包的高门限、低门限及丢包率。
报文到达低门限时,开始丢包,
到达高门限时丢弃所有的报文,随着门限的增高,丢包率不断增加,最高丢包率不超过设置的最大丢包率。
到达高门限,报文全部丢弃。
弥补了尾丢弃的三个缺点,且大大提高了链路带宽利用率。
流量监管与流量整形
流量监管与流量整形属于流量动作,对流量规格监督来限制流量及资源使用
1)流量监管:对于超出的流量直接丢弃(只能在入方向做)
优点:可以对不同类别的报文分别进行限速
缺点:当链路空闲时,造成带宽浪费;丢弃的流量可能要进行重传
典型的流量监管技术
CAR(约定访问速率)
超出限定速率可能会被丢弃或者降低优先级转发
当对丢包率非常敏感的时候,不可使用流量监管,因为可能会丢弃
2)流量整形:对于超出的流量先缓存到队列中,等待空闲带宽时,将数据再进行传输(只能在出方向做)
优点:可实现对不同报文分别进行限速,缓冲机制可减少带宽浪费,减少流量重传
缺点:可能会增加延迟
典型流量整形技术
1)GTS
2)LR(接口限速)
超出限定速率的数据报文会放入缓存,链路空闲再发送(也会存在队列)
对延迟比较敏感的流量不可使用流量整形。
判断是否限速的工具:令牌桶
为什么要有令牌桶?
要实现流量的控制,必须有一种机制可以对通过设备的流量进行度量。令牌桶是目前最常采用的一种流量测量方法,用来评估流量速率是否超过了规定值。
实现原理是什么?
每单位时间(可以设置秒)内将数据报文放入令牌桶
为什么要有两个桶?
单桶最大的问题是无法允许流量的突发(超过额定速率会丢还是存)
1、单桶单速率流量监管
实现原理:每单位时间(可以设置秒)内将数据报文放入令牌桶,若超过CIR,可能会丢也可能会存入缓存,却决于配置的流量监管还是流量整形技术。
2、双桶单速率流量监管
CBS:C桶的大小 EBS:E桶的大小
E桶里存放的速率都是上一秒C桶剩余的速率,每过一秒E桶都会清空
当EBS≠0时,称为单速双桶。当EBS=0,E桶的令牌数始终为0,相当于只使用了一个令牌桶——C桶,这种情况也称为单速单桶。单速单桶中,报文只标记为绿、红两色。
如上图使用双桶单速令牌桶,速率令牌转发过程:
配置每秒放入10M速率
第一秒C桶放入10M速率,假设有3M流量经过,10M-3M=7M,剩余7M放入E桶中做缓存。
第二秒C桶再次放入10M速率,此时所有速率为10M+7M=17M。假设有4M流量经过,10M-4M=6M,在这里E桶的速率会清空并放入刚得到C桶的6M。
第三秒C桶再次放入10M速率,此时所有速率为10M+6M=16M,假设此时有12M流量经过,直接调用C桶E桶中所有速率,16M-12M=4M,此时E桶会清空并放入C桶的速率0M。
第四秒C桶再放入10M速率令牌,此时所有速率为10M,E桶为0M,假设此时有13M流量经过,直接调用C桶所有速率令牌,剩余3M根据流量监管或流量整形进行丢弃或者缓存。
如果在C桶中就超出了CIR,具体丢还是缓存在于配置了流量监管还是流量整形
缺点是不能持续突发,只能断续突发
单速率令牌桶名词:
CIR(Committed Information Rate):承诺信息速率
CBS(Committed Burst Size):承诺突发尺寸
EBS(Extended burst size):超额突发尺寸
流量评估规则:
如果C桶能满足超出CIR标志(未超过C桶)为绿色
如果超过C桶没超过E桶CIR标志为黄色
如果C桶+E桶不能满足超出CIR标志(C桶E桶都超出)为红色
默认情况下,green、yellow进行转发,red报文丢弃
3、双桶双速率流量监管(使用最多)
CBS:C桶的大小 PBS:P桶的大小
可以实现基于报文速率的突发
与双桶单速不同的是,将双桶单速的E桶换成了P桶,跟C桶一样按照单位时间向令牌桶内放入速率令牌。C桶的约定信息速率为CIR,P桶为PIR。
C桶与E桶可以叠加使用,C桶与P桶不会叠加使用。
如上图使用双桶双速令牌桶,速率令牌转发过程:
配置C桶每秒防入10M,P桶每秒放入20M
第一秒C桶放入10M,P桶放入20M,假设有3M流量经过,C桶P桶都可满足,10-3=7M,20-3=17M。携带绿色标记出。
第二秒C桶依旧放入10M,P桶放入20M,叠加上限为10M、20M不会超过上限。此时假设有15M流量经过,C桶无法满足会转交给P桶,20M-15M=5M。携带黄色标记出
第二秒C桶依旧放入10M,P桶放入20M,叠加上限为10M、20M不会超过上限。假设有21M流量经过,C桶无法满足,转交给P桶也无法满足,流量会携带红色标记出。
双速率令牌桶名词:
CIR(Committed Information Rate):承诺信息速率
CBS(Committed Burst Size):承诺突发尺寸
PIR(Peak Information Rate):表示峰值信息速率
PBS(Peak Burst Size):表示峰值突发尺寸
流量评估规则:
绿色
黄色
红色
默认情况下,green、yellow进行转发,red报文丢弃