CAR(Committed Access Rate)是限速的执行机制,参数定义在 RFC 2697(单速率三色标记)与 RFC 2698(双速率三色标记)里。工程上真正要填的是四个值:
CIR(Committed Information Rate):承诺速率,长期平均保证值。低于它的流量按绿色处理,直接放行。
CBS(Committed Burst Size):承诺突发量,也就是令牌桶的深度。CIR 对应的是"每分钟能加多少油",CBS 对应的是"桶有多大"。
PIR(Peak Information Rate):峰值速率,超过即丢弃或降级标记。
PBS(Peak Burst Size):峰值突发量。
超速动作有三种:丢弃(drop)、照发但改标记(remark,通常降 DSCP 或 802.1p 优先级)、直接放行。家宽场景多数用 drop,园区内网为了不误伤关键应用会选 remark,把超限流量降级排队而不是直接扔掉。
真正影响体验的是 CBS 而不是 CIR。令牌桶深度决定"能容忍多大的突发":CBS 设得过小,TCP 慢启动阶段窗口一旦超过桶深,第一批数据就被丢,触发重传与拥塞窗口回退,实测吞吐可能只剩标称值的 30%–50%。CBS 设得过大(比如几百 MB),限速器就退化成近似摆设,突发流量会瞬间挤占上行。
一个可用的取值方法:按一个 RTT 的在途数据量来定。100 Mbps 带宽、20 毫秒 RTT 时,在途数据 = 100 Mbps × 20 ms ÷ 8 = 250 KB。所以 CBS 取 250–500 KB,正好覆盖一个 RTT,TCP 不会因为桶小而反复重传。
这两条路的机制完全不同,配错方向很常见。
下行(OLT → ONU)在 OLT 侧做。 下行是广播,OLT 知道每一帧属于哪个 GEM Port、送给哪台 ONU。限速可以在 GEM Port 粒度、ONU 粒度或用户端口粒度实施,用流量整形(shaping,缓存后按速率发出)或监管(policing,超速即丢)。整形对应用更友好,但会占用 OLT 的缓存并在拥塞时增加时延。
上行(ONU → OLT)要 DBA 与 ONU 侧整形配合。 ITU-T G.984.3 定义的 DBA 是按 T-CONT 分配上行时隙,它保证的是长期平均:一个 Type 4 的 T-CONT 设了最大 50 Mbps,不等于任意 10 毫秒窗口内都被压到 50 Mbps 以下。ONU 如果没有本地整形,突发会直接灌进上行时隙,影响同 PON 口的其他用户。所以上行限速的正确做法是双向设置:DBA 模板管平均,ONU 侧或 OLT 侧的 CAR 管峰值。
只设 DBA 不设 CAR 的典型后果是:单个用户跑 BT 下载时,虽然平均速率被压住了,但突发仍会挤占其他用户,表现为"别人偶尔网页打不开"。只设 CAR 不设 DBA 的后果则是 T-CONT 拿不到足够时隙,限速值形同虚设。
| 方向 | 执行点 | 机制 | 参数载体 |
|---|---|---|---|
| 下行 | OLT 侧 | shaping / policing,按 GEM Port 或 ONU 粒度 | 端口限速模板 |
| 上行(平均) | OLT 的 DBA 引擎 | 按 T-CONT 分配时隙(G.984.3) | DBA 模板 |
| 上行(峰值) | ONU 侧或 OLT 侧 CAR | 令牌桶削峰 | 端口限速模板 |
| 优先级 | 802.1Q 的 802.1p 字段 | 3 bit,取值 0–7 | 业务流模板 / 映射规则 |
一套套餐实际上是三个模板的组合,绑定时有固定的先后:
DBA 模板:定义 T-CONT 的类型与带宽(Type 4 只填最大带宽;Type 5 还要填保证带宽)。
端口/用户限速模板:定义 CAR 的 CIR / CBS / PIR / PBS 与超速动作。
业务流模板:把 GEM Port、VLAN、优先级、限速模板串起来,最终生成 service-port。
绑定出错的两种典型形态:一种是业务流模板引用了不存在的限速模板,设备报错或静默忽略,结果是"套餐写着 100M,实际不限速";另一种是限速模板的 PIR 小于 DBA 模板的 max,用户永远测不出标称速率——因为瓶颈在更前面那一层。
稳定性上有个原则:DBA 模板的参数一定要小于或等于端口限速模板的 PIR。 上行 DBA max 设 50 Mbps、端口限速 PIR 设 50 Mbps 是自洽的;DBA 设 100 Mbps 而限速设 50 Mbps,则上行时隙申请量翻倍,虽然实际不会跑满,但会虚占调度资源。
这是模板化开局最大的价值。改套餐时按变更类型分三种情况:
只改速率(100M 升 200M):改 DBA 模板的 max 值或限速模板的 PIR,重下发给关联 ONU。GEM Port、VLAN、service-port 都不变,用户流量不会中断,实测生效时间通常在 1 秒以内。
改 VLAN 或业务类型:需要重建 service-port,会有秒级中断,用户侧可能感知到一次短暂掉线。
换 ONU 型号或改 ONU 能力参数:需要重新注册 ONU,中断时间按注册流程算,一般在 20–30 秒。
有两点边界要提前确认:一是模板被引用时不能删除,只能改参数,所以模板 ID 的规划要一次做对;二是部分设备的实现是"改模板后需 ONU 重新上线才生效",这会把无感变更变成 20 秒中断,上线前务必用一台测试 ONU 验证生效路径。
场景:双 PON 口 OLT,单口下行 2.488 Gbit/s、上行 1.244 Gbit/s;100 户挂在一个 PON 口下,套餐为下行 100 Mbps、上行 50 Mbps。逐步算。
第一步,算可用带宽。 扣掉封装与协议开销按 90% 效率计:下行可用 2.24 Gbit/s,上行可用 1.12 Gbit/s。
第二步,算超售比。 下行订阅 100 × 100 Mbps = 10 Gbit/s,超售 10 ÷ 2.24 ≈ 4.5 : 1。上行订阅 100 × 50 Mbps = 5 Gbit/s,超售 5 ÷ 1.12 ≈ 4.5 : 1。两侧比值一致,说明套餐的上下行比例(2:1)与 PON 口的上下行比例(2.488:1.244 = 2:1)匹配,规划是合理的。
第三步,算每户均分。 下行 2.24 Gbit/s ÷ 100 ≈ 22.4 Mbps,上行 1.12 Gbit/s ÷ 100 ≈ 11.2 Mbps。这两个数字是"保证带宽"的上限——写超过它就是在超卖。
第四步,用并发率校验。 晚高峰按 30% 用户满速估:30 户 × 100 Mbps = 3 Gbit/s > 2.24 Gbit/s,撑不住。所以必须靠 CAR 削峰:把 PIR 设为 100 Mbps(允许单户短时跑满,作为体验),但整体依赖统计复用——30% 并发是长期经验值,实际同时满速的概率低于此。若项目要求"任何情况下不能低于 50M",则要按 2.24 G ÷ 0.1 G = 22 户/PON 口来规划,户数要砍掉近 4 倍。
第五步,算 CAR 参数。 下行:CIR 0(家宽不承诺)、PIR 100 Mbps、CBS 取一个 RTT 的在途数据量 250 KB、PBS 250 KB,超速动作 drop。上行:CIR 0、PIR 50 Mbps、CBS 125 KB(50 Mbps × 20 ms ÷ 8)、PBS 125 KB。同时 DBA 模板 Type 4 max = 50 Mbps,与上行 PIR 一致。
第六步,算 CBS 的实际容忍时间。 CBS 250 KB 在 100 Mbps 下可维持 250 × 1024 × 8 ÷ 100e6 ≈ 20.5 毫秒的爆发。这正好覆盖一个 RTT 的在途数据,TCP 慢启动不会撞桶。若把 CBS 压到 16 KB,容忍时间只剩 1.3 毫秒,慢启动窗口稍大就丢包重传,测速结果会稳定停在 40–60 Mbps 区间——这类"限速值没问题但测速上不去"的投诉,根因往往就在这里。

