前文我们了解了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建立邻居的条件的更多相关文章

  1. HCNA Routing&Switching之动态路由协议OSPF基础(一)

    前文我们了解了基于路径矢量算法的动态路由协议RIP防环以及度量值的修改相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15012895.html:今天我 ...

  2. HCNA Routing&Switching之动态路由协议OSPF DR和BDR

    前文我们了解了OSPF建立邻居关系的条件,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15032907.html:今天我们来聊一聊OSPF中的DR和BDR: ...

  3. HCNA Routing&Switching之动态路由协议OSPF基础(二)

    前文我们主要了解了OSPF的区域.区域分类.路由器类型.OSPF的核心工作流程,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/15025533.html:今天 ...

  4. HCNA Routing&Switching之动态路由协议RIP

    前文我们了解了动态路由的基本概念,以及动态路由和静态路由的区别,优缺点,动态路由的分类,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14995317.html ...

  5. HCNP Routing&Switching之动态路由协议IS-IS基础

    前文我们了解了OSPF的特殊区域相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15236330.html:今天我们来聊一聊另一动态路由协议IS-IS相 ...

  6. HCNA Routing&Switching之动态路由基本概念

    前文我们了解了静态路由的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14965433.html:今天我们来聊一聊动态路由相关概念: 首先我们要清楚什 ...

  7. HCNA Routing&Switching之OSPF缺省路由发布

    前文我们了解了OSPF的度量值,以及基础配置命令的总结,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15069632.html:今天我们来聊一聊在ospf里动 ...

  8. HCNA Routing&Switching之OSPF度量值和基础配置命令总结

    前文我们了解了OSPF的网络类型,OSPF中的DR和BDR的选举规则.作用等相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15054938.html: ...

  9. 1.4-动态路由协议OSPF⑥

    OSPF Network Type/网络类型     (Run Mode/运行模式) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 物理 ...

随机推荐

  1. 【转载】NBU异机恢复oracle

    通过NBU将Oracle恢复到异机上... 2 1.1       备份任务检查: 2 1.2       数据库空间检查... 2 1.3       恢复服务器(testdb)软件安装:... 3 ...

  2. AI解决方案:边缘计算和GPU加速平台

    AI解决方案:边缘计算和GPU加速平台 一.适用于边缘 AI 的解决方案 AI 在边缘蓬勃发展.AI 和云原生应用程序.物联网及其数十亿的传感器以及 5G 网络现已使得在边缘大规模部署 AI 成为可能 ...

  3. 适用于Linux 2的Windows子系统上的CUDA

    适用于Linux 2的Windows子系统上的CUDA Announcing CUDA on Windows Subsystem for Linux 2 为了响应大众的需求,微软在2020年5月的构建 ...

  4. CVPR2020:点云分析中三维图形卷积网络中可变形核的学习

    CVPR2020:点云分析中三维图形卷积网络中可变形核的学习 Convolution in the Cloud: Learning Deformable Kernels in 3D Graph Con ...

  5. RGB Color Codes Chart

    RGB Color Codes Chart RGB颜色空间 RGB颜色空间或RGB颜色系统,从红色.绿色和蓝色的组合中构造所有颜色. 红色.绿色和蓝色各使用8位,它们的整数值从0到255.这使得256 ...

  6. Python“九九乘法表”

    用Python语言编程,使用双重循环语句输出"九九乘法表". for i in range(1, 10): # 控制行 for j in range(1, i+1): # 控制列 ...

  7. JVM-gcRoots 和 强引用,软引用, 弱引用, 虚引用, 代码演示和应用场景

    什么是垃圾? 什么是gcRoots, 谈谈你对 强, 软, 弱 , 虚引用的理解, 他们的应用场景 jvm采用可达性分析法: 从gcRoots集合开始,自上向下遍历,凡是在引用链上的对象,都不是垃圾, ...

  8. APP测试的主要内容

    一.功能性测试:依据需求相关的文档编写测试用例进行测试 二.兼容性测试 系统版本:Android,ios 分辨率 网络情况 可用工具:testin 三.安装,升级,卸载测试 首次安装,覆盖安装,卸载后 ...

  9. 『居善地』接口测试 — 12、Moco框架介绍

    目录 1.Mock功能介绍 2.Moco框架介绍 3.Moco框架在接口测试中的作用 4.Moco框架的优点 5.Moco框架的下载与启动 (1)Moco框架的下载 (2)Moco框架的启动 1.Mo ...

  10. 【VBA】一些判断

    判断是否为空: Sub 测试() If IsEmpty(Range("A100000")) Then Debug.Print "空的" End If End S ...