ospf报文

OSPF协议使用一种称之为Hello的报文来建立和维护相邻邻居路由器之间的链接关系。这个报文很简单的,容量很小,仅用来向邻居路由器证明自己的存在,就像人与人之间的打招呼一样。我们在第8章中已经知道,RIP邻居路由器之间的邻接关系建立是都是定期的路由更新报文进行的,通过定期的路由更新来同时向邻居RIP路由器证明自己的存在。显然OSPF的这种Hello报文更简单,可大大减小网络中的报文传输流量。

Hello报文被周期性(默认为10秒)地发向邻居路由器接口发送,如果在设定时间(默认为40秒,通常至少是Hello包发送时间间接4倍)内没有收到对方OSPF路由器发送来的Hello报文,则本地路由器会认为该对方路由器无效。报文内容包括一些定时器设置、DR、BDR以及本路由器已知的邻居路由器。


ospf的5种报文类型

在OSPF数据包头中有一个type选项,表示的就是OSPF报文的协议形式,分为五种:

(1)Hello报文协议,用于发现与维持邻居,后期还可用来进行广播以及NBMA网络中DR以及BDR的选取;根据网络结构的不同,Hello协议的工作方式也不同。

(2)DD(数据库描述)报文,描述本地LSDB(链路状态数据库)的情况;

(3)LSR(链路状态请求)报文,向对端请求本端没有或者对端更新的LSA;

(4)LSU(链路状态更新)报文,向对方更新LSA;

(5)LSAck(链路状态确认)报文,收到LSU后进行确认。

其中,Hello报文用于双向通信连接即发到对方路由器的Hello报文协议中的邻居路由器中必须具有源路由ID才能建立邻居状态,达到two-way状态,并且会在建立成功后每隔一段时间进行Hello报文的发送确认邻居路由器的变化情况。DD报文与LSR报文是形成邻接同步的过程,在这个阶段中邻接状态形成,根据路由器生成的LSA类型进行数据库汇总,向整个区域进行LSA的洪泛;而LSU和LSAck保证了报文交换的状态的确认刷新机制,对LSR报文发出的请求的LSA进行回复,假如未收到更新报文LSU,会在一定时间段内进行LSAck报文进行确认,确认到未收到更新报文或者更新失败,则要求重新发送。