OSPF网络中,路由器在发送任何链路状态信息之前,必须先建立起正确的OSPF邻居、邻接关系。OSPF路由器是使用Hello报文来建立邻居关系的。OSPF路由器会检查所收到的Hello报文中的各种参数,如Router-ID、Area-ID、认证信息、网络掩码、Hello时间间隔等。如果这些参数和接口上的配置的对应参数都一一保持一致,则邻居关系就会建立起来,否则就无法建立起邻居关系。
OSPF路由器邻居关系建立完成之后,下一步才是建立邻接关系,这要取决于OSPF邻居之间的网络类型。例如,在点到点网络上,有效的OSPF邻居关系都可以进一步形成邻接关系。在广播网络上,会选举DR和BDR;DR和BDR会与所有其它路由器都建立邻接关系,其它路由器都只与DR和BDR建立邻接关系。

//理解OSPF邻居关系和邻接关系的含义及差别
//观察OSPF邻居邻接关系的建立过程
//观察OSPF链路状态数据库的同步过程

//R1、R2、R3组成一个广播型网络/。分部1,R4与总部R1组成一个点到点网络。分部2与总部R1组成一个点到点网络。通过式实验理解OSPF邻居关系和OSPF邻接关系的含义及差别,并观察OSPF邻居关系建立过程以及OSPF链路状态数据库(LSDB:Link State Database)的同步过程。

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_路由器


//接口配置不赘述。

//在每台路由器上进行OSPF协议配置,其中R1、R2、R3之间的链路属于区域0,R1、R4之间的链路属于区域1,R1、R5之间链路属于区域2。

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_ospf_02


ospf邻居关系和邻接关系的区别 ospf邻居与邻接_网络_03


ospf邻居关系和邻接关系的区别 ospf邻居与邻接_ospf_04


ospf邻居关系和邻接关系的区别 ospf邻居与邻接_路由器_05

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_路由器_06


//查看R1的邻居建立情况。(邻居状态都为Full)

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_网络_07


//R1查看OSPF邻居状态详细信息。

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_ospf邻居关系和邻接关系的区别_08


//R1、R2、R3的广播已经完成了DR\BDR的选举,10.0.123.3(R3)为DR,10.0.123.2(R2)为BDR。R1与R4、R5之间为点到点网络都没有进行DR\BDR选举。//查看R1广播网络接口G0/0/0和点到点网络接口S1/0/0的详细情况。

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_路由器_09


//看到默认Hello时间间隔都为10s,失效时间都为40s//观察OSPF邻居邻接关系的建立过程。首先观察在广播网络上OSPF邻居邻接关系的建立过程,先关闭S1/0/0和S1/0/1接口。

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_OSPF_10


//可以看到R1、R2、R3的邻居状态都是Full。现在在R1上重启OSPF进程,通过Debugging调试观察R1、R2之间的OSPF邻接关系的建立过程。关闭R3的G0/0/0接口,只观察R1与R2邻接关系的建立过程。

debugging ospf packet

reset ospf process

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_网络_11


//重启OSPF进程后,R1与R2的邻居关系由Full状态转到Down状态。然后,当R1从R2收到报文后,邻居关系由 Down 状态转变为了初始状态 Init

Hello报文的参数协商完成后,R1、R2的邻居关系进入到了 2-Way2-Way 状态表明双方已经成功建立了邻居关系。

邻居关系建立后,R1、R2进入到了信息交换初始状态 ExStart 信息交换状态 Exchang 以及信息加载状态 Loading ,最终进入 Full 状态。Full 状态表明双方已经成功建立了邻接关系。R1与R3之间的建立关系类似。//OSPF路由器之间的邻居关系并不等于邻接关系。邻居关系建立后,还需要链路状态信息的交换,然后才能建立起邻接关系。

在广播网络中,DRother之间不需要交换LSA(Link State Advertisement),DRother是通过DR\BDR来获取整个广播网络的链路状态信息的,所以DRother之间不需要建立邻接关系,只需要建立邻居关系即可。

