1. 程式人生 > >網絡實戰ospf多區域原理與實戰

網絡實戰ospf多區域原理與實戰

網絡實戰ospf多區域原理與實戰

OSPF多區域原理與配置



楔子


其實網路算得上是底層的原理了 根據tcp/ip 七層協議就可以看出 系統原理和網絡是不可分割的一部分。


生成OSPF多區域的原因

  • 改善網絡的可擴展性

  • 快速收斂

  1. OSPF區域的容量

劃分多區域後,每個OSPF區域裏到底可以容納多少臺路由器?單個區域所支持的路由器數量的範圍大約是30-200。但在一個區域內實際加入的路由器數量要小於單個區域所能容納路由器的最大數量。這是因為還有更為重要的一些因素影響著這個數量,諸如一個區域內鏈路的數量,網絡拓撲的穩定性、路由器的內存和CPU性能、路由匯總的有效使用和註入到這個區域的匯總LSA的數量等。正是由於這些因素,有時在一些區域裏包含25臺路由器可能都已經顯得比較多了,而在另一些區域內卻可以容納多於500臺的路由器。

對於和區域相關的通信量定義了下面的三種類型:

  • 域內通信量(Intar-Area Traffic):是指由單個區域內路由器之間交換的數據包構成的通信量。

  • 域間通信量(Inter-Area Traffic):是指由不同區域的路由器之間交換的數據包構成的通信量。

  • 外部通信量(External Traffic):是指由OSPF區域內的路由器與OSPF區域外或另一個自治系統內的路由器之間交換的數據包構成的通信量。

OSPF被分成多區域的能力是依照分層路由實現的。當被劃分成小區域以後,像重新計算拓撲數據庫這樣的操作就被限定在該小區域內,區域間則只需要通告一些匯總信息。例如:區域1內部發生了路由器的Up或者Down時,其他區域內的路由器不需要運行SPF算法來重新計算路由信息,這是因為那些問題被隔離在區域1的內部。

具體來說,分層路由有以下優勢:

  • 降低了SPF運算的頻率。因為詳細的路由信息被保留在每個區域的內部,無需泛洪全部鏈路狀態的改變給所有其他區域。因此,只有那些受拓撲改變影響的路由器才需要重新運行SPF算法。

  • 減少了路由表。當使用多區域時,每個區域只保留自己區域的詳細路由條目,並且不會通告這些條目到區域外部,區域邊界路由器可以匯總一條或多條路由信息,在OSPF域間進行通告,這樣既減少了LSA的數量,同時又保證了區域之間的連通性。

  • 減小了鏈路狀態更新報文(LSU)的流量。LSU包含多種LSA類型,也包括鏈路狀態信息和匯總信息。分成多區域後,不再是發送每個網絡的LSU,而是在區域間通告單個路徑或者幾個匯總路徑的更新,從而有效的減小了穿越多個區域的LSU流量。

  • 路由器的類型

    路由器也像通信量一樣可以被分成和區域相關的幾種類型:

  • 內部路由器(Internal Router):是指所有接口都屬於同一個區域的路由器。

  • 區域邊界路由器(Area Border Routers,ABR):是指連接一個或多個區域到骨幹區域的路由器,並且這些路由器會作為域間通信量的路由網關。因而,ABR路由器至少有一個接口是屬於骨幹區域的,而且必須為每一個與之相連的區域維護不同的鏈路狀態數據庫。正因為這個原因,ABR路由器通常需要比一般的內部路由器有更多的內存和更高性能的路由處理器。ABR路由器將會匯總與它相連區域的拓撲信息給骨幹區域,然後又將這些匯總信息傳送給其他的區域。

  • 自治系統邊界路由器(Autonomous System Boundary Router,ASBR):可以認為是OSPF域外部的通信量進入OSPF域的網關路由器,也就是說,ASBR路由器是用來把其他路由器協議學習到的路由器通過路由選擇重分配的方式註入到OSPF域的路由器。一個ASBR路由器可以是位於OSPF域的自治系統內部的任何路由器,它可以是一臺內部路由器或者ABR路由器。

  • 區域的類型

OSPF路由協議將區域劃分為不同類型,包括骨幹區域、標準區域、末梢區域、完全末梢區域、非純末梢區域等。根據互連區域的類型和數量不同,OSPF提供了不同類型的路由更新。

運行OSPF的整個區域屬於一個自治系統(AS),除了AS的路由都屬於外部路由。Backone是連接眾區域的骨幹層,跨區域的流量都要在骨幹上通過,骨幹的穩定性、健壯性至關重要。骨幹上的路由器大都是區域邊界路由器ABR。

  1. 骨幹區域Area 0

