您的位置:首页 > 其它

OSPF出现环路的情况

2021-01-05 16:42 393 查看

1      OSPF防环设计

区域内:依靠SPF算法防环,依靠LSA1和LSA2,通过SPF算法计算去往每个网段的最优路径;

区域间:所有区域都必须与骨干区域连接,区域间路由需经由骨干区域中转;

            区域间水平分割原则,参考https://blog.51cto.com/xxy12345/2559508

区域外:LSA5的访问依赖LSA4

2      环路情况1:Vlink设计不当,导致环路

2.1    Vlink情况

Area 0被Area1分割,AR3与AR6建立vlink,AR1的loopback ip为1.1.1.1,AR7为7.7.7.7,其他类推。

AR7的loopbackip通过network发布,AR1的loopbackip同理

area 0.0.0.0

  network 7.7.7.7 0.0.0.0

                                             

AR3与AR6做了Vlink,这样双边的Area0就连接起来了。AR1可以学到AR7的路由,AR7也可以学到AR1的路由。

2.2    访问分析

AR1的1.1.1.1访问AR7的7.7.7.7

1.       因为AR3是ABR,因此AR1访问7.7.7.7的下一跳为AR3,(因为7.7.7.7是Area0的LSA,因此不走AR2)

2.       AR3与AR6做了Vlink,但数据走向并不一定走Vlink,AR3是ABR,它有Area0(R1和R7所在的Area0)和传输区域Area1的全部LSA,所以计算路径时会都考虑Area0和Area1里的LSA,R5通告的LSA(7.7.7.7)cost是1,R6通告的cost是10,因此接受R5的,去R5走R4最近。

3.       R4选择区域间路由选择COST最小下一跳R5

4.       R5根据Area0的LSA1选择直连R7的下一跳。

5.       因此,AR1(1.1.1.1)访问AR7(7.7.7.7)的路径AR1--AR3--AR4--AR5--AR7.

2.3    回程分析(环路)

AR7(7.7.7.7)访问AR1(1.1.1.1)

1.       因为AR6是ABR,通过Vlink学到1.1.1.1/32的Area0的LSA1,因此R7去往1.1.1.1走AR6(注:AR5访问1.1.1.1也走R7,再走AR6)

2.        AR6根据传输区域Area1里的cost分析,走cost最小的AR5

3.       AR5是ABR,但是没有vlink,AR1(1.1.1.1/32)是骨干区域Area0的路由,访问走骨干区域Area0,因此下一跳给AR7,形成环路。

4.       AR7-->AR1的路径AR7--AR6--AR5--AR7,形成环路。

2.4    结论

1.       Vlink设计不当会形成环路。

2.       ABR会忽略从非骨干区域收到的LSA3/4,他只会放入Database中而不会被加入SPF算法。在vlink情况下,使用Area0中的置V的路由器作为访问其他非直连区域的出口,但如果ABR是Vlink的端点,则可以根据Area1中的LSA3计算到骨干区域的路由,即Area0以置V的路由器作为出口,而置V路由器本身可以按照非骨干区域的LSA3计算到骨干区域的路由。

3.       Vlink代表控制平面,数据平面不一定经过Vlink,数据平面和控制平面是分开的。

3      环路情况2:NSSA区域引入外部路由引发环路

3.1    NSSA情况

设备AR1的loop0地址为1.1.1.1,其他设备类推。

设备AR1的loop0地址通过network发布

设备AR1的loop1地址为100.100.100.100,通过import direct发布,模拟NSSA引入外部路由。

Area1 为NSSA区域。

3.2    正常情况下分析

1.       在NSSA区域中,AR2和AR3都为ABR,同时也是ASBR,R3的router id大,因此由R3进行LSA7/5翻译。

2.       AR2收到Area1LSA7(100.100.100.100),收到Area0LSA5(100.100.100.100),根据LSA5(FA=1.1.1.1,cost-type=2,cost=1,advrtr=3.3.3.3)和LSA7(FA=1.1.1.1,cost-type=2,cost=1,advrtr=1.1.1.1)的比较,根据选路规则,外部成本一致(cost=1)的情况下比对内部成本,LSA5的内部成本是AR2去往FA经过Area0的路径成本,LSA7的内部成本是AR2去往FA经过Area1的路径成本。从图中可以看出,LSA7优于LSA5。因此路由的下一跳为10.10.12.1(AR1的接口IP)。

3.       同理AR4收到LSA5 LSA5(FA=1.1.1.1,cost-type=2,cost=1,advrtr=3.3.3.3),AR4上FA地址的下一跳是AR2(LSA3学到),因此AR4访问100.100.100.100的路径为AR4-->AR2-->AR1.

3.3    7/5翻译强制抑制FA地址后,出现环路

如果有要求Area0访问外部路由只能经过AR3,出了通过修改Cost外,还可以通过在AR3上进行7/5时抑制FA地址。nssa suppress-forwarding-address,该命令将7/5后的FA地址设置为0.0.0.0.

1.       那么现在在R2上LSA对比如下:

LSA5(FA=0.0.0.0,cost-type=2,cost=1,advrtr=3.3.3.3)

LSA7(FA=1.1.1.1,cost-type=2,cost=1,advrtr=1.1.1.1)

根据选路规则,外部成本一致(cost=1)的情况下比对内部成本,LSA5的FA为0.0.0.0,因此内部成本是AR2去往advrtr=3.3.3.3的成本,cost=1,LSA7的内部成本是AR2去往FA经过Area1的路径成本cost=10,因此选择LSA5路由,使用Area0转发,因此下一跳为AR4。

2.       AR4去往100.100.100.100的下一跳为AR3(LSA5学到),AR3的下一跳为AR2(LSA7),AR2的下一跳又为AR4,形成环路。

3.4    总结

1.       OSPF 区域内是无环的,

2.       区域间若是LSA3路由,可以通过区域结构和水平分割来避免环路(当然也要考虑vlink环路情况)

3.       若是LSA5/7路由,则通过FA路由来避免环路,但FA地址可能会在传递过程中被修改,丢失原始路径信息,则可能导致环路。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: