一、OSPF的五种报文
1 hello 发现、建立、周期保活邻居、邻接关系
2 DD(Database Description,数据库描述) LSDB中LSA的头部信息(并非完整的LSA信息),也就是本地的数据库的目录(摘要)
3 LSR(Link State Request,链路状态请求) 基于对端发送的DD报文中的未知信息(未知的LSA)向OSPF邻居进行查询
4 LSU (Link State Update,链路状态更新) 用于答复对端的LSR,携带各种的LSA。
5 LSAck (Link State Acknowledgment,链路状态确认) 对从LSU中获取到的LSA进行确认
(1)Hello报文:发现、协商、维护(周期发送)OSPF邻居;
关于邻居的发现,有两种方式:
①自动发现:通过发送目的IP地址为224.0.0.5;
②手工指定(NBMA)
(2)DD(Database Description)报文:数据库描述报文,携带LSA的摘要(就像快递单号,仅仅是对快递具体内容的简单描述标识而已);
(3)LSR(link state request)报文:请求本设备缺少的LSA信息(很容易理解,请求的东西一般是自己没有的),通过携带本设备所缺少的LSA的摘要信息来实现请求;
(4)LSU(link state update)报文:携带LSA信息的报文。(类似于报刊会按照你订阅所需要看、但又还没有收到的报纸的单号进行递送)
①收到了LSR请求报文后,LSU会进行回复;
②默认情况下,LSU报文会周期为1800s动态更新,dead time为3600s;
③当网络发生变化时,也会发送出LSU更新链路状态(触发更新);
(5)LSACK(link state ACK)报文:用来确认收到了LSU的报文,携带了LSA的详细信息(而不仅是LSA摘要了);(快递员给你送完东西,这时候快递员会验收确认,我们这边也要验货看看有无缺损、符不符合当初买的标准和实际的需求)
二、OSPF的七种状态
1、down:刚开机时,随即发送第一个hello报文的状态。
2、init:发送了第一个hello报文后,等待收到对方发来hello报文的状态。
3、2-way:双向连接,收到了邻居发来的hello报文(其中携带一些信息说明本设备为邻居的route id等),在这个状态里完成DR和BDR的选举。
4、exstart:双方开始交换‘空’的DD报文,通过DD报文中序号等摘要信息协商并选举出主从设备。
5、exchange:双方交换携带了LSA摘要DD报文,用于同步LSDB(可以说双方各自存储着自己的LSA报文数据库即LSDB)。
6、loading:用于加载exchange交换之后各自缺少的LSA报文。(此过程会发送LSR、LSU、LSAck报文)
7、**full:**同步LSDB完成。(此过程拓扑链路发生变化会发送HELLO、DD报文、LSR、LSU、LSAck报文,以进行动态刷新LSDB)
。