1、路由基础回顾:什么是路由?路由表与FIB表、静态路由与动态路由对比
1.1 路由的本质:数据包该往哪走
说实话,很多人学了几年网络,对路由的理解还停留在“路由器转发数据包”这个层面。这没错,但太浅了。
我个人的理解是——路由,就是给数据包指路。你想想看,一个数据包从北京发到上海,中间经过几十台路由器,每台路由器都得知道:这个包接下来该交给谁?
这个“该交给谁”的决定,就是路由。
核心定义:路由是指网络设备根据目标IP地址,选择最佳路径将数据包从源端转发到目的端的过程。
我在项目中遇到过不少刚入行的同事,他们总以为路由就是配几条静态路由就完事了。嗯,小网络确实可以,但到了大规模网络,路由策略的复杂度会让你头皮发麻。
1.2 路由表 vs FIB表:别搞混了
这两个概念,我见过太多人搞混了。甚至有些老工程师也说不清楚区别。咱们今天一次性讲明白。
路由表(Routing Table)
路由表是路由器的大脑,它存储了所有已知的路由信息。包括直连路由、静态路由、动态路由协议学习到的路由。
你可以把它想象成一个“候选名单”。里面记录了所有可能的路径,但并不是每条都会被立即使用。
# 查看路由表(以华为设备为例)
<Huawei> display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 10 Routes : 10
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.0.0/24 Direct 0 0 D 10.0.0.1 GigabitEthernet0/0/0
10.0.1.0/24 Static 60 0 D 192.168.1.1 GigabitEthernet0/0/1
172.16.0.0/16 OSPF 10 2 D 192.168.2.1 GigabitEthernet0/0/2
0.0.0.0/0 Static 60 0 D 192.168.1.254 GigabitEthernet0/0/1
FIB表(Forwarding Information Base)
FIB表是路由表的“精选版”。路由器会把路由表中最优的路由条目,下载到FIB表中。FIB表才是真正用于数据包转发的依据。
为什么要搞两套表?说白了,路由表里可能有几百条路由,但真正被选中的只有几条。FIB表就是那个“最终执行名单”。
我的经验:排错时,先看路由表有没有路由,再看FIB表有没有下发。我曾经遇到过一个坑:路由表里有路由,但FIB表里没有,结果数据包就是转发不出去。后来发现是硬件资源不足,FIB表项被踢出了。
# 查看FIB表
<Huawei> display fib
FIB Table:
Total number of Routes : 10
Destination/Mask NextHop Flag TimeStamp Interface
10.0.0.0/24 10.0.0.1 U 2024-01-01 GigabitEthernet0/0/0
10.0.1.0/24 192.168.1.1 U 2024-01-01 GigabitEthernet0/0/1
172.16.0.0/16 192.168.2.1 U 2024-01-01 GigabitEthernet0/0/2
0.0.0.0/0 192.168.1.254 U 2024-01-01 GigabitEthernet0/0/1
1.3 路由表与FIB表的对比
| 对比项 | 路由表 | FIB表 |
|---|---|---|
| 存储内容 | 所有路由(包括非最优) | 仅最优路由 |
| 用途 | 路由决策、协议交互 | 数据包转发 |
| 更新频率 | 路由变化时更新 | 路由表变化后同步 |
| 硬件实现 | 软件维护 | 硬件加速(如TCAM) |
| 排错优先级 | 先查路由表 | 再查FIB表 |
1.4 静态路由 vs 动态路由
这是路由策略的两种基本方式。我刚开始做网络时,觉得静态路由简单粗暴,动态路由太复杂。后来才发现,各有各的适用场景。
静态路由
静态路由就是管理员手动配置的路由。它不会自动适应网络变化。
# 配置静态路由(华为设备)
[Huawei] ip route-static 192.168.10.0 255.255.255.0 10.0.0.2
[Huawei] ip route-static 0.0.0.0 0.0.0.0 10.0.0.254 # 默认路由
优点:
- 配置简单,容易理解
- 不占用网络带宽(没有协议报文)
- 安全性高(不会泄露路由信息)
- 资源消耗低
缺点:
- 网络变化时需要手动修改
- 容易出错(我曾经因为配错静态路由导致环路,排查了一整天)
- 不适合大型网络
避坑指南:我曾经在一条链路上配了静态路由,结果链路断了,路由不会自动切换。业务中断了半小时才发现。所以,静态路由一定要配合链路检测机制,比如BFD。
动态路由
动态路由通过路由协议自动学习路由。常见的协议有OSPF、IS-IS、BGP等。
# 配置OSPF动态路由(华为设备)
[Huawei] ospf 1 router-id 1.1.1.1
[Huawei-ospf-1] area 0.0.0.0
[Huawei-ospf-1-area-0.0.0.0] network 10.0.0.0 0.0.0.255
[Huawei-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
优点:
- 自动适应网络变化
- 减少人工干预
- 支持大型复杂网络
- 可以负载均衡
缺点:
- 配置复杂,学习成本高
- 占用网络带宽和CPU资源
- 存在安全隐患(路由欺骗等)
- 排错难度大
1.5 静态路由与动态路由对比表
| 对比项 | 静态路由 | 动态路由 |
|---|---|---|
| 配置方式 | 手动配置 | 自动学习 |
| 适应能力 | 不自动适应 | 自动适应网络变化 |
| 资源消耗 | 低 | 高 |
| 安全性 | 高 | 中(需额外配置认证) |
| 适用场景 | 小型网络、末梢网络 | 大型网络、复杂拓扑 |
| 排错难度 | 低 | 高 |
| 典型协议 | 无 | OSPF、IS-IS、BGP |
1.6 路由核心逻辑图
下面这张图,是我自己总结的路由核心逻辑。你仔细看一遍,就能把今天讲的内容串起来。
1.7 我的选择建议
说了这么多,到底该用静态路由还是动态路由?
我个人习惯这样判断:
- 少于10台路由器,拓扑简单:用静态路由,省事
- 10-50台路由器,有冗余链路:用OSPF或IS-IS
- 超过50台,或者需要跨AS:上BGP
- 末梢网络(只有一条出口):静态默认路由就够了
一个小技巧:我经常在核心层用动态路由,在接入层用静态路由。这样既保证了核心的可靠性,又简化了接入层的配置。你试试看,效果不错。
好了,路由基础就讲到这里。记住一句话:路由是网络的核心,理解路由表与FIB表的区别,掌握静态路由和动态路由的适用场景,是你成为网络高手的第一步。
公众号:蓝海资料掘金营,微信deep3321