TC-HTB 中的桶大小

TC-HTB 中的桶大小

我研究了 tc-HTB 的行为。

我做了如下的 tc 设置。

看完之后tbf 中的 bucket,我预计它的突发大小将是 rate / HZ。

sudo /sbin/tc qdisc del dev s1-eth1 root
sudo /sbin/tc qdisc add dev s1-eth1 root handle 1:0 htb
sudo /sbin/tc class add dev s1-eth1 parent 1:0 classid 1:1 htb rate 200mbit
sudo /sbin/tc filter add dev s1-eth1 protocol ip parent 1:0 prio 1 u32 \
match ip tos 0x0 0x0 flowid 1:1

但事实并非如此。结果如下。突发值为 1600。我认为与 200Mbps 的速率相比,这个值太小了。

sudo tc -s -s -d -r c ls dev s1-eth1

class htb 1:1 root prio 0 quantum 200000 rate 200000Kbit ceil 200000Kbit 
linklayer ethernet burst 1600b/1 mpu 0b overhead 0b cburst 1600b/1 mpu 0b 
overhead 0b level 0 buffer [000003e8] cbuffer [000003e8] 

 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 0 borrowed: 0 giants: 0
 tokens: 1000 ctokens: 1000

我还找到了tc-htb源代码。iproute2/tc/q_htb.c还说

//Buffer value is given from burst argument.

    if (!buffer)
        buffer = rate64 / get_hz() + mtu;
    if (!cbuffer)
        cbuffer = ceil64 / get_hz() + mtu;

尽管有源代码,

为什么突发值相对于其速率来说很小?

当然,我可以burst根据需要添加选项。

但我想知道突发值自动这么小的原因。

你能给我一点提示吗?

谢谢!

相关内容