第130篇:流量限速——CAR(Committed Access Rate)
关键词
CAR、流量限速、承诺访问速率、令牌桶、速率限制、流量监管
一、为什么要限速?
1.1 限速场景
| 场景 | 需求 |
|---|---|
| P2P 下载限速 | 限制特定用户/应用的带宽,保护关键业务 |
| 用户带宽套餐 | 运营商对不同用户提供不同速率 |
| 出口带宽管理 | 总带宽有限,需要公平分配 |
| 突发流量控制 | 防止流量突发导致拥塞 |
| 优先级标记后限速 | 高优先级的流量也需要防滥用 |
1.2 CAR 的作用
CAR(Committed Access Rate) 是一种流量监管(Policing)技术——测量流量速率,超过承诺速率的部分丢弃或重新标记。
┌────────────┐
输入流量 10 Mbps │ CAR │ 输出流量 ≤ 5 Mbps
───────────────────►│ 限速 5M │───────────────────►
│ │ 超出部分:
└────────────┘ ● 丢弃(Drop)
● 降级(Remark)
二、令牌桶算法
2.1 基本原理
CAR 使用令牌桶(Token Bucket)算法来测量速率:
令牌桶 | 令牌生成速率: CIR(承诺信息速率) ┌───────────────┐ | ○ ○ ○ ○ ○ | | 桶内最多 CBS 个令牌 | | --- | --- | --- | --- |
每个报文需要消耗与报文大小相等的令牌数 令牌足够 → 报文通过 令牌不足 → 报文被丢弃或降级
2.2 关键参数
| 参数 | 含义 | 说明 |
|---|---|---|
| CIR(Committed Information Rate) | 承诺信息速率 | 平均速率(如 5 Mbps) |
| CBS(Committed Burst Size) | 承诺突发尺寸 | 允许的瞬间突发流量(字节) |
| PIR(Peak Information Rate) | 峰值信息速率 | 最大允许速率(可选) |
| EBS(Excess Burst Size) | 超额突发尺寸 | 超出 CBS 后的额外突发 |
2.3 单桶 vs 双桶
| 算法 | 说明 | 动作 |
|---|---|---|
| 单速率单桶 | 一个桶,填满为止 | 简单:符合/不符合 |
| 单速率双桶 | C 桶 + E 桶 | 符合/超符合/不符合 |
| 双速率双桶 | CIR 桶 + PIR 桶 | 绿色/黄色/红色 |
三、CAR 配置
3.1 基于 ACL 的 CAR
# ===== 匹配 P2P 流量 =====
acl number 3000
rule 10 permit tcp source 192.168.10.0 0.0.0.255 destination-port eq 6881
rule 20 permit udp source 192.168.10.0 0.0.0.255 destination-port eq 6881
# ===== 配置 CAR 限速 =====
interface GigabitEthernet0/0/24
car outbound acl 3000 cir 1024 cbs 64000 pir 2048 ebs 128000
# CIR = 1 Mbps, CBS = 64000 bytes
# PIR = 2 Mbps (可选)
3.2 基于 MQC 的 CAR
# ===== 1. 定义流分类 =====
traffic classifier P2P
if-match acl 3000
# ===== 2. 定义流行为 =====
traffic behavior P2P_LIMIT
car cir 1024 cbs 64000 green pass red discard
# 绿色:通过
# 红色:丢弃
# 或降级处理:
traffic behavior P2P_REMARK
car cir 1024 cbs 64000 green pass yellow pass remark-pass
# 黄色:通过但降低优先级
# ===== 3. 定义策略并应用 =====
traffic policy LIMIT_P2P
classifier P2P behavior P2P_LIMIT
interface GigabitEthernet0/0/24
traffic-policy LIMIT_P2P inbound
3.3 每用户限速
# 对每个用户独立限速
acl number 3001
rule 5 permit ip source 192.168.10.10 0
traffic classifier USER_A
if-match acl 3001
traffic behavior USER_A_LIMIT
car cir 2048 cbs 128000
traffic policy PER_USER
classifier USER_A behavior USER_A_LIMIT
四、流量整形(Shaping)vs 流量监管(Policing)
| 对比项 | 监管(Policing/CAR) | 整形(Shaping) |
|---|---|---|
| 超限处理 | 丢弃或标记 | 缓存后延迟发送 |
| 缓存 | 不需要 | 需要缓存队列 |
| 适用位置 | 入方向/出方向 | 出方向 |
| 延迟影响 | 不增加延迟 | 增加延迟 |
| CPU 负载 | 低 | 高(需要缓存管理) |
| 典型场景 | 接入限速 | 出口整形 |
CAR(监管):超速 → 直接丢弃
──► [CAR] ──► 流量 ≤ CIR
Shaping(整形):超速 → 缓存排队
──► [队列] ──► 流量 ≤ CIR
└── 缓存超速部分
4.1 流量整形配置
# 接口整形
interface GigabitEthernet0/0/24
qos lr cir 10000 # 限制接口出方向速率为 10 Mbps
# 队列整形
traffic behavior SHAPE
queue af bandwidth 5000 shape 8000
# 保证 5 Mbps,整形到 8 Mbps
五、实战案例:出口限速
5.1 需求
企业有一条 100 Mbps 的出口链路,需要做如下分配: - VoIP:保证 10 Mbps - 视频会议:保证 20 Mbps - 普通办公:保证 50 Mbps - P2P 下载:限制到 10 Mbps - 剩余带宽:按比例分配
5.2 配置
# 匹配 P2P
acl number 3000
rule 10 permit tcp source any destination-port range 6881 6999
rule 20 permit udp source any destination-port range 6881 6999
# 分类
traffic classifier VOICE
if-match dscp ef
traffic classifier VIDEO
if-match dscp af41
traffic classifier P2P
if-match acl 3000
# 行为
traffic behavior VOICE_BEHAVIOR
queue llq ef bandwidth 10000 # LLQ 10 Mbps
traffic behavior VIDEO_BEHAVIOR
queue af bandwidth 20000 # 保证 20 Mbps
traffic behavior P2P_BEHAVIOR
car cir 10240 cbs 640000 # 限速 10 Mbps
# 策略
traffic policy WAN_QOS
classifier VOICE behavior VOICE_BEHAVIOR precedence 1
classifier VIDEO behavior VIDEO_BEHAVIOR precedence 2
classifier P2P behavior P2P_BEHAVIOR precedence 3
# 应用到出口
interface GigabitEthernet0/0/24
traffic-policy WAN_QOS outbound
六、CAR 排错
# 查看 CAR 统计
display car statistics interface GigabitEthernet0/0/24
-----------------------------------------------
CIR(kbps): 1024
PASS: 123456 packets (100 MB)
DISCARD: 7890 packets (5 MB)
GREEN: 123456, YELLOW: 3000, RED: 4890
# 查看策略统计
display traffic policy statistics interface GigabitEthernet0/0/24
七、总结
| 知识点 | 核心要点 |
|---|---|
| CAR 本质 | 流量监管(Policing),超速丢弃/降级 |
| 令牌桶 | 测量速率的算法 |
| CIR/CBS/PIR | 承诺速率/突发/峰值 |
| 监管 vs 整形 | 丢弃 vs 缓存 |
| 典型应用 | P2P 限速、用户限速、出口限速 |
八、思考
- 令牌桶中 CIR 和 CBS 分别代表什么?
- 流量监管(CAR)和流量整形(Shaping)的区别是什么?
- 如果某个用户的带宽限制为 5 Mbps,CIR = 5 Mbps,但用户瞬间发送 10 Mbps,会发生什么?(取决于 CBS 设置)
- 在 MQC 配置中,car 的 green pass red discard 是什么意思?
- 为什么 P2P 限速建议使用 CAR 而不是 Shaping?
下篇预告:第131篇《重标记优先级——基于报文类型的 QoS 策略》——讲解如何通过重标记(Remark)流量优先级,在网络的不同信任边界上统一 CoS/DSCP 标记。