該區域的ID一定為0,它是連接所有其他區域的核心域,相當於交換網絡的匯聚層。

  1. 標準區域

該區域可以接收各種鏈路狀態信息和匯總的路由通告。沒有特殊定義的區域就是標準區域。

  • 鏈路狀態數據庫

一臺運行OSPF路由協議的路由器中,所有有效的LSA通告都被存放在它的鏈路狀態數據庫當中,正確的LSA通告將可以描述出一個OSPF區域網絡拓撲的結構。

  • 鏈路狀態數據庫的組成

每臺路由器都創建了由每個接口、對應的相鄰節點和接口速率組成的數據庫,鏈路狀態數據庫中的每個條目都稱為LSA(鏈路狀態通告),常見的LSA有六種類型。

  • 鏈路狀態通告

    常見的LSA有六種類型,分別是LSA1、LSA2、LSA3、LSA4、LSA5、LSA7。

  • LSA1:路由器LSA

  • LSA2:網絡LSA

  • LSA3:網絡匯總LSA

路由器LSA(Router LSA):每一臺運行OSPF路由協議的路由器都會產生路由器LSA通告。這個最基本的LSA通告列出了路由器所有的鏈路或接口,並指明了它們的狀態和沿每條鏈路方向出站的代價。這些LSA通告只會在始發它們的區域內部進行泛洪。通過命令“show ip ospf database router” 可以查看數據庫中列出的所有路由器LSA通告。還可以在這條命令後加上一個參數以指定一個路由器ID,從而觀察到單個路由器LSA通告的詳細信息。這些信息顯示了記錄在鏈路狀態數據庫中的完整的LSA信息。

網絡LSA(Network LSA):每一個多址網絡(廣播型和NBMA)中的指定路由器DR都將會產生網絡LSA通告。可將DR路由器看做一個“偽”節點或一個虛擬路由器,用來描繪一個多址訪問網絡和與之相連的所有路由器。網絡LSA通告列出了所有與之相連的路由器,也包括DR路由器本身。向路由器LSA一樣,網絡LSA也僅僅在產生這條網絡LSA的區域內部進行泛洪。使用命令show ip ospf database network 可以查看一條網絡LSA通告的信息。

網絡匯總LSA(Network Summary LSA):是由ABR路由器始發的。ABR路由器將發送網絡匯總LSA到一個區域,用來通告該區域外部的目的地址。實際上,這些網絡匯總LSA就是ABR路由器告訴在自己所屬區域內的內部路由器它所能到達的目的地址的一種方法。一臺ABR路由器也可以通過網絡匯總LSA向骨幹區域通告與它相連的區域內部的目的地址。在一個區域外部,且仍然在一個OSPF自治系統內部的默認路由,也可以通過這種LSA來通告。使用命令show ip ospf database summary可以顯示鏈路狀態數據庫中的網絡匯總LSA信息。

  • OSPF多區域配置的驗證及OSPF路由表

  1. OSPF常用的檢查命令

命令說明

show ip route 查看路由表信息(直連/學習)

show ip route ospf只查看OSPF學習到的路由

show ip protocol查看OSPF協議配置信息

show ip ospf查看在路由器上OSPF是如何配置的以及ABR的信息

show ip ospf database查看LSDB內的所有LSA數據信息

show ip ospf interface查看接口上OSPF配置的信息(進程ID、RouterID、Cost、Priority、鄰居的數量)

show ip ospf neighbor查看OSPF鄰居和鄰接的狀態(Full表示鄰居狀態正常)

show ip ospf neighbor detail查看OSPF鄰居的詳細信息(包括DR/BDR)

debug ip ospf adj查看路由器“鄰接”的整個過程

debug ip ospf packet查看每個OSPF數據包的信息(包括OSPF版本、RouterID、AreaID)

clear ip route清空路由表


  1. OSPF路由表

使用show ip route命令查看多區域OSPF實例中路由器的路由表。

在路由條目前的O”代表OSPF區域內的路由,而“O IA”代表OSPF區域間的路由。

  • 區域內路徑(Intra-area Path)是指在路由器所在的區域內就可以到達目的地的路徑。

  • 區域間路徑(Inter-area Path)是指在其他區域但仍在OSPF自治系統內的目的地路徑。在路由表中,打上了IA標誌的條目就是區域間路徑,它總是至少通過一臺ABR路由器。

  1. 路由器對路由條目的選擇

路由器在選擇路由條目並將其添加到路由表中時,使用兩個參數:Metrics(度量值)和Distance Metric(管理距離)。

  • 度量值代表距離,由度量值來確定尋路時的最優路由。

  • 管理距離是指一種路由協議的路由可信度。

