从通电到能用要走六步,快则 48 秒,慢则 10 分钟。 所以「重启一下」不是几十秒的事,生产设备重启要排维护窗口。
上一节看零件,这一节看它们按什么顺序被叫醒。 「起不来」是最严重也最常见的故障之一,懂流程才知道卡在哪一步。
一、六个阶段
阶段 做什么 典型耗时
- POST 自检 测 CPU、内存、接口 几秒到几十秒
- 加载引导程序 从 ROM 找 BootROM 1 到 5 秒
- 找系统镜像 Flash、TFTP、USB 依次试 5 到 60 秒
- 解压并启动 把镜像解到内存 30 秒到 3 分钟
- 读配置文件 读 startup-config 1 到 10 秒
- 初始化接口与协议 接口 up、协议起邻居 10 秒到几分钟
合计:快的话 48 秒,慢的话 615 秒,也就是十分多钟。 而其中最慢的是第 4 步与第 6 步。
二、两句要记住的推论
一、「重启一下」不是几十秒的事。 生产设备重启要按分钟算,所以要排维护窗口,不能随手 reboot。
二、重启后「立刻 ping 不通」可能是正常的。 因为路由还没收敛。 判断标准不是「通没通」,是「邻居起来没有」。
第二条尤其重要:很多人重启完立刻测,测不通就以为坏了, 于是又重启一次——这一来一回,故障时间翻倍。 正确的做法是等,并且看邻居状态而不是测业务。
三、卡在第 3 步最麻烦
第 3 步失败意味着 Flash 里的镜像坏了或丢了。 这时候设备会停在引导程序里,只能通过 Console 从 TFTP 重新拉镜像。
这个场景兑现了 03.07.01 那句话:「Console 是唯一可靠入口」。 网络断了、镜像坏了、配置没了——这三种情况下 SSH 全部无效,只有串口能用。
所以「机房能物理接触到串口」不是可选项, 尤其是远程机房——否则一次镜像损坏就要派人飞过去。
四、BGP 为什么最慢
第 6 步里,接口 up 只要几秒,OSPF 邻居几秒到几十秒,BGP 邻居要几十秒到几分钟。
原因在 BGP 的机制:它要先建 TCP 连接、再交换能力、再传全表。 而全表 95 万条,一条条传下来就是几分钟。 所以「运营商设备重启」是一件要提前一周报备的事。
这也是「优雅重启(Graceful Restart)」被发明的原因:让控制面重启期间数据面继续转发, 邻居也保留路由不撤销。这样重启就不影响业务了。
五、动手 Demo:路由器从通电到能用,中间走了几步
这段列出六个阶段与各自的耗时区间,再按最快与最慢两组参数算出总启动时间。
fast = (2, 1, 5, 30, 1, 10)
slow = (30, 5, 60, 180, 10, 300)
P(u" 最快:%d 秒。最慢:%d 秒。" % (sum(fast), sum(slow)))
实跑输出:
--------------------------------------------------------------------
路由器从通电到能用,中间走了几步
--------------------------------------------------------------------
**开机流程值得了解**,因为「起不来」是最严重也最常见的故障之一。
阶段 做什么 典型耗时
------------------------------------------------------------------------
1. POST 自检 测 CPU、内存、接口 几秒到几十秒
2. 加载引导程序 从 ROM 里找 BootROM/U-Boot 1~5 秒
3. 找操作系统镜像 Flash、TFTP、USB 依次尝试 5~60 秒
4. 解压并启动系统 把镜像解到内存 30 秒~3 分钟
5. 读配置文件 startup-config 1~10 秒
6. 初始化接口与协议 接口 up、协议起邻居 10 秒~几分钟
**合计:快的话 48 秒,慢的话 615 秒(10.2 分钟)。**
**最慢的是第 4 步与第 6 步**:大镜像解压要几分钟;
**而协议邻居建立(尤其 BGP)可能要几分钟到十几分钟。**
**这解释了两件事**:
1. **「重启一下」不是几十秒的事**——生产设备重启要按分钟算,**所以要排维护窗口,不能随手 reboot。**
2. **重启后「立刻 ping 不通」可能是正常的**——路由还没收敛。
**判断标准不是「通没通」,是「邻居起来没有」。**
**起不来最怕的是第 3 步失败**:Flash 里的镜像坏了。
**这时候设备会停在引导程序里,只能通过 Console 从 TFTP 重新拉镜像。**
**所以「Console 是唯一可靠入口」这句话在这里兑现。**
「48 秒到 615 秒」这个区间说明「重启」这个词太轻了: 它可能是一件十分钟的事,而且这十分钟里业务是断的。 所以变更管理里「重启」要单列一项。
「判断标准是邻居起来没有」这一条是实操要点: 看 BGP 邻居是 Established、看 OSPF 邻居是 FULL,这两个状态对了,业务自然就通了。 反过来「ping 通了」也不代表全网收敛了。
最后「优雅重启」这一条把这一节和 03.06.06 的冗余连了起来: 冗余解决「设备坏了」,优雅重启解决「设备要重启」。 两件事不同,但都是「让业务感觉不到」。
30 秒实验
- 重启一台设备,掐表算它到能用要多久。
- 观察启动过程中 Console 上打印的每一行。
- 看设备有没有开优雅重启(Graceful Restart)。
常见误区
- 以为重启只要几十秒。慢的时候十分钟。
- 以为重启完 ping 不通就是坏了。可能还在收敛。
- 以为远程能搞定一切。第 3 步失败只有 Console 能救。
自测三问(点开对答案)
1. 启动流程分哪六个阶段? —— POST 自检、加载引导程序、找系统镜像、解压启动、读配置、初始化接口与协议。 2. 为什么 BGP 邻居建立最慢? —— 要建 TCP 连接、交换能力、再传全表,95 万条要几分钟。 3. 重启后判断设备是否恢复该看什么? —— 看协议邻居是否建立(如 BGP Established),而不是先测业务。下一节:这些零件是怎么组织起来的——三层架构。
- ☐ (本节完,下一节 03.08.03 路由器的一般架构)