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

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


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 的环回口宣告进骨干区域
三、实验步骤

配置环回口IP(设备命名和配置 IP 地址部分省略)

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

IP地址配置完成后,应如下图所示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

按照图示分区域配置 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]area 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]area 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

检查是否全网互通

分析:检查 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 34 Full/DR  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 33 Full/DR  GE0/0 3.3.3.3 10.1.23.3 1 34 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 38 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 40 Full/DR  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 38 Full/BDR 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 38 Full/BDR GE0/0

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

步骤 2:查看路由表

[R1]dis ip routing-table Destinations : 20 Routes : 20Destination/Mask Proto Pre Cost NextHop Interface0.0.0.0/32 Direct 0 0  127.0.0.1 InLoop01.1.1.1/32 Direct 0 0  127.0.0.1 InLoop02.2.2.2/32 O_INTRA 10 1  10.1.12.2 GE0/03.3.3.3/32 O_INTRA 10 2  10.1.12.2 GE0/04.4.4.4/32 O_INTRA 10 1  10.1.14.4 GE0/15.5.5.5/32 O_INTER 10 3  10.1.12.2 GE0/010.1.12.0/24 Direct 0 0  10.1.12.1 GE0/010.1.12.1/32 Direct 0 0  127.0.0.1 InLoop010.1.12.255/32 Direct 0 0  10.1.12.1 GE0/010.1.14.0/24 Direct 0 0  10.1.14.1 GE0/110.1.14.1/32 Direct 0 0  127.0.0.1 InLoop010.1.14.255/32 Direct 0 0  10.1.14.1 GE0/110.1.23.0/24 O_INTRA 10 2  10.1.12.2 GE0/010.1.35.0/24 O_INTER 10 3  10.1.12.2 GE0/0127.0.0.0/8 Direct 0 0  127.0.0.1 InLoop0127.0.0.1/32 Direct 0 0  127.0.0.1 InLoop0127.255.255.255/32 Direct 0 0  127.0.0.1 InLoop0
[R2]dis ip routing-table Destinations : 20 Routes : 20Destination/Mask Proto Pre Cost NextHop Interface0.0.0.0/32 Direct 0 0  127.0.0.1 InLoop01.1.1.1/32 O_INTRA 10 1  10.1.12.1 GE0/02.2.2.2/32 Direct 0 0  127.0.0.1 InLoop03.3.3.3/32 O_INTRA 10 1  10.1.23.3 GE0/14.4.4.4/32 O_INTER 10 2  10.1.12.1 GE0/05.5.5.5/32 O_INTER 10 2  10.1.23.3 GE0/110.1.12.0/24 Direct 0 0  10.1.12.2 GE0/010.1.12.2/32 Direct 0 0  127.0.0.1 InLoop010.1.12.255/32 Direct 0 0  10.1.12.2 GE0/010.1.14.0/24 O_INTER 10 2  10.1.12.1 GE0/010.1.23.0/24 Direct 0 0  10.1.23.2 GE0/110.1.23.2/32 Direct 0 0  127.0.0.1 InLoop010.1.23.255/32 Direct 0 0  10.1.23.2 GE0/110.1.35.0/24 O_INTER 10 2  10.1.23.3 GE0/1127.0.0.0/8 Direct 0 0  127.0.0.1 InLoop0127.0.0.1/32 Direct 0 0  127.0.0.1 InLoop0127.255.255.255/32 Direct 0 0  127.0.0.1 InLoop0
[R4]dis ip routing-table Destinations : 18 Routes : 18Destination/Mask Proto Pre Cost NextHop Interface0.0.0.0/32 Direct 0 0  127.0.0.1 InLoop01.1.1.1/32 O_INTER 10 1  10.1.14.1 GE0/02.2.2.2/32 O_INTER 10 2  10.1.14.1 GE0/03.3.3.3/32 O_INTER 10 3  10.1.14.1 GE0/04.4.4.4/32 Direct 0 0  127.0.0.1 InLoop05.5.5.5/32 O_INTER 10 4  10.1.14.1 GE0/010.1.12.0/24 O_INTER 10 2  10.1.14.1 GE0/010.1.14.0/24 Direct 0 0  10.1.14.4 GE0/010.1.14.4/32 Direct 0 0  127.0.0.1 InLoop010.1.14.255/32 Direct 0 0  10.1.14.4 GE0/010.1.23.0/24 O_INTER 10 3  10.1.14.1 GE0/010.1.35.0/24 O_INTER 10 4  10.1.14.1 GE0/0127.0.0.0/8 Direct 0 0  127.0.0.1 InLoop0127.0.0.1/32 Direct 0 0  127.0.0.1 InLoop0127.255.255.255/32 Direct 0 0  127.0.0.1 InLoop0224.0.0.0/4 Direct 0 0  0.0.0.0 NULL0224.0.0.0/24 Direct 0 0  0.0.0.0 NULL0255.255.255.255/32 Direct 0 0  127.0.0.1 InLoop0
[R5]dis ip routing-table Destinations : 18 Routes : 18Destination/Mask Proto Pre Cost NextHop Interface0.0.0.0/32 Direct 0 0  127.0.0.1 InLoop01.1.1.1/32 O_INTER 10 3  10.1.35.3 GE0/02.2.2.2/32 O_INTER 10 2  10.1.35.3 GE0/03.3.3.3/32 O_INTER 10 1  10.1.35.3 GE0/04.4.4.4/32 O_INTER 10 4  10.1.35.3 GE0/05.5.5.5/32 Direct 0 0  127.0.0.1 InLoop010.1.12.0/24 O_INTER 10 3  10.1.35.3 GE0/010.1.14.0/24 O_INTER 10 4  10.1.35.3 GE0/010.1.23.0/24 O_INTER 10 2  10.1.35.3 GE0/010.1.35.0/24 Direct 0 0  10.1.35.5 GE0/010.1.35.5/32 Direct 0 0  127.0.0.1 InLoop010.1.35.255/32 Direct 0 0  10.1.35.5 GE0/0127.0.0.0/8 Direct 0 0  127.0.0.1 InLoop0127.0.0.1/32 Direct 0 0  127.0.0.1 InLoop0127.255.255.255/32 Direct 0 0  127.0.0.1 InLoop0224.0.0.0/4 Direct 0 0  0.0.0.0 NULL0224.0.0.0/24 Direct 0 0  0.0.0.0 NULL0255.255.255.255/32 Direct 0 0  127.0.0.1 InLoop0

