📡 第三章 路由器和它庞大的功能
📄 一句话概括

路由器内部也分控制面、转发面、服务面,但三个面的分工比交换机细。 「服务面」是路由器特有的——它比转发面慢两个数量级,所以开了功能就变慢。

📝 本节和前面几节的关系

上一节讲启动,这一节讲架构。 这一节解释了一个所有人都遇到过的问题:为什么「标称千兆,开了 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 秒实验

  1. 查一下你设备的规格书,看吞吐是标「裸转发」还是「开功能后」。
  2. 算一下:你的业务平均包长是多少,对应的 pps 需求是多少。
  3. 想一想:为什么语音业务更在意 pps 而不是带宽。

常见误区

  1. 以为标称带宽就是实际可用。开功能后会掉一个数量级。
  2. 以为吞吐数字与包长无关。小包最吃亏,差 20 多倍。
  3. 以为贵设备只是「牌子贵」。它有 NP,性能完全不同。
自测三问(点开对答案) 1. 路由器的三个面分别是什么? —— 控制面(协议与路由表)、转发面(查表转发)、服务面(NAT、VPN 等功能)。 2. 为什么开了 NAT 或 VPN 吞吐会掉? —— 这些功能由服务面处理,性能比 ASIC 转发面低两个数量级。 3. 为什么 64 字节包的 pps 最能代表设备能力? —— 包最小、头占比最高、pps 最大,是最坏情况。

下一节:设备内部怎么做到「坏一个不影响」。

相关笔记