【思唯网络】OSPF邻居关系建立介绍
使用OSPF的路由想要相互学习LSA(链路状态通告),需要确认对方也是OSPF路由。在OSPF路由中需要对路由双方建立OSPF的邻居或邻接关系,用来维护LSDB(链路状态数据库),保证路由的实时同步。
1>Hello:作用:1)发现邻居 2)维护邻居关系 3)选举DR/BDR 4)保证邻居的双向通信
2>DBD(Database description)1)选举DR/BDR 2)交互数据库摘要信息
3>LSR( LSA Request) 向对方请求对方有, 本地没有的LSA信息
4>LSU(LSA Update) 给邻居发送LSA 信息
5>LSACK(Link State Acknowledgement) 确认邻居发送的LSA 信息和对DBD 报文进行确认
1>Down,
建立邻居的第一步就是down,指的是我没有给邻居发送任何报文。也没有收到邻居给我发任何报文
2>Init 初始化状态:
指的是当前router通过邻居收到了一个hello,但是在hello字段中没有看到我自己的路由器ID
RID,在hello载荷中有neighbor字段,4字节用来装RID,RID能够在AS内全局标识自己,每台路由器发送
Hello的时候都会携带我的RID,我的邻居收到我的hello会把我的RID加入他的hello报文的neighbor字段
他发送的hello就会携带我的RID,用来告诉别人我曾收到过邻居给我发送的hello,判定为init就是通过邻居收到hello之后有没有在neighbor中找到我自身的RID, 单向邻居。
3>Two-way 双边邻居:
我通过邻居收到了一个hello,这个hello中我看到了我自己的RID,表示邻居已经收到了我的 Hello,我们之前曾交互过hello
当大家都到达Two-way之后,如果接口类型为广播或者非广播,需要开始选举DR/BDR
(选举原则:先比优先级,比参选router的接口ospf优先级,默认是1,取值范围0-255,0是没有资格参选。优先级谁大谁做DR,第二大的做BDR,其他的做DRothers,如果选不出来就再比较RID,谁大谁做DR,次大的做BDR)
4>Exstart 准启动状态:
选举主从Master/slave 交互3个报文选举谁做主谁做从
First DBD:选举主从,载荷是空的,没有任何LSA报头信息,DBD有flag字段,有3个位I 1 交互第一个FirstDBD I位置1,M 1 由于我的第一个FirstDBD没有LSA报头,而我的LSBD中肯定有LSA。等我们交互完FirstDBD之后,我肯定会给你发送至少一个携带LSA报头的DBD,由于后续有其他DBD存在,所以这个位置1,M/S 1双方在得到对方信息之前,都会认为自己就是Master这个位都置1。这3位都置1,就是0x7,由于DBD包含RID,通过PK大家的RID,我们就能知道谁的RID大,谁的RID小,由RID大的一方做Master,小的做第一次隐式确认,回复一个隐式确认的DBD,并且把M/S位设置为0,告诉 对方我做slave,而且回应报文所使用的序列号就是FirstDBD中的序列号的值.
5>Exchange 阶段:
主路由器带动从路由器交互DBD 报文
6>loading:根据交互的DBD 报文可以得知双方需要的LSA 信息, 根据自己没有而邻居有的LSA向邻居请求
7>FULL完全邻接状态 :最终状态,邻居建立完成