静态路由&&OSPF协议

5578 字
28 分钟
静态路由&&OSPF协议

静态路由&&OSPF协议#

[TOC]


基础实验#

image-20260128101328671
image-20260128101328671

  • 我们先把这些东西都配置好了

提问:🍔在没有配置 静态路由 的情况下,10.0.0.11能ping通11.22.33.44吗?

image-20260128101547337
image-20260128101547337

为何ping不通呢?

image-20260128101630934
image-20260128101630934

🍕 直连网段 (20.0.0.0/24) 的下一跳接口是他自己​(10.0.0.1)

静态VS默认#

静态路由(Static Route)

  • 手动配置的路由条目,用于指定 到达某个特定目的网络 的下一跳地址或出接口

用途:

  • 适用于网络结构简单、拓扑稳定的小型网络
  • 常用于点对点链路的精确控制
Terminal window
[Huawei] ip route-static 192.168.2.0 255.255.255.0 10.0.0.2
# 含义:去往 192.168.2.0/24 网络,下一跳是 10.0.0.2
# 后面接具体的IP地址

在 eNSP 中配置静态路由时,直接在 系统视图 下敲 ip route-static … 即可,不必进入任何端口

  • 给出 下一跳的IP地址 即可,路由表会根据对应的IP地址,决定由哪个端口进行转发的

默认路由 (Default Route / 缺省路由)

  • 是一种特殊的静态路由,其目的网络为 0.0.0.0/0,表示“匹配所有未明确路由的目的地址”

    当路由器查表找不到 更具体的路由 时,就使用 默认路由 转发数据包

用途:

常用于 边缘路由器(如企业出口路由器),将所有未知目的地网络导向 网关或核心路由器,简化路由表

Terminal window
[Huawei] ip route-static 0.0.0.0 0 10.0.0.1
# 这里(掩码用 0 表示)
# 含义:所有未匹配其他路由的数据包,都发往 10.0.0.1

这里因为网络拓扑挺简单的,又是点对点,我们配置 静态路由 就行了,不用配置 缺省路由

image-20260128104130499
image-20260128104130499

  • 配置静态路由,不必进入到某个端口里面

现在能ping通吗?

image-20260128104214819
image-20260128104214819

  • 现在R1数据包能转发到R2
    • 10.0.0.11(主机)能找到11.22.33.0这个网段
  • 但是R2找不到R1
    • 过的去,回不来

image-20260128104255311
image-20260128104255311

  • R1前面我们已经配置过了,现在只需要配置R2就可以了

image-20260128104314604
image-20260128104314604

验证一下

image-20260128104347591
image-20260128104347591

综合实验#

image-20260128104441103
image-20260128104441103

Terminal window
# R1的配置
sys
sys R1
inter g0/0/0
ip add 192.168.11.254 255.255.255.0
q
inter g0/0/1
ip add 10.1.1.1 255.255.255.0
q
dis ip int bri

image-20260128104544683
image-20260128104544683

Terminal window
# R2配置
sys
sys R2
inter g0/0/0
ip add 10.1.1.2 255.255.255.0
q
inter g0/0/1
ip add 20.1.1.2 255.255.255.0
q
dis ip int bri

image-20260128104619502
image-20260128104619502

Terminal window
# R3的配置
sys
sys R3
inter g0/0/0
ip add 20.1.1.1 255.255.255.0
q
inter g0/0/1
ip add 192.168.22.254 255.255.255.0
q
dis ip int bri

image-20260128104710547
image-20260128104710547

image-20260128104847675
image-20260128104847675

这时候PC1肯定是ping不通PC2的。

  • 路由表没有到达PC2的路由

我们接着就是配置路由器的静态路由

  • 这些都是简单一对一的路由,静态路由就足够了,不用配置默认缺省路由了
    • 默认(缺省)路由,ip route-static 0.0.0.0 0 下一跳接口的ip地址

手动配置静态路由

  1. 先配置去往192.168.22.0/24网段的路由
    1. 需要分别配置R1和R2

