OSPF出現環路的狀況

1      OSPF防環設計

區域內:依靠SPF算法防環,依靠LSA1和LSA2,經過SPF算法計算去往每一個網段的最優路徑;算法

區域間:全部區域都必須與骨幹區域鏈接,區域間路由需經由骨幹區域中轉;ide

            區域間水平分割原則,參考https://blog.51cto.com/xxy12345/2559508oop

區域外:LSA5的訪問依賴LSA4spa

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.0router

  network 7.7.7.7 0.0.0.0blog

                   image.png                          

AR3與AR6作了Vlink,這樣雙邊的Area0就鏈接起來了。AR1能夠學到AR7的路由,AR7也能夠學到AR1的路由。接口

2.2    訪問分析

AR1的1.1.1.1訪問AR7的7.7.7.7ip

1.       由於AR3是ABR,所以AR1訪問7.7.7.7的下一跳爲AR3,(由於7.7.7.7是Area0的LSA,所以不走AR2)

image.png

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最近。

image.png

3.       R4選擇區域間路由選擇COST最小下一跳R5

image.png

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)

image.png

2.        AR6根據傳輸區域Area1裏的cost分析,走cost最小的AR5

image.png

3.       AR5是ABR,可是沒有vlink,AR1(1.1.1.1/32)是骨幹區域Area0的路由,訪問走骨幹區域Area0,所以下一跳給AR7,造成環路。

4.       AR7-->AR1的路徑AR7--AR6--AR5--AR7,造成環路。

image.png

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區域引入外部路由引起環路

image.png

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)。

image.png

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。

image.png

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地址可能會在傳遞過程當中被修改,丟失原始路徑信息,則可能致使環路。

相關文章
相關標籤/搜索