说明:可以看到,分别已经学习到了全网所有网段的路由信息

测试在R4上ping R5

[R4]ping 10.1.35.5Ping 10.1.35.5 (10.1.35.5): 56 data bytes, press CTRL+C to break56 bytes from 10.1.35.5: icmp_seq=0 ttl=252 time=2.752 ms56 bytes from 10.1.35.5: icmp_seq=1 ttl=252 time=2.520 ms56 bytes from 10.1.35.5: icmp_seq=2 ttl=252 time=2.725 ms56 bytes from 10.1.35.5: icmp_seq=3 ttl=252 time=3.612 ms56 bytes from 10.1.35.5: icmp_seq=4 ttl=252 time=3.610 ms--- Ping statistics for 10.1.35.5 ---5 packet(s) transmitted, 5 packet(s) received, 0.0% packet lossround-trip min/avg/max/std-dev = 2.520/3.044/3.612/0.470 ms
[R4]ping 5.5.5.5Ping 5.5.5.5 (5.5.5.5): 56 data bytes, press CTRL+C to break56 bytes from 5.5.5.5: icmp_seq=0 ttl=252 time=3.643 ms56 bytes from 5.5.5.5: icmp_seq=1 ttl=252 time=2.661 ms56 bytes from 5.5.5.5: icmp_seq=2 ttl=252 time=2.219 ms56 bytes from 5.5.5.5: icmp_seq=3 ttl=252 time=2.565 ms56 bytes from 5.5.5.5: icmp_seq=4 ttl=252 time=3.216 ms--- Ping statistics for 5.5.5.5 ---5 packet(s) transmitted, 5 packet(s) received, 0.0% packet lossround-trip min/avg/max/std-dev = 2.219/2.861/3.643/0.505 ms

周公解梦