image-20260128104942473
image-20260128104942473

  • 不必进入到端口里面就能进行配置静态路由

R1:ip route-static 192.168.22.0 24 10.1.1.2

R2:ip route-static 192.168.22.0 24 20.1.1.1

  1. 再配置回来的路由

image-20260128105119503
image-20260128105119503

R3:ip route-static 192.168.11.0 24 20.1.1.2

R2:ip route-static 192.168.11.0 24 10.1.1.1


查看路由表

dis ip routing-table

image-20260128105259279
image-20260128105259279

image-20260128105311660
image-20260128105311660

image-20260128105322832
image-20260128105322832

验证:

image-20260128105349976
image-20260128105349976

默认的路由协议优先级#

(Preference 值)

路由类型默认 Preference 值
直连路由(Direct)0
静态路由(Static)60
OSPF10
IS-IS15
RIP100
BGP(EBGP)255(部分版本为 255 或 20/200,但通常 EBGP 为 255)
IBGP255

最长匹配原则#

当一个数据包到达路由器时,路由器会查看其 **目的 IP 地址 **,然后在自己的 路由表 中查找所有可能的匹配路由项

如果有多个路由项都能匹配该目的地址

**路由器会选择子网掩码最长(即前缀最长、网络号最具体)的那一条 ** 进行转发

**“最长”**指的是前缀长度最大,也就是子网掩码中“1”的位数最多,网络范围最小、最精确

举个例子 🌰

假设某路由器有以下几条路由:

目的网络子网掩码前缀表示下一跳
192.168.1.0255.255.255.0/24接口 A
192.168.1.128255.255.255.128/25接口 B
0.0.0.00.0.0.0/0(默认路由)接口 C

现在有一个数据包,目的 IP 是 192.168.1.130

我们来匹配:

  • /24 路由(192.168.1.0/24):能匹配(因为 192.168.1.130 属于这个网段)
  • /25 路由(192.168.1.128/25):也能匹配(128~255 范围,130 在其中)
  • 默认路由 /0:当然也能匹配(万能兜底)

但根据 最长匹配原则 ,路由器会选择 /25 的路由(接口 B),因为它的前缀更长(25 > 24 > 0),==匹配更精确==

初识OSPF#

OSPF(开放最短路径优先协议)是一种广泛使用的 内部网关协议,它是基于 链路状态 的路由协议,它从设计上保证了无路由环路

  • 目前针对 IPv4协议 使用的是 OSPF Version 2

    针对 IPv6协议 使用 OSPF Version 3

🙉什么是 链路状态 协议?

  • 链路状态路由协议 相当于提供了一张 地图 ,就好比你有一张地图怎么还会迷路?

  • 每个运行 链路状态协议 的路由器上都有一张完整的网络地图,从而避免了环路

  1. LSA泛洪:
  • 运行 链路状态路由协议 的路由器都会进行 链路状态公告 (LSA泛洪)

    LSA中包含了路由器已知的接口状态、接口IP地址、掩码、开销和网络类型等信息

通俗点讲就是每台路由器都会将一些关于自己,关于本地直连链路,以及这些链路的状态,和关于所有直连邻居的信息,传送给相邻的其他路由器

  1. 建立LSDB:

收到 LSA 的路由器都可以根据 LSA提供的信息 建立自己的链路状态数据库LSDB

通俗点讲就是每台路由器都会收到网络中,其他的路由器发送过来的LSA信息,这些所有的LSA信息构成了 LSDB(链路状态数据库)

  1. 建立最短路径树:

运行OSPF协议的路由器在 LSDB 的基础上使用 SPF算法 进行运算,建立起到达每个网络的 最短路径树

  1. 路由计算:

通过 最短路径树 得出到达目的网络的最优路由,并将其加入到IP路由表中


为了向非常大的网络提供 可伸缩性 ,OSPF 支持两个重要的概念: 自治系统(AS)区域

AS#

image-20260127110152240
image-20260127110152240

✅ 简单说:AS = 一个“独立管理”的网络王国

