第27篇:路由基础——什么是路由表,路由表如何生成

一、写在前面

前面 26 篇文章讲的都是二层交换——交换机靠 MAC 地址表转发帧,只能在同一个广播域内通信。

但如果 PC-A(192.168.1.1)想访问 PC-C(10.0.0.1),它们在不同网段,二层交换机搞不定了——这时候需要路由

路由是三层(网络层)的核心能力——路由器(或三层交换机)根据路由表决定数据包的下一跳路径。


二、什么是路由表?

2.1 路由表的基本结构

路由表是设备上存储的一张"地图",告诉设备:去某个目的地,应该从哪个接口走,下一跳是谁。

<Router> display ip routing-table
Destination/Mask   Proto   Pre   Cost    NextHop         Interface
  0.0.0.0/0        Static  60    0       192.168.1.254   GigabitEthernet0/0/1
  10.0.0.0/24      Direct  0     0       10.0.0.1        GigabitEthernet0/0/2
  10.0.0.1/32      Direct  0     0       127.0.0.1       InLoopBack0
  10.0.1.0/24      Static  60    0       10.0.0.2        GigabitEthernet0/0/2
  192.168.1.0/24   Direct  0     0       192.168.1.1     GigabitEthernet0/0/1

2.2 每条路由的含义

字段 示例 说明
Destination/Mask 10.0.0.0/24 目标网段
Proto Direct / Static / OSPF / BGP 路由来源(怎么学到的)
Pre(Preference) 0 / 60 / 10 / 255 路由优先级(数值越小越优)
Cost(Metric) 0 度量值(开销,越小越优)
NextHop 10.0.0.2 下一跳 IP 地址
Interface GigabitEthernet0/0/2 出接口

三、路由表的三种来源

3.1 直连路由(Direct)

自动产生:在接口上配置 IP 地址并 UP 后,路由器自动把该网段加入路由表。

[Router] interface gigabitethernet 0/0/1
[Router-GigabitEthernet0/0/1] ip address 192.168.1.1 255.255.255.0

# 路由表自动产生:
192.168.1.0/24   Direct  0   0   192.168.1.1     GE0/0/1
192.168.1.1/32   Direct  0   0   127.0.0.1       InLoopBack0

优先级:0(最高,不可修改)

3.2 静态路由(Static)

手工配置:管理员手动写路由。

[Router] ip route-static 10.0.1.0 255.255.255.0 192.168.1.254

优先级:60(可修改)

3.3 动态路由(OSPF / IS-IS / BGP 等)

自动学习:路由器之间运行路由协议,互相交换路由信息,自动计算出路由。

[Router] ospf 1
[Router-ospf-1] area 0
[Router-ospf-1-area-0.0.0.0] network 10.0.0.0 0.0.0.255

优先级(华为默认): | 协议 | 默认优先级 | |------|:----------:| | Direct | 0 | | OSPF | 10 | | IS-IS | 15 | | Static | 60 | | RIP | 100 | | BGP | 255 |


四、路由查表过程

4.1 数据包到达路由器后的处理

数据包入接口
    │
    ▼
路由器解封装,看三层头中的 目的 IP
    │
    ▼
查路由表(RIB - Routing Information Base)
    │
    ├── 匹配上 → 按路由表中的下一跳/出接口转发
    │           重新封装二层帧头(MAC 重写)
    │           从出接口发出
    │
    └── 没有匹配 → 丢弃数据包 + 发送 ICMP "Destination Unreachable"

4.2 查表示例

路由表:

10.0.0.0/24    GE0/0/2
10.0.1.0/24    192.168.1.254 via GE0/0/1
0.0.0.0/0      192.168.1.254 via GE0/0/1

数据包目的 IP = 10.0.0.5:

查表步骤:
1. 匹配 10.0.0.0/24 → 最长匹配命中
2. 出接口 = GE0/0/2
3. 从 GE0/0/2 发出

数据包目的 IP = 10.0.2.5:

1. 10.0.2.0/24 不在表中
2. 没有更精确匹配
3. 匹配 0.0.0.0/0(默认路由)
4. 下一跳 192.168.1.254 → 从 GE0/0/1 发出

五、最长匹配原则

路由表可能有多个条目都匹配同一个目的 IP 地址。此时遵循最长匹配原则

  • 子网掩码最长(前缀最长)的路由条目优先
路由表:
10.0.0.0/8     下一跳 A
10.0.1.0/24    下一跳 B
10.0.1.128/25  下一跳 C

目的 IP = 10.0.1.200:
  10.0.0.0/8    → 匹配 ✓(掩码 8位)
  10.0.1.0/24   → 匹配 ✓(掩码 24位)→ 更长
  10.0.1.128/25 → 匹配 ✓(掩码 25位)→ 最长!命中

最终下一跳 = C

六、路由优先级 vs 度量值

很多新工程师分不清这两个概念:

比较 路由优先级(Preference) 度量值(Cost/Metric)
比较范围 不同协议之间的路由 同一协议内部的路由
谁定的 厂商定义的默认值,可修改 协议自己计算(跳数/开销/带宽)
比较时机 先比优先级,选协议 选中协议后,再比度量值
示例 OSPF=10 < Static=60 → 用 OSPF OSPF Cost 越小越优
OSPF 路由:Cost=20
Static 路由:Cost=0

→ 先比优先级:OSPF(10) < Static(60)
→ 选择 OSPF 路由(即使 Static 的 Cost 更小)
→ 优先级高于度量值

七、查看路由表

# 查看全部路由表
<Router> display ip routing-table

# 查看特定网段
<Router> display ip routing-table 10.0.1.0 24

# 查看路由表统计
<Router> display ip routing-table statistics
Total number of routes: 25
Protocol          Routes
Direct            5
Static            3
OSPF              15
BGP               2

八、思考

  1. 路由表由哪三个来源生成?哪个优先级最高?
  2. 最长匹配原则是什么?举例说明为什么要用最长匹配而不是精确匹配?
  3. 路由优先级和度量值有什么区别?先比较哪个?
  4. 为什么直连路由的优先级是 0(最高)?
  5. 数据包到达路由器后,路由表中没有任何匹配条目,路由器会怎么处理?
  6. 如果 OSPF 学到 10.0.1.0/24(Cost=100),静态路由也配了 10.0.1.0/24(Preference 保持默认 60),路由器会使用哪条?

下篇预告:第28篇《直连路由与静态路由配置》——掌握直连路由和静态路由的配置方法。