4. 路由核心概念
在中央网关中,路由决策并不是“看到目的地址就转发”这么简单。网关收到一个报文后,会提取目的 IP,依次查询路由表、执行最长前缀匹配、比较管理距离与度量值,最终选出最优下一跳。理解这条决策链,是排查“为什么走了这条链路而不是那条链路”的基础。
一、路由表:网关的转发决策数据库
路由表是网关进行三层转发的核心数据结构。每条路由至少包含目的网络/前缀长度、下一跳、出接口、管理距离、度量值等字段。中央网关通常同时维护多张表:主路由表、策略路由表、VPN 实例路由表,以及直连、静态、动态协议产生的条目。
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/0 Static 60 0 10.10.1.254 GE0/0/1
10.10.1.0/24 Direct 0 0 10.10.1.1 GE0/0/1
10.20.0.0/16 OSPF 10 20 10.10.1.2 GE0/0/1
10.20.5.0/24 Static 60 0 10.10.1.3 GE0/0/1
192.168.0.0/16 BGP 255 100 10.10.1.4 GE0/0/1
表中 Pre 是管理距离(优先级),Cost 是度量值。注意:不同厂商字段名可能不同,但语义一致——先比前缀长度,再比管理距离,最后比度量值。
二、最长前缀匹配:先看“谁更具体”
最长前缀匹配(Longest Prefix Match,LPM)是路由查找的第一原则。当多个路由条目都能匹配同一个目的 IP 时,网关选择掩码最长、即最具体的那一条。例如目的地址 10.20.5.8 同时匹配 10.20.0.0/16 和 10.20.5.0/24,网关会选择 /24,因为它的前缀更长、范围更精确。
LPM 的优先级高于管理距离和度量值。也就是说,即使一条 /24 静态路由的管理距离是 60,而一条 /16 OSPF 路由的管理距离是 10,网关仍然优先选择 /24。这一点在排障时极易被忽略:管理员看到 OSPF 优先级更低,却忽略了前缀长度差异。
三、管理距离与度量值:可信度与优劣度
管理距离(Administrative Distance,AD)衡量路由来源的可信程度,取值越小越可信。它只在不同路由协议之间比较,用于决定“听谁的”。常见默认值如下表所示。
| 路由来源 | 管理距离(默认) | 说明 |
|---|---|---|
| 直连路由 | 0 | 接口 UP 即产生,最可信 |
| 静态路由 | 1 或 60 | 厂商差异,通常优于动态路由 |
| OSPF | 10 | 链路状态,收敛快 |
| IS-IS | 15 | 运营商常用 |
| BGP(EBGP) | 20 | 域间路由 |
| BGP(IBGP) | 200 | 域内 BGP |
度量值(Metric)则在同一协议内部比较,用于选择“同来源中哪条更优”。不同协议的度量值不可直接比较:OSPF 用开销(Cost),RIP 用跳数,BGP 用路径属性。因此,管理距离解决“跨协议选谁”,度量值解决“同协议选哪条”。
四、静态路由与动态路由的基本原理
静态路由由管理员手工配置,不占用协议开销,适合小型网络、默认路由、末梢网络和精确控制场景。它的缺点是拓扑变化后不会自动收敛,需要人工维护。动态路由通过协议自动学习、计算和更新路由,适合中大型网络,但会带来协议报文、CPU 和内存开销。
# 静态路由示例
ip route-static 10.20.5.0 255.255.255.0 10.10.1.3
# 默认路由示例
ip route-static 0.0.0.0 0.0.0.0 10.10.1.254
# OSPF 动态路由示例
ospf 1 router-id 1.1.1.1
area 0
network 10.10.1.0 0.0.0.255
静态路由与动态路由并非互斥。工程中常见做法是:核心互联用 OSPF 或 BGP 动态学习,末梢和默认出口用静态路由兜底;同时通过管理距离调整,让静态路由作为备份,动态路由作为主用,或反之。
五、案例:一次“绕路”故障的复盘
某中央网关到 10.20.5.0/24 有两条路径:一条 OSPF 学习到的 /24,度量值 20;一条静态 /16,管理距离 60。管理员发现流量走了 OSPF 路径,但期望走静态路径。原因不是管理距离,而是静态路由写成了 /16,前缀比 OSPF 的 /24 短,在 LPM 阶段就已落败。修正方法是将静态路由改为 /24,或调整 OSPF 的度量值使其不再优选。
掌握这条决策链后,再看到路由表里“多条路由同时存在”就不会困惑:它们可能分别来自直连、静态和动态协议,最终只有一条会被安装进转发表。工程上建议定期核对路由表与预期路径,尤其在双出口、双协议并存的中央网关场景中,避免因前缀长度或管理距离配置不当导致流量绕行。