下面这段是通用语法的示意片段,说明配置项与先后关系,不代表任何厂商的真实命令行。
; 步骤 1:建 DBA 模板(上行平均速率) add dba-profile profile-id 20 type4 max 50000 ; 步骤 2:建端口限速模板(CAR 参数,削峰用) add traffic-profile profile-id 20 cir 0 pir 100000 cbs 256000 pbs 256000 exceed-action drop ; 步骤 3:建业务流模板,把 GEM Port、VLAN 与限速模板串起来 add service-profile profile-id 20 gem 1 vlan 100 traffic-profile-id 20 priority 0 ; 步骤 4:批量下发到 ONU(改模板参数即批量生效,不重启 ONU) ont modify 0 1 ont-lineprofile-id 10 ont-srvprofile-id 20 service-port 100 vlan 100 gpon 0/1/1 ont 1 gemport 1 traffic-profile-id 20
第三步的顺序不能颠倒:GEM Port 必须先在线路模板里建好,业务流模板才有东西可绑。第四步的批量下发是模板化的收益所在——一台台手改参数时,100 户的套餐升级要按人天计,模板化后是分钟级。
| 风险点 | 具体表现 | 应对 |
|---|---|---|
| CBS 过小 | 测速停在标称值的 40%–60%,重传率高 | CBS 取 1–2 个 RTT 的在途数据量 |
| PIR 小于 DBA max | 永远测不出套餐速率 | 两层参数对齐,DBA max ≤ 上行 PIR |
| 只设 DBA 不设 CAR | 单用户突发挤占同 PON 口其他用户 | 上行侧补 ONU 或 OLT 的 CAR |
| 限速模板被业务流引用 | 模板改不了也删不掉 | 模板 ID 规划一次到位,变更走参数修改 |
| 下行用 policing 不用 shaping | 拥塞时丢包,视频出现块状花屏 | 对时延敏感业务改用 shaping |
| 改模板后需 ONU 重启 | 无感变更变成 20–30 秒中断 | 上线前用测试 ONU 验证生效路径 |
| 超售比按峰值规划 | 要么成本失控,要么体验崩塌 | 先定并发率假设,再倒推户数上限 |
还有一条容易被忽略的:限速本身要消耗 OLT 的处理资源。GEM Port 粒度限速的表项数与转发路径开销都高于 ONU 粒度限速,规模上来之后(单口上百个 GEM Port 各带独立限速)会影响转发性能。家宽这种"每户一套参数"的场景,优先用 ONU 粒度或用户端口粒度,把 GEM Port 粒度留给需要独立策略的专线用户。
先定并发率假设:家宽取 30%,企业专线取 60%–80%,这个数字决定户数上限。
校核上下行比例:套餐上下行比与 PON 口上下行比越接近,超售比越均衡。
参数对齐:DBA max ≤ 上行 PIR;下行 PIR = 套餐下行值。
CBS 取值:按 RTT 在途数据量算,别凭感觉填小数字。
超速动作:家宽用 drop,内网关键业务用 remark 降级。
变更路径验证:改模板是否需 ONU 重启,上线前必须实测。
模板 ID 规划:预留扩容段,避免后期因模板被引用而无法调整。
锐应科技的 L102P 这类 2 口 GPON mini OLT 支持按 ONU 逐户下发 DBA 模板与限速模板,2×GE + 1×SFP+ 10GE 上联可对接园区的三层网络,PON 接入方案 页面有完整的端口与容量说明;OLT 上联进的三层交换设备可参考 工业交换机方案 做统一规划。
两个高频原因。一是限速模板的 PIR 没跟着改,只改了 DBA 模板的 max——上行受 DBA 约束、下行受 PIR 约束,改一层效果出不来。二是变更没有真正下发到 ONU,改的是模板本身而没做重绑。排查顺序是先看设备上生效的限速参数值,再看测速时的实际瓶颈在接入侧还是在上行口。
可以设,但要付出代价。设了 CIR 就等于承诺了保证带宽,100 户各 22 Mbps 保证带宽正好把 2.24 Gbit/s 的下行吃满,等于放弃了统计复用的收益,成本直接翻倍。所以家宽普遍用 CIR 0 加 PIR 限速,靠超售比来摊成本;企业专线才设 CIR,因为客户买的是"任何时候都不低于这个值"。
按一个 RTT 的在途数据量取,即"带宽 × RTT ÷ 8"。100 Mbps 与 20 ms → 250 KB;10 Mbps 与 20 ms → 25 KB。填低于这个值会伤 TCP 吞吐,填高于 2 倍这个值则突发容忍过宽、限速形同虚设。带宽低于 10 Mbps 的场景(比如 1 Mbps 的窄带套餐),CBS 不低于 8–16 KB,否则连一个 TCP 窗口都装不下。
只设 DBA,突发会漏过去,影响同 PON 口其他用户;只设 CAR,T-CONT 拿不到足够时隙,限速值根本没机会跑满。两边配合的原理是:DBA 决定"长期能拿多少",CAR 决定"瞬时能冲多高"。这也是为什么上行问题比下行更难排查——下行只有一个执行点,上行有两个,参数还必须互相对齐。
两个约束都要满足,取更小的那个。分光比约束来自光功率预算:Class B+ 有 28 dB 预算,1:32 两级分光插损约 17.7 dB,留活接头与老化余量后通常能到 1:64 甚至 1:128。带宽约束来自上行总容量:100 户 50M 上行套餐超售 4.5:1 已经到位,再往上加户数就要么降套餐、要么增加 PON 口。实际项目中往往是带宽先到顶,分光比还有余量。
OLT 限速的难点不在会不会配,而在三层参数是否自洽:DBA 管上行平均、CAR 管瞬时峰值、业务流模板负责把两者绑到具体的 GEM Port 与 VLAN 上,任何一层单独改都出不来效果。100 户 100M/50M 套餐的超售比约 4.5:1,每户均分下行 22.4 Mbps、上行 11.2 Mbps,这个数字决定了"保证带宽"能写多少;CBS 按一个 RTT 的在途数据量取 250 KB 左右,是"限速值没错但测速上不去"这一类问题的关键。锐应科技在 关于锐应 页面列出了 PON 产品线的完整资料,需要把 PON 侧与工业以太网侧按同一套限速策略管理时,可以对照两侧的规格与网管能力一起规划。