OSPF故障排查,这10大技巧是个网工都在用!

中午好,我的网工朋友。

OSPF这个名词网工们都不陌生吧。

OSPF,即开放式最短路径优先(Open Shortest Path First,OSPF)是广泛使用的一种动态路由协议。

它属于链路状态路由协议,具有路由变化收敛速度快、无路由环路、支持变长子网掩码(VLSM)和汇总、层次区域划分等优点。

在网络中使用OSPF协议后,大部分路由将由OSPF协议自行计算和生成,无须网络管理员人工配置,而当网络拓扑发生变化时,协议可以自动计算、更正路由,极大地方便了网络管理。

但如果有些网工朋友在使用时不结合具体网络应用环境不做好细致的规划,OSPF协议的使用效果会大打折扣,甚至引发故障

OSPF路由问题,需要排查的地方较多,今天就帮大家梳理一个清晰的OSPF排查思路,以后可以直接用起来。

今日文章阅读福利:《 OSPF经典学习笔记(62页) 

私信我,发送暗号“学习笔记”,即可获得老网工珍藏的OSPF经典学习笔记一份。

01 为什么需要OSPF?

在OSPF出现前,网络上广泛使用RIP(Routing Information Protocol)作为内部网关协议。

由于RIP是基于距离矢量算法的路由协议,存在着收敛慢、路由环路、可扩展性差等问题,所以逐渐被OSPF取代。

OSPF作为基于链路状态的协议,能够解决RIP所面临的诸多问题。此外, OSPF还有以下优点

✔ OSPF采用组播形式收发报文,这样可以减少对其它不运行OSPF路由器的影响。

✔ OSPF支持无类型域间选路(CIDR)。

✔ OSPF支持对等价路由进行负载分担。

✔ OSPF支持报文加密。

由于OSPF具有以上优势,使得OSPF作为优秀的内部网关协议被快速接收并广泛使用。

02 原理及处理过程

01 路由器类型

先讲一下OSPF协议中常用到的路由器类型,如图所示

表 路由器类型

路由器类型含义
区域内路由器(Internal Router)该类设备的所有接口都属于同一个OSPF区域。
区域边界路由器ABR(Area Border Router)该类设备可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
骨干路由器(Backbone Router)该类设备至少有一个接口属于骨干区域。所有的ABR和位于Area0的内部设备都是骨干路由器。
自治系统边界路由器ASBR(AS Boundary Router)与其他AS交换路由信息的设备称为ASBR。ASBR并不一定位于AS的边界,它可能是区域内设备,也可能是ABR。只要一台OSPF设备引入了外部路由的信息,它就成为ASBR。

02 路由类型

AS区域内和区域间路由描述的是AS内部的网络结构,AS外部路由则描述了应该如何选择到AS以外目的地址的路由。

OSPF将引入的AS外部路由分为Type1Type2两类。

如下表中按优先级从高到低顺序列出了路由类型。

表 路由类型

路由类型含义
Intra Area区域内路由。
Inter Area区域间路由。
第一类外部路由(Type1 External)这类路由的可信程度高一些,所以计算出的外部路由的开销与自治系统内部的路由开销是相当的,并且和OSPF自身路由的开销具有可比性。到第一类外部路由的开销=本设备到相应的ASBR的开销+ASBR到该路由目的地址的开销。
第二类外部路由(Type2 External)这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的开销远远大于在自治系统之内到达ASBR的开销。所以,OSPF计算路由开销时只考虑ASBR到自治系统之外的开销,即到第二类外部路由的开销=ASBR到该路由目的地址的开销。

03 OSPF是如何工作的?

OSPF协议路由的计算过程可简单描述如下:建立邻接关系和路由计算。

1.建立邻接关系

它的过程如下

本端设备通过接口向外发送Hello报文与对端设备建立邻居关系

两端设备进行主/从关系协商DD报文交换

两端设备通过更新LSA完成链路数据库LSDB的同步

此时,邻接关系建立成功

2.路由计算

OSPF采用SPF(Shortest Path First)算法计算路由,可以达到路由快速收敛的目的。

好了,了解完这些基础技术后,我们回到OSPF的故障处理来,首先根据多年工作经验,整理出如下故障排查流程图 :

由于OSPF路由正确的加入到全局路由表,依赖于正确的OSPF路由计算,而OSPF计算路由依赖于正确的OSPF LSDB数据库信息,要建立正确的OSPF LSDB数据库则首先要确保邻居之间能够形成正确的邻接关系。