註意:

  • OSPF路由協議中的度量值為接口代價(Cost);RIP路由協議中度量值代表距離(跳數)。

  • OSPF中一條路由的代價是指到達目的網絡的路由路徑上所有出站接口的代價之和。

當路由器收到相同目的地址的路由條目時,首先比較管理距離,選擇管理距離小的路由條目添加到路由表中。如果管理距離相同,則比較度量值,選擇度量值小的路由條目添加到路由表中。

當收到目的地址、度量值和管理距離值都相同的路由條目時,路由表中會形成負載均衡的路由條目。

需要註意的是,OSPF路由協議為不同類型的路由規定了不同的優先級,即域內路由優先級高於域間路由。例如,如果一臺路由器通過OSPF的SPF算法得到某一網段有度量值和管理距離相同的兩條路徑時,如果一條路徑是域內而另一條路徑是域外,路由器會選擇域內路由添加到路由條目中。

註意:

  • 靜態路由的管理距離默認是1,度量值是0。

  • RIP協議的管理距離默認是120,度量值是跳數。

  • OSPF協議的管理距離默認是110,度量值是接口代價。

在學習浮動路由時,就是對同一網段使用了不同的管理距離(一條路由管理距離大,另一條管理距離小),再讓路由器選擇最優的路由(可信度高的路由)添加到路由表中。當線路出現故障時,管理距離小的路由失效,管理距離大的路由為最佳路由,會被路由器選入路由表中。

需要註意的是,路由器轉發數據時選擇可以和目的地址最精確匹配的路由。例如,如果路由表中存在路由條目172.19.64.0/18、172.19.64.0/24和172.19.64.192/27,而目的地址是172.19.64.205,那麽最後一個路由條目將被選中。最精確的匹配應該總是最長匹配——擁有最長地址掩碼的路由。如果路由器沒有發現匹配的條目,它將發送一個ICMP目的不可達的消息給那個數據包的源地址,並且把這個數據包丟棄。如果最後匹配多條等價路由時,那麽將會負載分擔的利用多條等價路由。

  • Stub區域及配置

除了骨幹區域和標準區域之外,還有末梢區域(Stub)、完全末梢區域(Totally Stubby)和非純末梢區域(NSSA)。

  • LSA4與LSA5

  • LSA4:ASBR匯總LSA(ASBR Summary LSA)

  • LSA5:自治系統外部LSA(Autonomous System External LSA)

  1. LSA4

ASBR匯總LSA(ASBR Summary LSA):也是有ABR路由器始發的。ASBR匯總LSA除了所通告的目的地是一個ASBR路由器而不是一個網絡外,其他的域網絡匯總LSA都是一樣的。使用命令show ip ospf database asbr-summary可以查看ASBR匯總LSA的信息。

註意:目的地是一個主機地址,並且掩碼是0。通常ASBR匯總LSA通告的目的地總是一個主機地址,因為它是一條到達一臺路由器的路由。

  1. LSA5

自治系統外部LSA(Autonomous System External LSA):也稱為外部LSA(External LSA),始發於ASBR路由器,用來通告到達OSPF自治系統外部的目的地或者是到OSPF自治系統外部的默認路由的LSA。外部LSA通告將在整個自治系統中進行泛洪。使用命令show ip ospf database external可以查看AS外部LSA的信息。

  • 末梢區域和完全末梢區域

OSPF區域中,一些區域出口很少,對區域外的路由僅需要一條默認路由,為了減少區域內路由器的路由條目,可以把此區域配置為末梢區域。在Stub區域中僅僅需要域內的路由條目和一條指向區域邊界路由器的默認路由就能實現所有的選路,所以在Stub區域中可以減少不必要的LSA泛洪。

由於從Stub區域內到其他區域僅有一條默認路由,所以Stub區域有一定限制,即區域內不能有自治系統邊界路由器(ASBR),並且它們不能為區域間的流量做轉發。

Stub區域並不限制一定只有一個作為出口的區域邊界路由器。能夠進入或存在Stub區域的鏈路狀態通告LSA的類型為1、2、3型,禁止4、5、7型進入Stub區域。

當區域配置為完全末梢區域(Totally Stubby)時,在區域內除了域內路由外,只有一個默認路由。

滿足以下四個條件的區域可以被認定為Stub或者Totally Stubby區域:

  • 只有一個默認路由作為其區域的出口

  • 區域不能作為虛鏈路的穿越區域

  • Stub區域裏無自治系統邊界路由器ASBR

  • 不是骨幹區域Area0

  1. 末梢區域(Stub Area)

