在学习OSPF邻接关系前需要先了解OSPF的几种接口状态及邻居状态。
1.OSPF路由器接口状态
以太网中OSPF路由器接口状态分为6种:
1、 Down状态,运行OSPF的接口初始化的状态。
![5bf5e99a67b26c92ae290f761a3b89ba.png](https://i-blog.csdnimg.cn/blog_migrate/3c3d26fd609c480e4cb213e85b40f420.jpeg)
Down接口状态
2、Waiting状态,路由器接口正在竞选DR、BDR的状态。竞选DR与BDR将于waiting time时间周期内完成,若DR与BDR已经竞选完成后加入的ospf路由器将不会重新选举DR与BDR。
![fca22c74ecc0b43441627662ee14c308.png](https://i-blog.csdnimg.cn/blog_migrate/dd09bc74ac56c0c99e417ddd2ee34e49.jpeg)
Waiting接口状态
3、 DR状态,路由器成为所连网络的DR,并将和所有邻居路由器建立邻接关系。
![65026104bd9b9c38817c91d95c0e9b1b.png](https://i-blog.csdnimg.cn/blog_migrate/7c5ccf0b2f9982f0bf7f4ff64825569a.jpeg)
DR接口状态
4、 BDR状态,路由器成为接口所连网络的BDR,并将和所有邻居路由器建立邻接关系。
![143de9d3e4479d0470c6d96c57de1691.png](https://i-blog.csdnimg.cn/blog_migrate/8ef40a20690afc81d18acab8bbe3bb5e.jpeg)
BDR接口状态
5、 DRother状态,所连网络中除DR与BDR外剩余路由器接口,仅仅会和所连网络上的DR和BDR建立邻接关系。DRother之间不会建立邻接关系。
![4af0d06f4ec0afdd602acef29bf381a1.png](https://i-blog.csdnimg.cn/blog_migrate/84be74a4744ed0e44cf76bde989c7e9d.jpeg)
DROTHER接口状态
6、Loopback,loopback接口的状态。
![06d830bf118bb68d334c34f541421a9b.png](https://i-blog.csdnimg.cn/blog_migrate/726b6c8235865989cc98167c4fdf09eb.jpeg)
loopback接口状态
注:由于OSPF是一种接口敏感性协议,所以一台路由器所在不同区域的接口可能会是不同的接口状态。
![0ebc19450b27c3b21a7565f18ac4c904.png](https://i-blog.csdnimg.cn/blog_migrate/e37981f751fea9abe1682cec8713c7a6.jpeg)
同区域的接口可能呈现不同的接口状态
此外,在点对点网络环境中还有point to point接口状态,此状态为运行OSPF的点对点接口开始发送Hello报文,并尝试和对端的路由器建立邻接关系。
![709d6b13b19e62c875f839d3d821bdbf.png](https://i-blog.csdnimg.cn/blog_migrate/9c644687dd330ad5c7f71a6a68c58688.jpeg)
point to point接口状态
2.OSPF路由器邻居状态
以太网中OSPF路由器邻居状态分为7种:
1、 Down状态:邻居状态机的初始状态,是指在之前的Dead-Interval时间(在以太网环境中,默认的Dead-Interval时间为Hello-Interval的4倍,即40秒)内没有收到对方的Hello报文。
2、 Init状态:此状态表示此设备已经收到了邻居的HELLO报文,但邻居并没有收到我发的HELLO报文。(邻居发来的HELLO报文中列出的邻居里没有包含我的Router ID)。
![27e6f12d19d49969750b740a40ee9289.png](https://i-blog.csdnimg.cn/blog_migrate/3f521520cede9876c94f8f28d9c06472.jpeg)
Down邻居状态
3、2-Way状态:此状态表示邻居之间双方互相收到了对方发送的HELLO报文,建立了邻居关系(并非邻接关系)。在以太网环境中DROTHER之间状态将一直维持在2-Way状态。
![fd9bf4af972c5e72acbde1372ef9d401.png](https://i-blog.csdnimg.cn/blog_migrate/62b6cb02af50a0cbfffc54dc35a1b038.jpeg)
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完全相同。此时,本机路由器和邻居路由器建立了邻接关系。
![a6c6db7a609514db8391e22337dc0fb1.png](https://i-blog.csdnimg.cn/blog_migrate/ceaa5a0e238035f078b86b5e35ff5afa.jpeg)
FULL邻居状态
此外,在NBMA网络中还会有attempt状态,即本地路由器通过手动配置的邻居信息尝试发送HELLO报文但没有收到回复信息时路由器的状态。
![46c4ee9d6d77a823e612c9376e5c6cf7.png](https://i-blog.csdnimg.cn/blog_migrate/d9ee6c29837465ed8763289e5dd3f5be.jpeg)
attempt邻居状态
3. 以太网中OSPF如何建立邻接关系?
OSPF建立邻接关系分为三步:第一步为邻居发现与建立邻居关系,第二步为路由发现与建立邻接关系,第三步为同步LSDB。
以太网属于BMA网络,即需要竞选DR与BDR,所有DROTHER与DR和BDR建立邻接关系,DROTHER之间只建立邻居关系。
下面将通过图文的方式分三步讲述以太网中OSPF如何建立邻接关系。
3.1 第一步:邻居发现与建立邻居关系
邻居关系为运行OPSF的设备接口间两两建立,下图为一对邻居建立的过程。
在一个未知的以太网网络环境中,路由器A向网络中组播发送hello报文。
![14a6ce150f8de71fbdb5511788978417.png](https://i-blog.csdnimg.cn/blog_migrate/ebe4a32fd947195e1ea090fd0b1d61ca.jpeg)
HELLO报文寻找邻居
路由器B收到路由器A发来的HELLO报文。
![ba1f55fbebd3d10085d0eda5ec3a9f2f.png](https://i-blog.csdnimg.cn/blog_migrate/59ac7ad913857c3f205c2699f4b18543.jpeg)
HELLO报文寻找邻居
路由器B响应路由器A的HELLO报文。
![d25e2ddb14eff6690fb9a845d490be5f.png](https://i-blog.csdnimg.cn/blog_migrate/e2749050622260b578357206a93ef778.jpeg)
响应HELLO报文
路由器A确认收到路由器B发送的HELLO报文。至此A与B的邻居状态为2-WAY,即建立邻居关系。
![f520be626b61c08ba961eb1830b382a9.png](https://i-blog.csdnimg.cn/blog_migrate/d10faccfb8d47685df627e84e6045a43.jpeg)
根据上述的邻居建立过程,路由器A、B、C、D又两两之间互相建立了邻居关系,开始竞选DR和BDR。
![e84a4b03620c51322d60f3c1132ee0d9.png](https://i-blog.csdnimg.cn/blog_migrate/eafec5b7381bc5f16b4b4c9a7946eb5c.jpeg)
竞选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。
![49c0cb6bb2b6c957e8dedea1e8a34a5c.png](https://i-blog.csdnimg.cn/blog_migrate/9cca8e2d45a997a7b6201522a70e125e.jpeg)
竞选DR与BDR完成
3.2 第二步:路由发现与建立邻接关系
由于以太网网络下OSPF建立邻接关系仅为DR与BDR、DROTHER与DR和BDR之间,DROTHER与DROTHER仅保持邻居关系。
![6d3358615efa7cf6e950ae3710eb7a74.png](https://i-blog.csdnimg.cn/blog_migrate/653c59b3fa6ec31cefef0de379e031a1.jpeg)
以太网网络下邻接关系
下图用一对邻接关系来解释邻接之间发现路由的过程:
邻接关系协商主从关系:
![92673318fbcb09109a62534aa6b99e2b.png](https://i-blog.csdnimg.cn/blog_migrate/cf47044d50a46be3c2883817e30a2fe1.jpeg)
协商主从关系
交换DBD索引报文:
![d7ba56dc7734b280986a17cb6c3f8302.png](https://i-blog.csdnimg.cn/blog_migrate/b0e350b5563057ffb65ce7293da07da7.jpeg)
交换DBD索引报文
3.3 第三步:同步LSDB
下图用一对邻接关系来解释邻接之间同步LSDB的过程:
同步LSDB分以下两种情况:
第一种:在交换完最后一个DBD分组索引报文后(M标志位为0),若发现邻居发来的所有DBD分组报文中所含的所有索引内容都与本地LSDB中内容相同。OSPF邻居状态变为FULL状态。
![9a7f866407e5542388e2530960dd889b.png](https://i-blog.csdnimg.cn/blog_migrate/9dde7ab39e528d90f3912d90103e7f44.jpeg)
同步LSDB
第二种:在交换完最后一个DBD分组索引报文后(M标志位为0),若发现邻居发来的DBD分组报文中有索引内容与本地LSDB中内容不相同,如果LSDB中LSA信息少于或旧于(LSA序列号用于判断LSA信息的新老程度)DBD报文索引内容,则OSPF邻居状态变为loading状态后,向邻居发送LSR分组报文对缺失或未更新的LSA进行请求,邻居收到LSR分组报文后发送LSU分组报文将缺失LSA信息发给本端,本端收到LSU更新分组报文后向邻居发送LSACK确认分组报文后进入FULL状态。
![f4db79f67bbd2de25be5caa7af76dfde.png](https://i-blog.csdnimg.cn/blog_migrate/bbb36246b1e50631dd8f841edf6fc901.jpeg)
同步LSDB
OSPF报文类型及作用在之前的原创文章中有讲述,链接如下:
干货分享:OSPF是什么?OSPF基础知识及五种报文类型解析
以上内容均为本人对所掌握知识总结归纳所创作的原创文章,希望能给大家的学习过程带来帮助,如有技术理解错误希望能够得到大家的指正,大家共同学习,共同进步。
欢迎关注我的头条号,私信交流,学习更多网络技术!