OSPF Multi-VPN-Instance CE 情况下,重分发路由学习不到

发布时间:  2015-05-07 浏览次数:  445 下载次数:  0
问题描述
1、2台93运行OSPF多实例. 9301和9302都配置了路由重分发.  在2端都学习不到的对端重分发的路由.
2、在2台设备上都可以学习到路由的LSA.
3. 型号 S9306,版本:V200R003.


处理过程
处理思路与过程
1.咨询客户这个网络为新建还是运行一段时间出现问题,答案,新建
2.由于OSPF已经建立成功,查看ospf 100的路由表.
3.查看配置有没有在ospf启用routing-policy,无.
4.在9302上可以看到学习到关于9301上重分发路由的lsa.




处理思路与过程
1.通过之前的信息发现9302是学习到LSA.但是并没有将这些路由加表.
2.查看FA 发现为0.0.0.0 ,到达ASBR为可达.
3.查看  TYPE和tag,发现分别为2和0.
4. 至此,并没有发现明显的异常,只是对比发现93上ospf 1进程中重分发学习到的tag值不一致.
5. 通过ENSP对该问题进行复现,发现同样的配置,结果和用户的问题相同. 尝试在9301上修改重分发的tag值为1,发现9302上学习到路由.
6. 经过反复测试确认tag值会影响路由的学习.
根因
最终定位
1.发现在MCE(Multi-VPN-Instance CE)设备上部署OSPF VPN多实例时。默认情况开启了防环检测.
这种情况下,通过配置vpn-instance-capability simple命令可以取消OSPF路由环路检测,不检查DN Bit和Route-tag而直接计算出所有OSPF路由,Route-tag恢复为缺省值1。

2.使用Tag防环
对于type5、type7类LSA除了通过上面的DN-BIT可以防止路由环路外,还可以根据Tag值进行防环,即如果LSA的Tag值与本地(PE上)OSPF进程的Route tag相同,则这个LSA不参与到路由计算中。
由于防环检测的存在,所以我们在PE经常会发现存在LSA但路由计算不出来


附:

OSPF引入外部路由都会置Tag,但不同的情况下Tag值不同。
1)公网OSPF或者配置了vpn-instance-capability simple的私网OSPF生成的5、7类LSA的Tag值为1。
2)私网OSPF生成的5、7类LSA的tag值计算方法比较复杂:
1、 如果配置了route-tag X,则LSA的tag值为X。
2、 如果没有配置route-tag X,且路由器上没有配置BGP,则LSA的tag值默认为0.
3、 如果没有配置route-tag X和route-tag disable,但配置了BGP,则LSA的tag值为0xd0000000|BGP AS NUM
4、参考RFC1745

解决方案
3.因此有2种方法解决这个问题.
3.1在9301/9302上启用vpn-instance-capability simple 禁止环路检测
3.2 在9301/9302上 修改本地的router-tag 或者修改重分发的tag,这个确保重分发路由的tag和本地route-tag 不一致.
具体命令如下;
修改本地的route-tag
[H2-ospf-100]route-tag 1
重分发的修改引入路由的tag
Import-route direct tag xxx

附:

OSPF引入外部路由都会置Tag,但不同的情况下Tag值不同。
1)公网OSPF或者配置了vpn-instance-capability simple的私网OSPF生成的5、7类LSA的Tag值为1。
2)私网OSPF生成的5、7类LSA的tag值计算方法比较复杂:
1、 如果配置了route-tag X,则LSA的tag值为X。
2、 如果没有配置route-tag X,且路由器上没有配置BGP,则LSA的tag值默认为0.
3、 如果没有配置route-tag X和route-tag disable,但配置了BGP,则LSA的tag值为0xd0000000|BGP AS NUM
4、参考RFC1745


建议与总结
总结;
1.在MCE的设备引入路由的时候,需要注意引入的路由是否和本地route-tag一致。
2.设备上是否启用了防环检测
3.设备上是否配置了BGP.

END