是的,在 tc(Traffic Control)工具的语境下,mb 指的就是 Megabytes(兆字节,即 MB) 。
为了避免混淆,我们需要明确 tc 对单位的严格定义,这对于搞网络底层开发非常关键:
1. tc 中的单位对照表
在执行 tc 命令时,内核解析器遵循以下规则:
| 语义 | tc 对应的单位后缀 | 换算关系 | 常见用途 |
|---|---|---|---|
| Bit (位) | bit 或 b | 1 bit | - |
| Byte (字节) | byte | 8 bits | - |
| Megabit (兆位) | mbit | bits | rate (速率) |
| Megabyte (兆字节) | mb 或 m | bytes | burst (容量) |
2. 为什么你的脚本里必须写 mb?
根据你的逻辑:
-
速率 (Rate) : (Megabits per second)。
-
10% 缓冲: 的数据量。
-
单位换算:由于
tc police的burst参数需要的是容量单位(字节),所以: -
最终参数:向上取整得到
4mb。
3. 特别注意:大小写的陷阱
虽然在日常交流中我们用 Mb 表示 Megabit,MB 表示 Megabyte,但在 tc 命令的命令行解析中:
-
它不区分大小写(
4mb和4MB对tc来说是一样的)。 -
它靠后缀字母区分:
- 有
bit的后缀(如kbit,mbit)代表 位 (Bit) 。 - 没有
bit只有b的后缀(如kb,mb)代表 字节 (Byte) 。
- 有
结论
burst 4mb 确实等于 4 Megabytes (4MB)。