OSPF邻居邻接关系建立

OSPF收敛过程详解
1.概念
①报文类型 报文名称 报文描述
Hello 用于发现直连链路上的OSPF邻居,以及维护OSPF邻居关系。
DD/DBD(数据库描述) 用于描述LSDB,该报文仅携带LSDB中LSA的头部信息(摘要),并非完整信息。
LSR(链路状态请求) 用于向OSPF邻居请求LSA。
LSU(链路状态更新) 用于发送完整的LSA,LSA承载在LSU中泛洪。
LSAck(链路状态确认) 设备收到LSU后,LSAck用于对接收的LSA进行确认。
②邻居状态
Down(失效) OSPF接口尚未收到邻居发送的Hello报文。
Init(初始) 收到邻居的Hello报文,但未在"邻居"字段中看到自己的Router-ID。
Attempt(尝试) 只在NBMA类型接口出现。
2-Way(双向通信) 收到邻居发来的带有自己Router-ID的Hello包,表明与邻居确认双向通信,是OSPF稳定状态之一,也是建立邻接关系的基础。
ExStart(交换初始) 路由器发送空的I比特位为1的DD报文协商M/S。
Exchange(交换) 路由器向邻居发送描述LSDB摘要的DD报文,序列号由Master路由器决定,并在DD报文交互中递增,确保交互过程的有序性可靠性。
Loading(加载) 路由器向邻居发送LSR以便请求LSA的完整数据。,对方使用LSU回应,收到LSU后发送LSAck确认。
Full(全毗邻) 接口上待请求的LSA列表为空时,达到全毗邻。
③LSA
类型 名称 描述
1 Router LSA(路由器LSA) 每台OSPF路由器都会产生的LSA,描述该路由器所有OSPF直连接口的状况和cost值,只能在接口所属区域内泛洪。
2 Network LSA(网络LA) DR产生,描述DR所接入的MA网络中所有与之形成邻接关系的路由器,包括DR本身,只能在该接口所属区域泛洪。
3 Network Summary LSA(网络汇总LSA) ABR产生,描述到达某个区域的目标网段的路由。主要用于区域路由间传递,可以跨区域。
4 ASBR Summary LSA(ASBR汇总LSA) ABR产生,用于描述ASBR。ASBR汇总LSA相当于一条到达ASBR的"主机路由",用于通告ASBR的位置。
5 AS External LSA(AS外部LSA) ASBR产生,用于描述本AS之外的外部路由。
6 Group Membership LSA(组成员LSA) 在MOSPF(组播扩展OSPF)中使用。
7 NSSA LSA(非完全末梢区域LSA) ASBR产生,用于描述本AS之外的外部路由。仅仅在产生这个LSA的NSSA内泛洪,不能直接进入骨干区域,NSSA的ABR会将7类LSA转换成5类LSA注入到骨干区域。
2.收敛过程
<1>邻居关系的建立
1>OPSF进程刚开始时,各router开始发送hello报文,hello报文头部中有自己的router-id及area-id,载荷中携带有协商需要的参数,且因为自己没有收到任何其他router的hello报文,因此“邻居”字段为空。(down状态)
2>router 1收到了router 2的hello报文,首先检查载荷中的参数与自己是否一致,不一致将直接忽略该报文,若检查通过,(邻居字段中没有自己的router-id)router 1将router 2在自己的进程中置为init,router 2同理。(init状态)
3>router 1将router 2 的router-id写入自己hello报文的邻居字段,并发送出去,router 2 收到后发现有自己的router-id,便认为对方已经发现了自己,便将router 1添加到自己的邻居表,并把自己状态改为2-way,router 2 同理。(2-way)
<2>DR/BDR的选举
在多路访问网络中,此时开始DR及BDR的选举。所有的router在DR/BDR选出来之前在hello报文中DR/BDR字段都为0.0.0.0,路由器会根据收到的hello报文,在邻居表接口维持三个集合:DR集合,BDR集合,DRother集合,并启动wait计时器,若收到某DR及BDR集合为非空的hello,则接受该选择,并停止计时器;若wait超时后,仍未学习到DR/BDR,则开始选举。首先BDR集合为空,从DRother中选举BDR,填充到BDR集合中,因为DR集合也为空,则从BDR集合中将BDR填充到DR中,此时BDR集合又为空,会再次从DRother中选出新的BDR填充到BDR集合中。
注:选举出DR和BDR后,所有DRother都只与DR和DRother建立邻接关系,DRother之间停留在2-way。
<3>邻接关系的建立及LSA的交互
1>DRother之间停留在2-way,只保持邻居关系,DRother与DR和BDR开始建立邻接关系。router 1和router 2之间进入exstart状态,并开始互相发送空的DD报文(不携带LSA头部,且I比特位为1)协商M/S关系,初始时二者都认为自己是Master,都把I比特位置1并设定自己的DD序列号,互相交互报文后,因为router 2 的router-id更大,因此成为master,router 1接受自己是slave的事实,并将router 2状态设为exchange,使用协商时router 2 的DD序列号开始发送带有LSA头部的DD报文,且I比特位置0;router 2 收到router 1的DD报文,也将router 1的状态设为exchange,并发送DD,此时序列号为初始+1,在DD报文交互过程中,Master将序列号逐次加1,slave则使用上一个序列号发送DD,保证此过程的有序,若中间出现报文丢失或超时,master没有收到上一个序列号,会一直发送上一个序列号加1的DD,直到收到回应,保证传输可靠性。
2>发送最后一个DD报文时,将MS位置0,对端收到该报文后便彻底了解对方LSDB中的LSA头部,此时会向对方请求自己需要的完整LSA,这时双方邻居状态切换到learning,开始数据库同步过程,双方开始发送LSR,用于请求学习自己感兴趣的LSA完整信息,并将学来的LSA加载到自己的LSDB中,同时用LSack确认。双方同步数据库完成后,双方状态切换到Full。

你可能感兴趣的:(OSPF邻居邻接关系建立)