area#

  1. 为什么要划分“ 区域(Area) ”?

划分 OSPF区域 可以缩小路由器的LSDB规模,减少网络流量

每个区域都有自己的LSDB,不同区域的LSDB是不同的

  • 路由器会为每一个自己所连接到的 区域 维护一个单独的LSDB

  • 由于详细链路状态信息不会被发布到区域以外,因此LSDB的规模大大缩小了

✅ 关键结论:在 OSPF 网络稳定(收敛完成)后,同一区域(Area)内的所有路由器必须拥有完全相同的链路状态数据库(LSDB)

✅ 简单说:区域 = 把大网络切成小块,减轻每个路由器的负担,让网络跑得更快更稳

  1. OSPF是如何划分区域的呢?

image-20260127111056533
image-20260127111056533

  • 路由器的 每个接口 可以被划分在一个区域,一个路由器可以同时属于多个区域

  • Area 0 为骨干区域,其他区域为非骨干区域,每个非骨干区域都必须连接到骨干区域

  • 运行在 区域之间 的路由器叫做 区域边界路由器ABR ,它包含所有相连区域的LSDB

  • 自治系统边界路由器(ASBR)

    这种路由器会向 整个AS 通告 AS外部的路由信息

    这台路由器会把外部路由 学习并导入 进 OSPF,它就是 ASBR


  1. 为什么 SPF算法 可以保证区域内无环路?
  • **SPF算法 **将每一个路由器作为根(ROOT)来计算其到每一个目的地 路由器 的距离

  • 每个路由器根据一个统一的数据库会计算出 路由域 的拓扑结构图,该结构图类似于一棵树

    在SPF算法中,被称为 最短路径树 树形是无环路的

  • 为了 避免区域间路由环路 ,非骨干区域之间不允许直接相互发布路由信息

  • 所有的 非骨干区域 间通信都需要借助 骨干区域

因此每个区域都必须连接到骨干区域

综合实验#

①OSPF单区域的配置#

image-20260128100522224
image-20260128100522224

  • 先去配置 PC机 的IP,掩码,网关

image-20260127083713635
image-20260127083713635

  • PC2,PC3同理,省略
Terminal window
# 更改路由器接口的IP地址
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R1
[R1]undo inf en
Info: Information center is disabled.
[R1]inter g0/0/0
[R1-GigabitEthernet0/0/0]ip addr 172.16.10.1 255.255.255.0
[R1-GigabitEthernet0/0/0]q
[R1]inter g0/0/1
[R1-GigabitEthernet0/0/1]ip addr 172.16.20.1 255.255.255.0
[R1-GigabitEthernet0/0/1]q
[R1]inter g0/0/2
[R1-GigabitEthernet0/0/2]ip addr 172.16.1.254 255.255.255.0
[R1-GigabitEthernet0/0/2]q
[R1]dis ip inter bri
..........
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 172.16.10.1/24 up up
GigabitEthernet0/0/1 172.16.20.1/24 up up
GigabitEthernet0/0/2 172.16.1.254/24 up
# 认真的去对比一下
'一定要把路由器对应的IP地址都给配对了,才行'
# R2和R3同理,下面我们也来简单的配置一下
[R2]inter g0/0/0
[R2-GigabitEthernet0/0/0]ip addr 172.16.10.2 255.255.255.0
[R2-GigabitEthernet0/0/0]q
[R2]inter g0/0/1
[R2-GigabitEthernet0/0/1]ip addr 172.16.30.1 255.255.255.0
[R2-GigabitEthernet0/0/1]q
[R2]inter g0/0/2
[R2-GigabitEthernet0/0/2]ip addr 172.16.2.254 255.255.255.0
[R2-GigabitEthernet0/0/2]q
[R2]dis ip inter bri
........
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 172.16.10.2/24 up up
GigabitEthernet0/0/1 172.16.30.1/24 up up
GigabitEthernet0/0/2 172.16.2.254/24 up up
# R3配置
[R3]inter g0/0/0
[R3-GigabitEthernet0/0/0]ip addr 172.16.20.2 255.255.255.0
[R3-GigabitEthernet0/0/0]q
[R3]inter g0/0/1
[R3-GigabitEthernet0/0/1]ip addr 172.16.30.2 255.255.255.0
[R3-GigabitEthernet0/0/1]q
[R3]inter g0/0/2
[R3-GigabitEthernet0/0/2]ip addr 172.16.3.254 255.255.255.0
[R3-GigabitEthernet0/0/2]q
[R3]dis ip inter bri
.......
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 172.16.20.2/24 up up
GigabitEthernet0/0/1 172.16.30.2/24 up up
GigabitEthernet0/0/2 172.16.3.254/24 up up
'至此路由器上的所有接口IP全部配置完毕!'

