HCNA Routing&Switching之动态路由协议OSPF建立邻居的条件
前文我们了解了OSPF的router id、数据包结构、类型、不同类型的数据包作用以及OSPF状态机制,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15027272.html;今天我们来了解下OSPF建立邻居的条件;
我们知道OSPF动态路由协议能够正常学习到别的路由器的路由,最重要的是相邻的路由器必须建立起邻居关系,然后才能学习到对方的路由;那么两个相邻的路由器,怎么样才能建立起邻居呢?
1、router id必须唯一;
实验:如下实验拓扑,把两个路由器的router id都设置成5.5.5.5,两者是否建立起邻居?

配置R1

配置R2

提示:此时把R2的router id和R1都配置成5.5.5.5,ospf进程给我们提示了一条router id冲突的日志;此时两者邻居关系并没有建立起来;说明router id不唯一,是建立不起邻居关系的;
验证:把R2的router id修改成2.2.2.2 ,然后重启ospf进程,看看对应邻居是否能够建立起来呢?
<R2>sys
Enter system view, return user view with Ctrl+Z.
[R2]ospf 1 router-id 2.2.2.2
Jul 19 2021 22:01:28-08:00 R2 %%01OSPF/4/CONFLICT_ROUTERID_INTF(l)[0]:OSPF Router id conflict is detected on interface. (ProcessId=256, RouterId=5.5.5.5, AreaId=5.0.0.0, InterfaceName=GigabitEthernet0/0/0, IpAddr=2.0.0.12, PacketSrcIp=1.0.0.12)
[R2]ospf 1 router-id 2.2.2.2
Info: The configuration succeeded. You need to restart the OSPF process to validate the new router ID.
[R2-ospf-1]q
[R2]q
<R2>reset ospf process
Warning: The OSPF process will be reset. Continue? [Y/N]:y
<R2>sys
Enter system view, return user view with Ctrl+Z.
[R2]
Jul 19 2021 22:01:46-08:00 R2 %%01OSPF/4/NBR_CHANGE_E(l)[1]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=1.0.0.12, NeighborEvent=HelloReceived, NeighborPreviousState=Down, NeighborCurrentState=Init)
[R2]
Jul 19 2021 22:01:46-08:00 R2 %%01OSPF/4/NBR_CHANGE_E(l)[2]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=1.0.0.12, NeighborEvent=2WayReceived, NeighborPreviousState=Init, NeighborCurrentState=2Way)
[R2]
Jul 19 2021 22:01:46-08:00 R2 %%01OSPF/4/NBR_CHANGE_E(l)[3]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=1.0.0.12, NeighborEvent=AdjOk?, NeighborPreviousState=2Way, NeighborCurrentState=ExStart)
[R2]
Jul 19 2021 22:01:46-08:00 R2 %%01OSPF/4/NBR_CHANGE_E(l)[4]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=1.0.0.12, NeighborEvent=NegotiationDone, NeighborPreviousState=ExStart, NeighborCurrentState=Exchange)
[R2]
Jul 19 2021 22:01:47-08:00 R2 %%01OSPF/4/NBR_CHANGE_E(l)[5]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=1.0.0.12, NeighborEvent=ExchangeDone, NeighborPreviousState=Exchange, NeighborCurrentState=Loading)
[R2]
Jul 19 2021 22:01:47-08:00 R2 %%01OSPF/4/NBR_CHANGE_E(l)[6]:Neighbor changes event: neighbor status changed. (ProcessId=256, NeighborAddress=1.0.0.12, NeighborEvent=LoadingDone, NeighborPreviousState=Loading, NeighborCurrentState=Full)
[R2]dis ospf peer brief OSPF Process 1 with Router ID 2.2.2.2
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.5 GigabitEthernet0/0/0 5.5.5.5 Full
----------------------------------------------------------------------------
[R2]
提示:可以看到我们修改了R2的router id 重置了ospf以后,对应就和R1建立起邻居;
2、区域id必须相同
验证:还是上述实验拓扑,我们把R2的区域id修改为2,看看对应邻居关系是否还会一直建立呢?

提示:可以看到把R2的区域id 修改为2,对应R2并没有和R1建立起邻居关系,其原因是R1的hello包只会在area5这个区域泛洪,而R2的hello包只会在area2这个区域泛洪,所以R1只会和area5区域中的路由器建立邻居,不会和area2区域中的路由器建立邻居;
3、Hello/Dead时间间隔一致
验证:我们把上述实验中R2的hello包发送时间间隔修改为5秒一次,看看对应R1和R2是否会建立起邻居呢?

