第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
八、思考
- 路由表由哪三个来源生成?哪个优先级最高?
- 最长匹配原则是什么?举例说明为什么要用最长匹配而不是精确匹配?
- 路由优先级和度量值有什么区别?先比较哪个?
- 为什么直连路由的优先级是 0(最高)?
- 数据包到达路由器后,路由表中没有任何匹配条目,路由器会怎么处理?
- 如果 OSPF 学到 10.0.1.0/24(Cost=100),静态路由也配了 10.0.1.0/24(Preference 保持默认 60),路由器会使用哪条?
下篇预告:第28篇《直连路由与静态路由配置》——掌握直连路由和静态路由的配置方法。