ospf的进程号#

Terminal window
[R1]ospf
[R1-ospf-1]
# 没有指定进程号时,系统会默认使用 OSPF 进程号 1,并自动进入 OSPF 进程视图
'进程号在1- 65535 范围内可以随意设置,只用于区分正在同一路由器上运行的不同 OSPF进程'
[R1] ospf 1
[R1-ospf-1]
'完全等价'

✅ 什么是 OSPF 多进程?

你可以在 同一台路由器 上启动多个独立的 OSPF 进程

Terminal window
[R1] ospf 1
[R1-ospf-1]
-------------
[R1] ospf 2
[R1-ospf-2]
# 这两个 OSPF 进程(1 和 2)彼此完全独立
'进程号只在 一台路由器 上用于区分多个OSPF进程,因此对于R1而言,它并不关心它的直连OSPF邻居R2使用的是什么OSPF进程号,10也好,20也罢,这就有点像“自己的事自己知道就行“ -- 本地意义'
进程号在1- 65535 范围内可以随意设置,只用于区分正在同一路由器上运行的不同 OSPF进程

“进程号仅在本地有意义,不需要与邻居一致”

  • OSPF 报文中根本不包含“进程号”这个字段!

  • 所以,两台直连的路由器:

    • R1 运行 ospf 1

    • R2 运行 ospf 100

项目是否需要邻居一致
OSPF 进程号(如 1、100)❌ 不需要
Area ID✅ 必须一致
Hello/Dead 时间✅ 必须一致
认证✅ 必须一致
  • 只要它们的 区域 ID、网络类型、Hello/Dead 时间、认证等参数 匹配

    就能正常建立 OSPF 邻接关系

✅ 结论:邻居路由器的 OSPF 进程号可以不同,不影响邻居建立和路由交换

ospf配置#

