这个问题的核心是:OSPF协议规定,当一台ABR(区域边界路由器)同时从骨干区域(Area 0)和非骨干区域收到同一条路由时,它会无条件信任来自骨干区域的LSA,即使非骨干区域的路径看起来更优。
R2之所以下一跳指向24.1.1.4,是因为虚链路(Virtual Link)让R2自认为也是“骨干区域的一部分”。因此,它计算去往50.50.50.50的路径时,不再依据常规的跨区域路由,而是直接在“延伸了的骨干区域”里计算最短路径。结合典型的虚链路环路拓扑,R2此时的视角和选路逻辑大致如下:
虚链路的影响:你和R4(假设IP为4.4.4.4)之间建立了一条穿过Area 1的虚链路。此时R2认为自己就是ABR,并且这个虚链路被视为骨干区域(Area 0)的一条逻辑点到点链路。
LSA接收:R2既从Area 0收到R4产生的关于50.50.50.50的3类LSA,也从Area 1收到R3转发的同一3类LSA。
路由选择与下一跳计算:根据OSPF原理,R2会选择源自骨干区域的LSA并写入路由表。R2默认不改变从骨干区域收到的3类LSA里的通告路由器信息。为了到达50.50.50.50背后真正的通告路由器R4,R2在“延伸了的骨干区域”里重新计算最短路径,发现去往24.1.1.4(直连Area 0的物理接口)的成本更低。因此,R2路由表中前往50.50.50.50的下一跳最终指向了24.1.1.4,而不是12.1.1.1。
在R2选择了24.1.1.4作为下一跳后,一个环路就形成了:
R2查表:R2查询路由表,将发往50.50.50.50的数据包交给下一跳24.1.1.4(R4的接口)。
R4查表:R4收到包后,查找去往50.50.50.50的路由,发现下一跳是该网段直连的R5。数据包经Area 2转发给R5。
R5回程:R5收到包后,若需要回复,它查找路由表去往源IP(假设在R3下的用户),发现下一跳是它的默认网关或Area 2的唯一出口,即R4。数据包被送回给R4。
环路封闭:R4收到回复包,重复步骤2,将数据包再次发往R5。而R5又没有更优的路由,只能再次将包送回给R4。这样,数据包就在R4 <-> R5 <-> R4之间形成环路,直到TTL耗尽。
忘记说了 是R4与R3建立了虚链路 没有和R2建立虚链路
忘记说了 是R4与R3建立了虚链路 没有和R2建立虚链路
display ospf routing 50.50.50.50
display ospf lsdb
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明