路由器内部也分控制面、转发面、服务面,但三个面的分工比交换机细。 「服务面」是路由器特有的——它比转发面慢两个数量级,所以开了功能就变慢。
上一节讲启动,这一节讲架构。 这一节解释了一个所有人都遇到过的问题:为什么「标称千兆,开了 VPN 就慢」。
一、三个面各是什么
面 谁实现 干什么 性能量级
控制面 CPU 加内存 跑协议、维护路由表 万级操作/秒 转发面 ASIC/NP/CPU 查表转发每个包 亿级包/秒 服务面 CPU NAT、VPN、ACL、QoS 百万级包/秒
「服务面」这一层是路由器特有的:交换机把 NAT、VPN 这类功能要么不做、要么交给专用设备; 而路由器把它们做在同一个盒子里。 代价就是性能。
二、开了功能就变慢
因为服务面的性能比转发面低两个数量级。
纯转发(ASIC):约 148.8 万 pps,折合 64 字节包 1000 Mbps。 开 ACL(查 TCAM):约 100 万 pps,折合 672 Mbps。 开 NAT(服务面):约 20 万 pps,折合 134 Mbps。 开 IPsec(加密引擎):约 8 万 pps,折合 54 Mbps。
从 1000 Mbps 掉到 54 Mbps,差 18 倍。 所以「标称千兆,开了 VPN 怎么就慢了」是必然的,不是虚标。 买之前要看「开启功能后的吞吐」。
三、为什么小包最吃亏
上面那组数字都是按 64 字节小包算的,因为 64 字节是最坏情况——包最小,头占比最高,pps 最大。
换成 1500 字节的大包,同样的 Mbps 只需要 1/23 的 pps。 所以「千兆线速」这个说法必须带包长,不带包长的吞吐数字没有意义。
现场的对应关系:传大文件看 Mbps,跑小包业务(语音、游戏、DNS)看 pps。 两种业务的瓶颈点完全不同。 一台设备「传文件很快但语音卡」,就是 pps 不够。
四、为什么高端设备要用 NP
ASIC 快但只能做固定动作,加了新功能就要换芯片。CPU 灵活但慢。 NP(网络处理器)在中间:用微码编程,既能跑上亿 pps,又能通过升级微码支持新功能。
所以运营商级设备大多是「ASIC 做主干 + NP 做灵活部分 + CPU 做控制」。 三层混用不是堆料,是各取所长。
这也解释了一个常见现象: 同一家厂商的低端与高端设备,同样的功能但性能差十倍——不是软件写得不一样,是低端没有 NP,只能靠 CPU。
五、动手 Demo:路由器的三层架构,与交换机的差别在哪
这段列出三个面的实现者与性能量级,再按「64 字节包」把四档 pps 折算成 Mbps, 看功能开启后的吞吐落差。
for name, pps in cases:
P(u" %s:%s pps,折合 64 字节包 %d Mbps。"
% (name, format(pps, u","), pps * 64 * 8 // 1000000))
实跑输出:
--------------------------------------------------------------------
路由器的三层架构,与交换机的差别在哪
--------------------------------------------------------------------
**路由器内部也分控制面、转发面、服务面**,但三个面的分工比交换机细。
面 谁实现 干什么 性能量级
------------------------------------------------------------------------
控制面 CPU + 内存 跑路由协议、维护路由表 万级操作/秒
转发面 ASIC/NP/CPU 查表转发每个包 亿级包/秒
服务面 CPU NAT、VPN、ACL、QoS 百万级包/秒
**「服务面」这一层是路由器特有的**:交换机把 NAT、VPN 这类功能**要么不做、要么交给专用设备**;
而路由器把它们做在同一个盒子里。
**这也是「开了功能就变慢」的原因**:服务面的性能比转发面低两个数量级。
**所以规格书上「关闭功能时 20 Gbps、开启 NAT 后 5 Gbps」不是虚标,是物理事实。**
**算一下这个落差**:
纯转发(ASIC):1,488,095 pps,折合 64 字节包 1000 Mbps。
开 ACL(ASIC 查 TCAM):1,000,000 pps,折合 64 字节包 672 Mbps。
开 NAT(服务面):200,000 pps,折合 64 字节包 134 Mbps。
开 IPsec(加密引擎):80,000 pps,折合 64 字节包 54 Mbps。
**从 1000 Mbps 掉到 54 Mbps,差 18 倍。**
**所以「标称千兆,开了 VPN 怎么就慢了」是必然的。**
**买之前要看「开启功能后的吞吐」,不是「裸转发吞吐」。**
「18 倍」这个落差要记住:它说明「功能」与「性能」在路由器上是直接冲突的。 而这正是路由器与交换机最本质的差别。
「千兆线速必须带包长」这一条是选型要点: 规格书上的「20 Gbps」如果不写包长,基本可以认为是「按大包算的」——而实际业务里小包占比很高。 所以要问「64 字节包的 pps 是多少」。
最后「低端与高端差十倍不是软件」这一条很重要:很多人以为「买个便宜的,反正功能一样」, 但功能一样不等于性能一样。 便宜设备的功能是「能开」,不是「开了还能跑」。
30 秒实验
- 查一下你设备的规格书,看吞吐是标「裸转发」还是「开功能后」。
- 算一下:你的业务平均包长是多少,对应的 pps 需求是多少。
- 想一想:为什么语音业务更在意 pps 而不是带宽。
常见误区
- 以为标称带宽就是实际可用。开功能后会掉一个数量级。
- 以为吞吐数字与包长无关。小包最吃亏,差 20 多倍。
- 以为贵设备只是「牌子贵」。它有 NP,性能完全不同。
自测三问(点开对答案)
1. 路由器的三个面分别是什么? —— 控制面(协议与路由表)、转发面(查表转发)、服务面(NAT、VPN 等功能)。 2. 为什么开了 NAT 或 VPN 吞吐会掉? —— 这些功能由服务面处理,性能比 ASIC 转发面低两个数量级。 3. 为什么 64 字节包的 pps 最能代表设备能力? —— 包最小、头占比最高、pps 最大,是最坏情况。下一节:设备内部怎么做到「坏一个不影响」。
- ☐ (本节完,下一节 03.08.04 路由器的内部冗余)