ospf协议总结

OSPF的三张表

邻居表 :记录ospf路由器之间的邻居状态。

思科:show ip ospf neighbor

1
2
3
4
5
6
7
<AR4>display ospf peer brief 
OSPF Process 1 with Router ID 4.4.4.4
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.0 GigabitEthernet0/0/0 5.5.5.5 Full
----------------------------------------------------------------------------

LSDB表: 链路状态数据库表

存在着OSPF的LSA详细信息,通过命令display ospf lsdb查看时为首要信息,需要查看详细的LSA信息需要通过display ospf lsdb router或network…等进行查看。同一个OSPF网络维护着一张LSDB表,所有同一网络的OSPF路由器,其LSDB表都是相同的。

思科:show ip ospf database

1
2
3
4
5
6
7
8
display ospf lsdb 
OSPF Process 1 with Router ID 4.4.4.4
Link State Database

Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 660 48 8000000C 1
Router 5.5.5.5 5.5.5.5 660 48 8000000C 1
Network 10.1.45.5 5.5.5.5 660 32 80000009 0

路由表

对于OSPF来说,存在于路由表中的OSPF路由,都是通过SPF算法计算出来的最优路由。

思科:show ip route ospf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<AR4>display ip routing-table 
Route Flags: R - relay, D - download to fib
Routing Tables: Public
Destinations : 9 Routes : 9

Destination/Mask Proto Pre Cost Flags NextHop Interface

4.4.4.4/32 Direct 0 0 D 127.0.0.1 LoopBack0
5.5.5.5/32 OSPF 10 1 D 10.1.45.5 GigabitEthernet0/0/0
10.1.45.0/24 Direct 0 0 D 10.1.45.4 GigabitEthernet0/0/0
10.1.45.4/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
10.1.45.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
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
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0

LSA、LSDB、SPF与路由表的关联

相互交换自己的LSA从而组成LSDB。【LSDB的形成】

通过SPF算法对LSDB中的路径信息进行一个计算,得出最优的OSPF路由。【路由的产生】

最优的OSPF路由放置在路由表中。如果存在其它路由协议的最优路由与OSPF的最优路由相同,将进行比较路由优先级,优先级小的信任度更高,将成为最优路由放置在路由表中。

OSPF邻居与邻接关系建立的8种必要条件
先从外部出发(协议上)

  1. Version版本(OSPFv2、OSPFv3)
  2. 区域要一致(两端链路配置的区域不一致将无法建立邻居)
  3. Router-id不能冲突

再到内部(链路上)

  1. 认证类型auth type/Data要相同
  2. Netmask 掩码要求一致(两端配置的接口地址掩码要一致)
  3. Hello时间要一致
  4. Dead时间要一致
  5. option中(E、N)区域类型要一致(OSPF的是否为特殊区域)
  6. 【非必要】对于华为设备来说,并不会在意链路的MTU值是否一致。

5种报文

  1. Hello包:建立并维护邻居关系

  2. DD报文:描述LSDB数据库的简要信息

  3. LSR报文:请求LSA

  4. LSU报文:发送完整的LSA信息

  5. LSAck报文:对LSU中LSA的确认

五个报文都会携带OSPF头部

img

Hello包:建立并维护邻居关系

img

N = 0 不进行7类LSA的同步 N = 1 需要对7类LSA进行同步

E = 0 不进行5类LSA的同步 E = 1 需要对5类LSA进行同步

不存在 N =1 ,E = 1的情况(同一区域不能同时存在5类和7类)

DD报文:描述LSDB数据库的简要信息

img

LSR报文:请求LSA
img
LSU报文:发送完整的LSA信息

LSA头部信息与链路状态信息

更新、撤销路由 

img

LSAck报文:对LSU中LSA的确认

img

LSA格式

OSPF——LSA讲解_SomeDemo的博客-CSDN博客

邻居关系的7种状态

1 Down状态——在Down状态下,OSPF进程还没有与任何邻居交换信息。OSPF在等待进入Init状态。