因此OSPF路由问题的排查整体思路技巧为 :

  • 首先检查OSPF邻居关系
  • 然后检查OSPF LSDB数据库信息
  • 最后检查全局路由表

03 10大解决方案

具体排查如下:

01 OSPF邻居状态

查看两端OSPF邻居状态是否正常,正常情况下DRother之间的邻居关系应该稳定在2-way状态,非DRother之间的邻居关系应该稳定在Full状态

命令:display ospf peer x.x.x.x

例如:通过命令查看,可以确认OSPF的邻居状态是否正常。

02 是否加入OSPF路由表

查看OSPF路由表中是否存在相应路由

命令:display ospf routing x.x.x.x

例如:查看外部路由9.9.9.9是否加入ospf路由表

03 接口使能OSPF及邻居参数是否匹配

1.操作步骤

第一步 确认接口启动OSPF

OSPF的运行是基于设备接口的,如果OSPF没有在接口启动,那么邻居关系肯定无法形成。

在接口上启用OSPF是通过Area视图下的network命令实现的,必须确保network中的网络范围包括需要启动OSPF的接口地址

命令:display ospf interface

例如:通过命令查看接口是否启动OSPF

第二步 确认邻居两端OSPF参数匹配

命令:display ospf error

例如:通过命令查看邻居两端OSPF参数匹配

2.反复使用以上命令显示,对应错误数增加则存在问题相应的参数匹配问题

常见几种错误如下:

(1)OSPF区域配置是否匹配

启动OSPF的接口属于某个区域,同时区域有多种类型,区域依靠区域ID进行标识,如果两边的区域类型或区域ID不匹配,则不会形成邻居关系。

(2)OSPF验证配置是否匹配

OSPF支持报文验证功能,验证分为简单验证MD5验证两种类型,如果两边验证类型或密钥配置不同,则OSPF无法通过验证,邻居关系无法形成。

(3)两端OSPF接口上计时器设定值是否匹配

OSPF通过周期性的交互Hello报文维系邻居关系,Hello报文中携带了Hello报文的发送间隔计时器及邻居失效计时器

如果这些计时器的值在两边的Hello报文中不匹配,那么OSPF的邻居关系无法形成。注意dead timer的值至少应为hello timer值的4倍。

(4)两端OSPF接口类型是否匹配

OSPF邻居关系的正常建立需要确保邻居两端接口的OSPF网络类型一致,否则将无法形成邻居关系。

需要说明的是若邻居双方一端设置为P2P类型另一端设置为广播类型,那么邻居状态可以达到FULL状态,但此时无法计算出路由信息

(5)广播网络中两端接口子网掩码是否相同

OSPF Hello报文中携带子网掩码信息。在广播网络中,如果两端接口属于不同的IP子网,那么邻居关系无法形成。

(6)NBMA网络是否指定邻居

OSPF网络类型为NBMA时必须手工指定邻居的IP地址,否则端口无法发送Hello报文,无法形成邻居关系。

命令:

display current-configuration interface

display current-configuration configuration ospf

例如:通过命令查看接口下的OSPF参数设置是否一致。

04 是否使能静默端口

当接口在OSPF协议视图中被设置为静默端口时,它将不能发送OSPF Hello报文,因此OSPF邻居关系无法形成

命令:

display current-configuration configuration ospf

例如:通过命令查看接口正确启动OSPF并设置为非静默端口,下例中配置了静默端口

05 全局路由表是否正确

查看OSPF路由是否正确加入到全局路由表内,只有加入到全局路由表的路由才能指导数据包的转发。

如果相同的路由信息同时也从其他路由协议学到,为了确保OSPF学习的路由能够最终加入全局路由表,需要确保其优先级为最优

命令:

display ip routing-table x.x.x.x verbose

06 路由信息是否正确发布

若查看OSPF路由表未发现相应路由信息,请首先确认路由信息是否在OSPF中正确发布,对于未进行发布的路由请修改配置将路由正确发布

命令:

display current-configuration configuration ospf

例如:查看10.1.145.4/24的路由信息是否在OSPF中发布

07 确认LSA信息正确

确认OSPF LSDB数据库中是否存在路由计算所需的正确LSA信息。

对于区域内的路由需要检查是否存在该路由始发者的Router LSA,DR的Network LSA(广播网络);

对于区域间的路由需要首先检查是否存在LS ID为该网段的Summary LSA,然后检查是否存在该Summary LSA所对应Adv Rtr的Router LSA

如果外部路由是通过区域内学习到的,需要首先检查是否存在LS ID为该网段的ASE LSA,然后检查是否存在该ASE LSA中所对应Adv Rtr的Router LSA

