静态路由&&OSPF协议

静态路由&&OSPF协议
[TOC]
基础实验

- 我们先把这些东西都配置好了
提问:🍔在没有配置 静态路由 的情况下,10.0.0.11能ping通11.22.33.44吗?

❗为何ping不通呢?

🍕 直连网段 (20.0.0.0/24) 的下一跳接口是他自己(10.0.0.1)
静态VS默认
静态路由(Static Route)
- 手动配置的路由条目,用于指定
到达某个特定目的网络的下一跳地址或出接口
用途:
- 适用于网络结构简单、拓扑稳定的小型网络
- 常用于点对点链路的精确控制
[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,表示“匹配所有未明确路由的目的地址”
当路由器查表找不到
更具体的路由时,就使用默认路由转发数据包
用途:
常用于 边缘路由器(如企业出口路由器),将所有未知目的地网络导向 网关或核心路由器,简化路由表
[Huawei] ip route-static 0.0.0.0 0 10.0.0.1# 这里(掩码用 0 表示)# 含义:所有未匹配其他路由的数据包,都发往 10.0.0.1这里因为网络拓扑挺简单的,又是点对点,我们配置
静态路由就行了,不用配置缺省路由

- 配置静态路由,不必进入到某个端口里面
现在能ping通吗?

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

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

验证一下

综合实验

# R1的配置syssys R1inter g0/0/0ip add 192.168.11.254 255.255.255.0qinter g0/0/1ip add 10.1.1.1 255.255.255.0qdis ip int bri
# R2配置syssys R2inter g0/0/0ip add 10.1.1.2 255.255.255.0qinter g0/0/1ip add 20.1.1.2 255.255.255.0qdis ip int bri
# R3的配置syssys R3inter g0/0/0ip add 20.1.1.1 255.255.255.0qinter g0/0/1ip add 192.168.22.254 255.255.255.0qdis ip int bri

这时候PC1肯定是ping不通PC2的。
- 路由表没有到达PC2的路由
我们接着就是配置路由器的静态路由
- 这些都是简单一对一的路由,静态路由就足够了,不用配置默认缺省路由了
- 默认(缺省)路由,ip route-static 0.0.0.0 0 下一跳接口的ip地址
手动配置静态路由
- 先配置去往192.168.22.0/24网段的路由
- 需要分别配置R1和R2

- 不必进入到端口里面就能进行配置静态路由
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
- 再配置回来的路由

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



验证:

默认的路由协议优先级
(Preference 值)
| 路由类型 | 默认 Preference 值 |
|---|---|
| 直连路由(Direct) | 0 |
| 静态路由(Static) | 60 |
| OSPF | 10 |
| IS-IS | 15 |
| RIP | 100 |
| BGP(EBGP) | 255(部分版本为 255 或 20/200,但通常 EBGP 为 255) |
| IBGP | 255 |
最长匹配原则
当一个数据包到达路由器时,路由器会查看其 **目的 IP 地址 **,然后在自己的 路由表 中查找所有可能的匹配路由项
如果有多个路由项都能匹配该目的地址
**路由器会选择子网掩码最长(即前缀最长、网络号最具体)的那一条 ** 进行转发
**“最长”**指的是前缀长度最大,也就是子网掩码中“1”的位数最多,网络范围最小、最精确
举个例子 🌰
假设某路由器有以下几条路由:
| 目的网络 | 子网掩码 | 前缀表示 | 下一跳 |
|---|---|---|---|
| 192.168.1.0 | 255.255.255.0 | /24 | 接口 A |
| 192.168.1.128 | 255.255.255.128 | /25 | 接口 B |
| 0.0.0.0 | 0.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
🙉什么是 链路状态 协议?
-
链路状态路由协议 相当于提供了一张 地图 ,就好比你有一张地图怎么还会迷路?
-
每个运行
链路状态协议的路由器上都有一张完整的网络地图,从而避免了环路
- LSA泛洪:
-
运行 链路状态路由协议 的路由器都会进行 链路状态公告 (LSA泛洪)
LSA中包含了路由器已知的接口状态、接口IP地址、掩码、开销和网络类型等信息
通俗点讲就是每台路由器都会将一些关于自己,关于本地直连链路,以及这些链路的状态,和关于所有直连邻居的信息,传送给相邻的其他路由器
- 建立LSDB:
收到 LSA 的路由器都可以根据 LSA提供的信息 建立自己的链路状态数据库LSDB
通俗点讲就是每台路由器都会收到网络中,其他的路由器发送过来的LSA信息,这些所有的LSA信息构成了 LSDB(链路状态数据库)
- 建立最短路径树:
运行OSPF协议的路由器在 LSDB 的基础上使用 SPF算法 进行运算,建立起到达每个网络的 最短路径树
- 路由计算:
通过 最短路径树 得出到达目的网络的最优路由,并将其加入到IP路由表中
为了向非常大的网络提供 可伸缩性 ,OSPF 支持两个重要的概念: 自治系统(AS) 和 区域
AS

✅ 简单说:AS = 一个“独立管理”的网络王国
area
- 为什么要划分“
区域(Area)”?
划分 OSPF区域 可以缩小路由器的LSDB规模,减少网络流量
每个区域都有自己的LSDB,不同区域的LSDB是不同的
-
路由器会为每一个自己所连接到的
区域维护一个单独的LSDB -
由于详细链路状态信息不会被发布到区域以外,因此LSDB的规模大大缩小了
✅ 关键结论:在 OSPF 网络稳定(收敛完成)后,同一区域(Area)内的所有路由器必须拥有完全相同的链路状态数据库(LSDB)
✅ 简单说:区域 = 把大网络切成小块,减轻每个路由器的负担,让网络跑得更快更稳
- OSPF是如何划分区域的呢?

-
路由器的
每个接口可以被划分在一个区域,一个路由器可以同时属于多个区域 -
Area 0 为骨干区域,其他区域为非骨干区域,每个非骨干区域都必须连接到骨干区域
-
运行在 区域之间 的路由器叫做
区域边界路由器ABR,它包含所有相连区域的LSDB -
自治系统边界路由器(ASBR)
这种路由器会向 整个AS 通告 AS外部的路由信息
这台路由器会把外部路由
学习并导入进 OSPF,它就是 ASBR
- 为什么
SPF算法可以保证区域内无环路?
-
**SPF算法 **将每一个路由器作为根(ROOT)来计算其到每一个目的地
路由器的距离 -
每个路由器根据一个统一的数据库会计算出
路由域的拓扑结构图,该结构图类似于一棵树在SPF算法中,被称为 最短路径树 树形是无环路的
为了 避免区域间路由环路 ,非骨干区域之间不允许直接相互发布路由信息
所有的
非骨干区域间通信都需要借助骨干区域因此每个区域都必须连接到骨干区域
综合实验
①OSPF单区域的配置

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

- PC2,PC3同理,省略
# 更改路由器接口的IP地址<Huawei>sysEnter system view, return user view with Ctrl+Z.[Huawei]sys R1[R1]undo inf enInfo: 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 ProtocolGigabitEthernet0/0/0 172.16.10.1/24 up upGigabitEthernet0/0/1 172.16.20.1/24 up upGigabitEthernet0/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 ProtocolGigabitEthernet0/0/0 172.16.10.2/24 up upGigabitEthernet0/0/1 172.16.30.1/24 up upGigabitEthernet0/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 ProtocolGigabitEthernet0/0/0 172.16.20.2/24 up upGigabitEthernet0/0/1 172.16.30.2/24 up upGigabitEthernet0/0/2 172.16.3.254/24 up up'至此路由器上的所有接口IP全部配置完毕!'ospf的进程号
[R1]ospf[R1-ospf-1]# 没有指定进程号时,系统会默认使用 OSPF 进程号 1,并自动进入 OSPF 进程视图'进程号在1- 65535 范围内可以随意设置,只用于区分正在同一路由器上运行的不同 OSPF进程'[R1] ospf 1[R1-ospf-1]'完全等价'✅ 什么是 OSPF 多进程?
你可以在 同一台路由器 上启动多个独立的 OSPF 进程
[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配置
[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-tableRoute 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 ospfRoute 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'我们ping一下,进行测试验证'PC>ipconfig....'我是R2'IPv4 address......................: 172.16.2.1Subnet mask.......................: 255.255.255.0Gateway...........................: 172.16.2.254
PC>ping 172.16.1.1'ping R1'Ping 172.16.1.1: 32 data bytes, Press Ctrl_C to breakFrom 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 breakFrom 172.16.3.1: bytes=32 seq=4 ttl=126 time=16 msFrom 172.16.3.1: bytes=32 seq=5 ttl=126 time=15 ms②OSPF多区域配置

- 先去配置PC机的IP地址,网关,子网掩码
- 接着就是路由器接口的IP地址也需要去进行配置
图中R1、R2、R3、R4是边界路由器(ABR)连接两个区域
# R1syssys R1undo info eninterface GigabitEthernet0/0/0 ip address 10.0.12.1 255.255.255.0interface GigabitEthernet0/0/1 ip address 10.0.13.1 255.255.255.0interface GigabitEthernet0/0/2 ip address 10.0.15.1 255.255.255.0 qdis ip inter briInterface IP Address/Mask Physical ProtocolGigabitEthernet0/0/0 10.0.12.1/24 up upGigabitEthernet0/0/1 10.0.13.1/24 up upGigabitEthernet0/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 选择规则(按优先级):
- 手工配置 → 最高优先级(推荐)
- Loopback接口中最大的IP地址
- 物理接口中最大的IP地址
🔁 只有当被选中的接口IP被修改,或删除时,才会重新选举
如何更新Router ID?
- 手动配置后:重启OSPF进程 即可生效
- 🌺必须在<用户视图>下才能重启
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实验

自行配置PC机的IP地址,和路由器的接口IP地址!
# R1各个接口IP地址Interface IP Address/Mask Physical ProtocolGigabitEthernet0/0/0 10.0.1.254/24 up upGigabitEthernet0/0/1 10.0.12.1/24 up up
# R2各个接口IP地址Interface IP Address/Mask Physical ProtocolGigabitEthernet0/0/0 10.0.12.2/24 up upGigabitEthernet0/0/1 10.0.23.2/24 up upGigabitEthernet0/0/2 10.0.24.2/24 up up
# R3各个接口IP地址Interface IP Address/Mask Physical ProtocolGigabitEthernet0/0/0 10.0.23.3/24 up upGigabitEthernet0/0/1 10.0.2.254/24 up up
# R4各个接口IP地址Interface IP Address/Mask Physical ProtocolGigabitEthernet0/0/0 10.0.24.4/24 up upGigabitEthernet0/0/1 10.0.3.254/24 up up
# 下面举例,以R1为例子[R1]dis router idRouterID: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 idRouterID: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 idRouterID: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 briInterface IP Address/Mask Physical ProtocolGigabitEthernet0/0/0 10.0.1.254/24 up upGigabitEthernet0/0/1 10.0.12.1/24 up upLoopBack0 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 idRouterID: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 idRouterID:10.0.0.1'当原来的router-id发生变化的时候,router-id就会进行重新选举,很明显,这次是回环最大的IP地址'------------# 为了防止我们的router-id一直发生改变,所以我们通常会把这个router手动固定住,而不是让他一直在那改变------------[R1]router id 20.20.20.20Info: Router ID has been modified, please reset the relative protocols manuallyto update the Router ID.[R1]dis router idRouterID:20.20.20.20# 这次就是我们手动设置的router-id的值了ospf的Router ID
# 路由器的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.1Subnet mask.......................: 255.255.255.0Gateway...........................: 10.0.1.254PC>ping 10.0.2.1Ping 10.0.2.1: 32 data bytes, Press Ctrl_C to breakFrom 10.0.2.1: bytes=32 seq=4 ttl=125 time=15 msFrom 10.0.2.1: bytes=32 seq=5 ttl=125 time=32 ms......

配置OSPF的私有Router ID
[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.6Info: The configuration succeeded. You need to restart the OSPF process to validate 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 processWarning: 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算法计算
- 维护和更新路由表
- 通过交互
Hello报文形成邻居关系
-
路由器运行OSPF协议后,会从所有启动OSPF协议的接口上发送Hello报文
-
如果两台路由器共享一条公共数据链路,并且能够成功协商各自Hello报文中所指定的某些参数,就能形成邻居关系
邻居关系并非邻接关系

- 通过
泛洪LSA通告链路状态信息
-
形成
邻居关系的路由器之间进一步交互LSA形成 邻接关系 -
每台路由器根据自己周围的网络拓扑结构生成LSA
LSA描述了路由器所有的链路、接口、邻居及链路状态等信息
-
路由器通过交互这些链路信息来了解整个网络的拓扑信息

- 通过组建LSDB形成带权有向图
-
通过LSA的泛洪,路由器会把收到的LSA汇总记录在LSDB中
-
LSA是对路由器
周围网络拓扑结构的描述而LSDB则是对
整个自治系统的网络拓扑结构的描述LSDB是LSA的汇总

- 通过
SPF算法计算形成路由
-
当LSDB同步完成之后,每一台路由器都将以其自身为根
-
使用SPF算法来计算一个无环路的拓扑图
来描述它所知道的到达每一个目的地的最短路径

这个拓扑图就是
最短路径树,有了这棵树,路由器就能知道到达自治系统中各个节点的最优路径
- 维护和更新路由表
-
根据SPF算法得出最短路径树后,每台路由器将计算得出的最短路径加载到OSPF路由表中,形成路由表项,并且实时更新
-
同时,邻居之间交互Hello报文进行保活维持邻居关系或邻接关系,并且周期性地重传LSA
报文类型
OSPF的报文类型可以分为以下五种:
| 报文类型 | 全称 | 主要作用 |
|---|---|---|
| Hello | Hello Packet | - 发现邻居 - 建立并维持双向通信 - 选举DR/BDR - 保活(定期发送,超时则断开邻居) |
| DD | Database Description | - 协商主从关系(ExStart状态) - 描述本地LSDB中的LSA摘要(Header) - 用于数据库同步 |
| LSR | Link State Request | - 向邻居请求缺少或更新的LSA(基于DD交换后的差异) |
| LSU | Link State Update | - 发送所请求的完整LSA - 泛洪新的或更新的LSA到网络 |
| LSAck | Link State Acknowledgment | - 确认收到的LSU中的LSA(通过LSA Header) - 支持批量确认,确保可靠传输 |
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!