在R1、R2、R3组成的广播网络中,R3是DR,R2是BDR,只有R1是DRother,所以不便于观察DRother之间的邻居关系。现在,将R1的G0/0/0和R2的G0/0/0接口优先级设置为0,放弃DR的选举,使他们都成为DRother,以便观察它们之间的OSPF邻居关系。

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_ospf邻居关系和邻接关系的区别_12


ospf邻居关系和邻接关系的区别 ospf邻居与邻接_网络_13

//重启R1、R2上的OSPF进程后,在DR路由器上查看OSPF的邻居建立情况。

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_OSPF_14


//观察都R3为DR,网络中没有BDR,R3分别与R1、R2建立了邻接关系//查看R1的OSPF邻居关系建立情况。

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_OSPF_15


//观察到R1与DR路由器R3建立的是邻接关系,状态为Full,与DRother路由器R2只建立了邻居关系,状态为2-Way 。

在路由器R1上重启OSPF进程,通过 Debugging 调试观察OSPF邻居邻接关系的建立过程

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_网络_16


//从显示信息可以看到,R1与R2只建立了OSPF邻居关系,处于 2-Way 状态。R1与R3建立了邻接关系,处于 Full 状态。



//接下来观察点到点网络中OSPF的邻居关系建立情况。开启R1上的两个接口S1/0/0 S1/0/1,关闭广播接口G0/0/0。

[R1]int s 1/0/0

[R1-Serial1/0/0]undo shutdown

[R1-Serial1/0/0]int s 1/0/1

[R1-Serial1/0/1]undo shutdown

[R1]int g 0/0/0

[R1-GigabitEthernet0/0/0]shutdown//在路由器R1上重启OSPF进程,通过 Debugging 调试观察R1与R4之间的OSPF邻居邻接关系的建立过程。

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_OSPF_17


//重启OSPF进程后,R1与R4的邻居关系由 Full 转变为 Down ,当R1收到R4发送的Hello报文后,邻居关系由 Down 状态转变为 Init

接着R1与R4便直接进入了信息交换初始状态 ExStart,信息交换状态 Exchange,以及信息加载状态 Loading,最终成功建立了邻接关系 Full 状态。R1与R5类似。

注意R1与R4并没有经过2-Way状态,并且也不存在2-Way状态,说明点到点网络与广播网络中OSPF的邻接关系建立过程不是完全一样。在点到点网络中,能够建立OSPF邻居关系的路由器一定会继续建立邻接关系。



//观察OSPF链路状态数据库的同步过程。在R1的S1/0/0接口上查看报文,重启OSPF进程。

debugging ospf packet

reset ospf process

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_网络_18


//可以看到OSPF邻居邻接关系建立的过程:首先R1(10.0.14.1)和R4(10.0.14.4)通过Hello报文进行协商,让后通过数据库描述DD(Datebase Description)报文、链路状态请求*LSR(Link State Request)报文、链路状态更新(LSU:Link State Update)*报文等,实现LSDB同步,建立器OSPF邻接关系。//分析一下R1与R4相互发送的Hello报文

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_OSPF_19


ospf邻居关系和邻接关系的区别 ospf邻居与邻接_网络_20


//可以看到网络掩码为24位,Hello间隔时间为10s,路由器死亡时间间隔40s,网络上没有DR\BDR,R4发出的Hello报文中指出活跃邻居为 R1,说明R1与R4成功建立了OSPF邻居关系。//分析一下DD报文

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_ospf_21

ospf邻居关系和邻接关系的区别 ospf邻居与邻接_ospf_22


//两个报文为R1、R4首次交互的DD报文,其中I位,M位,MS位都设置为1。R1、R4都宣称自己是主路由器。这两个DD报文是不包含数据库摘要信息的。首次DD报文交互后,便可选举出Router-ID较大的R4为主路由器。