提示:默认情况hello包是每隔10秒发一次,死亡时间是发送间隔时间的4倍;修改hello包的发送间隔时间,需要进入到对应的接口进行修改;其次修改了hello包发送间隔时间以后,它不会立马断开,而是要等,等40s,等到hello包死亡,此时ospf进程会给我们日志说接口参数不匹配,导致邻居从full状态转变为down状态;如下图

验证:我们把R1ospf接口时间和R2修改成一样,看看对应邻居是否会重新建立起来呢?

提示:我们修改了R1对应接口上ospf发送hello包的间隔时间和R2接口发送hello包间隔时间一样以后,对应R1就和R2迅速建立起邻居;
4、如果配置了认证,对应认证必须一致
验证:在上述实验中我们把R2上运行的ospf配置上认证,看看是否还能和R1建立起邻居?

提示:可以看到我们在R2的ospf区域中配置了认证以后,对应邻居关系就从full状态转变为down状态,说明如果ospf配置了认证,对应都应该配置认知,否则不予建立邻居关系;
验证:在R1的相关接口配置和R2相同模式的相同密码认证,看看对应邻居关系是否会恢复呢?

提示:可以看到当R1的相关接口配置了和R2相同认证模式,相同认证密码以后,对应邻居关系又迅速建立起来了;这里提一下,ospf的认证的配置可以在接口上配置,也可以在ospf进程区域中配置,不管是在接口上配置还是在区域中配置认证,只要模式,对应模式相关参数和密码相同,都能通过认证;上述截图中md5 后面的数字是key的值,两边配置认证,这个key也必须相同,否则认证会失败;
5、子网掩码和网络地址一致(以太网环境)
验证:把上述实验中的R2的g0/0/0接口的ip地址掩码修改为8,看看对应邻居关系是否还会存在呢?

提示:我们修改了R2 上的g0/0/0接口地址的掩码以后,立刻R1和R2的邻居关系就down了,这里只是告诉我们接口发生了变化;
抓包看看,对应R1和R2发送到hello包有什么不同?

提示:可以看到修改R2接口的掩码以后,对应R2发送到hello包,对应掩码就变成了255.0.0.0,而R1的接口掩码没有发生变化,还是255.255.255.0;所以当两个路由器发送到hello包中掩码不一致也会导致邻居关系建立不起来;其实掩码的主要作用就是用来计算网络地址,网络地址的作用就是确定两个ip地址是否是同一网络,如果不在同一网络,则无法建立邻居;
如何判断两个ip地址是否是同一网络呢?
首先我们需要把a地址同自身掩码计算出网络地址x,然后把a地址的掩码和b地址做与运算,算出网络地址为y,如果x=y我们就说a和b在同一网络;反之a和b不在同一网络;这里一定要记住判断a和b是否在同一网络中,需要把a地址同a的掩码进行计算得出网络地址,同时b地址也需要同a的掩码进行计算;同样的道理,我们如果要判断b和a是否在同一网络中,就需要把b的地址同b的掩码进行计算得出网络地址,a地址同b的掩码进行计算得出网络地址,如果两者计算出来的网络地址一样,则表示两者在同一网络中,反之亦然;这样一来就存在a和b在同一网络,但b和a就不一定在同一网络;
示例:a主机的地址是192.168.0.129/24 b主机地址是192.168.0.3/27
a和b在同一网络,因为a的网络地址是192.168.0.0 b的网络地址是192.168.0.0(b的网络地址此时需要同a的掩码进行与运算)
b和a不再同一网络,因为b的网络地址是192.168.0.0 a的网络地址是192.168.0.128(此时a网络地址就需要同b的掩码进行与运算)
通过上述的解释我们在以太网环境中跑ospf,两个接口的ip地址的掩码和网络地址必须一致才能建立起邻居;
6、末梢区域设置一致
末梢区域设置表现在ospf的数据包中的字段就是外部路由选项,如下图

提示:默认情况两个路由器红框中的字段是一样的;
验证:设置R2的ospf区域为nssa区域,看看对应邻居是否会down?

提示:可以看到我们一旦把R2中ospf的区域设置为nssa区域以后,对应邻居关系就down了;这里要提示一下,骨干区域是不允许设置为nssa区域;
抓包分析
R2发送的hello包

R1发送的hello包

从上面的抓包来看,在R2的外部路由选项中,对应nssa区域字段被置为1,和R1中的字段不同,所以两者信息不匹配,所以两者之前建立好的邻居关系会down掉;
验证:把R1的区域也设置成nssa区域,看看对应邻居是否会恢复呢?