末梢區域是一個不允許自治系統外部LSA通告在去內部進行泛洪的區域。如果在一個區域裏沒有學到類型5的LSA通告,那麽類型4的LSA通告也是不必要的了,因為這些LSA通告也將被阻塞。位於末梢區域邊界的ABR路由器將使用網絡會中LSA向這個區域通告一個簡單的默認路由(目的地址是0.0.0.0)。在區域內部路由器上,所有和域內或域間路由不能匹配的目的地址都將最終匹配這條默認路由。由於默認路由是由類型3的LSA通告傳送的,因此它將不會被通告到這個區域的外部去。

由於在一個末梢區域裏,路由器的鏈路狀態數據被減小了,因此,這些路由器的性能將得到提高,並且內存也得到節省。當然,在一個含有大量類型5的LSA通告的OSPF區域裏,這種改進將更加顯著。

  • 和所有的區域一樣,一個末梢區域內部的所有路由器也必須擁有相同的鏈路狀態數據庫。為了確保滿足這個條件,所有末梢區域內的路由器都會在它們的Hello報文中設置一個標誌E-bit,並將它設置為0。這樣,這些末梢區域路由器將不接受其他路由器發送的任何E-bit為1的Hello報文。結果,末梢區域路由器將不能和其他非末梢區域的路由器建立鄰接關系。

  • 虛連接不能再一個末梢區域內進行配置,也不能穿過一個末梢區域。

  • 末梢區域內的路由器不能是ASBR路由器。這個限制條件是很容易直觀的理解的,因為ASBR路由器會產生類型5的LSA通告,而在一個末梢區域內不能存在類型5的LSA通告。

  • 一個末梢區域可以擁有多臺ABR路由器,但是因為默認路由的原因,區域內部路由器將不能確定哪一臺路由器才是到達ASBR路由器的最優網關。

註意:配置成NSSA區域的路由器也不能和其他非NSSA區域的路由器形成鄰接關系。

  1. 完全末梢區域(Totally Stubby Area)

如果通過阻塞類型5和類型4的LSA傳播的方法來節省內存的話,那麽要是能夠把類型3的LSA也阻塞掉,不是可以節省更多的內存嗎?對於這個問題,Cisco借助於末梢區域的概念提出了完全末梢區域的概念。

完全末梢區域(Totally Stubby Area)不僅使用默認路由到達OSPF自治系統外部的目的地址,而且使用默認路由到達這個區域外部的所有目的地址。一個完全末梢區域的ABR將不僅阻塞AS外部的LSA,而且阻塞所有的匯總LSA,除了通告默認路由的那一條類型3的LSA。

  • 配置末梢區域和完全末梢區域

  1. 配置Stub Area

Router(config-router)# area area-id stub

其中,area-id標識Stub區域的ID,可以是數字或者IP地址形式。此命令需要在Stub區域內的所有路由器上配置。

  1. 配置Totally Stubby Area

Router(config-router)# area area-id stub no-summary

其中,area-id標識Stub區域的ID,可以是數字或者IP地址形式。no-summary使用此參數來生成Totally Stubby區域,僅用於ABR,以阻止ABR發送匯總鏈路通告到完全末梢區域內。


OSPF多域配置實例

技術分享

實驗環境

huawei公司有三家分公司,總公司和分公司之間使用專線連接,huawei公司要求配置路由器實現網絡互通。

如上圖所示為huawei公司的路由器連接示意圖,通過配置路由器實現公司的內部全網互通,具體規劃情況如下:

  • R1和R2的互聯地址:10.0.0.0/30,R1和R3的互聯地址:10.0.0.4/30,R1和R4的互聯地址:10.0.0.8/30.

  • 使用路由器的Loopback接口地址作為Router ID,R1的Loopback0:1.1.1.1/32,R2的Loopback0:2.2.2.2/32,R3的Loopback0:3.3.3.3/32,R4的Loopback0:4.4.4.4/32。

  • 使用Loopback接口模擬下帶主機的地址網段,R1的Loopback1:192.168.1.0/24,R2的Loopback1:192.168.2.0/24,R3的Loopback1:192.168.3.0/24,R4的Loopback1:192.168.4.0/24。

具體步驟:

  1. 配置路由器的接口地址、Loopback接口

  2. 配置OSPF協議,實現內部網絡互通

技術分享

  1. 驗證網絡訪問是否正常

技術分享

  1. 如果將區域2設置為末梢區域,那麽就要在R1和R4上分別做配置:

技術分享

  1. 如果將區域2設置為完全末梢區域,那麽就要在R1和R4上分別做配置:

技術分享


技術分享


總結 越努力越幸運


本文出自 “李世龍” 博客,謝絕轉載!

網絡實戰ospf多區域原理與實戰