当前位置: 首页 > article >正文

OSPF 协议详解:从概念原理到配置实践的全网互通实现

什么是OSPF

OSPF(开放最短路径优先)是由IETF开发的基于链路状态的自治系统内部路由协议,用来代替存在一些问题的RIP协议。与距离矢量协议不同,链路状态路由协议关心网络中链路活接口的状态(包括UP、DOWN、IP地址、掩码、带宽、利用率和延迟等),每个路由将其已知的链路状态向该区域的其他路由器通告,通过这种方式,网络上的每台路由对网络结构都会有相同的认识。随后,路由器以其为依据,使用SPF算法计算和选择路由。

OSPF协议在有组播发送能力的链路层上以组播地址发送协议包,即达到了节约资源的目的,又最大程度地减少了对其他网络设备的干扰。

OSPF将协议包直接封装在IP包中,协议号为89。由于IP协议本身是无连接的,所以OSFP传输的可靠性需要协议本身来保证。因此,OSPF协议定义了一些机制保证协议包安全可靠地传输。

OSPF工作过程

OSPF协议大致工作过程主要分为:寻找邻居、建立邻接关系、链路状态信息传递、计算路由

OSPF工作原理
  • 链路状态收集

  • 路由器通过发送 Hello 报文发现邻居,交换链路状态信息,涵盖链路、接口状态、网络类型等。

  • 链路状态数据库构建

    路由器将收集的链路状态信息存入本地链路状态数据库,数据库完整呈现网络拓扑结构。

  • 最短路径计算

    路由器以自身为根节点,运用 Dijkstra 算法,依据链路状态数据库计算至其他网络节点的最短路径。

OSPF配置与实践
实验拓扑

在这里插入图片描述

实验需求
  1. 按照拓扑图示给设备命名以及配置 IP 地址
  2. 按照图示分区域配置 OSPF ,实现全网互通
  3. 为了路由结构稳定,要求路由器使用环回口作为 Router-id,ABR 的环回口宣告进骨干区域