Terminal window
[R1]ospf 1
# 选择OSPF的进程号
[R1-ospf-1]area 0
# 0为骨干区域,也可以写成area 0.0.0.0
[R1-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255
'这后面接的是子网掩码的反码'
[R1-ospf-1-area-0.0.0.0]network 172.16.10.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 172.16.20.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]dis th
[V200R003C00]
#
area 0.0.0.0
network 172.16.1.0 0.0.0.255
network 172.16.10.0 0.0.0.255
network 172.16.20.0 0.0.0.255
#
return
'这种方法是进入到OSPF对应的区域中查看所宣告的网络'
# R2和R3同理
[R2]ospf 1
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 172.16.10.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 172.16.30.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 172.16.2.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]dis this
[V200R003C00]
#
area 0.0.0.0
network 172.16.2.0 0.0.0.255
network 172.16.10.0 0.0.0.255
network 172.16.30.0 0.0.0.255
#
return
--------------------------------
[R3]ospf 1
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 172.16.3.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 172.16.30.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 172.16.20.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]dis this
[V200R003C00]
#
area 0.0.0.0
network 172.16.3.0 0.0.0.255
network 172.16.20.0 0.0.0.255
network 172.16.30.0 0.0.0.255
#
return
1)查看各个接口的通告信息
[R1]dis ospf interface
OSPF Process 1 with Router ID 172.16.10.1'这里还显示了router id'
Interfaces
Area: 0.0.0.0 '区域id' (MPLS TE not enabled)
IP Address Type State Cost Pri DR BDR
172.16.10.1 Broadcast DR 1 1 172.16.10.1 172.16.10.2
172.16.20.1 Broadcast DR 1 1 172.16.20.1 172.16.20.2
172.16.1.254 Broadcast DR 1 1 172.16.1.254 0.0.0.0
2)查看邻居的简要信息状态
[R1]dis ospf peer bri
OSPF Process 1 with Router ID 172.16.10.1
..............
3)查看路由表
[R1]dis ip routing-table
Route Flags: R - relay, D - download to fib
--------------------------------------------
Routing Tables: Public
Destinations : 16 Routes : 17
Destination/Mask Proto Pre Cost Flags NextHop Interface
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
172.16.1.254/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/2
172.16.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/2
172.16.2.0/24 OSPF 10 2 D 172.16.10.2 GigabitEthernet0/0/0
172.16.3.0/24 OSPF 10 2 D 172.16.20.2 GigabitEthernet0/0/1
......
Proto(Protocol)列
表示路由来源类型
- Direct 直连路由
- Static 静态路由
- OSPF、ISIS、BGP、RIP 动态路由协议
4)只查看OSPF的路由信息
[R1]dis ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
--------------------------------------------
Public routing table : OSPF
Destinations : 3 Routes : 4
OSPF routing table status : <Active>
Destinations : 3 Routes : 4
Destination/Mask Proto Pre Cost Flags NextHop Interface
172.16.2.0/24 OSPF 10 2 D 172.16.10.2 GigabitEthernet0/0/0
172.16.3.0/24 OSPF 10 2 D 172.16.20.2 GigabitEthernet0/0/1
172.16.30.0/24 OSPF 10 2 D 172.16.10.2 GigabitEthernet0/0/0
Terminal window
'我们ping一下,进行测试验证'
PC>ipconfig
....'我是R2'
IPv4 address......................: 172.16.2.1
Subnet mask.......................: 255.255.255.0
Gateway...........................: 172.16.2.254
PC>ping 172.16.1.1
'ping R1'
Ping 172.16.1.1: 32 data bytes, Press Ctrl_C to break
From 172.16.1.1: bytes=32 seq=4 ttl=126 time=32 ms
......
From 172.16.1.1: bytes=32 seq=5 ttl=126 time=15 ms
PC>ping 172.16.3.1
'ping R3'
Ping 172.16.3.1: 32 data bytes, Press Ctrl_C to break
From 172.16.3.1: bytes=32 seq=4 ttl=126 time=16 ms
From 172.16.3.1: bytes=32 seq=5 ttl=126 time=15 ms

②OSPF多区域配置#

image-20260128142117596
image-20260128142117596

  • 先去配置PC机的IP地址,网关,子网掩码
  • 接着就是路由器接口的IP地址也需要去进行配置

图中R1、R2、R3、R4是边界路由器(ABR)连接两个区域

Terminal window
# R1
sys
sys R1
undo info en
interface GigabitEthernet0/0/0
ip address 10.0.12.1 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.0.13.1 255.255.255.0
interface GigabitEthernet0/0/2
ip address 10.0.15.1 255.255.255.0
q
dis ip inter bri
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.0.12.1/24 up up
GigabitEthernet0/0/1 10.0.13.1/24 up up
GigabitEthernet0/0/2 10.0.15.1/24 up up
# R2,R3...类似
--------------------
# 配置ospf
# 这里我们仍然是以R1为例子
[R1]ospf
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 10.0.12.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 10.0.13.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]q
# 这两个网段在area 0区域
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]network 10.0.15.0 0.0.0.255
# 这个网段在area 1区域
[R1-ospf-1]dis this
[V200R003C00]
#
ospf 1
area 0.0.0.0
network 10.0.12.0 0.0.0.255
network 10.0.13.0 0.0.0.255
area 0.0.0.1
network 10.0.15.0 0.0.0.255
#
return
# 全部配置完成后,查看R5上的路由表信息,包括了去往全网的所有路由。
[R5-ospf-1]display ospf lsdb
# 查看OSPF的LSDB(链路状态数据库)

