OSPF-2 邻接建立关系

上一期我们说了OSPF的邻居建立关系以及OSPF邻居关系建立中建立失败的因素以及相关实验案例

这一期我们来说说OSPF的邻接关系建立时需要交互哪些报文以及失败因素及原因和相关实验案例

一、概述

在运行了OSPF的网络当中为了交互链路状态信息和路由信息,互相之间需要建立邻接关系。

邻居关系不等于邻接关系

不是所有的邻居关系都可以建立邻接关系

在广播型网络当中(MA网络类型)与NBMA网络类型中,Dr other只与DR/BDR建立邻接关系。

++什么是邻接关系++

邻接关系是建立完邻居关系后进一步建立的,当建立OSPF邻居的两端路由器交互完DD报文以及LSA之后才算建立完邻接关系。

二、OSPF的邻居状态

OSPF的邻居状态

|-------|------------------------------------------------------------|
| Down | 这是邻居的初始状态,表示没有从邻居收到任何信息 |
| Init | 在此状态下,路由器已经从邻居收到了Hello报文,但是自己的Router ID不在收到的Hello报文的邻居列表当中 |
| 2-way | 在此状态下,路由器发现自己的Router ID存在于收到的Hello报文的邻居列表当中 |

OSPF的邻接状态

|----------|----------------------------------------|
| Exstart | 邻居状态变成此状态之后,路由器开始向邻居发送DD报文 |
| Exchange | 在此状态下,路由器与邻居之间相互发送包含链路状态信息摘要的DD报文 |
| Loading | 在此状态下,路由器与邻居之间相互发送LSR报文、LSU报文、LSAck报文。 |
| Full | 路由器完成了邻居的LSDB链路状态数据库同步 |

三、影响OSPF邻接状态的因素

|----------|----------------------------------------------------|
| MTU | 建立邻接关系的两端路由器的接口MTU参数需要一致 |
| 静默接口 | 建立邻接关系的两端路由器的接口不能设置为静默接口,如果设置为静默接口邻居关系也无法建立成功 |
| 过滤OSPF报文 | 建立邻接关系的两端路由器不能配置ACL过滤OSPF报文,如果过滤了OSPF报文邻居关系也无法建立成功 |

++1、MTU++

建立邻接关系的两端路由器的接口MTU值不一致时会卡在Exstart状态,华为默认不开启MTU检查发出的DD报文中的MTU值为0,所以在默认情况下修改MTU的参数并不会直接影响OSPF邻接关系的建立

只有开启了MTU检测后才会把接口的MTU值写入DD报文中

四、OSPF邻接关系过程

|-----------------|-----------------------------------------|
| 邻居状态Down~2-way | 路由器在接口下运行OSPF协议,周期性发送Hello报文发现邻居并建立邻居关系 |
| Exstart | 通过发送DD报文来协商MTU和主从关系,RID大的为主 |
| Exchange | 基于选举出来的主从关系,由从先发送带有链路状态信息摘要的DD报文 |
| Loading | OSPF邻居之间开始交互LSR、LSU、LSAck报文。 |
| Full | LSDB同步完成,OSPF邻居之间完成邻接关系的建立 |

++1、MA广播型网络建立邻接关系过程++

拓扑

(1)基础配置

复制代码
AR1
system
sysname AR1
interface g0/0/0
ip add 192.168.1.1 24

AR2
system
sysname AR2
interface g0/0/0
ip add 192.168.1.2 24

(2)OSPF配置

复制代码
AR1
ospf 1 router-id 1.1.1.1
area 0
network 0.0.0.0 255.255.255.255

AR2
ospf 1 router-id 2.2.2.2
area 0
network 0.0.0.0 255.255.255.255

通过发送Hello报文发现OSPF邻居,建立邻居关系

Down~2-way

当AR1的邻居状态变为Exstart后,AR1会发送第一个DD报文,此报文当中DD报文的序列号为随机的X,I为1表示为第一个DD报文,M为1表示还有后续的DD报文,MS为1表示自己为主

++2-way~Exstart++

我们可以看到在没有配置MTU检查时发送的DD报文中的MTU值默认为0

|----|----------------------------------------------------------|
| I | 是否为第一个DD报文,如果为1表示为第一个,如果为0表示不是第一个 |
| M | 是否有后续的DD报文也可以理解为是否为最后一个DD报文,如果为1代表后续还有,如果为0则为最后一个 |
| MS | 是否为主,如果为1表示为主,如果为0表示为从,所有OSPF邻居在第一个发送DD报文时都认为自己是主所以这里都为1 |

++Exstart~Exchang++

我们可以看到是由从先发送后续的DD报文并且这个DD报文中携带了LSA的摘要信息,也就是有内容的DD报文
++Exchange~Full++

开始交互LSR、LSU、LSAck报文交互LSA链路状态信息

AR1与AR2会发送LSR请求DD报文下发现的并且在本地LSDB中没有的链路状态信息

|-------|------------------------|
| LSR | 请求LSA,只携带LSA的摘要信息类似于目录 |
| LSU | 对LSA的回应,携带全部的LSA信息内容 |
| LSAck | 对LSU的确认,携带LSA的摘要 |

此时就完成了OSPF邻接关系的建立

++2、开启MTU检查后建立邻接关系++

拓扑

这里我们把AR1的接口MTU配置为1400并在两端开启MTU检查看看是否可以建立OSPF邻接关系

这里我们可以看到AR1发送的DD报文中MTU字段为配置的1400并且邻居状态会卡在Exstart状态,查看错误报告时会发现MTU协商错误

到这里本章内容就到此结束了如果有疑问可以+博主私聊,如果哪里有问题欢迎私聊博主及时更改谢谢大家的观看学习!!!

相关推荐
做个文艺程序员11 分钟前
华为昇腾NPU部署开源大模型全攻略(以Qwen3-8B为例)
人工智能·深度学习·华为
三三有猫1 小时前
代理IP:按流量还是按IP/时长计费更划算?
网络·网络协议·tcp/ip
白鸽梦游指南1 小时前
docker镜像优化
linux·运维·docker
A.A呐1 小时前
【Linux第十九章】网络基础
linux·网络
程序猿追1 小时前
HarmonyOS 6.0 网络请求深度解析:从基础调用到生产级封装
网络·华为·harmonyos
桌面运维家1 小时前
BGP路由优化实战:加速收敛,提升网络稳定性
网络·windows·php
陳10301 小时前
Linux:基础开发工具
linux·运维·服务器
IT界的老黄牛2 小时前
Prometheus + Grafana + AlertManager 监控体系搭建:Docker 一把梭
运维·grafana·prometheus
乌恩大侠2 小时前
【KrakenSDR】MATLAB接口
服务器·网络·matlab
阿干tkl2 小时前
K3s + Harbor 端口冲突问题解决方案(Harbor 使用 80 端口)
运维