当前位置: 首页 > 科技观察

OSPF选路故障处理案例

时间:2023-03-13 13:28:59 科技观察

本案例涉及特定情况下的OSPFLSA选择。这个问题与FA地址和NSSA的一些特性有关。通过对故障的一一分析,对相关知识也进行了总结。以下为真实案例,为保护客户数据,对路由器输出信息进行了修改。故障处理步骤R1、R2、R3为NSSA区域,R1、R2为骨干区域。将网络10.10.119.0/27重新分配到R3上的NSSA。客户端发现R2正常从R3学到NSSA路由,而R1从R2学到E1路由。1、收集信息,确认问题,发现R1和R2都有TYPE7和TYPE5路由,但是R1选择了TYPE5,R2选择了NSSA。为什么?[1]R1#showospfdatabaseexternal10.10.119.0OSPF路由器ID(10.10.191.131)(ProcessID18181)Type-***SExternalLinkStatesRoutingBitSetonthisLSALSage:652Options:(NoTOS-capability,DC)LS类型:AS外部链路链路状态ID:10.10.119.0(外部网络号)广告路由器:10.10.191.132LS序列号:80000399校验和:0x3768长度:36网络掩码:/27度量类型:1(直接与链路状态度量相比较)TOS:0Metric:1Forward1Ralter1Address:20.#shospfdatabasenssa-external10.10.119.0OSPF路由器ID(10.10.191.131)(ProcessID18181)Type-7ASExternalLinkStates(Area7)LSage:312Options:(NoTOS-能力,类型7/5转换,DC)LS类型:AS外部链路链路状态ID:10.10.119.0(外部网络编号)广告路由器:10.10.72.89LS序列号:8000fe93校验和:0x240长度:36网络掩码:/27度量类型:1(比较abledirectlytolinkstatemetric)TOS:0Metric:1ForwardAddress:10.10.72.89ExternalRouteTag:12.根据数据库中的信息,R1学习到的E1路由应该在R2将TYPE7转换为TYPE5后发送给R1,以备小心查看路由表,发现虽然R1从R2那里学到了路由,但是下一跳还是经过R3,为什么?[2]这些端口都是NSSA的,请问NSSA有5种路由吗?[3]R2#showroute10.10.119.0deTag1,typeNSSAextern110.10.183.142,from10.10.72.89,viaTenGigE0/0/0/010.10.183.98,from10.10.72.89,viaTenGigE0/1/2/0R1#showroute110.1deTag1,类型extern110.10.183.74,从10.10.191.132,通过TenGigE0/2/0/010.10.183.138,从10.10.191.132,通过TenGigE0/3/2/0R1#showospfinterten0/2/0/0|iAreaInternetAddress10.10.183.73/30,Area7R1#R1#showospfinterten0/3/2/0|iAreaInternetAddress10.10.183.137/30,Area73.首先R1和R2是ABR,所以即使有5种路由也是可以的,那为什么从R2学到的路由反而是从R3走呢?[4]因为有FA地址,简单回忆一下FA地址:oOSPF特有的,作用主要是告诉域内的路由器在特定场合,访问域外路由时不要找ASBR,而是查找FA的转发地址o只有在满足一定条件的情况下,FA地址才不是“0.0.0.0”,详细规则请参考相关文档o如果过滤掉FA地址,则路由不会加入路由表o只有当FA地址为(区域内)O或IA(区域间)时,这条E2路由才能放入路由表。小心将静态重新分配给OSPF。如果写入的下一跳是地址,属于直连,则不会加入路由表;反之,可以写入端口,因为不符合规则,FA全为零。在NSSA,它不同于正常区域。根据“RFC3101,especiallysection2.3Type-7LSAs”,FA地址在转换时必须可用,所以如果重分配是静态的,下一跳写成端口,FA全为0,这样会造成问题。“6.那些要转换为Type-5LSA的Type-7LSA必须设置其转发地址。”4、根据以上信息可以看出,虽然路由是从R2学习到的,但是转发还是基于FA,从与R3直连的端口出去。5、那么,为什么R1从R2学习E1,而不是R2从R1学习E1,有什么规律吗?[5]设置环境测试后,发现问题很容易重现。看来这很正常。那么有文档吗?[6]6.我查了RFC,找到了以下资料来解释上面的问题:o至于为什么R1从R2学到E1路由,根据RFC2328中的信息:“如果两台路由器,都可以相互访问,发起功能等效的AS-external-LSA(即相同的目的地、成本和非零转发地址),然后使用由具有最高OSPF路由器ID的路由器发起的LSA。”因为R2(132)优于R1(131),所以R2转换并发送给R1。o关于为什么R1选择E1而不是NSSA,根据RFC1587:“当发现类型5LSA和类型7LSA具有相同类型和相等距离时,将应用以下优先级(从最高到最低列出))用于打破平局。a.任何类型5LSA.b.设置了P位且转发地址非零的类型7LSA.c.任何其他类型7LSA。“答案摘要[1]根据RFC1587,当type-5和type-7类型相同,距离相同时,type-5>type-7(P-bit+FA)>type-7[2]当LSA有FA地址时,它需要将FA地址转发,而不是转发到ASBR。[3]如果一个路由器属于NSSA,他不会有type-5LSA,但是如果路由器是ABR,那么就有可能。[4]FA地址。[5]根据RFC2328,如果两台路由器相互可达,当两台设备生成等价的LSA时,将使用具有较高RouterID的LSA。[6]RFC2328、RFC1587相关命令我xxx