Router ID#

✅ OSPF Router ID 速记口诀

“手动优先,Loopback最大,物理次之”

📌 Router ID 选择规则(按优先级):

  1. 手工配置 → 最高优先级(推荐)
  2. Loopback接口中最大的IP地址
  3. 物理接口中最大的IP地址

🔁 只有当被选中的接口IP被修改,或删除时,才会重新选举

如何更新Router ID?

  • 手动配置后:重启OSPF进程 即可生效
  • 🌺必须在<用户视图>下才能重启
Terminal window
reset ospf 1 process
'这个1是ospf的进程号'
[R1]ospf
[R1-ospf-1]
  • 若未配置私有Router ID,OSPF使用 全局Router ID(可被BGP等共用)

✅ 建议:

👉 建议手动配置Router ID ,避免因接口IP变动导致ID变化,影响路由稳定性

📌 小贴士:Router ID 是路由器的“身份证”,必须唯一且稳定!

当我们没有手动设置全局Router ID 时,这时候的全局Router ID很可能是某个接口IP

  • 这与你配置接口IP的顺序有很大关系,往往是,你先配哪个接口IP,不管是loopback口,还是物理接口,哪个IP最先成为 Router ID

理解Router-ID实验#

image-20260128190446630
image-20260128190446630

自行配置PC机的IP地址,和路由器的接口IP地址!

Terminal window
# R1各个接口IP地址
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.0.1.254/24 up up
GigabitEthernet0/0/1 10.0.12.1/24 up up
# R2各个接口IP地址
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.0.12.2/24 up up
GigabitEthernet0/0/1 10.0.23.2/24 up up
GigabitEthernet0/0/2 10.0.24.2/24 up up
# R3各个接口IP地址
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.0.23.3/24 up up
GigabitEthernet0/0/1 10.0.2.254/24 up up
# R4各个接口IP地址
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.0.24.4/24 up up
GigabitEthernet0/0/1 10.0.3.254/24 up up
# 下面举例,以R1为例子
[R1]dis router id
RouterID:10.0.1.254
# 这个是我们g0/0/0的接口IP地址,因为我们先配置的就是这个口,所以默认就是它了
# 默认的Router-id和你配置接口IP地址的顺序有非常的的关系
[R1]inter g0/0/0
[R1-GigabitEthernet0/0/0]shutdown
# 手动关闭某一个端口
[R1-GigabitEthernet0/0/0]dis rout id
RouterID:10.0.1.254
# 即使我们把这个接口给关了,Router-id依旧没有发生变化
'只有被修改或者删除,才重新选举'
[R1-GigabitEthernet0/0/0]undo shutdown
# 重新把它给开启了,“不关闭”,就是开启
[R1-GigabitEthernet0/0/0]undo ip addr
# 我们把接口IP地址删除了,再次查看Router-id
[R1-GigabitEthernet0/0/0]dis this
[V200R003C00]
#
interface GigabitEthernet0/0/0
#
return
[R1-GigabitEthernet0/0/0]dis rout id
RouterID:10.0.12.1
# 这次就发生变化了,变为我们g0/0/1的接口IP地址了
-----------------
# 我们接着增加loopback(回环地址)
[R1-GigabitEthernet0/0/0]q
[R1]inter loopback 0
# 进入第一个回环地址
[R1-LoopBack0]ip add 2.2.2.2 24
[R1-LoopBack0]inter loopback 1
# 第二个回环地址
[R1-LoopBack1]ip add 10.0.0.1 24
[R1-LoopBack1]q
[R1]dis ip int bri
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.0.1.254/24 up up
GigabitEthernet0/0/1 10.0.12.1/24 up up
LoopBack0 2.2.2.2/24 up up(s)
LoopBack1 10.0.0.1/24 up up(s)
'明显LoopBack0<LoopBack1<g0/0/0<g0/0/1'
# 手动设置Router-id > 回环地址loopback > 物理接口IP''
# 那这里的Router-id会发生改变嘛?
[R1]dis rout id
RouterID:10.0.12.1
'不会,因为并没有重新选举,还是原来的g0/0/1的接口IP'
[R1]inter g0/0/1
[R1-GigabitEthernet0/0/1]undo ip addr
# 删除原来的router-id
[R1-GigabitEthernet0/0/1]dis rout id
RouterID:10.0.0.1
'当原来的router-id发生变化的时候,router-id就会进行重新选举,很明显,这次是回环最大的IP地址'
------------
# 为了防止我们的router-id一直发生改变,所以我们通常会把这个router手动固定住,而不是让他一直在那改变
------------
[R1]router id 20.20.20.20
Info: Router ID has been modified, please reset the relative protocols manually
to update the Router ID.
[R1]dis router id
RouterID:20.20.20.20
# 这次就是我们手动设置的router-id的值了

