ospf怎么建立邻居关系

如题所述

OSPF协议在点到点网络下会经历7个状态,最后达到完全邻接状态。在这其中,双方路由器会发送若干个数据报文。我通过下方拓扑搭建的实验台,带领大家还原这7个状态所发送的数据报文信息,来搞清楚OSPF在点到点网络下是如何建立邻居的。
工具/原料
cisco路由器 GNS3 Wireshark
步骤1:基本配置
1/5 分步阅读
请先按照拓扑进行环境搭建,并在两台设备间的线路上开启Wireshark进行抓包,注意选择HDLC协议。

2/5
首先,我们需要对两台路由器做基本的配置设置。下图是在R1上进行的接口配置和路由配置。

3/5
下图是在R2上进行的接口配置和路由配置。

4/5
邻居的建立是非常快的,其实现在两台设备的OSPF邻居表中,已经是FULL状态了;同时,我们也发现Wireshark已经抓取到大量的数据报文了,这些就是邻居建立过程中产生的报文信息。

查看剩余2张图
5/5
为了方便信息,我们打开Wireshark报文统计功能:点击statistics—Flow Graph——点击OK。就能看到整个邻居建立过程的报文统计图。
下面我们开始对这些报文进行分析。

查看剩余2张图
步骤2:过程分析
1/9
路由器收到对方发来的hello包时,会在邻居表内将对方置为init状态。Hello包都发送到组播地址,并在OSPF报头中携带发送者的Router ID信息。

查看剩余1张图
2/9
在将邻居的状态变为init后,路由器在之后发送的Hello报文中,会在Active Neighbour字段中添加上邻居的RID信息。
那么如果路由器收到一个Hello报文,且该Hello包内的OSPF Hello Packet报文中的Active Neighbor字段,携带有自己的RID信息时,该路由器会将邻居状态置为2way。

查看剩余1张图
3/9
当路由器将邻居置为2way状态后,便开始发送DBD报文信息。路由器会发送空的数据库描述数据包,通过MS字段进行主/从选举。
当路由器收到DBD状态信息时,该路由器就会将邻居状态转换成Exstart状态。

查看剩余1张图
4/9
路由器一旦收到邻居发来的数据库描述数据包,就会将对方状态转换到Exchange状态。

5/9
当路由器收到对方发来的DBD报文后,它将发送一个响应的DBD报文,通过双方首次DBD报文交换,主从选出。MS=0为从、MS=1为主。注意,在为选出主/从之前,路由器发送的第一个DBD,都讲自己设成主。

6/9
同时,该数据包将会传送该路由器的的链路状态摘要列表的LSA头部。其中携带路由目录信息。

7/9
当邻居路由器收到上述携带LSA头部的DBD报文时,其会发送一个包含相同序列号的确认数据包。这个过程将一直延续,直到路由器收到最后一个LSA摘要DBD包,且其中的M位置为0时,代表Exchange过程已经完成。

8/9
如果此时路由器的链路状态请求列表中还存在LSA条目(即本路由器没有,邻居链路状态摘要列表中存在的路由条目),路由器将会把邻居状态改为Loading状态。

9/9
在Loading状态时,邻居双方会依照各自的链路状态请求列表发送LSR—收到LSU发送LSA来进行LSA的更新。当路由器收到最后一个数据库描述报文时,该路由器就会把邻居状态改为Full状态。
当双方的邻居表内的邻居状态都置为Full状态时,则双方已建立完全邻接关系,OSPF邻居建立成功。

查看剩余1张图
注意事项
因为邻居建立过程是很快的,正常情况下,我们在邻居表中只能看到FULL状态。
在广播网络中,我们能看到2Way状态
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-10-31
想要建立邻居关系的话,那么一定要两个人在一个通道的平台上面有一个相处的方式,并且离得很近才可以。
第2个回答  2020-10-31
嗯,既然是邻居的话,那么之间平时的时候呢,应该要打声招呼之类的,互帮互助。
相似回答