最近也刚好在研究,有朋友在面试的时候经常会问到这些东西,所以整理了一下发上来,大家研究一下吧!
OSPF 的五种报文分别是:
Router-LSA 由每个路由器生成,描述了路由器的链路状态和花费。传递到整个区域。
Network-LSA,由DR生成,描述了本网段的链路状态,传递到整个区域。
Net-Summary-LSA,由ABR生成,描述了到区域内某一网段的路由,传递到相关区域。
Asbr-Summary-LSA,由ABR生成,描述了到ASBR的路由,传递到相关区域。
AS-External-LSA, 由ASBR生成,描述了到AS外部的路由,传递到整个AS(STUB区域除外)。
1、hello报文:最常用的一种报文,周期性的发送给本路由器的邻居。内容包括一些定时器的数值、DR、BDR 以及自己已知的邻居。Hello 报文格式如表4-2 所示。
093c6a80d01283c1bc3e1ed2.jpg
主要字段解释如下:
* Network Mask:发送Hello 报文的接口所在网络的掩码。
* HelloInterval:发送Hello 报文的时间间隔。如果相邻两台路由器的Hello 间隔时间不同,则不能建立邻居关系。
* Rtr Pri:DR 优先级。如果设置为0,则路由器不能成为DR/BDR。
* RouterDeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello 报文,则认为邻居失效。如果相邻两台路由器的失效时间不同,则不能建立邻居关系。
2、DD报文:两台路由器进行数据库同步时,用DD 报文来描述自己的LSDB,内容包括LSDB 中每一条LSA 的Header(LSA 的Header 可以唯一标识一条LSA)。LSA Header 只占一条LSA 的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量,对端路由器根据LSA Header 就可以判断出是否已有这条LSA。DD 报文格式如表4-3 所示。
14c0ab4a430ae9e982025cd3.jpg
主要字段的解释如下:
* Interface MTU:在不分片的情况下,此接口最大可发出的IP 报文长度。
* I(Initial):当发送连续多个DD 报文时,如果这是第一个DD 报文,则置为1,否则置为0。
* M(More):当发送连续多个DD 报文时,如果这是最后一个DD 报文,则置为0。否则置为1,表示后面还有其他的DD 报文。
* MS(Master/Slave):当两台OSPF 路由器交换DD 报文时,首先需要确定双方的主从关系,Router ID 大的一方会成为Master。当值为1 时表示发送方为Master。
* DD Sequence Number:DD 报文序列号,由Master 方规定起始序列号,每发送一个DD 报文序列号加1,Slave 方使用Master 的序列号作为确认。主从双方利用序列号来保证DD 报文传输的可靠性和完整性。
3、LSR:两台路由器互相交换过DD 报文之后,知道对端的路由器有哪些LSA 是本地的LSDB所缺少的,这时需要发送LSR 报文向对方请求所需的LSA。内容包括所需要的LSA的摘要。LSR 报文格式如表4-4 所示。
93cd94599b1229c79c8204dd.jpg
主要字段解释如下:
LS type:LSA 的类型号。例如Type1 表示Router LSA。
Link State ID:即LSA 头格式中的字段,根据LSA 的类型而定。
Advertising Router:产生此LSA 的路由器的Router ID。
4、LSU:用来向对端路由器发送所需要的LSA,内容是多条LSA(全部内容)的集合。LSU 报文格式如表4-5 所示。
0c6913cfc8cf4f20b600c8df.jpg
5、LSAck:用来对接收到的LSU 报文进行确认。内容是需要确认的LSA 的Header(一个LSAck报文可对多个LSA 进行确认)。报文格式如表4-6 所示。
7cbb9d5165dc4f7b853524d8.jpg