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.hqwc.cn/news/512409.html

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

相关文章

光纤激光焊接机:现代焊接工艺的变革引领者

随着科技的不断进步&#xff0c;传统焊接工艺正经历着一场革命性的变革。在这场变革中&#xff0c;光纤激光焊接机凭借其独特的技术优势&#xff0c;正逐渐崭露头角&#xff0c;成为现代焊接工艺的革新者。 光纤激光焊接机是一种采用激光束作为热源&#xff0c;通过聚焦镜将激光…

现代信号处理学习笔记(三)信号检测

通过观测数据判断信号是否存在&#xff0c;这一问题称为信号检测。 目录 前言 一、统计假设检验 1、信号检测的基本概念 2、信号检测理论测度 比率测度 概率测度 3、决策理论空间 二、概率密度函数与误差函数 1、概率密度函数 2、误差函数与补余误差函数 三、检测概…

容器云平台巡检实战:运维进阶技巧与策略

1 docker容器日常巡检 通过以下方式进行检查&#xff1a; 1.1 docker/podman ps查看容器状态 Docker/podman ps -a 查看容器状态STATUS&#xff1a; Exited(0)&#xff1a;表示容器正常退出 Exited(其他数字)&#xff1a;容器异常退出&#xff0c;需要通过log 查看原因 Up…

7款炫酷的前端动画特效分享(三)(附效果图及在线演示)

分享7款好玩的前端动画特效 其中有CSS动画、SVG动画、js小游戏等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 CSS3模仿四季交替动画 基于HTML5CSS3实现的卡通风格一年四季交替动画特效 以下效果图只能体现框架的…

redis09 集群(cluster)

思维草图 为什么要使用集群 单台redis内存容量的限制单台redis并发写量太大有性能瓶颈 redis集群认识 redis集群是对redis的水平扩容&#xff0c;即启动N个redis节点&#xff0c;将整个数据分布存储在这个N个节点中&#xff0c;每个节点存储总数据的1/N。 如下图&#xff1…

Chain-of-thought prompting(链式思考提示)

1.大模型“涌现”的思维链 最近 AI 大厂的开发人员和高校的 NLP 研究人员&#xff0c;都在琢磨&#xff0c;怎么让大模型“涌现”。 所谓“涌现”&#xff0c;在大模型领域指的是当模型突破某个规模时&#xff0c;性能显著提升&#xff0c;表现出让人惊艳、意想不到的能力。比如…

vue点击按钮同时下载多个文件

点击下载按钮根据需要的id调接口拿到返回需要下载的文件 再看返回的数据结构 数组中一个对象&#xff0c;就是一个文件&#xff0c;多个对象就是多个文件 下载函数 // 下载tableDownload(row) {getuploadInventoryDownload({ sysBatch: row.sysBatch, fileName: row.fileName…

针对conan install下载source失败问题解决

ps:下面操作是Linux系统&#xff0c;针对win操作系统也适合 问题现象 在运行conan install时&#xff0c;本地没有对应的库的缓存&#xff0c;conan会自动从conan center下载&#xff0c;可能会出现以下情况&#xff0c;重试多次&#xff0c;仍然是报错。 libssh2/1.11.0: C…

[项目设计] 从零实现的高并发内存池(三)

&#x1f308; 博客个人主页&#xff1a;Chris在Coding &#x1f3a5; 本文所属专栏&#xff1a;[高并发内存池] ❤️ 前置学习专栏&#xff1a;[Linux学习] ⏰ 我们仍在旅途 ​ 目录 4.CentralCache实现 4.1 CentralCache整体架构 4.2 围绕Span的相关设计…

有名信号量、网络协议模型、UDP编程发送端

我要成为嵌入式高手之3月5日Linux高编第十五天&#xff01;&#xff01; ______________________________________________________ 学习笔记 有名信号量 1、创建semget #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> int semget(…

在Vue中根据Url下载地址生成二维码展示在界面上

最近来了一个新需求&#xff0c;就是在网页页面上点击按钮不在是直接下载app安装包&#xff0c;需要支持手机扫码下载app&#xff0c;避免他们需要先从电脑上下载&#xff0c;然后传到微信&#xff0c;然后手机从微信上下载下来&#xff0c;得了&#xff0c;需求就是根据后端传…

TikTok黑屏怎么办?快来试试这5个方法!

当今社交媒体的热潮中&#xff0c;TikTok跨境电商占据了重要的一席之地。然而&#xff0c;频繁的黑屏、app打开没有内容显示却成了许多用户的头疼问题。如果你也正在寻找TikTok黑屏的解决办法&#xff0c;那么本文将为你提供5种可能的解决方案。无论你是在使用TikTok国际版黑屏…