tc 语境 burst mb = MB

2 阅读1分钟

是的,在 tc(Traffic Control)工具的语境下,mb 指的就是 Megabytes(兆字节,即 MB)

为了避免混淆,我们需要明确 tc 对单位的严格定义,这对于搞网络底层开发非常关键:

1. tc 中的单位对照表

在执行 tc 命令时,内核解析器遵循以下规则:

语义tc 对应的单位后缀换算关系常见用途
Bit (位)bitb1 bit-
Byte (字节)byte8 bits-
Megabit (兆位)mbit1024×10241024 \times 1024 bitsrate (速率)
Megabyte (兆字节)mbm1024×10241024 \times 1024 bytesburst (容量)

2. 为什么你的脚本里必须写 mb

根据你的逻辑:

  1. 速率 (Rate)300 mbit300\text{ mbit} (Megabits per second)。

  2. 10% 缓冲30 mbit30\text{ mbit} 的数据量。

  3. 单位换算:由于 tc policeburst 参数需要的是容量单位(字节),所以:

    30 mbit÷8=3.75 Megabytes30\text{ mbit} \div 8 = 3.75\text{ Megabytes}

  4. 最终参数:向上取整得到 4mb

3. 特别注意:大小写的陷阱

虽然在日常交流中我们用 Mb 表示 Megabit,MB 表示 Megabyte,但在 tc 命令的命令行解析中:

  • 不区分大小写(4mb4MBtc 来说是一样的)。

  • 它靠后缀字母区分:

    • bit 的后缀(如 kbit, mbit)代表 位 (Bit)
    • 没有 bit 只有 b 的后缀(如 kb, mb)代表 字节 (Byte)

结论

burst 4mb 确实等于 4 Megabytes (4MB)。