OSPF區域及虛鏈路
因為OSPF路由器之間會將所有的LSA毫不保留的互相交換,當網路達到一定規模的時候,LSA會形成一個龐大的資料庫,那麼就會給裝置造成一定的壓力,為了降低OSPF計算的複雜程度,快取計算壓力,OSPF採用區域的概念,將網路中的所有OSPF路由器劃分成不同的區域,每個區域負責各自區域精確的LSA傳遞與路由計算,然後再將一個區域的LSA簡化和彙總之後轉發到另一個區域,這樣 在區域內部擁有網路精確的LSA,在不同區域傳遞簡化的LSA,區域的劃分也具有路由防環的作用,所以採用了 hub-spoke架構,也就是採用核心與分支的拓撲。
看下圖:
如果一臺OSPF路由器屬於單個區域,即該路由器的所有介面同處於同一個區域,那麼這臺路由器稱之為 internal router 如上圖的 R2 R3 R4 如果一臺路由器的不同介面屬於不同的區域,那麼這個路由器我們稱之為 ABR ,例如圖中的 R1 . ABR可以將一個區域的LSA彙總後轉發至另一個區域,如果路由器將外部路由協議重分佈進入OSPF,那麼這臺路由器稱之為ASBR。例如圖中的R5,如果只是將OSPF重分佈進入其他協議,而沒有將其他協議分佈進入OSPF,那麼路由器就不能稱之為ASBR
因為OSPF的區域採用了 HUB-SPOKE 架構,所以必須定義出一個核心,其他部分與核心相連,OSPF中 Area0就是所有區域的核心,稱為 backbone 主幹區域。其他區域稱為 normal 區域,理論上所有的常規區域應該直接和主幹區域相連,常規區域只能和主幹區域交換LSA, 兩個常規區域之間即使相連也無法直接互換LSA, Area0 就相當於是一箇中轉站,兩個常規區域之間交換LSA,只能先交給 Area0 再由 Area0進行轉發,常規區域間無法互相轉發
OSPF區域是基於路由器的介面劃分的,而不是基於整臺路由器劃分的,一臺路由器可以屬於單個區域,也可以分屬不同區域。
但是在某些特殊的情況下,某些常規區不能和主幹區域進行直連,這時便無法得到其他區域的路由,所以OSPF協議提出了虛鏈路的解決方案,將骨幹區域的範圍通過虛擬的方法進行擴充套件到相鄰常規區域的位置,因而讓不能直接與骨幹區域相連的區域,最終可以與骨幹區直連。
以下圖為例
R1和R2之間屬於 area0 骨幹區,其他的區域為常規區,當 R2和R3之間的 area1配置了虛鏈路之後,就變為的骨幹區,所以路由條目會從 inter-area route 變為 intra-area route 也就是路由的表示形式從 OIA 變為 O的形式,在進行OSPF虛鏈路擴充套件時,是將transit area中與骨幹區直連的ABR(R2)和連線另一個常規區域的ABR(R3)相連,在連線這兩個ABR時,使用雙方的 route-id 進行連線。
實驗配置:
R1>en
R1#config
R1(config)#
R1(config)#int lo 0
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#int f1/0
R1(config-if)#ip add 12.1.1.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#router ospf 100
R1(config-router)#net 1.1.1.0 0.0.0.255 area 0
R1(config-router)#net 12.1.1.0 0.0.0.255 area 0
R1(config-router)#exit
R1(config)#
R2>en
R2#config
R2(config)#int lo 0
R2(config-if)#
R2(config-if)#ip add 2.2.2.2 255.255.255.0
R2(config-if)#exit
R2(config)#int f1/0
R2(config-if)#ip add 12.1.1.2 255.255.255.0
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#int f1/1
R2(config-if)#ip add 23.1.1.1 255.255.255.0
R2(config-if)#no shut
R2(config-if)#exit
R2(config)#router ospf 100
R2(config-router)#net 2.2.2.0 0.0.0.255 area 0
R2(config-router)#net 12.1.1.0 0.0.0.255 area 0
R2(config-router)#net 23.1.1.0 0.0.0.255 area 1
R2(config-router)#exit
R2(config)#
R3>en R3#config R3(config)#int lo 0 R3(config-if)#ip add 3.3.3.3 255.255.255.0 R3(config-if)#no shut R3(config-if)#exit R3(config)#int f1/0 R3(config-if)#ip add 23.1.1.2 255.255.255.0 R3(config-if)#exit R3(config)#int f1/1 R3(config-if)#ip add 34.1.1.1 255.255.255.0 R3(config-if)#no shut R3(config-if)#exit R3(config)#router ospf 100 R3(config-router)#net 3.3.3.0 0.0.0.255 area 1 R3(config-router)#net 34.1.1.0 0.0.0.255 area 2 R3(config-router)#net 23.1.1.0 0.0.0.255 area 1 R3(config-router)#exit R3(config)# R4>en R4#config R4(config)#int lo 0 R4(config-if)#ip add 4.4.4.4 255.255.255.0 R4(config-if)#no shut R4(config-if)#exit R4(config)#int f1/0 R4(config-if)#ip add 34.1.1.2 255.255.255.0 R4(config-if)#no shut R4(config-if)#exit R4(config)#router ospf 100 R4(config-router)#net 4.4.4.0 0.0.0.255 area 0 R4(config-router)#net 34.1.1.0 0.0.0.255 area 2 R4(config-router)#exit R4(config)#通過檢視路由器R1的路由表,我們發現R1沒有學到34.1.1.0 以及 4.4.4.4 的路由條目
而且我們發現 23.1.1.0這個路由條目的類別屬於 OIA
為了讓R1可以學習到4.4.4.4以及 34.1.1.0 的路由條目,那麼我們就需要在 R2和R3之間配置虛鏈路
R2(config-router)#area 1 virtual-link ?
R2(config-router)#area 1 virtual-link 3.3.3.3
R3(config)#router ospf 100
R3(config-router)#area 1 virtual-link 2.2.2.2
虛鏈路配置成功
此時我們再次檢視路由表
我們看到R1成功學到 34.1.1.0網段以及4.4.4.4 路由條目
配置虛鏈路注意事項
1.OSPF虛鏈路必須是在兩個擁有共同區域的ABR之間建立,其中至少有一個ABR是連線骨幹的
轉載於:https://blog.51cto.com/liushuo890/1095580