如果外部路由是通过区域间学到的那么首先检查对应的ASE LSA,然后检查是否存在该ASE LSA所对应Adv Rtr的Asbr Sumarry LSA,最后检查该Asbr Summary LSA所对应Adv Rtr的Router LSA

命令:

display ospf lsdb router

display ospf lsdb network

display ospf lsdb summary

display ospf lsdb asbr

display ospf lsdb ase

例如:通过命令查看外部路由9.9.9.9相关的LSA信息。

例如:通过命令查看区域内路由10.1.145.0/24相关的LSA信息

例如:通过命令查看区域间路由10.1.35.0/24相关的LSA信息

导致OSPF数据库中LSA异常或缺失的原因主要包括如下几种情况,需要从相关的配置或规划角度进行修正:

1. 骨干区域被分割,导致LSA缺失

2. 虚连接配置错误,导致LSA缺失

3. RouterID冲突,导致LSA震荡

08 外部路由FA地址确认

若外部路由携带FA地址确认FA路由为有效路由。

OSPF必须能够通过区域内或区域间路由到达该FA地址,否则该外部路由不会加入OSPF路由表。

例如:外部路由172.1.40.0携带了FA地址为10.1.4.4,通过OSPF内部路由能够学习到10.1.4.4的路由,外部路由172.1.40.0正确加入路由表

09 确认路由过滤策略

排查路由策略过滤路由的配置是否正确。

<HUAWEI> display route-policy policy1Route-policy : policy1  permit : 10 (matched counts: 0)    Match clauses :        if-match acl 2000    Apply clauses :        apply cost 100        apply tag 100

10 确认OSPF路由优先级

查看OSPF的路由优先级

整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/269263.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(二)-向量元素到向量寄存器状态的映射

1. 引言 以下是《riscv-v-spec-1.0.pdf》文档的关键内容&#xff1a; 这是一份关于向量扩展的详细技术文档&#xff0c;内容覆盖了向量指令集的多个关键方面&#xff0c;如向量寄存器状态映射、向量指令格式、向量加载和存储操作、向量内存对齐约束、向量内存一致性模型、向量…

Python爬取网站视频资源

思路&#xff1a; 在界面找到视频对应的html元素位置&#xff0c;观察发现视频的url为https://www.pearvideo.com/video_视频的id&#xff0c;而这个id在html中的href中&#xff0c;所以第一步需要通过xpath捕获到所需要的id 在https://www.pearvideo.com/video_id的页面&…

LabVIEW非接触式电阻抗层析成像系统

LabVIEW非接触式电阻抗层析成像系统 非接触式电阻抗层析成像&#xff08;NEIT&#xff09;技术以其无辐射、非接触、响应速度快的特点&#xff0c;为实时监测提供了新的解决方案。基于LabVIEW的电阻抗层析成像系统&#xff0c;实现了数据的在线采集及实时成像&#xff0c;提高…

记一次dockerfile无法构建问题追溯

我有一个dockerfile如下&#xff1a; ENTRYPOINT ["/sbin/tini"&#xff0c;"-g", "--"] CMD /home/scrapy/start.sh 我原本的用意是先启动tini&#xff0c;再执行下面的cmd命令启动start.sh。 为啥要用tini&#xff1f; 因为我的这个docker…

如何选择程序员职业赛道

目录 前言1 个人技能分析1.1 技术栈评估1.2 经验积累1.3 数据科学能力 2 兴趣与价值观2.1 用户交互与界面设计2.2 复杂问题解决与系统优化 3 长期目标规划4 市场需求分析4.1 人工智能和云计算4.2 前沿技术趋势 5 就业前景5.1 前端在创意性公司中的应用5.2 后端在大型企业中的广…

Windows Docker 部署 MySQL

部署 MySQL 打开 Docker Desktop&#xff0c;切换到 Linux 容器。然后在 PowerShell 执行下面命令&#xff0c;即可启动一个 MySQL 服务。这里安装的是 8.3.0 Tag版本&#xff0c;如果需要安装其他或者最新版本&#xff0c;可以到 Docker Hub 进行查找。 docker run -itd --n…

YOLO v9训练自己数据集

原以为RT-DETR可以真的干翻YOLO家族&#xff0c;结果&#xff0c;&#xff01;&#xff01;&#xff01;&#xff01; 究竟能否让卷积神经网络重获新生&#xff1f; 1.数据准备 代码地址&#xff1a;https://github.com/WongKinYiu/yolov9 不能科学上网的评论区留言 数据集…

Web前端---表格和表单