实验步骤
  1. 配置环回口IP(设备命名和配置 IP 地址部分省略)

    [R1]int lo0
    [R1-LoopBack0]ip add 1.1.1.1 32
    
    [R2]int lo0
    [R2-LoopBack0]ip add 2.2.2.2 32
    
    [R3]int lo0
    [R3-LoopBack0]ip add 3.3.3.3 32
    
    [R4]int lo0
    [R4-LoopBack0]ip add 4.4.4.4 32
    
    [R5]int lo0
    [R5-LoopBack0]ip add 5.5.5.5 32
    

    IP地址配置完成后,应如下图所示
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 按照图示分区域配置 OSPF ,实现全网互通

    分析:实现全网互通,意味着每台路由器都要宣告本地的所有直连网段,包括环回口所在的网段。要求 ABR 的环回口宣告进骨干区域,即区域 0,同时,每台路由器手动配置各自环回口的 IP 地址作为 Router-id

    步骤 1:在路由器上分别配置 OSPF,按区域宣告所有直连网段和环回口

    [R1]ospf 1 router-id 1.1.1.1
    [R1-ospf-1]area 0
    [R1-ospf-1-area-0.0.0.0]network 10.1.12.0 0.0.0.255
    [R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 
    [R1-ospf-1-area-0.0.0.0]dis th
    #
     area 0.0.0.0
      network 1.1.1.1 0.0.0.0
      network 10.1.12.0 0.0.0.255
    #
    return
    [R1-ospf-1-area-0.0.0.0]area 1
    [R1-ospf-1-area-0.0.0.1]network 10.1.14.0 0.0.0.255
    [R1-ospf-1-area-0.0.0.1]dis th
    #
     area 0.0.0.1
      network 10.1.14.0 0.0.0.255
    #
    return
    
    [R2]ospf 1 router-id 2.2.2.2
    [R2-ospf-1]area 0
    [R2-ospf-1-area-0.0.0.0]network 10.1.12.0 0.0.0.255
    [R2-ospf-1-area-0.0.0.0]network 10.1.23.0 0.0.0.255
    [R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
    [R2-ospf-1-area-0.0.0.0]dis th
    #
     area 0.0.0.0
      network 2.2.2.2 0.0.0.0
      network 10.1.12.0 0.0.0.255
      network 10.1.23.0 0.0.0.255
    #
    return
    
    [R3]ospf 1 router-id 3.3.3.3
    [R3-ospf-1]a 0
    [R3-ospf-1-area-0.0.0.0]network 10.1.23.0 0.0.0.255
    [R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
    [R3-ospf-1-area-0.0.0.0]dis th
    #
     area 0.0.0.0
      network 3.3.3.3 0.0.0.0
      network 10.1.23.0 0.0.0.255
    #
    return
    [R3-ospf-1-area-0.0.0.0]a 2
    [R3-ospf-1-area-0.0.0.2]network 10.1.35.0 0.0.0.255
    [R3-ospf-1-area-0.0.0.2]dis th
    #
     area 0.0.0.2
      network 10.1.35.0 0.0.0.255
    #
    return
    
    [R4]ospf 1 router-id 4.4.4.4
    [R4-ospf-1]a 1
    [R4-ospf-1-area-0.0.0.1]network 10.1.14.0 0.0.0.255
    [R4-ospf-1-area-0.0.0.1]network 4.4.4.4 0.0.0.0
    [R4-ospf-1-area-0.0.0.1]dis th
    #
     area 0.0.0.1
      network 4.4.4.4 0.0.0.0
      network 10.1.14.0 0.0.0.255
    #
    return
    
    [R5]ospf 1 router-id 5.5.5.5
    [R5-ospf-1]a 2
    [R5-ospf-1-area-0.0.0.2]network 10.1.35.0 0.0.0.255
    [R5-ospf-1-area-0.0.0.2]network 5.5.5.5 0.0.0.0
    [R5-ospf-1-area-0.0.0.2]dis th
    #
     area 0.0.0.2
      network 5.5.5.5 0.0.0.0
      network 10.1.35.0 0.0.0.255
    #
    return
    
  3. 检查是否全网互通

    分析:检查 OSPF 是否全网互通,一个是检查邻居关系表,看邻居关系是否正常;另一个是检查路由表,看是否学习到全网路由  这里只展示 R1 的检查结果
      
    步骤 1:#display ospf peer 查看邻居关系表

    [R1]dis ospf peer 
    
             OSPF Process 1 with Router ID 1.1.1.1
                   Neighbor Brief Information
    
     Area: 0.0.0.0        
     Router ID       Address         Pri Dead-Time  State             Interface
     2.2.2.2         10.1.12.2       1   34         Full/BDR          GE0/0
    
     Area: 0.0.0.1        
     Router ID       Address         Pri Dead-Time  State             Interface
     4.4.4.4         10.1.14.4       1   38         Full/BDR          GE0/1
    

在这里插入图片描述

[R2]dis ospf peer 

         OSPF Process 1 with Router ID 2.2.2.2
               Neighbor Brief Information

 Area: 0.0.0.0        
 Router ID       Address         Pri Dead-Time  State             Interface
 1.1.1.1         10.1.12.1       1   37         Full/DR           GE0/0
 3.3.3.3         10.1.23.3       1   39         Full/BDR          GE0/1

在这里插入图片描述

[R3]dis ospf peer 

         OSPF Process 1 with Router ID 3.3.3.3
               Neighbor Brief Information

 Area: 0.0.0.0        
 Router ID       Address         Pri Dead-Time  State             Interface
 2.2.2.2         10.1.23.2       1   34         Full/DR           GE0/0
 
 Area: 0.0.0.2        
 Router ID       Address         Pri Dead-Time  State             Interface
 5.5.5.5         10.1.35.5       1   39         Full/BDR          GE0/1

在这里插入图片描述

[R4]dis ospf peer 

         OSPF Process 1 with Router ID 4.4.4.4
               Neighbor Brief Information

 Area: 0.0.0.1        
 Router ID       Address         Pri Dead-Time  State             Interface
 1.1.1.1         10.1.14.1       1   36         Full/DR           GE0/0

在这里插入图片描述

[R5]dis ospf peer 

         OSPF Process 1 with Router ID 5.5.5.5
               Neighbor Brief Information

 Area: 0.0.0.2        
 Router ID       Address         Pri Dead-Time  State             Interface
 3.3.3.3         10.1.35.3       1   35         Full/DR           GE0/0

在这里插入图片描述

说明:状态为FULL,说明邻接关系已建立

步骤 2:查看路由表

[R1]dis ip routing-table 

Destinations : 20       Routes : 20

Destination/Mask   Proto   Pre Cost        NextHop         Interface
0.0.0.0/32         Direct  0   0           127.0.0.1       InLoop0
1.1.1.1/32         Direct  0   0           127.0.0.1       InLoop0
2.2.2.2/32         O_INTRA 10  1           10.1.12.2       GE0/0
3.3.3.3/32         O_INTRA 10  2           10.1.12.2       GE0/0
4.4.4.4/32         O_INTRA 10  1           10.1.14.4       GE0/1
5.5.5.5/32         O_INTER 10  3           10.1.12.2       GE0/0
10.1.12.0/24       Direct  0   0           10.1.12.1       GE0/0
10.1.12.1/32       Direct  0   0           127.0.0.1       InLoop0
10.1.12.255/32     Direct  0   0           10.1.12.1       GE0/0
10.1.14.0/24       Direct  0   0           10.1.14.1       GE0/1
10.1.14.1/32       Direct  0   0           127.0.0.1       InLoop0
10.1.14.255/32     Direct  0   0           10.1.14.1       GE0/1
10.1.23.0/24       O_INTRA 10  2           10.1.12.2       GE0/0
10.1.35.0/24       O_INTER 10  3           10.1.12.2       GE0/0
127.0.0.0/8        Direct  0   0           127.0.0.1       InLoop0
127.0.0.1/32       Direct  0   0           127.0.0.1       InLoop0
127.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0
224.0.0.0/4        Direct  0   0           0.0.0.0         NULL0
224.0.0.0/24       Direct  0   0           0.0.0.0         NULL0
255.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0

在这里插入图片描述

[R2]dis ip routing-table 

Destinations : 20       Routes : 20

Destination/Mask   Proto   Pre Cost        NextHop         Interface
0.0.0.0/32         Direct  0   0           127.0.0.1       InLoop0
1.1.1.1/32         O_INTRA 10  1           10.1.12.1       GE0/0
2.2.2.2/32         Direct  0   0           127.0.0.1       InLoop0
3.3.3.3/32         O_INTRA 10  1           10.1.23.3       GE0/1
4.4.4.4/32         O_INTER 10  2           10.1.12.1       GE0/0
5.5.5.5/32         O_INTER 10  2           10.1.23.3       GE0/1
10.1.12.0/24       Direct  0   0           10.1.12.2       GE0/0
10.1.12.2/32       Direct  0   0           127.0.0.1       InLoop0
10.1.12.255/32     Direct  0   0           10.1.12.2       GE0/0
10.1.14.0/24       O_INTER 10  2           10.1.12.1       GE0/0
10.1.23.0/24       Direct  0   0           10.1.23.2       GE0/1
10.1.23.2/32       Direct  0   0           127.0.0.1       InLoop0
10.1.23.255/32     Direct  0   0           10.1.23.2       GE0/1
10.1.35.0/24       O_INTER 10  2           10.1.23.3       GE0/1
127.0.0.0/8        Direct  0   0           127.0.0.1       InLoop0
127.0.0.1/32       Direct  0   0           127.0.0.1       InLoop0
127.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0
224.0.0.0/4        Direct  0   0           0.0.0.0         NULL0
224.0.0.0/24       Direct  0   0           0.0.0.0         NULL0
255.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0

在这里插入图片描述

[R3]dis ip routing-table 

Destinations : 20       Routes : 20

Destination/Mask   Proto   Pre Cost        NextHop         Interface
0.0.0.0/32         Direct  0   0           127.0.0.1       InLoop0
1.1.1.1/32         O_INTRA 10  2           10.1.23.2       GE0/0
2.2.2.2/32         O_INTRA 10  1           10.1.23.2       GE0/0
3.3.3.3/32         Direct  0   0           127.0.0.1       InLoop0
4.4.4.4/32         O_INTER 10  3           10.1.23.2       GE0/0
5.5.5.5/32         O_INTRA 10  1           10.1.35.5       GE0/1
10.1.12.0/24       O_INTRA 10  2           10.1.23.2       GE0/0
10.1.14.0/24       O_INTER 10  3           10.1.23.2       GE0/0
10.1.23.0/24       Direct  0   0           10.1.23.3       GE0/0
10.1.23.3/32       Direct  0   0           127.0.0.1       InLoop0
10.1.23.255/32     Direct  0   0           10.1.23.3       GE0/0
10.1.35.0/24       Direct  0   0           10.1.35.3       GE0/1
10.1.35.3/32       Direct  0   0           127.0.0.1       InLoop0
10.1.35.255/32     Direct  0   0           10.1.35.3       GE0/1
127.0.0.0/8        Direct  0   0           127.0.0.1       InLoop0
127.0.0.1/32       Direct  0   0           127.0.0.1       InLoop0
127.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0
224.0.0.0/4        Direct  0   0           0.0.0.0         NULL0
224.0.0.0/24       Direct  0   0           0.0.0.0         NULL0
255.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0

在这里插入图片描述

[R4]dis ip routing-table 

Destinations : 18       Routes : 18

Destination/Mask   Proto   Pre Cost        NextHop         Interface
0.0.0.0/32         Direct  0   0           127.0.0.1       InLoop0
1.1.1.1/32         O_INTER 10  1           10.1.14.1       GE0/0
2.2.2.2/32         O_INTER 10  2           10.1.14.1       GE0/0
3.3.3.3/32         O_INTER 10  3           10.1.14.1       GE0/0
4.4.4.4/32         Direct  0   0           127.0.0.1       InLoop0
5.5.5.5/32         O_INTER 10  4           10.1.14.1       GE0/0
10.1.12.0/24       O_INTER 10  2           10.1.14.1       GE0/0
10.1.14.0/24       Direct  0   0           10.1.14.4       GE0/0
10.1.14.4/32       Direct  0   0           127.0.0.1       InLoop0
10.1.14.255/32     Direct  0   0           10.1.14.4       GE0/0
10.1.23.0/24       O_INTER 10  3           10.1.14.1       GE0/0
10.1.35.0/24       O_INTER 10  4           10.1.14.1       GE0/0
127.0.0.0/8        Direct  0   0           127.0.0.1       InLoop0
127.0.0.1/32       Direct  0   0           127.0.0.1       InLoop0
127.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0
224.0.0.0/4        Direct  0   0           0.0.0.0         NULL0
224.0.0.0/24       Direct  0   0           0.0.0.0         NULL0
255.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0

在这里插入图片描述

[R5]dis ip routing-table 

Destinations : 18       Routes : 18

Destination/Mask   Proto   Pre Cost        NextHop         Interface
0.0.0.0/32         Direct  0   0           127.0.0.1       InLoop0
1.1.1.1/32         O_INTER 10  3           10.1.35.3       GE0/0
2.2.2.2/32         O_INTER 10  2           10.1.35.3       GE0/0
3.3.3.3/32         O_INTER 10  1           10.1.35.3       GE0/0
4.4.4.4/32         O_INTER 10  4           10.1.35.3       GE0/0
5.5.5.5/32         Direct  0   0           127.0.0.1       InLoop0
10.1.12.0/24       O_INTER 10  3           10.1.35.3       GE0/0
10.1.14.0/24       O_INTER 10  4           10.1.35.3       GE0/0
10.1.23.0/24       O_INTER 10  2           10.1.35.3       GE0/0
10.1.35.0/24       Direct  0   0           10.1.35.5       GE0/0
10.1.35.5/32       Direct  0   0           127.0.0.1       InLoop0
10.1.35.255/32     Direct  0   0           10.1.35.5       GE0/0
127.0.0.0/8        Direct  0   0           127.0.0.1       InLoop0
127.0.0.1/32       Direct  0   0           127.0.0.1       InLoop0
127.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0
224.0.0.0/4        Direct  0   0           0.0.0.0         NULL0
224.0.0.0/24       Direct  0   0           0.0.0.0         NULL0
255.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0

在这里插入图片描述
说明:可以看到,分别已经学习到了全网所有网段的路由信息

  1. 测试在R4上ping R5

    [R4]ping 10.1.35.5
    Ping 10.1.35.5 (10.1.35.5): 56 data bytes, press CTRL+C to break
    56 bytes from 10.1.35.5: icmp_seq=0 ttl=252 time=1.758 ms
    56 bytes from 10.1.35.5: icmp_seq=1 ttl=252 time=1.174 ms
    56 bytes from 10.1.35.5: icmp_seq=2 ttl=252 time=1.067 ms
    56 bytes from 10.1.35.5: icmp_seq=3 ttl=252 time=1.087 ms
    56 bytes from 10.1.35.5: icmp_seq=4 ttl=252 time=1.761 ms
    
    --- Ping statistics for 10.1.35.5 ---
    5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
    round-trip min/avg/max/std-dev = 1.067/1.369/1.761/0.321 ms
    [R4]%Mar 19 16:27:11:744 2025 R4 PING/6/PING_STATISTICS: Ping statistics for 10.1.35.5: 5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss, round-trip min/avg/max/std-dev = 1.067/1.369/1.761/0.321 ms.
    

在这里插入图片描述

[R4]ping 5.5.5.5
Ping 5.5.5.5 (5.5.5.5): 56 data bytes, press CTRL+C to break
56 bytes from 5.5.5.5: icmp_seq=0 ttl=252 time=1.471 ms
56 bytes from 5.5.5.5: icmp_seq=1 ttl=252 time=0.854 ms
56 bytes from 5.5.5.5: icmp_seq=2 ttl=252 time=1.449 ms
56 bytes from 5.5.5.5: icmp_seq=3 ttl=252 time=1.697 ms
56 bytes from 5.5.5.5: icmp_seq=4 ttl=252 time=1.818 ms

--- Ping statistics for 5.5.5.5 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.854/1.458/1.818/0.332 ms
[R4]%Mar 19 16:26:22:237 2025 R4 PING/6/PING_STATISTICS: Ping statistics for 5.5.5.5: 5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss, round-trip min/avg/max/std-dev = 0.854/1.458/1.818/0.332 ms.

在这里插入图片描述

OSPF知识点
OSPF 区域

(1)区域概念

区域从逻辑上划分网络,各区域拥有独立链路状态数据库与路由计算,能减少链路状态信息传播范围,减轻路由器负担,提升网络可管理性与稳定性。

(2)骨干区域与非骨干区域

骨干区域(Area 0)至关重要,连接非骨干区域,非骨干区域间路由信息需经骨干区域中转。

(3)区域间路由汇总

区域边界路由器进行路由汇总,将多个具体路由条目合并为一条,减少区域间传递的路由信息数量,提升路由效率。

OSPF 路由器角色

(1)DR 和 BDR

在广播型或 NBMA 网络中,DR(指定路由器)负责与其他路由器交换链路状态信息,BDR(备份指定路由器)在 DR 故障时接替工作,减少链路状态信息泛洪及邻接关系数量。

(2)内部路由器、区域边界路由器和自治系统边界路由器

内部路由器负责所在区域内路由;区域边界路由器连接不同区域,传递区域间路由信息;自治系统边界路由器连接 OSPF 自治系统与其他自治系统,引入外部路由。

OSPF 报文

(1)Hello 报文

作用为发现邻居、建立与维护邻居关系、选举 DR 和 BDR。报文中包含路由器 ID、区域 ID、Hello 间隔、死亡间隔等字段。

(2)其他报文类型

数据库描述(DBD)报文、链路状态请求(LSR)报文、链路状态更新(LSU)报文和链路状态确认(LSAck)报文等,各自承担特定功能,相互协作实现 OSPF 各项功能。

区域(Area):区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识。区域的边界是路由器,而不是链路。其中,Area 0 通常被称为骨干区域,负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。

路由器 ID(Router ID):唯一标识一个 OSPF 路由器,通常使用环回接口的 IP 地址。如果没有配置环回接口,则选取物理接口中 IP 地址最大的接口地址作为 Router ID。

链路状态通告(LSA):用于在 OSPF 路由器之间传递链路状态信息,描述了网络中的链路、路由器以及它们之间的连接关系等。

邻居(Neighbor):两台 OSPF 路由器之间建立邻接关系,就互为邻居。它们通过交换 Hello 报文来发现和维护邻居关系。

邻接(Adjacency):两台 OSPF 路由器之间建立完全邻接关系后,会同步链路状态数据库,以便拥有相同的网络拓扑信息。

指定路由器(DR)和备份指定路由器(BDR):在广播型网络和非广播多路访问网络(NBMA)中,为了减少网络中链路状态信息的泛洪和路由器之间的邻接关系数量,会选举出 DR 和 BDR。DR 负责与其他路由器交换链路状态信息,BDR 在 DR 出现故障时接替其工作。

开销(Cost):OSPF 协议采用链路开销作为度量值,用于衡量到达目标网络的路径代价。链路开销与链路带宽成反比,即带宽越高,开销越小,选路主要基于带宽因素。

OSPF 报文类型:包括 Hello 报文、数据库描述(DBD)报文、链路状态请求(LSR)报文、链路状态更新(LSU)报文和链路状态确认(LSAck)报文等。Hello 报文用于发现和维护邻居关系;DBD 报文用于描述链路状态数据库的内容;LSR 报文用于请求特定的链路状态信息;LSU 报文用于发送链路状态更新信息;LSAck 报文用于对收到的 LSU 报文进行确认。
Dijkstra 算法
在这里插入图片描述


http://www.kler.cn/a/595844.html

相关文章:

  • 我们如何自己去做软件的等保测评?
  • STM32U575RIT6单片机(五)
  • Python中数据结构元组详解
  • C++20 新特性:深入理解 `std::basic_string<char8_t>` 和 `char8_t`
  • C# 事件(Event)核心概念
  • 解决npm在vscode终端内无法运行
  • Elasticsearch快速上手与深度进阶:一站式实战教程
  • 什么是ETL
  • 算法 | 优化算法比较
  • 自然语言处理|深入解析 PEGASUS:从原理到实践
  • 字节跳动实习生主导开发强化学习算法,助力大语言模型性能突破
  • 6.5840 Lab 3: Raft
  • react 常用插件
  • 暂存合并分支
  • 【机器学习-模型评估】
  • 老旧中控系统智能化改造方案:基于巨控OPC561Q-C模块实现多通道实时报警
  • 【css酷炫效果】纯CSS实现全屏万花筒效果
  • 八股文MYSQL
  • Centos7部署学之思考试系统
  • 新书速览|云原生Kubernetes自动化运维实践