技福小咖
作者技福小咖2022-06-21 09:25
网络工程师, 技福小咖

OSPF故障排除办法

字数 5500阅读 1692评论 0赞 0

由于OSPF(开放式最短路径优先)路由正确的加入到全局路由表,依赖于正确的OSPF路由计算,而OSPF计算路由依赖于正确的OSPF LSDB数据库信息,要建立正确的OSPF LSDB数据库则首先要确保邻居之间能够形成正确的邻接关系. OSPF路由问题的排查整体思路为:

故障问题大致分为三类:

第一类:检查OSPF邻居关系的建立问题;

第二类:检查OSPF LSA的泛洪问题,检查OSPF LSDB数据库信息;

第三类:检查OSPF路由的计算问题,检查全局路由表。

OSPF故障排除办法

OSPF故障排除办法

故障排查流程图:

OSPF故障排除办法

OSPF故障排除办法

一、OSPF邻居关系建立问题

OSPF建立邻接关系的三大条件:

1) 两邻居路由器必须在同一物理链路上。

使用show cdp neighbor命令查看CDP邻居关系。如果发现没有CDP邻接关系说明物理连接有问题,你得去查看接口状态是否为UP?是否激活接口?是否物理线路有问题?如果能看到CDP邻居关系说明物理链路没有问题。进入下一步。

2) 相连路由器都必须加入OSPF。

通过show ip protocols命令查看路由器接口是否宣告到相应区域内。

或者用debug ip ospf hello命令查看路由器哪些接口没有发HELLO包,就说明这个接口没有加入OSPF。找到问题马上更正。如果这一步也没问题,进入下一步。

3) 相连路由器的6大HELLO包参数是否一样?

a) Network/mask

b) Hello/dead interval

c) Network type

d) Area-id

e) Area-type

f) Authentication-type

有时路由器之间无法建立起邻接关系,这个时候就无法传递LSA,也就无法传递路由,生成路由表,所以在这里分析一下OSPF无法建立起来邻接关系的几个原因:

OSPF故障排除办法

OSPF故障排除办法

a) 检查接口网段是否一致。 接口两端掩码的不一致 ,broadcasst和nbma接口应该在同一网段。链路两端能ping通。并且区域ID,区域类型应一致。如果网络类型是P2P,则掩码不一致也可以建立邻居关系,对于MA网络这个时候会出现能ping通但是无法建立邻居。

b) 检查接口优先级是否有非0,broadcast和NBMA需要保证至少接口优先级是非0的,保证能选举出DR,否则只能到2-way状态。使用display ospf interface查看。

c) 检查各路由器的Router-id是否各不相同,同一AS内所有的路由器router-id应该互不相同。否则会发生路由振荡,用display ospf brief进行查看。

d) 接口timer等参数是否一致。hello time和dead time不匹配,使用display ospf interface verbose进行查看参数查看。

e) 接口中使用ospf timer hello 和ospf timer dead进行设置。

f) p2p和broadcast类型接口发送hello报文的时间间隔为10s,死亡时间为4倍=40s,p2mp和NBMA类型接口发送hello报文时间间隔为30s,dead 时间为4倍=120s。

g) 检查接口的认证信息是否一致。接口和区域认证以接口认证优先,没有则不认证,认证配置需一致才能达到Full状态。

h) 检查ospf报文是否能正常接收,在模式下,开启terminal debugging 再进行监听debugging ospf packet.或debugging ospf event,或者查看display ospf error的错误信息统计,一切正常查看接口的GTSM(通用安全保护机制,检查TTL是否在预先设置好的范围内,一些合法报文会使得系统异常繁忙,目的为了避免CPU过载)配置是否正确,是否被错误丢弃。通过debugging ip packet 来确认IP报文是否被正常转发。

OSPF故障排除办法

OSPF故障排除办法

排查OSPF邻居关系建立故障常用命令有以下:

display ospf peer //查看邻居关系

display ospf peer brief //查看邻居关系简要信息

reset ospf counter //清空ospf计数器

display ospf error //查看错误报文信息

display ospf routing router-id //查看router-id

reset ospf process //重启ospf进程

dispay ospf interface xx //查看xx接口ospf配置信息,包括Timer,DR/BDR,优先级,Cost等信息。

interface状态下

ospf timer hello xx //设置接口的hello报文时间

ospf authentication-mode simple/md5 //设置接口下的认证类型

osps authentication md5 xx xx//设置md5的密钥

总的来说,在实际排查OSPF邻居关系无法发建立的主要思路就在使用display ospf error 命令,查看收到的错误报文信息,根据错误报文信息,对故障进行定位。

二、OSPF全局路由表计算问题

(1)是否加入OSPF路由表

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

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

(2)全局路由表是否正确

查看OSPF路由是否正确加入到全局路由表内,只有加入到全局路由表的路由才能指导数据包的转发。如果相同的路由信息同时也从其他路由协议学到,为了确保OSPF学习的路由能够最终加入全局路由表,需要确保其优先级为最优

命令:display ip routing-table x.x.x.x verbose

(3)路由信息是否正确发布

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

命令:display current-configuration configuration ospf

OSPF故障排除办法

OSPF故障排除办法

OSPF路由三张表:

(1)OSPF 邻居表

(2)OSPF LSDB表

LSA age 、seq 、checksum 用于LSA新旧比较

  • .比较最大序列号(正、负)
  • .最大的无符号校验和
  • .LSA age ,当LSA age 只差大于15分钟,LSA age 小的最新

    (3)路由表

三、OSPF LSA的泛洪问题

OSPF路由器会创建一个路由选择表,表内包括网络内部的路由最短路径。当一个路由组件发生故障时,路由过程中会自动绕过它。