ospf的Router ID#

Terminal window
# 路由器的ospf的配置,就不过多赘述了,自行配置
# R1
[R1]dis ospf interface
OSPF Process 1 with Router ID 10.0.1.254
Area: 0.0.0.0 (MPLS TE not enabled)
IP Address Type State Cost Pri DR BDR
10.0.1.254 Broadcast DR 1 1 10.0.1.254 0.0.0.0
10.0.12.1 Broadcast BDR 1 1 10.0.12.2 10.0.12.1
# R2
[R2]dis ospf interface
OSPF Process 1 with Router ID 10.0.12.2
Area: 0.0.0.0 (MPLS TE not enabled)
IP Address Type State Cost Pri DR BDR
10.0.12.2 Broadcast DR 1 1 10.0.12.2 10.0.12.1
10.0.23.2 Broadcast BDR 1 1 10.0.23.3 10.0.23.2
10.0.24.2 Broadcast BDR 1 1 10.0.24.4 10.0.24.2
# R3
[R3]dis ospf interface
OSPF Process 1 with Router ID 10.0.23.3
Area: 0.0.0.0 (MPLS TE not enabled)
IP Address Type State Cost Pri DR BDR
10.0.23.3 Broadcast DR 1 1 10.0.23.3 10.0.23.2
10.0.2.254 Broadcast DR 1 1 10.0.2.254 0.0.0.0
# R4
[R4]dis ospf interface
OSPF Process 1 with Router ID 10.0.24.4
Area: 0.0.0.0 (MPLS TE not enabled)
IP Address Type State Cost Pri DR BDR
10.0.24.4 Broadcast DR 1 1 10.0.24.4 10.0.24.2
10.0.3.254 Broadcast DR 1 1 10.0.3.254 0.0.0.0
-------------------
'ospf配置好之后,我们简单的ping一下,测试一下'
PC>ipconfig
# 部门A和部门B测试连通性
IPv4 address......................: 10.0.1.1
Subnet mask.......................: 255.255.255.0
Gateway...........................: 10.0.1.254
PC>ping 10.0.2.1
Ping 10.0.2.1: 32 data bytes, Press Ctrl_C to break
From 10.0.2.1: bytes=32 seq=4 ttl=125 time=15 ms
From 10.0.2.1: bytes=32 seq=5 ttl=125 time=32 ms
......

image-20260128194458774
image-20260128194458774

image-20260128194506063
image-20260128194506063

配置OSPF的私有Router ID

Terminal window
[R1]ospf 1 ?
router-id OSPF Private router ID
'ospf私有的router-id'
vpn-instance VPN routing/forwarding Instance
<cr> Please press ENTER to execute command
'如果私有router ID没有配置,默认使用全局下的router ID'
[R1]ospf 1 router-id 6.6.6.6
Info: The configuration succeeded. You need to restart the OSPF process to valid
ate the new router ID.
# 看提示,你必须重启ospf进程才能生效!
[R1]dis ospf inter
OSPF Process 1 with Router ID 20.20.20.20
# 现在是20.20.20.20
<R1>
# 先切为用户视图
reset ospf 1 process
<R1>reset ospf 1 process
Warning: The OSPF process will be reset. Continue? [Y/N]:y
<R1>dis ospf inter
OSPF Process 1 with Router ID 6.6.6.6
# 这个时候router-id才终于切换过来!!

