通过上面简单的token bucket进行流量管理,我们可以判断一个新输入的packet是符合流量要求的,什么时候流量超标。在符合流量要求的时候,必须正确的将这个packet转发出去,而流量超标时如何处理这个packet就是可以配置的不同做出不同的选择,可以选择丢包,而当系统整体的负载不重时,也许我们也可以允许对这些超出的数据也进行一定的转发。因此我们有了TCM(three color markers)算法,他将所有输入的packet根据token bucket情况将其标记上三种颜色(green,yellow,red)。当然green就是这个pkt符合流量要求,进行转发,red就是不符合要求,丢掉,yellow是不符合要求,但是也可进行转发。通常green对应的是r,而yellow和red的计算根据系统不同配置而不同。下面介绍几种TCM变种算法。
srTCM (Single Rate Three Color Marker)
srTCM基于token bucket,方法有三个参数如下:
- CIR (committed information rate),token的生成速率
- CBS (committed burst size),burst小于此值将为green
- EBS (excess burst size),burst小于此值,但大于CBS将为yellow,否则为red
具体算法可以如下描述:
// init : Tc = CBS, Te = EBS
If (Tc < CBS) { Tc += CIR * time_elapsed; }
else if (Te < EBS) { Te += CIR * time_elapsed; }
If (Tc >= pkt_size) { Tc -= pkt_size; make pkt as GREEN; }
else if (Te >= pkt_size) {Te -= pkt_size; mark pkt as YELLOW; }
else { Mark the pkt as RED; }
|
trTCM (Two Rate Three Color Marker)
trTCM基于前面的两个token bucket的方法,有四个参数如下:
- CIR (committed information rate),committed bucket的token的生成速率
- PIR (peak information rate),peak bucket的token的生成速率
- CBS (committed burst size),burst小于此值将为green
- PBS (peak burst size),burst小于此值,但大于CBS将为yellow,否则为red
具体算法可描述如下:
// init: Tc = CBS, Tp = PBS
If (Tc < CBS) { Tc += CIR * time_elapsed; }
If (Tp < PBS) { Tp += PIR * time_elapsed; }
If ( Tc >= pkt_size) { Tc -= pkt_size; Tp -= pkt_size; make pkt as GREEN; return }
If (Tp >= pkt_size) { Tp -= pkt_size; make the pkt as YELLOW; return; }
Make the pkt as RED; return;
|
tswTCM (Time Slicing Window Three Color Marker)
与前面两种基于token bucket的方法不同,tswTCM利用划窗进行速率估计的基于概率的标记方法。有三个参数:
- CTR (committed target rate),估计速率低于此值为GREEN
- PTR (peak target rate),估计速率低于此值,但高于CTR为YELLOW,否则为RED
- AVG WIN SIZE,划窗窗口大小
算法描述如下:
// init: avg_rate = CTR
byte_count = pkt_len + avg_rate * AVG_WIN_SIZE
avg_rate = byte_count / (time_elapsed + AVG_WIN_SIZE)
if (avg_rate < CTR) { make the pkt GREEN; return; }
if (avg_rate < PTR) {
p0 = (avg_rate – CTR) / avg_rate;
mark the packet as YELLOW with probability p0, GREEN with (1 – p0)
} else {
P1 = (avg_rate – PTR) / avg_rate
P2 = (PTR – CTR) / avg_rate
Make the packet : RED(p1), YELLOW(p2), GREEN (1-p1-p2)
}
|
Policing and Shaping
利用前面提到的各种算法可以完成policing和shaping的功能,即对于GREEN和YELLOW的packet还是转发的策略,对于RED的packet可以丢弃,也可以将其进行排队直到满足条件再转发。
待续
阅读(572) | 评论(0) | 转发(0) |