qos模型
1.尽力而为
2.综合服务
先申请带宽,保证带宽,申请带宽额外消耗了时间 RSVP
3.区分服务
将数据分为不同优先级等 优先级高的先传等等
PHB和end to end qos
PHB,每条行为,每一个设备做不同的qos策略
end to end qos 端到端qos 每台设备做相同的qos策略
————————————————————————————-
QOS组件
1.分类和标记
将数据包分类,不改动数据包。 将数据包打标记,改动数据包。
2.管制和整形
设置一定带宽,超过的部分丢弃叫管制。 超过部分放入内存,下一秒传输叫整形。
3.拥塞管理
排队技术
4.拥塞避免
丢弃技术
————————————————————————————-
MQC 模块化qos命令行
定义流量 access-list 1 permit 10.1.1.1 0.0.0.0
class-map match-all ccie
match access-group 1
设置策略 policy-map cisco
class ccie
drop
应用策略 interface f0/1
service-policy output cisco
多动作MQC
policy-map cisco
class ccie
police cir percent 10 bc 100 ms
。。。。。。。。
————————————————————————————-
令牌桶算法
网络设备衡量流量是否超过额定带宽时,查看令牌桶
令牌桶:
放入一定数量令牌,一个令牌允许接口发生或接收1bit数据,通过1bit数据后,要从令牌桶中移出1个令牌,
当桶中没有令牌时,任何流量都被视为超过额定带宽。数据无法通过接口
*同时不停往桶里加令牌,加令牌的速度决定了数据通过接口的速度。
通过控制加令牌的速度控制用户流量的带宽,设置的这个用户传输速率称为承诺信息速率(CIR,秒为单位)
例:设置用户带宽为1000bit/s ,只要保证每秒加1000个令牌即可
* CIR 每秒中往桶里加的令牌数
* BC (burst size )一次性加进的令牌数
* TC(time interval)多久加一次令牌
例:CIR=8000 (一秒钟加8000个令牌)
BC=4000 (一次性加4000个令牌)
也就是一秒内得加2次4000
TC= 4000/8000 =0.5秒一次 (500ms)
如果bc=2000
tc=2000/8000=0.25s
*TC=BC/CIR
————————————————————————————-
单速双色
只存在一个令牌桶,流量只有两种情况:符合CIR 和 超出CIR(exceed)
例:
CIR设置为8000bit,每秒加8000个令牌,一秒结束后,没用完的令牌被清空。
第1秒 加入8000令牌,用户使用5000,3000令牌被清空
第2秒 加入8000令牌,用户使用6000,2000令牌被清空
第3秒 加入8000令牌,用户使用8000,无剩余
第4秒 加入8000令牌,用户使用7000,1000清空
* 无论上一秒,这一秒都保持8000bit/s,每秒超过8000后,超过流量都采取设定动作
单速三色
使用2个令牌桶,用户每秒带宽是2桶令牌之和!
第一个桶令牌机制和单速双色相同。
第二个桶,不能直接加入,当1秒结束后,第一个桶中剩余的令牌,转移到第二个桶,
但!不是所有未用令牌都可以转移,有限制的!最大数量称为Excess burst size(BE)
由此见,BE不可能超过CIR。BE和BC毫无关系
*注意:每一秒结束时,第二个桶令牌没用完,也要全部清除
三种结果:
小于或等于CIR (符合CIR) conform
大于CIR并小于或等于CIR与BE之和(符合两个令牌桶之和) exceed
超过CIR和BE之和 (超过两个令牌桶之和) violate
例:将CIR设置为8000bit be设置为2000
每秒往第一个桶加8000令牌,每一秒结束后,未用完的令牌放入第二个桶,
每秒用户使用带宽是两个桶之和
桶一 用户用掉 桶二 用户可用带宽
第1秒 8000 6000 0 8000
第2秒 8000 7000 2000 10000
第3秒 8000 5000 1000 9000
第4秒 8000 9000 2000(注意be=2000,只能加2000) 10000
第5秒 8000 8000 0 8000
第6秒 8000 6000 0 8000
第7秒 8000 10000 2000 10000
*第一个桶令牌数永远都是CIR数,
*第二个桶数量为上一秒第一个桶没用完的令牌数,而且不能超过BE
*要是速度达到cir+be 必须上一秒低于cir,否则第一桶不剩余令牌,所以用户不可能每一秒都以cir+be速度传输
双速三色
使用两个令牌桶,相互独立的。
第一个桶与以往相同
*第二个桶可以直接设置cir+be ,称为PIR
也就是说 第二个桶总比第一个桶大,用户流量总以第二个桶的大小传输
(用户数据通过接口时,总是先检查第二个桶的最大速率,PIR)超出就采取动作,未超出,
再检查是否符合第一个桶,超过CIR采取相应动作,未超过CIR,正常传输。
————————————————————————————–
分类和标记(qos实施的前提)
分类:将数据分为不同的类别
不修改原来的数据包
标记:将数据设置不同的优先级
修改原来的数据包
————————————————–
分类,用下列任何一种标准标识特定流量
一层
物理接口
子接口
PVC
二层
MAC
802.1q cos
vlan标识
帧中继可丢弃指示符(DE位)
cos 3bit 可表示 0-7 ,8类数据 默认为0 6和7保留
只有0-5,6类可供用户标记使用
DE位 帧中继数据包中用来表示数据包优先级的字段
成为丢弃指示位 默认 0 设置1 表示数据不重要 优先被丢弃
*二层帧头会因物理介质改变而改变,不具备端到端的意义
三层
ip优先级
dscp
源ip 目的ip
ip优先级 ip报头中 tos字段,只用3bit 与cos一样 6,7保留,只能用0-5 ,表示6类数据
5 建议用于语音
4 视频
3 呼叫信令
DSCP 用6bit 范围0-63
*ip优先级和DSCP广泛用于标记选项,具有端到端意义
*ip优先级,DSCP,COS之间的值可以互相映射
四层
TCP UDP端口号
*建议在尽可能靠近源的地方实施分类和标记
————————————————————————————–
流(FLOW)
当数据包的源ip 目的ip 协议 端口号,以及会话的socket全部相同时,这样的数据被认为 是同一个流。
通常应该得到相同的qos服务
————————————————————————————–
管制和整形
整形分为三种
generic traffic shaping GTS
frame relay traffic shaping FRTS
class-based shaping
GTS通用流量整形,适用于任何接口
FRTS 专门针对帧中继使用
class-baesd shaping 基于类的整形
*在整形中,bc建议设置为CIR的百分之一 即 bc/cir=1/100
配置管制
access-list 100 permit ip any 10.1.1.0 0.0.0.255
class-map net10
match access-group 100
policy-map band
class net10
police cir 8000 bc 1000 be 1000 conform-action transmit exceed-action drop
(*关键字police 开启管制)
interface f0/0
service-policy output band
FRTS
map-class frame-relay ttt
frame-relay cir 8000
frame-relay bc 1000
frame-relay be 0
int s1/0
frame-relay traffic-shaping
frame-relay interface-dlci 102
class ttt
配置整形
GTS
access-list 100 permit ip any 10.1.1.0 0.0.0.255
class-map net11
match access-group 100
policy-map sss
class net11
shape average 8000 1000 0
(*整形的建议BC为CIR的1/100,但BC不要小于1000,否则整形不生效)
interface s1/2
service-policy output sss
show policy-map intface s1/2
接口下直接开启整形
traffic-shape rate 8000 1000 0
————————————————————————————-
拥塞管理
规定数据按什么顺序传输
当拥塞发生时,拥塞管理才会生效,对超额的数据流使用队列算法,决定如何将数据发出
需要依赖已经做好的分类和标记
1.FIFO 先进先出
不对数据包进行分类,先到先出,速率大于E1(2.048Mbps)的接口默认开启FIFO
show ip interface f0/0
2.PQ 优先级队列
4个子队列 high medium normal low
高优先级先传,传完再传低优先级,造成两级分化
*可以限制每个队列一次性传输的最大数据包个数 达到最大包数之后,必须传递下一个队列
配置PQ
access-list 10 permit 10.1.1.0 0.0.0.255
priority-list 1 protocol ip high list 10
access-list 20 permit 20.1.1.0 0.0.0.255
priority-list 1 protocol ip medium list 20
priority 1 protocol ip nomal tcp 23
priority 1 default low
priority 1 queue-limit 400 300 200 100
interface s1/2
priority-group 1
show queueing priority
3.CQ customer queue
16个子队列,轮询调度
公平 缺点:不保证带宽
配置CQ
access-list 10 permit 10.1.1.0 0.0.0.255
queue-list 1 protocol ip 1 list 10
access-list 20 permit 20.1.1.0 0.0.0.255
queue-list 1 protocol ip 2 list 20
queue-list 1 protocol ipl 3 tcp 23
queue-list 1 default 4
queue-list 1 queue 1 byte-count 100
queue-list 1 queue 2 byte-count 200
(默认1500,切换到下一个队列)
应用到接口
interface s1/2
custom-queue-list 1
show queueing custom
4.WFQ weighted fair queuing
基于weight公平队列
根据ip优先级分配带宽(基于流分配)
为每个流分配一个队列
例:ip优先级 0 1 3 5
WFQ将所有流的IP优先级相加 0+1+3+5=9 做分母
优先级 0 1 3 5 得到的带宽为0/9 1/9 3/9 5/9
这样,优先级为0的流带宽为0 没有带宽 ,而所有数据包默认优先级为0。
所以防止默认数据包得不到带宽,
*调整算法:将所有优先级加1 再相加 (0+1)+(1+1)+(3+1)+(5+1)= 13 做分母
最终,优先级0 得到的带宽为1/13 优先级1得到带宽2/13
防止了默认数据无法分配带宽,又保证了优先级为0的流带宽最少
*所有带宽小于等于E1(2.048Mbps)的接口,默认启用WFQ
5.CBWFQ class-base WFQ
(CQ+WFQ)
区别:WFQ是基于接口的全部可用带宽分配带宽的。
优化:为特定的流量划分特定的带宽,这些特定流量分配带宽时,只能从这些划分的特定带宽中分配
例子:A B C D E 分 100斤大米
WFQ中:A B C D E 根据优先级 分配100斤大米
CBWFQ中 A B C (根据优先级)分80斤大米 C D(根据优先级)分20斤大米
*注意 CBWFQ 只能应用在OUT方向
默认情况,一个接口能使用的带宽最多不能超过75%,
access-list 1 permit 10.1.1.0 0.0.0.255
access-list 2 permit 20.1.1.0 0.0.0.255
class-map net10
match access-group 1
class-map net20
match access-group 2
policy-map CBW
class net10
bandwidth 1000
policy-map CBW
class net20
bandwidth 2000
LLQ 低延迟队列
为特定的流量划分带宽,特定流量的带宽是绝对能够保证的。
从接口全部带宽中划出一部分给LLQ ,其他带宽可以分配给CBWFQ
policy-may band
class net10
*priority percent 30, priority为LLQ中的流量分配带宽
使用CBWFQ将剩余可用带宽的50%分配给20.1.1.0
policy-map band
class net20
bandwidth remaining percent 50
将接口可用带宽从默认75%改为80%
int s0/0
max-reserved-bandwidth 80
应用队列
int s0/0
service-policy output band
—————————————————————————–
硬塞避免
当网络拥塞时,总是有数据要被丢弃的
tail drop 尾丢弃
接口的默认行为:后到的丢弃
weighted random early detection WRED
基于weight的随机早侦测,工作思想与WFQ 有相同之处,WFQ依靠流量优先级分配带宽
WRED依靠流量优先级分配相应丢弃机率。
*根据DSCP 或IP优先级来丢弃数据包 (默认根据IP优先级)
并不是总是先丢优先级低的 ,需要靠公式计算
配置
开启WRED (默认基于IP优先级)
int f0/0
random-detect
开始基于dscp的 WRED
int f0/1
random-detect dscp-based
配置CBWFQ下的WRED
policy-map WWW
class class-default
bandwidth 100000
random-detect
show queueing random-detect
唉 貌似人不是很多啊~!
顶会~!