QoS 做两件事:把包分类、让它插队。802.1p 给了 3 个 bit,所以有 8 个优先级。 语音占带宽不到 0.2%,但它必须严格优先——因为怕的不是带宽,是排队抖动。
上一节讲怎么看流量,这一节讲怎么给流量排队。 这一节要算:语音的带宽占比与排队延迟,这两个数差距巨大,正是 QoS 存在的理由。
一、八个优先级与两种排队法
802.1p 有 3 bit,8 个优先级(0 到 7)。7 给网络控制、6 给语音信令、5 给语音媒体、4 给视频、 0 与 1 给普通上网。
严格优先(SP):高优先级有包就发,低优先级一直等。延迟最小,但可能饿死。 加权轮询(WRR):按权重轮流发。不会饿死,但高优先级要排队。
实践是混着用:语音与协议报文用严格优先,其余按权重轮询。
二、语音为什么要严格优先
一路 G.711 语音 64 kbps,加头约 80 kbps,按 100 kbps 算。在 100 Mbps 链路上只占 0.1%。
所以语音的问题从来不是带宽,是延迟与抖动。 语音能忍端到端 150 毫秒,但抖动只能忍 30 毫秒。
如果语音排在一个大文件后面:一个 1518 字节帧在 100 Mbps 上要发 121 微秒, 排几十个大帧就是几毫秒的抖动。再遇上拥塞队列,就断续了。
三、最常见的失败:只配一跳
QoS 必须在每一跳都开。中间任何一跳不开,前面配得再好也白搭。
这是 QoS 最常见的失败原因:核心配了、接入忘了,结果语音在接入层就被打乱了。
另一条:分类要尽量靠边缘做。 在接入层就打上标记,后面所有设备只按标记排队——这叫「信任边界」,是 QoS 设计的第一步。
四、动手 Demo:语音的带宽占比与一个最大帧的发送时间
这段算 100 Mbps 与 1000 Mbps 两种链路上一路语音(100 kbps)的占用比例, 以及一个 1518 字节最大帧的发送时间。
for bw in (100, 1000):
frac = 0.1 / bw * 100
tmax = 1518 * 8 / (bw * 1e6) * 1e6
T([u"%d Mbps" % bw, u"%.3f%%" % frac, u"%.1f 微秒" % tmax], [0, 0, 0])
实跑输出:
--------------------------------------------------------------------
QoS 的八个队列,语音为什么必须严格优先
--------------------------------------------------------------------
**QoS 在交换机上做的第一件事是「分类」,第二件是「排队」。**802.1p 给了 3 个 bit,
所以有 8 个优先级(0 到 7)。
优先级 常见用途 队列行为
------------------------------------------------
7 网络控制(协议报文) 最高
6 语音信令 很高
5 语音媒体流 很高
4 视频 较高
3 关键业务数据 中
2 事务性数据 中低
0/1 普通上网、批量传输 最低
**严格优先(SP)与加权轮询(WRR)是两种排队法**,差别在「低优先级会不会饿死」:
· **严格优先**:高优先级队列有包就发,低优先级一直等。**延迟最小,但可能饿死。**
· **加权轮询**:按权重轮流发。**不会饿死,但高优先级要排队。**
**实践中是混着用**:语音、协议报文用严格优先,其余按权重轮询。
**算一下语音为什么要严格优先。**一路 G.711 语音是 64 kbps,加 IP/UDP/RTP 头约 80 kbps,
实际按 100 kbps 算:
链路 一路语音占用 一个最大帧的发送时间
-------------------------------------------------------
100 Mbps 0.100% 121.4 微秒
1000 Mbps 0.010% 12.1 微秒
**带宽占用只有 0.1%,几乎不占地方——所以语音的问题从来不是带宽,是延迟。**
**关键在这一行**:如果语音排在一个大文件后面,一个大帧在 100 Mbps 上要发 121 微秒。
要是队列里排了几十个大帧,语音就要等好几毫秒。
**语音能忍的端到端延迟是 150 毫秒,但抖动只能忍 30 毫秒**——排队抖动超过这个数,声音就开始断续。
**所以语音队列必须严格优先,而且要在**每一跳**都开。**中间任何一跳不开,
前面配得再好也白搭——**这是 QoS 最常见的失败原因。**
0.1% 与 0.01%——这两个数就是「语音几乎不占带宽」的证据。 所以「给语音留 30% 带宽」这种做法是浪费,语音只需要很小的带宽加很高的优先级。
121 微秒那一列才是重点:一个最大帧在 100 Mbps 上要占 121 微秒, 如果语音排它后面,就要等 121 微秒。排 30 个就是 3.6 毫秒——已经接近语音抖动的容忍上限了。
注意千兆上只要 12.1 微秒,所以「链路越快, QoS 越不重要」这个说法有一定道理——但只要出现拥塞,排队还是会回来。
30 秒实验
- 查交换机支不支持 802.1p 优先级。
- 看语音 VLAN 有没有配优先级标记。
- 数一下从终端到服务器之间有几台设备要配 QoS。
常见误区
- 给语音留很多带宽。它只需要很小带宽加高优先级。
- 只在一台设备上配 QoS。要在每一跳都开。
- 以为 QoS 能增加带宽。它只是重新分配。
自测三问(点开对答案)
1. 802.1p 有几个优先级? —— 3 bit,8 个,编号 0 到 7。 2. 严格优先与加权轮询各有什么问题? —— 前者可能饿死低优先级,后者让高优先级排队。 3. 语音怕的是带宽还是抖动? —— 抖动。它只占 0.1% 带宽,但抖动超过 30 毫秒就断续。下一节:第八个功能是名单——MAC 地址过滤。
- ☐ (本节完,下一节 02.08.08 MAC地址过滤)