提示:可以看到把R1ospf区域也修改为nssa区域,对应邻居又恢复正常;这是因为R1和R2都是nssa区域,所以对应外部选项对应字段的值都是一样,所以邻居建立了;
HCNA Routing&Switching之动态路由协议OSPF建立邻居的条件的更多相关文章
- HCNA Routing&Switching之动态路由协议OSPF基础(一)
前文我们了解了基于路径矢量算法的动态路由协议RIP防环以及度量值的修改相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15012895.html:今天我 ...
- HCNA Routing&Switching之动态路由协议OSPF DR和BDR
前文我们了解了OSPF建立邻居关系的条件,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15032907.html:今天我们来聊一聊OSPF中的DR和BDR: ...
- HCNA Routing&Switching之动态路由协议OSPF基础(二)
前文我们主要了解了OSPF的区域.区域分类.路由器类型.OSPF的核心工作流程,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/15025533.html:今天 ...
- HCNA Routing&Switching之动态路由协议RIP
前文我们了解了动态路由的基本概念,以及动态路由和静态路由的区别,优缺点,动态路由的分类,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14995317.html ...
- HCNP Routing&Switching之动态路由协议IS-IS基础
前文我们了解了OSPF的特殊区域相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15236330.html:今天我们来聊一聊另一动态路由协议IS-IS相 ...
- HCNA Routing&Switching之动态路由基本概念
前文我们了解了静态路由的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14965433.html:今天我们来聊一聊动态路由相关概念: 首先我们要清楚什 ...
- HCNA Routing&Switching之OSPF缺省路由发布
前文我们了解了OSPF的度量值,以及基础配置命令的总结,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15069632.html:今天我们来聊一聊在ospf里动 ...
- HCNA Routing&Switching之OSPF度量值和基础配置命令总结
前文我们了解了OSPF的网络类型,OSPF中的DR和BDR的选举规则.作用等相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15054938.html: ...
- 1.4-动态路由协议OSPF⑥
OSPF Network Type/网络类型 (Run Mode/运行模式) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 物理 ...
随机推荐
- 项目记事【Git】:git pull 出错 error: cannot lock ref 'refs/remotes/origin/feature/hy78861': is at d4244546c8cc3827491cc82878a23c708fd0401d but expected a6a00bf2e92620d0e06790122bab5aeee01079bf
今天 pull 代码的时候碰到以下问题(隐去了一些公司敏感信息): XXX@CN-00012645 MINGW64 /c/Gerrard/Workspace/XXX (master) $ git pu ...
- 批量执行异步任务CompletionService
批量执行异步任务CompletionService 核心思想,就是将异步结果放入到阻塞队列中,然后再消费队列,实现异步任务批量执行 接口方法说明 Future<V> submit(Call ...
- CVPR2019目标检测论文看点:并域上的广义交
CVPR2019目标检测论文看点:并域上的广义交 Generalized Intersection over Union Generalized Intersection over Union: A ...
- MegEngine推理性能优化
MegEngine推理性能优化 MegEngine「训练推理一体化」的独特范式,通过静态图优化保证模型精度与训练时一致,无缝导入推理侧,再借助工业验证的高效卷积优化技术,打造深度学习推理侧极致加速方案 ...
- halcon——缺陷检测常用方法总结(光度立体)
引言 机器视觉中缺陷检测分为一下几种: blob+特征(官方示例surface_scratch.hdev) blob+差分+特征(官方示例pcb_inspection.hdev) 光度立体 特征训练 ...
- Qt项目ui文件中新添加的控件在代码中不识别的问题解决
今天在学Qt框架的信号槽,然后发现在ui中加的控件,通过ui-> 找不到,没有识别,于是上网查找了一下问题 解决方法 添加ui控件后,执行程序,退出程序,将debug目录下的ui_XXXX.h拷 ...
- 【逆向&渗透实战】Dump内存中的Dex_我是如何脱壳某公司加固过的Apk并利用其API渗透对方数据库
/作者:Kali_MG1937 QQ:3496925334 CNBLOG博客号:ALDYS4/ 某天午睡,朦朦胧胧梦到给学校提供建站模板的公司有个注射点 梦醒后,我凭借着零散的记忆日进了对面的数据库, ...
- 【题解】Luogu P3110 [USACO14DEC]驮运Piggy Back
[题解]Luogu P3110 [USACO14DEC]驮运Piggy Back 题目描述 Bessie and her sister Elsie graze in different fields ...
- CosId 通用、灵活、高性能的分布式 ID 生成器
CosId 通用.灵活.高性能的分布式 ID 生成器 介绍 CosId 旨在提供通用.灵活.高性能的分布式系统 ID 生成器. 目前提供了俩大类 ID 生成器:SnowflakeId (单机 TPS ...
- excel vba的inputBox函数
Sub test1() Dim h Dim j As Integer j = 0 Dim n1 As Integer '分行单元格在第几列 Dim m1 As Integ ...