在学习OSPF邻接关系前需要先了解OSPF的几种接口状态及邻居状态。
以太网中OSPF路由器接口状态分为6种:
1、 Down状态,运行OSPF的接口初始化的状态。
Down接口状态
2、Waiting状态,路由器接口正在竞选DR、BDR的状态。竞选DR与BDR将于waiting time时间周期内完成,若DR与BDR已经竞选完成后加入的ospf路由器将不会重新选举DR与BDR。
Waiting接口状态
3、 DR状态,路由器成为所连网络的DR,并将和所有邻居路由器建立邻接关系。
DR接口状态
4、 BDR状态,路由器成为接口所连网络的BDR,并将和所有邻居路由器建立邻接关系。
BDR接口状态
5、 DRother状态,所连网络中除DR与BDR外剩余路由器接口,仅仅会和所连网络上的DR和BDR建立邻接关系。DRother之间不会建立邻接关系。
DROTHER接口状态
6、Loopback,loopback接口的状态。
loopback接口状态
注:由于OSPF是一种接口敏感性协议,所以一台路由器所在不同区域的接口可能会是不同的接口状态。
同区域的接口可能呈现不同的接口状态
此外,在点对点网络环境中还有point to point接口状态,此状态为运行OSPF的点对点接口开始发送Hello报文,并尝试和对端的路由器建立邻接关系。
point to point接口状态
以太网中OSPF路由器邻居状态分为7种:
1、 Down状态:邻居状态机的初始状态,是指在之前的Dead-Interval时间(在以太网环境中,默认的Dead-Interval时间为Hello-Interval的4倍,即40秒)内没有收到对方的Hello报文。
2、 Init状态:此状态表示此设备已经收到了邻居的HELLO报文,但邻居并没有收到我发的HELLO报文。(邻居发来的HELLO报文中列出的邻居里没有包含我的Router ID)。
Down邻居状态
3、2-Way状态:此状态表示邻居之间双方互相收到了对方发送的HELLO报文,建立了邻居关系(并非邻接关系)。在以太网环境中DROTHER之间状态将一直维持在2-Way状态。
2-Way邻居状态
4、 ExStart状态:此状态标识邻居之间交互协商DBD报文,协商邻居主从关系及以哪台设备的序列号为基准发送报文,主从关系的作用在于后续同步LSA时哪台设备为主动。
5、 Exchange状态:本机及邻居路由器将LSDB中的LSA数据的索引信息使用DBD报文来描述,并互相发送给对方。接收到DBD报文的一方将从ExStart状态转换为Exchange状态。
6、 Loading状态:在互相收到对方的DBD报文后与本地LSDB进行匹配,若相同则进入FULL状态,若有缺失LSA条目,路由器将停留在Loading状态,发送LSR报文向邻居请求发送本地缺失的LSA信息,直到收到对方的DBD报文后与本地LSDB进行匹配相同后进入FULL状态。
7、 Full状态:此状态表示邻居路由器的LSDB中所有的LSA本路由器已全部学习到,即同区域邻居的LSDB与本机LSDB完全相同。此时,本机路由器和邻居路由器建立了邻接关系。
FULL邻居状态
此外,在NBMA网络中还会有attempt状态,即本地路由器通过手动配置的邻居信息尝试发送HELLO报文但没有收到回复信息时路由器的状态。
attempt邻居状态
OSPF建立邻接关系分为三步:第一步为邻居发现与建立邻居关系,第二步为路由发现与建立邻接关系,第三步为同步LSDB。
以太网属于BMA网络,即需要竞选DR与BDR,所有DROTHER与DR和BDR建立邻接关系,DROTHER之间只建立邻居关系。
下面将通过图文的方式分三步讲述以太网中OSPF如何建立邻接关系。
邻居关系为运行OPSF的设备接口间两两建立,下图为一对邻居建立的过程。
在一个未知的以太网网络环境中,路由器A向网络中组播发送hello报文。
HELLO报文寻找邻居
路由器B收到路由器A发来的HELLO报文。
HELLO报文寻找邻居
路由器B响应路由器A的HELLO报文。
响应HELLO报文
路由器A确认收到路由器B发送的HELLO报文。至此A与B的邻居状态为2-WAY,即建立邻居关系。
根据上述的邻居建立过程,路由器A、B、C、D又两两之间互相建立了邻居关系,开始竞选DR和BDR。
竞选DR与BDR
竞选DR与BDR首先需要看OSPF接口的优先级。最高的成为DR,次高的成为BDR。优先级为0的路由器不参与DR与BDR的竞选,直接成为DROTHER。
由于路由器接口默认的OSPF优先级值为均为1,所以Router-ID最大的将成为DR,次大的将成为BDR。
当一个OSPF区域中的DR与BDR竞选完成后,接口状态将脱离wating,变为DR、BDR或DROTHER状态,此时再有更高优先级的接口进去该区域将不会抢占DR和BDR的地位。如果DR出现故障则BDR成为DR,重新选举BDR;如果BDR出现故障则重新选举BDR。
竞选DR与BDR完成
由于以太网网络下OSPF建立邻接关系仅为DR与BDR、DROTHER与DR和BDR之间,DROTHER与DROTHER仅保持邻居关系。
以太网网络下邻接关系
下图用一对邻接关系来解释邻接之间发现路由的过程:
邻接关系协商主从关系:
协商主从关系
交换DBD索引报文:
交换DBD索引报文
下图用一对邻接关系来解释邻接之间同步LSDB的过程:
同步LSDB分以下两种情况:
第一种:在交换完最后一个DBD分组索引报文后(M标志位为0),若发现邻居发来的所有DBD分组报文中所含的所有索引内容都与本地LSDB中内容相同。OSPF邻居状态变为FULL状态。
同步LSDB
第二种:在交换完最后一个DBD分组索引报文后(M标志位为0),若发现邻居发来的DBD分组报文中有索引内容与本地LSDB中内容不相同,如果LSDB中LSA信息少于或旧于(LSA序列号用于判断LSA信息的新老程度)DBD报文索引内容,则OSPF邻居状态变为loading状态后,向邻居发送LSR分组报文对缺失或未更新的LSA进行请求,邻居收到LSR分组报文后发送LSU分组报文将缺失LSA信息发给本端,本端收到LSU更新分组报文后向邻居发送LSACK确认分组报文后进入FULL状态。
同步LSDB
OSPF报文类型及作用在之前的原创文章中有讲述,链接如下:
干货分享:OSPF是什么?OSPF基础知识及五种报文类型解析
以上内容均为本人对所掌握知识总结归纳所创作的原创文章,希望能给大家的学习过程带来帮助,如有技术理解错误希望能够得到大家的指正,大家共同学习,共同进步。