✅ 最佳实践建议: 无论是否配置私有 Router ID,都应手动设置一个稳定的全局 Router ID

否则,一旦该 接口IP 被删除或修改,Router ID 会 自动重选,导致:

  • OSPF 邻居关系中断
  • LSA 重新泛洪
  • 网络短暂震荡

运行机制#

OSPF的运行机制包括以下5个步骤:

  • 交互Hello报文
  • 泛洪LSA
  • 组建LSDB
  • SPF算法计算
  • 维护和更新路由表
  1. 通过交互 Hello报文 形成邻居关系
  • 路由器运行OSPF协议后,会从所有启动OSPF协议的接口上发送Hello报文

  • 如果两台路由器共享一条公共数据链路,并且能够成功协商各自Hello报文中所指定的某些参数,就能形成邻居关系

    邻居关系并非邻接关系

image-20260128162017512
image-20260128162017512


  1. 通过 泛洪LSA 通告链路状态信息
  • 形成 邻居关系 的路由器之间进一步交互LSA形成 邻接关系

  • 每台路由器根据自己周围的网络拓扑结构生成LSA

    LSA描述了路由器所有的链路、接口、邻居及链路状态等信息

  • 路由器通过交互这些链路信息来了解整个网络的拓扑信息

image-20260128162508388
image-20260128162508388


  1. 通过组建LSDB形成带权有向图
  • 通过LSA的泛洪,路由器会把收到的LSA汇总记录在LSDB中

  • LSA是对路由器 周围网络 拓扑结构的描述

    而LSDB则是对 整个自治系统 的网络拓扑结构的描述

    LSDB是LSA的汇总

image-20260128162836440
image-20260128162836440


  1. 通过 SPF算法 计算形成路由
  • 当LSDB同步完成之后,每一台路由器都将以其自身为根

  • 使用SPF算法来计算一个无环路的拓扑图

    来描述它所知道的到达每一个目的地的最短路径

image-20260128163022435
image-20260128163022435

这个拓扑图就是 最短路径树 ,有了这棵树,路由器就能知道到达自治系统中各个节点的最优路径


  1. 维护和更新路由表
  • 根据SPF算法得出最短路径树后,每台路由器将计算得出的最短路径加载到OSPF路由表中,形成路由表项,并且实时更新

  • 同时,邻居之间交互Hello报文进行保活维持邻居关系或邻接关系,并且周期性地重传LSA

报文类型#

OSPF的报文类型可以分为以下五种:

报文类型全称主要作用
HelloHello Packet- 发现邻居
- 建立并维持双向通信
- 选举DR/BDR
- 保活(定期发送,超时则断开邻居)
DDDatabase Description- 协商主从关系(ExStart状态)
- 描述本地LSDB中的LSA摘要(Header)
- 用于数据库同步
LSRLink State Request- 向邻居请求缺少或更新的LSA(基于DD交换后的差异)
LSULink State Update- 发送所请求的完整LSA - 泛洪新的或更新的LSA到网络
LSAckLink State Acknowledgment- 确认收到的LSU中的LSA(通过LSA Header)
- 支持批量确认,确保可靠传输

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

静态路由&&OSPF协议
https://www.kpyun.fun/posts/network/network06/
作者
久棹
发布于
2026-02-05
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
久棹
只要胆子大,天天寒暑假!
公告
欢迎来到久棹的技术小站!本站专注 Linux 运维学习笔记分享,如有问题欢迎交流探讨 🎉
分类
标签
站点统计
文章
98
分类
11
标签
203
总字数
244,453
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.5
文章许可
CC BY-NC-SA 4.0

文章目录