2 Init状态——OSPF路由器以固定的时间间隔(缺省10s)发送类型1(Hello)的分组,以便与邻居路由器建立特殊的关系。

3 Two-Way(双向)状态——每台OSPF路由器都使用分组试图与同一个IP网络中的所有邻居路由器建立双向状态或双向通信。Hello分组中含有发送者已知的OSPF邻居列表。当路由器看到它自己出现在一个邻居路由器的Hello分组中时,它就进入了双向状态。

4 ExStart(准启动)状态——当路由器与它的邻居进入到ExStart状态后,他们之间的会话就表征为一种毗邻关系,但这时路由器还没有变成全毗邻状态。ExStart状态是使用类型2的数据库描述(DBD,DataBase Description)分组建立的,两个路由器用Hello分组协商在它们之间的关系谁是“主”,谁是“从”。(具有最高OSPF路由器ID的路由器将胜出并变成“主”)

5 Exchange(交换)状态——在交换状态下,邻居路由器使用类型2的DBD分组来互相发送它们的链路状态信息,也就是说路由器相互描述它们的链路状态数据库。路由器将它们所学到的信息与其现存的链路状态数据库进行比较,并且单独确认每个DBD分组,如果任何一台路由器接收到不在其数据库中的链路信息,该路由器就向其邻居请求有关该链路的完整更新信息。完整的路由信息在“Loading(加载)”状态下被交换。

6 Loading(加载)状态——在相互描述过各自的链路状态数据库之后,路由器可以用类型3的链路状态请求(LSR)分组来请求更完整的信息。当路由器接收到一个LSR的时候,它会用一个类型4的链路状态更新(LSU)分组进行回应。这些类型4的LSU分组含有确切的LSA,而LSA是链路状态型路由选择协议的核心,类型4的LSU分组由类型5的分组所确认。

7 Full Adjacency(全毗邻)状态——加载状态结束之后,路由器就进入全毗邻状态。每台路由器都保存着一张毗邻路由器列表,它就是称为毗邻数据库。

OSPF—邻居状态机

一,hello报文的邻居发现建立过程

img

img

I=1 —–代表当前的DD报文是选举主从的,在exstart状态下才会发送I=1 的报文。

M=1——代表自己还有后续的DD报文 ,告诉对方我得DD报文还没有发送完毕。

MS=1—–代表自己是MASTER, ms=0 代表自己是slave。

DD报文中的两端的MTU值必须一致,在华为的设备中MTU=0,标识忽略MTU的检查。

img

1,RT1发送hello报文,DR 没有,邻居没有。第一个探测hello,没有任何的外部信息,只有携带了自己的routerid。

2,RT2在收到AR1的hello报文之后,记录RT1的routerid,并放自己的hello包中。并发送hello报文给RT1,携带自己的routerid。状态升级为INIT。

3,RT1在收到RT2的hello报文后,状态调整为2way。因为此时RT2的hello报文中有自己的routerid。并发送带有RT2的routerid的hello报文给对方。

4,RT2在收到RT1的hello报文后,状态调整为2way。因为此时收到的RT1的hello报文中有自己的routerid。到此双方达到稳定的2way状态。

二,邻居状态机

img

1, 开始的状态down状态,也就是第一个hello报文都还没有发送的时候。

2,在收到对方的hello报文后,将状态提升到init状态。此时收到的hello报文中,只有对方的routerid。因为存在双方同时发送第一次的hello报文情况,

所以双方都有可能同时存在都为init的情况。

3,在收到对方的hello报文时候,如果报文中含有自己的routerid,那么状态提升到2-way状态。

4,双方到达2-way状态后,进入exstart状态,开始发送DD报文,选择主从。之后进入到Exchange状态,发送DD报文的LSA简要信息摘要。

5,如果没有需要要请求的LSA那么直接进入FLL状态。如果有需要更新的报文,那么进入loading状态,开始更新信息,更新完毕之后转入到Full状态。


ospf协议总结
http://blog.uanet.cn/NETWORK/ospf协议总结.html
作者
dnsnat
发布于
2025年2月13日
许可协议