春暖花开的时候,大家都开着汽车外出旅游欣赏美丽的风景,却被堵在高速公路上,你是否为此感到痛苦?但如果有一种机制可以评估高速公路上的车流量、控制车流情况,确保进入高速公路的汽车都能在路上安全畅行,你是不是会觉得很开心?
与此相似,网络发生拥塞的时候,也是一件非常痛苦的事情,如图
1
和图
2
所示。
图
1
网络拥塞场景
1
图
2
网络拥塞场景
2
如果不限制用户发送的业务流量大小,大量不断突发的业务数据会使网络更加拥挤,严重时会出现网络拥塞,造成业务出现异常,同时也浪费网络资源,如图
3
和图
4
所示。
图
3
网络拥塞造成资源浪费
图
4
网络拥塞引起业务异常
那么,你是否很期待有一种机制可以在网络上通过监督进入网络的流量速率,以达到限制流量、提高网络资源使用效率的目的,从而保证有限的网络资源提供更好的网络服务?
为了达到上述目的,我们需要对进入网络的流量进行监督,实现
CAR
(
Committed Access Rate
)。
CAR
:将进入网络的用户流量的速率限制在约定的范围之内,从而避免引起网络拥塞。
要实现
CAR
,就需要对流量进行评估,然后根据评估的结果对流量采取相应的动作:
l
如果流量没有超速,设备会为报文奖励绿牌(将报文染色为绿色)。报文可畅通无阻,即被转发。
l
如果流量稍微超速,设备会发出黄牌警告(将报文染色为黄色)。通常报文会被降级,即修改报文的内部优先级,然后进行尽力而为的转发。
l
如果流量超速太多,设备会发出红牌将报文罚下(将报文染色为红色)。报文被禁止通行,即丢弃。
然而,报文不像汽车那样可以通过测速仪之类的仪器进行测速。那么,如何对报文的速率进行评估呢?——答案在这里:令牌桶。
令牌桶可以看作是一个存放令牌的容器,预先设定一定的容量。系统按给定的速度向桶中放置令牌,当桶中令牌满时,多余的令牌溢出。令牌桶是一种流量测量方法。
不得不说的令牌桶
接着上面高速公路的例子,假设进入高速公路的车辆需要在入口处领取到通行卡才能进入高速公路。为了节约人力成本,入口处放置自动出卡机。按照国家高速公路交通安全法的规定,在高速公路上行驶的车辆,车速超过
100km/h
时,应与同车道前车保持
100
米以上距离。为了保持最小安全行车距离
100
米,按车速
100km/h
计算,需要间隔至少
3.6
秒才能放行一辆车,因此出卡机每隔
3.6
秒出一张通行卡。在自动出卡机下放置一个盒子,自动出卡机按照
3.6
秒的间隔向盒子中投放通行卡。每辆进入高速公路的车辆,从盒子中领取通行卡之后才可以进入高速公路。
令牌桶算法与此类似。简单来说,令牌桶可以看作是一个存放一定数量令牌的容器。系统按设定的速度向桶中放置令牌。当桶中令牌满时,多出的令牌溢出,桶中令牌不再增加。在使用令牌桶对流量规格进行评估时,是以令牌桶中的令牌数量是否足够满足报文的转发为依据的。每个需要被转发的报文,都要从令牌桶中领取一定数量的令牌(具体数量视报文大小而定),才可以被正常转发。如果桶中存在足够的令牌可以用来转发报文,称流量遵守或符合约定值,否则称为不符合或超标。
按照系统向令牌桶投放令牌的速率和令牌桶的数量划分,令牌桶算法有三种模式:
l
单速单桶
l
单速双桶
l
双速双桶
下面我们以色盲模式为例详细介绍这三种模式。
假设有一套自动出卡系统,包括一台自动出卡机和一个盒子
C
。自动出卡机以固定的速率(
3.6
秒出一张通行卡)向盒子中投放通行卡。这个固定的速率,就相当于是单速单桶模式中的
CIR
参数。
CIR
(
Committed Information Rate
):承诺信息速率,表示向
C
桶(单桶模式中只有一个令牌桶,称为
C
桶)中投放令牌的速率,即
C
桶允许传输或转发报文的平均速率。
如果平均每
3.6
秒来了不止
1
辆车,通行卡很快就领完了。这时自动出卡机上的红灯亮起,新到的车辆禁止进入高速公路。这就起到了限定作用,将放行车辆的速率限制在放卡速率范围内。
如果平均每
3.6
秒来了不到
1
辆车,盒子里就会有一些积累起来的通行卡。这些累积起来的通行卡可以应付车队(比如车友俱乐部的车队)要进入高速公路这样的情况。我们规定每辆车都要领取通行卡,都由领队的车领取。
假设某时刻来了一个车队共
8
辆车,但盒子里只有
6
张通行卡,领队车拿起通行卡一数,发现不够,那么这个车队不允许进入高速,通行卡放回盒子中。
盒子中的通行卡不停累积,总有盒子装满的时候。这个盒子的容积,就相当于单速单桶模式中的
CBS
参数。
CBS
(
Committed Burst Size
):承诺突发尺寸,表示
C
桶的容量,即
C
桶瞬间能够通过的承诺突发流量。相当于盛放通行卡的盒子里最多可以放多少张通行卡,也就是说,该自动出卡系统允许通过的车队中最多可以有多少辆车。
在单速单桶模式中,系统按照
CIR
速率向
C
桶中投放令牌。
l
如果可用令牌的总数量(
Tc
)小于
CBS
,则令牌数继续增加。
l
如果令牌桶已满,则令牌数不再增加。
对于到达的报文(报文大小为
B
),
l
如果
B
≤
Tc
,报文被标记为绿色,且
Tc
减少
B
。
l
如果
B > Tc
,报文被标记为红色,
Tc
不减少。
假设设备端口的
CIR
设置为
1Mbit/s
,
CBS
为
2000bytes
,初始状态时
C
桶满。
说明:为方便计算,此处
1Mbit/s
按
1*10
6
计算。
l
假设第
1
个到达的报文是
1500bytes
时,检查
C
桶发现令牌数大于数据包的长度,所以数据包被标为绿色,
C
桶减少令牌
1500bytes
,还剩
500bytes
。
l
假设
1ms
之后到达第
2
个报文
1500bytes
。在此间隔内,
C
桶新增令牌
= CIR * 1ms = 1000bit = 125bytes
,加上
C
桶原来剩余的令牌
500bytes
,此时
C
桶共有
625bytes
。令牌数量不够,报文标记为红色。
l
假设又过
1ms
后到达第
3
个报文
1000bytes
。在此间隔内,
C
桶新增令牌
125bytes
,加上
C
桶原来剩余的令牌
625bytes
,此时
C
桶共有
750bytes
。令牌数量不够,因此报文被标记为红色。
l
假设又过
20ms
后到达第
4
个报文
1500bytes
。在此间隔内,
C
桶新增令牌
= CIR * 20ms = 20000bit = 2500bytes
,加上
C
桶原来剩余的令牌
750bytes
,
C
桶此时令牌数为
3250bytes
。而
CBS = 2000bytes
,因此溢出
1250bytes
令牌被丢弃。此时
C
桶令牌数大于报文长度,报文标记为绿色,
C
桶减少令牌
1500bytes
,剩
500bytes
。
报文处理过程汇总见下表。
包序号
|
时刻
(ms)
|
包长
(bytes)
|
与上次添加令牌的间隔
|
本轮增加令牌
|
令牌增加后C桶令牌
|
报文处理后C桶剩余令牌
|
报文标记结果
|
|
|
|
|
|
2000
|
2000
|
-
|
1
|
0
|
1500
|
0
|
0
|
2000
|
500
|
绿色
|
2
|
1
|
1500
|
1
|
125
|
625
|
625
|
红色
|
3
|
2
|
1000
|
1
|
125
|
750
|
750
|
红色
|
4
|
22
|
1500
|
20
|
2500
|
2000
|
500
|
绿色
|
在单速单桶模式中说到,如果平均每
3.6
秒来了不到
1
辆车,盒子里就会有一些积累起来的通行卡。如果一直没有车辆过来,盒子中的通行卡不停地累积。盒子的容量是有限的,当盒子中装满通行卡之后,不断投放的通行卡就溢出盒子,会造成浪费。
为了避免这种浪费,我们改进了这个自动出卡系统,在原来的基础上增加一个盒子
E
(
改进后的系统对应单速双桶模式,盒子
E
对应单速双桶中的
E
桶
)。自动出卡机首先向
C
盒中投放通行卡。当
C
盒满了,自动出卡机就向
E
盒中投放通行卡。
为了保证通行卡有序领取,我们规定先领取
C
盒中的通行卡。如果
C
盒中的通行卡不够用,就把卡放回
C
盒,再从
E
盒中重新领取通行卡。
C
盒和
E
盒中的通行卡不能同时取用。
按照通行卡的取用,可以分为三种情况:
l
如果
C
盒中的通行卡够用,绿灯亮,车辆领取
C
盒中的通行卡后通行。
l
如果
C
盒中的通行卡不够用但
E
盒中的通行卡够用,黄灯亮,从
C
盒中领取的通行卡领取的通行卡要归还,车辆领取
E
盒中的通信卡后通行。
l
如果
E
盒中的通行卡也不够用,红灯亮,车辆禁止通行,从
E
盒中领取的通行卡领取通行卡要归还。
和单速单桶模式一样,对于车队,有几辆车,就领取几张通行卡。当然,
E
盒的容量也是有限的。
E
盒的容量就相当于单速双桶模式中的
EBS
。
EBS
(
Excess Burst Size
):超额突发尺寸,表示
E
桶的容量,即
E
桶瞬间能够通过的超出突发流量。
假设某时刻来了一个车队有
8
辆车,但
C
盒里只有
5
张通行卡,而
E
盒中有
9
张通行卡,那么黄灯亮起,这辆长车从
E
盒中领取
8
张通行卡。
在单速双桶模式中,系统按照
CIR
速率向桶中投放令牌。
l
如果
C
桶中可用令牌的总数量(
Tc
)小于
CBS
,则
C
桶中令牌数增加。
l
如果
Tc
等于
CBS
且
E
桶中的可用令牌总数量(
Te
)小于
EBS
,则
C
桶中令牌数不增加,
E
桶中令牌数增加。
l
如果
C
桶和
E
桶中的令牌都已满,则两个桶中的令牌数都不再增加。
对于到达的报文(报文大小为
B
),
l
如果
B
≤
Tc
,报文被标记为绿色,且
Tc
减少
B
。
l
如果
Tc < B
≤
Te
,报文被标记为黄色,且
Te
减少
B
,
Tc
不减少。
l
如果
B > Te
,报文被标记为红色,且
Tc
和
Te
都不减少。
假设设备端口的
CIR
设置为
1Mbit/s
,
CBS
为
2000bytes
,
EBS
为
2000bytes
,初始状态时
C
桶和
E
桶满。
说明:为方便计算,此处
1Mbit/s
按
1*10
6
计算。
l
假设第
1
个到达的报文是
1500bytes
时,检查
C
桶发现令牌数大于数据包的长度,所以数据包被标为绿色,
C
桶减少令牌
1500bytes
,还剩
500bytes
,
E
桶令牌数量保持不变。
l
假设
1ms
之后到达第
2
个报文
1500bytes
。在此间隔内,
C
桶新增令牌
= CIR * 1ms = 1000bit = 125bytes
,加上
C
桶原来剩余的令牌
500bytes
,此时
C
桶共有
625bytes
,检查发现
C
桶内令牌数量不够。检查
E
桶发现有足够令牌,因此报文标记为黄色,
E
桶减少令牌
1500bytes
,剩余
500bytes
,
C
桶剩余
625byte
保持不变。
l
假设又过
1ms
后到达第
3
个报文
1000bytes
。在此间隔内,
C
桶新增令牌
125bytes
,加上
C
桶原来剩余的令牌625
bytes
,此时
C
桶共有
750bytes
,检查发现
C
桶内令牌数量不够。检查
E
桶发现令牌数量也不够,因此报文被标记为红色,
C
桶、
E
桶令牌数不变。
l
假设又过
20ms
后到达第
4
个报文
1500bytes
。在此间隔内,
C
桶新增令牌
= CIR * 20ms = 20000bit = 2500bytes
,加上
C
桶原来剩余的令牌
750bytes
,
C
桶此时令牌数为
3250bytes
。而
CBS = 2000bytes
,因此溢出的
1250bytes
添加到
E
桶,此时
E
桶有
1750bytes
。由于
C
桶中令牌数大于报文长度,报文标记为绿色,
C
桶减少令牌
1500bytes
,剩余
500bytes
,
E
桶不变。
报文处理过程汇总见下表。
包序号
|
时刻
(ms)
|
包长
(bytes)
|
与上次添加令牌的间隔
|
本轮增加令牌
|
令牌增加后各桶令牌
|
报文处理后各桶剩余令牌
|
报文标记结果
|
C
桶
|
E
桶
|
C
桶
|
E
桶
|
|
|
|
|
|
2000
|
2000
|
2000
|
2000
|
-
|
1
|
0
|
1500
|
0
|
0
|
2000
|
2000
|
500
|
2000
|
绿色
|
2
|
1
|
1500
|
1
|
125
|
625
|
2000
|
625
|
500
|
黄色
|
3
|
2
|
1000
|
1
|
125
|
750
|
500
|
750
|
500
|
红色
|
4
|
22
|
1500
|
20
|
2500
|
2000
|
1750
|
500
|
1750
|
绿色
|
前面说到的自动出卡机,都只有一个口可以输出通行卡。而这里说到的高级自动出卡机,有两个口可以出卡,一个口输出的是通行卡,一个口输出的是服务卡。当然,这里也有两个盒子用于盛放卡,分别是盒
C
盒和
P
盒。自动出卡机上的两个口分别以各自固定的速率向两个盒子中投放卡。(
这个高级自动出卡机系统对应双速双桶模式,
C
盒和
P
盒对应双速双桶模式中的
C
桶和
P
桶。
)
领取卡的规则和前面单速的情况有所不同。我们规定:
l
先领取服务卡。如果服务卡不够,把卡放回
P
盒,红灯亮,车辆禁止通行。
l
如果服务卡足够但通行卡不够,黄灯亮,服务卡可以取走,通行卡放回
C
盒。
l
如果服务卡和通行卡都足够,绿灯亮,车辆可以通行,服务卡和通行卡都取走。
自动出卡机向
P
盒投放服务卡的速率和
P
盒的容量,就分别相当于双速双桶模式中的
PIR
和
PBS
。
PIR
(
Peak information rate
):峰值信息速率,表示向
P
桶中投放令牌的速率,即
P
桶允许传输或转发报文的峰值速率。
PIR
的值应大于
CIR
(存在服务卡足够而通行卡不够的情况)。
PBS
(
Peak Burst Size
):峰值突发尺寸,表示
P
桶的容量,即
P
桶瞬间能够通过的峰值突发流量。
按照国家高速公路交通安全法的规定,在高速公路上行驶的车辆,最高时速为
120km/h
。前面领取的通行卡,保证车辆的时速为
100km/h
。而服务卡的作用,则是允许车辆时速可以达到
120km/h
。自动出卡机向
P
盒投放服务卡的速率就是允许的最高车速,相当于
PIR
。
在双速双桶模式中,系统按照
PIR
速率向
P
桶中投放令牌,按照
CIR
速率向
C
桶中投放令牌。
l
如果
P
桶中可用令牌的总数量(
Tp
)小于
PBS
,则
P
桶中令牌数增加。
l
如果
C
桶中可用令牌的总数量(
Tc
)小于
CBS
,则
C
桶中令牌数增加。
对于到达的报文(报文大小为
B
),
l
如果
Tp < B
,报文被标记为红色,且
Tc
和
Tp
都不减少。
l
如果
Tc < B
≤
Tp
,报文被标记为黄色,且
Tp
减少
B
,
Tc
不减少。
l
如果
B
≤
Tc
,报文被标记为绿色,且
Tp
和
Tc
都减少
B
。
假设设备端口的
CIR
设置为
1Mbit/s
,
PIR
设置为
2Mbit/s
,
CBS
为
2000 bytes
,
PBS
为
3000 bytes
,初始状态时
C
桶和
P
桶满。
说明:为方便计算,此处
1Mbit/s
按
1*10
6
计算。
l
第
1
个到达的报文假设是
1500bytes
时,检查发现报文长度不超过
P
桶也不超过
C
桶,所以数据包被标为绿色,
C
桶和
P
桶都减少令牌
1500bytes
,
C
桶还剩
500bytes
,
P
桶还剩
1500bytes
。
l
假设
1ms
后到达第
2
个报文
1800bytes
。在此间隔内,
P
桶新增令牌
= PIR * 1ms = 2000bit = 250bytes
,加上
P
桶原来剩余的令牌
1500bytes
,此时
P
桶共有
1750bytes
,小于报文长度。
C
桶新增令牌
= CIR * 1ms = 1000bit = 125bytes
,加上
C
桶原来剩余的令牌
500bytes
,此时
C
桶共有
625bytes
。报文标记为红色,
P
桶、
C
桶令牌数不变。
l
假设又过
1ms
后到达第
3
个报文
1000bytes
。在此间隔内,
P
桶新增令牌
250byte
,加上
P
桶原来剩余的令牌
1750byte
,此时
P
桶共有令牌
2000bytes
,大于报文长度。再检查
C
桶,
C
桶新增令牌
250bytes
,加上
C
桶原来剩余的令牌
625byte
,此时
C
桶共有
750bytes
,仍然小于报文长度。因此报文被标记为黄色,
P
桶减少令牌
1000bytes
,剩余
1000bytes
,
C
桶令牌不变。
l
假设又过
20ms
之后到达报文
1500bytes
。在此间隔内,
P
桶新增令牌
= PIR * 20ms = 40000bit = 5000bytes
,超过
P
桶容量
PBS
,因此
P
桶令牌数
= PBS = 3000bytes
,溢出的令牌丢弃。这样
P
桶有
2000bytes
,大于报文长度。此时
C
桶增加令牌
= CIR * 20ms = 20000bit = 2500bytes
,超过
C
桶容量
CBS
,因此
C
桶令牌数
= CBS = 2000byte
,溢出的令牌丢弃。
C
桶此时令牌数
2000 bytes
,大于报文长度。报文被标记为绿色,
P
桶减少令牌
1500bytes
,剩余
1500bytes
;
C
桶减少令牌
1500bytes
,剩余
500bytes
。
报文处理过程汇总见下表。
包序号
|
时刻
(ms)
|
包长
(bytes)
|
与上次添加令牌的间隔
|
本轮增加令牌
|
令牌增加后各桶令牌
|
报文处理后各桶剩余令牌
|
报文标记结果
|
C
桶
|
P
桶
|
C
桶
|
P
桶
|
C
桶
|
P
桶
|
|
|
|
|
|
|
2000
|
3000
|
2000
|
3000
|
-
|
1
|
0
|
1500
|
0
|
0
|
0
|
2000
|
3000
|
500
|
1500
|
绿色
|
2
|
1
|
1800
|
1
|
125
|
250
|
625
|
1750
|
625
|
1750
|
红色
|
3
|
2
|
1000
|
1
|
125
|
250
|
750
|
2000
|
750
|
1000
|
黄色
|
4
|
22
|
1500
|
20
|
2500
|
5000
|
2000
|
3000
|
500
|
1500
|
绿色
|
三种令牌桶模式的区别和应用场景
由前文描述可以看出,三种令牌桶模式之间既有区别也有演进关系,具体见下表。
|
单速单桶
|
单速双桶
|
双速双桶
|
关键参数
|
CIR
和
CBS
|
CIR
、
CBS
和
EBS
|
CIR
、
CBS
、
PIR
和
PBS
|
令牌投放
|
以
CIR
速率向
C
桶投放令牌。
C
桶满时令牌溢出。
|
C
桶满时令牌投放到
E
桶。
C
桶和
E
桶都不满时,只向
C
桶投放令牌。
|
以
CIR
速率向
C
桶投放令牌,以
PIR
速率向
P
桶中投放令牌。两个桶相对独立。桶中令牌满时令牌溢出。
|
是否允许流量突发
|
不允许流量突发。报文的处理以
C
桶中是否有足够令牌为依据。
|
允许报文尺寸的突发。先使用
C
桶中的令牌,
C
桶中令牌数量不够时,使用
E
桶中的令牌。
|
允许报文速率的突发。
C
桶和
P
桶中的令牌足够时,两个桶中的令牌都使用。
C
桶中令牌不够时,只使用
P
桶中的令牌。
|
报文颜色标记结果
|
绿色或红色
|
绿色、黄色或红色
|
绿色、黄色或红色
|
演进关系
|
单速双桶模式中,如果
EBS
等于
0
,其效果和单速单桶是一样的。
双速双桶模式中,如果
PIR
等于
CIR
,其效果和单速单桶是一样的
|
基于上述三种令牌桶模式之间的区别,其功能和使用场景也有所不同,具体见下表。
令牌桶模式
|
功能
|
选用场景
|
单速单桶
|
限制带宽
|
优先级较低的业务(如企业外网
HTTP
流量),对于超过额度的流量直接丢弃保证其他业务,不考虑突发。
|
单速双桶
|
限制带宽,还可以容许一部分流量突发,并且可以区分突发业务和正常业务
|
较为重要的业务,容许有突发的业务(如企业邮件数据),对于突发流量有宽容。
|
双速双桶
|
限制带宽,可以进行流量带宽划分,可以区别带宽小于
CIR
还是在
CIR ~PIR
之间
|
重要业务,可以更好的监控流量的突发程度,对流量分析起到指导作用。
|
参数设置有讲究
在令牌桶算法中,
CIR
的值越大,即令牌产生的速率越大,报文可以获取的令牌就越多,流向网络的流量也就越大。因此,
CIR
的值是控制流入网络中流量多少的关键。
CBS
也是一个重要参数。
CBS
的值越大,
C
桶中可以积累令牌的数目也越多,允许通过的报文尺寸就越大。
由于设备进行的是逐包转发,
CBS
的值不应该小于当前网络上允许传输的报文的最大长度。
例如,在单速单桶模式下,假设要把流量限定在
10Mbit/s
,而
CBS
值太小(如设置成
1000byte
)。如果某个时间段内流量的报文,每个报文大小都大于
1000byte
,那么这些报文全都被丢弃。这段时间内,没有报文被转发,报文的转发速率为
0
,导致网络资源被浪费,业务也出现异常。
那是不是
CBS
的值越大就越好呢?显然不是。
CBS
值太大,会失去限速的意义。例如,假设要把流量限定在
10Mbit/s
,
CBS
设置成
7200Mbyte
。某个时刻,令牌桶中的令牌已满,如果接下来
1
小时内流量的报文,其报文长度不一,但共计
7200Mbyte
,这些报文都能获得令牌并被转发,那么这段时间内的报文速率为
16Mbit/s
(
7200M * 8 / 3600
)而不是
10Mbit/s
,即没有实现限速。
同理,对于双速双桶模式,
PIR
和
PBS
的值也应设置在合理范围内。
说明:目前华为以太网交换机只支持单速单桶和双速双桶模式。
简单来说,带宽参数的设置取决于实际业务的限速需要。原则上,令牌桶容量需要大于等于网络中可能出现的最大的报的长度和业务流量的正常突发量。对于华为的以太网交换机,我们有总结的经验性公式:
l
带宽
≤
100Mbit/s
时,令牌桶容量(
Bytes
)
=
带宽(
kbit/s
)
* 1000
(
s
)
/8
l
带宽
> 100Mbit/s
时,令牌桶容量(
Bytes
)
= 100000
(
kbit/s
)
* 1000
(
s
)
/8
另外,华为的以太网交换机,不同系列的单板支持的
CAR
粒度不同。在进行流量监管和限速时,
l
如果配置的
CIR
、
PIR
是最小粒度的整数倍,则按照配置的速率进行监管和限速。
l
如果配置的
CIR
、
PIR
不是最小粒度的整数倍,则按照最小粒度的整数倍进行流量监管和限速。
例如,设备上的监管和限速粒度为
64kbit/s
,如果
CIR
值
≤
64kbit/s
,按照
64kbit/s
处理;如果
128kbit/s < CIR
值
≤
192kbit/s
,按照
192kbit/s
处理。
令牌桶原理应用之接口限速
令牌桶原理可以应用到设备的入方向和出方向。根据令牌桶原理在不同方向的应用,可以实现不同的功能,见下图。
流量监管、流量整形、接口限速与令牌桶算法之间的关系,见下表。
应用方向
|
单速单桶
|
双速双桶
|
设备入方向
|
基于接口,实现接口限速
|
基于流,实现流量监管
|
设备出方向
|
基于接口,实现接口限速
|
基于队列,实现流量整形
|
流量监管是一种通过对流量规格进行监督,以限制流量及网络资源使用的流控策略。如果这种流控策略应用到设备接口的入方向,也可以实现入方向的接口限速。与基于接口实现的入方向的接口限速相比,这种方式引入了
MQC
(
Modular QoS Command-Line Interface
),因此应用更加灵活。
通常我们所说的限速是广义上的接口限速,包括基于接口和基于
MQC
实现的入方向的接口限速。
非常好的比喻,深入简出介绍QoS令牌原理。http://support.huawei.com/ecommunity/bbs/10250689.html概述春暖花开的时候,大家都开着汽车外出旅游欣赏美丽的风景,却被堵在高速公路上,你是否为此感到痛苦?但如果有一种机制可以评估高速公路上的车流量、控制车流情况,确保进入高速公路的汽车都能在路上安全畅行,你是不是会觉得很开心
个人见解举例:
CIR
=100kbyte/s,
CBS
=2000kbyte,此时下载速度200kbyte/s.可以假想
令牌桶
为一水桶,他的容量是2000L,底部出水口流速200L/S,上部进水口注水速度100L/S,显然入不支出。2000/(200-100)=20S.20秒后桶内水流完。这时出水口的流速变为100L/S。而20秒前,水的流速一直保持200L/S,这就是为什么叫突发了。应用到实际,打开网页时,刚开始需要下载图片,网页文件等,下载速度要求很高,但持续时间不常,这就是突发能解决的实际问题。通过
CBS
我们即可以控制用户下载小文件高速下载,而大文件,限速下载。纯属个人学习见解,供大家参考,交流
简单的来说,是为了保障服务质量,保证重要数据的传输。
服务质量包括带宽,延迟,抖动和丢包率。
打个比方,公司里老总在开会,你在打游戏。那么老总的数据肯定要保证传输,而你的数据,丢了就丢了吧…
那么,如何保证重要数据的传输保证呢?
为了更好地讲解
令牌桶
,这里引入一个高速公路的例子。
高速公路上容纳的车流量就好比我们的带宽;
车辆就好比我们的数据包;
我们只...
CIR
(Committed Information Rate,承诺信息速率):
每秒可通过的速率,计量单位为Kbps (以bit 位为单位)。如设置为500Kbps 。每8bit位=1Byte 1Kbps=1024bit
PIR
(Peak Information Rate,峰值信息速率):
即允许传输或转发报文的最大速率;单位为bit
CBS
(Committed Burst S...
一、写在最前
轰轰烈烈的双十二已经过去小半个月了,程序猿的我坐在办公桌上思考,双十二这么大的访问量,这群电商是怎么扛住的,接口分分钟会变得不可用,并引发连锁反应导致整个系统崩溃。好吃懒做的小编,被可怕的好奇心驱使着去调研流量控制算法。好奇心害死猫,才有了这篇文章。
二、流量控制算法简介
流量控制在计算机领域称为过载保护。何为过载保护?所谓“过载”,即需求超过了负载能力;而“保护”则是指当“过...
PIR
:Peak InformationRate,最高信息速率。一般上行和下行流量分别规定
PIR
。
CIR
:Committed InformationRate,承诺信息速率。一般指为用户提供的保证速率,上行和下行流量分别规定
CIR
MPLS运营商在传输服务方面,会承诺用户的是一个固定带宽值、并承诺传输服务等级、告知用户不同服务等级上丢包率和延时,一般这个指的是
CIR
。
1) 802.1Q Virtual Bridged Local Area Networks
2) MEF5 Traffic Management
3) MEF10.2 Ethernet Services Attributes
4) RFC2697 srTCM - Single Rate Three Color Marker
5) RFC2698 trTCM - Two Rat
为了达到上述目的,我们需要对进入网络的流量进行监督,实现CAR(Committed Access Rate)。
CAR:将进入网络的用户流量的速率限制在约定的
范围
之内,从而避免引起网络拥塞。
CIR
(Committed Information Rate):承诺信息速率,表示向C桶(单桶模式中只有一个
令牌桶
,称为C桶)中投放令牌的速率,即C桶允许传输或转发报文的平均速率。
CBS
(Commit...