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

路由器的硬件构成和服务器类似,但每一件的角色不同:CPU 管控制面,芯片管数据面。 内存要同时装五样东西——算下来 1.3 GB 只是「刚好够」,选型要留一倍余量。

📝 本节和前面几节的关系

03.07 讲完管理,从这一节开始把设备拆开看硬件。 03.01.02 提过「控制面与数据面分离」,这一节看它在硬件上的样子。

一、五样零件各管什么

零件 管什么 规格看什么 坏了会怎样


CPU 协议计算、管理面 核数、主频 协议断、管理不通 内存(RAM) 路由表、转发表、缓冲 容量 表装不下、丢包 闪存(Flash) 系统镜像、配置 容量 起不来 接口模块 接各种网络 类型、数量、速率 那一段不通 交换/转发芯片 数据面转发 pps、带宽 退回软件转发

「交换/转发芯片坏了会怎样」这一行最有意思: 设备不会立刻死,而是「退回软件转发」——CPU 扛起转发,性能掉到原来的一两个百分点,但业务还在。 所以这类故障的表现是「设备没坏,就是特别慢」。

二、内存要装五样东西

一、操作系统本体:约 512 MB。二、路由表:95 万条约 190 MB。三、转发表副本:约 120 MB。 四、数据包缓冲:约 256 MB。五、其他进程:约 200 MB。

合计约 1.3 GB,而这只是「刚好够」。 实际选型要留一倍以上余量——因为路由表会涨、缓冲需求会涨、软件版本也会变胖。

「2 GB 内存跑 95 万条 BGP 全表」这种配置半年后就会 OOM, 而 OOM 的表现不是报错,是「进程神秘重启」或「路由莫名丢失」。 这类故障最难查,因为看起来不像内存问题。

三、闪存有个坑

升级系统时新旧两个镜像要同时存在,所以实际可用空间大约是标称的一半。

「闪存 1 GB」的设备,系统占 400 MB、旧镜像占 400 MB,剩 200 MB 装不下新镜像——于是「连一次升级都做不了」。

这就是为什么选型时「闪存容量」要看两倍:不是「装得下系统」,而是「装得下两个系统」。 很多设备支持「压缩镜像」或「从外部 TFTP 启动」,就是为绕开这个限制。

四、接口模块决定「能接什么」

接口模块是唯一「按需换」的部件,也决定了这台设备的用途: 电口多的是接入型,光口多的是汇聚型,有 POS 与 E1 的是运营商型。

选型时要看两件事:槽位数量(以后能不能加)与单槽带宽(加了能不能跑满)。 很多设备槽位够但背板带宽不够——插满之后总吞吐反而下降,这是常见的设计陷阱。

五、动手 Demo:路由器里的五样零件,各管什么

这段列出五个零件的职责与故障表现,再按「系统本体、路由表、转发表、缓冲、 其他进程」五项算内存需求合计。

items = ((u"系统", 512), (u"路由表", 190), (u"转发表", 120),
         (u"缓冲", 256), (u"其他", 200))
for name, mb in items:
    P(u"  %s:%d MB" % (name, mb))
P(u"  合计:%d MB" % sum(mb for _, mb in items))

实跑输出:

--------------------------------------------------------------------
路由器里的五样零件,各管什么
--------------------------------------------------------------------
**路由器的硬件构成和服务器类似,但每一件的角色不同。**

  零件               管什么                   规格看什么           坏了会怎样
  -------------------------------------------------------------------------------------
  CPU                协议计算、管理面         核数、主频           协议断、管理不通
  内存(RAM)        路由表、转发表、缓冲     容量                 表装不下、丢包
  闪存(Flash)      操作系统镜像、配置       容量                 起不来
  接口模块           接各种网络               类型、数量、速率     那一段不通
  交换/转发芯片     数据面转发               pps、带宽            性能掉到软件转发

**内存那一行要展开算**:内存要同时装五样东西。

  操作系统本体:512 MB
  路由表(95 万条):190 MB
  转发表副本:120 MB
  数据包缓冲:256 MB
  其他进程:200 MB
  **合计:1278 MB**

**这个数只是「刚好够」。**实际选型要留一倍以上余量。
因为**路由表会涨、缓冲需求会涨、软件版本会变胖。**
**「2 GB 内存跑 95 万条 BGP 全表」这种配置,半年后就会 OOM。**

**闪存那一行有个常见坑**:升级系统时新旧两个镜像要同时存在,**所以实际可用空间大约是标称的一半。**
**「闪存 1 GB」的设备可能连一次升级都做不了。**

「1278 MB」这个合计要当成「下限」看,不是「推荐值」。 因为它是按「95 万条全表 + 256 MB 缓冲」算的, 而缓冲是按「够用」算的,不是按「扛得住突发」算的。

「芯片坏了退回软件转发」这一条要展开:有些设备的芯片故障不会告警,只是性能下降。 所以「设备突然变慢」要查的一是 CPU、二是转发模式。 看「当前是硬件转发还是软件转发」这个字段,能立刻定位。

最后那个「闪存减半」的坑是选型时最实际的一条: 它不写在规格书上,但会让「支持升级」变成一句空话。 问供应商的时候要问「两个镜像同时存在还剩多少」。

30 秒实验

  1. 查一下你手上设备的内存与闪存各是多少。
  2. 看路由表有多少条,估算它占多少内存。
  3. 查一下当前是硬件转发还是软件转发。

常见误区

  1. 以为内存够装路由表就行。还要装缓冲、转发表、进程。
  2. 以为闪存标称值就是可用值。升级要放两个镜像。
  3. 以为芯片坏了设备就死。它会退回软件转发,变慢但不死。
自测三问(点开对答案) 1. 路由器的五样主要零件是什么? —— CPU、内存、闪存、接口模块、交换/转发芯片。 2. 为什么选型时内存要留一倍余量? —— 路由表会涨、缓冲需求会涨、软件版本会变胖,算出来的只是刚好够。 3. 转发芯片故障的典型表现是什么? —— 设备不死但性能骤降,因为退回 CPU 软件转发。

下一节:这些零件是怎么一件件被叫醒的。

相关笔记