实验拓扑如图。
步骤:
左边R1、R2、R3采用RIPV2学习彼此的路由。
右边R2、R3、R4采用OSPF学习路由。
然后在路由器R2和R3上做双向路由引入。(产生问题的前提)。
按照如图所示的内容对路由器进行配置,然后查看R2和R3的路由表;
R2:
R3:
实验现象:针对4.4.4.4/32路由条目,R2和R3分别学习到了不同的内容。
我们在R3上使用tracert命令可以发现:。数据包没有直接发向R4,而是经由R1和R2绕远了。这违背了最优选路原则。
现象分析:
查看R2的路由表我们可以看出,针对4.4.4.4/32这条路由,通过OSPF学习到的话,其优先级值为150。
这条路由在被引入到RIP协议中后,其优先值变为了100。R2会将这条路由通告给R1, R1再通告给R3。在R3路由器上,针对同一条4.4.4.4/32的路由,通过RIP协议和OSPF协议学习到的优先级不同,它将选择优先级值较小的路由加载到路由表中。从而导致了在两台路由器上学习到了不同的路由。
而且在R3上,针对4.4.4.4/32这条路由,由于在OSPF中引入了RIP ,它还会重载给R4,进而可能导致路由环路问题。
因此,我们可以总结出以下内容。
问题本质:通过不同IGP学习到的路由条目优先级数值不同。
问题现象:1、路由次优化;
2、路由回馈;
3、路由环路;
解决方法
针对这个问题,我们可以通过进行路由过滤来解决。
具体措施:
分别在R2和R3上,引入ACL规则。
rip进程下:
filter-policy 2000 import
acl 2000
rule 5 deny source 4.4.4.4 0 (1 matches)
rule 10 permit (1 matches)
再来查看R2 和 R3路由表项目:
这种情况下,R3所有发往4.4.4.4的包,都会直接发往R4了。