路由器基于他们的链路状态数据库来创建这些路由选择表,他们通过网络内其它路由器的LSA(链路状态广播)来构建链路状态数据库。LSA(链路状态广播)是网络维护当前路由流量信息的手段。

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

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

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

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

d) 如果外部路由是通过区域间学到的那么首先检查对应的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

OSPF故障排除办法

OSPF故障排除办法

在网络中,一台DR路由器必须通告多路访问链路和所有与这条链路相连的路由器,而其他类型的路由器将不需要通告这种类型的信息。由于OSPF协议定义了多种路由器的类型,因而定义多种LSA通告的类型也是必要的。

目前在OSPF主要是以下7种类型LSA。

1、网络LSA (Network LSA)

由区域内的DR或BDR路由器产生,报文包括DR和BDR连接的路由器的链路信息。

网络LSA也仅仅在产生这条网络LSA的区域内部进行泛洪。

LSA传播范围:本域(存在以太网络连接的域)内传递

LSA通告路由器:DR的Router ID

LSA包含的内容:MA网络中的路由器以及本网的掩码信息和DR路由器本身的Router ID

2、路由器LSA (Router LSA)

由区域内所有路由器产生,并且只能在本个区域内泛洪广播。这些最基本的LSA通告列出了路由器所有的链路和接口,并指明了它们的状态和沿每条链路方向出站的代价。

LSA传播范围:本域内传递

LSA通告路由器:本路由器的Router ID

LSA链路状态ID:本路由器的Router ID

LSA包含的内容:本路由器的直连邻居,以及直连接口的信息

3、网络汇总LSA (Network summary LSA)

由ABR产生,可以通知本区域内的路由器通往区域外的路由信息。

在一个区域外部但是仍然在一个OSPF自治系统内部的缺省路由也可以通过这种LSA来通告。

如果一台ABR路由器经过骨干区域从其他的ABR路由器收到多条网络汇总LSA,那么这台始发的ABR路由器将

会选择这些LSA通告中代价最低的LSA,并且将这个LSA的最低代价通告给与它相连的非骨干区域。

LSA传播范围:域间路由,能泛洪到整个AS中,始发路由器除外。

LSA通告路由器:ABR的Router ID(经过一个ABR,就会改为这个ABR的Router ID)

LSA链路状态ID:网络号

LSA包含的内容:本区域中的路由信息,包括网络号和掩码

4、自治系统外部LSA (Autonomous system external LSA)

由ASBR产生,告诉相同自治区的路由器通往外部自治区的路径。

自治系统外部LSA是惟一不和具体的区域相关联的LSA通告,将在整个自治系统中进行泛洪。

LSA传播范围:域外路由,不属于某个区域,一个LSA即是一条路由信息

LSA通告路由器:ASBR的Router ID,通告路由器不会发生改变

LSA链路状态ID:网络号

LSA包含的内容:将外部自治系统传递进来,包含着域外的路由信息

5、NSSA外部LSA (NSSA External LSA) 5、NSSA外部LSA (NSSA External LSA)

由ASBR产生,几乎和LSA 5通告是相同的,但NSSA外部LSA通告仅仅在始发这个NSSA外部LSA通告的非纯末梢区域内部进行泛洪。

在NSSA区域中,当有一个路由器是ASBR时,不得不产生LSA 5报文,但是NSSA中不能有LSA 5报文,所有ASBR产生LSA 7报文,发给本区域的路由器。

6、组成员LSA (Group membership LSA)

  • 目前不支持组播OSPF (MOSPF协议)

7、ASBR汇总LSA (ASBR summary LSA)

也是由ABR产生,但是它是一条主机路由,指向ASBR路由器地址的路由。

LSA传播范围:泛洪到整个AS中,(把ASBR的Router ID传播到其他区域,让其他区域的路由器得知ASBR的位置。)

LSA通告路由器:ABR的Router ID(经过一个ABR,就会改为这个ABR的Router ID)

LSA链路状态ID:ASBR的Router ID

LSA包含的内容:本区域中的路由信息,包括网络号和掩码

注意: 在ASBR直连的区域内,不会产生4类的LSA,因为ASBR会发出1类的LSA,其中会指明自己是ASBR。

OSPF的典型故障总结

1) OSPF协议规定,不同区域(Area)之间的边界是路由器,而不是链路。两台路由器之间的链路,必须处于统一区域(Area),当同一链路的两个接口地址被宣告到不同区域时,此两台链路所处的路由器无法建立邻居关系。

2) 如果相邻路由器的Hello报文中的Hello Timer的时间不一致(OSPF Hello Timer默认为10s,Dead为40s,可以在接口下更改),则将导致双方无法建立邻居关系。

3) 如果两台路由器的Router-ID发生了冲突,则他们的邻居关系是无法建立的。

4) 在OSPF协商建立邻居关系的过程中,链路两端的端口认证类型不匹配时(例:一端为明文认证,一端为MD5加密认证),将导致邻居关系无法建立。

5) 在OSPF的虚链路上也会交换Hello报文,但与普通的Hello报文不一样,虚链路的Hello报文是单播报文而并非是组播报文。如果需要建立虚链路的双方所发送的Hello报文中的认证类型不匹配,则双方不能建立虚链路关系。

6) 在OSPF的Hello报文中,携带了接口的掩码信息,如果链路两端接口的掩码长度不匹配,则邻居关系无法建立。

解决故障要先找到问题所在,整个排错过程都离不开OSPF的原理。其实只要大家非常熟悉OSPF的原理就一定能排除OSPF故障!其他路由交换技术也是一个道理。所以大家一定要重视理论的学习,结合实践就一定能学好。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

X社区推广