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:查询路由表 检查是否有匹配的路由条目 有路由? 丢弃数据包 发送ICMP不可达 步骤2:查询FIB表 获取下一跳和出接口 转发数据包 路由表:候选名单 FIB表:最终执行名单 静态路由 vs 动态路由

1.7 我的选择建议

说了这么多,到底该用静态路由还是动态路由?

我个人习惯这样判断:

  • 少于10台路由器,拓扑简单:用静态路由,省事
  • 10-50台路由器,有冗余链路:用OSPF或IS-IS
  • 超过50台,或者需要跨AS:上BGP
  • 末梢网络(只有一条出口):静态默认路由就够了

一个小技巧:我经常在核心层用动态路由,在接入层用静态路由。这样既保证了核心的可靠性,又简化了接入层的配置。你试试看,效果不错。

好了,路由基础就讲到这里。记住一句话:路由是网络的核心,理解路由表与FIB表的区别,掌握静态路由和动态路由的适用场景,是你成为网络高手的第一步。


公众号:蓝海资料掘金营,微信deep3321