1.表格概述 表格标记&#xff1a;<table></table> 表格标题标记&#xff1a;<caption></caption> 表头&#xff1a;<th></th>------heading 行标记&#xff1a;<tr></tr>-----r是row 列标记&#xff1a;<td></t…

HQL,SQL刷题,尚硅谷

目录 相关表数据&#xff1a; ​编辑 题目及思路解析&#xff1a; 复杂查询&#xff0c;子查询 1、查询所有课程成绩均小于60分的学生的学号、姓名 2、查询没有学全所有课的学生的学号、姓名 3、查询出只选修了三门课程的全部学生的学号和姓名 总结归纳&#xff1a; 知识补充&a…

JavaWeb Tomcat启动、部署、配置、集成IDEA

web服务器软件 服务器是安装了服务器软件的计算机&#xff0c;在web服务器软件中&#xff0c;可以部署web项目&#xff0c;让用户通过浏览器来访问这些项目。 Web服务器是一个应用程序&#xff08;软件&#xff09;&#xff0c;对HTTP协议的操作进行封装&#xff0c;使得程序…

【C语言】Leetcode 876. 链表的中间节点

主页&#xff1a;17_Kevin-CSDN博客 专栏&#xff1a;《Leetcode》 题目 通过题目的要求可以判断出有两种示例要解决&#xff0c;一种是偶数节点的链表&#xff0c;一种是奇数节点的链表&#xff0c;应对这两种情况我们需要使程序对二者都可以兼容。 解决思路 struct ListNode…

吴恩达机器学习笔记:第5周-9 神经网络的学习2(Neural Networks: Learning)

目录 9.4 实现注意&#xff1a;展开参数9.5 梯度检验9.6 随机初始化9.7 综合起来9.8 自主驾驶 9.4 实现注意&#xff1a;展开参数 在上一段视频中&#xff0c;我们谈到了怎样使用反向传播算法计算代价函数的导数。在这段视频中&#xff0c;我想快速地向你介绍一个细节的实现过…

java八股文复习-----2024/03/03

1.接口和抽象类的区别 相似点&#xff1a; &#xff08;1&#xff09;接口和抽象类都不能被实例化 &#xff08;2&#xff09;实现接口或继承抽象类的普通子类都必须实现这些抽象方法 不同点&#xff1a; &#xff08;1&#xff09;抽象类可以包含普通方法和代码块&#x…

Socket网络编程(四)——点对点传输场景方案

目录 场景如何去获取到TCP的IP和Port&#xff1f;UDP的搜索IP地址、端口号方案UDP搜索取消实现相关的流程&#xff1a;代码实现逻辑服务端实现客户端实现UDP搜索代码执行结果 TCP点对点传输实现代码实现步骤点对点传输测试结果 源码下载 场景 在一个局域网当中&#xff0c;不知…

LabVIEW齿轮传动健康状态静电在线监测

LabVIEW齿轮传动健康状态静电在线监测 随着工业自动化的不断发展&#xff0c;齿轮传动作为最常见的机械传动方式之一&#xff0c;在各种机械设备中发挥着至关重要的作用。然而&#xff0c;齿轮在长期运行过程中易受到磨损、变形等因素影响&#xff0c;进而影响整个机械系统的稳…

BUUCTF------[HCTF 2018]WarmUp

开局一个表情&#xff0c;源代码发现source.php <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php"];if (! isset($page) |…

Vue - 调用接口获取文件数据流并根据类型预览

Vue - 调用接口获取文件数据流并根据类型预览 一、接口返回的数据流格式二. 方法实现1. image 图片类型2. txt 文件类型3. pdf 文件类型 一、接口返回的数据流格式 二. 方法实现 1. image 图片类型 <img :src"imageUrl" alt"" srcset"" /&g…

uipath调用python代码获取网站验证码

用uipath自带的ocr读验证码不是很准确&#xff0c;选择调用python读验证码&#xff0c;需要导入ddddocr&#xff08;3.8以下版本支持ddddocr&#xff09; 用uipath程序将验证码图片保存到本地&#xff08;也可以直接用python处理图片&#xff0c;保存到本地比较简单&#xff0…

XUbuntu22.04之报错:No module named lsb_release(二百一十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

解决uni-app中使用webview键盘弹起遮挡input输入框问题

这个平平无奇的回答&#xff0c;可能是全网最靠谱的解决方案。 这里我用的是vue3 setup .vue文件的方式 <view> <web-view :fullscreen"false" :webview-styles"{top: statusBarHeight40,height:height,progress: {color: green,height:1px } }"…