HCNP Routing&Switching之OSPF虛連線

1874發表於2021-08-30

  前文我們瞭解了OSPF的網路型別、幀中繼交換機對映以及路由器幀中繼對映相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15195762.html;今天我們來聊一聊OSPF中的虛連線相關話題;

  在ospf裡,為了避免區域間的環路,ospf規定不允許直接在兩個非骨幹區域之間釋出路由資訊,只允許在一個區域內部或者在骨幹區域和非骨幹區域之間釋出路由資訊;因此,每個ABR(區域邊界路由器)都必須連線到骨幹區域;即要求所有非骨幹區域必須和骨幹區域相連,同時骨幹區域也必須連續;但是由於網路設計、升級、合併、改造等因素,造成了不規範的區域架構,最終導致路由學習不完整,解決方法就是使用虛連線;什麼是虛連線?虛連線就是一條邏輯的鏈路,作用有兩個,第一個作用是將非骨幹區域和骨幹區域邏輯的連線在一起;第二個作用就是為骨幹區域提供冗餘備份的邏輯鏈路,當骨幹區域鏈路故障時,通過虛連線仍然可以保證骨幹區域在邏輯上的聯通性;當然虛連線的存在增加了網路的複雜程度,使故障的排除更加困難;因此,在網路規劃中我們要儘量避免使用虛連線;虛連線只是作為修復無法避免的網路拓撲問題的一種臨時手段;如果一個網路架構裡使用了虛連線,這也意味著該網路需要重新規劃;

  區域間路由環路的產生

  提示:假設ospf允許非骨幹區域間的ABR進行路由釋出,那麼上圖就很明顯是一個環路;當RTD在區域1裡釋出一條路由資訊,對應RTB會學習到,同時RTB也會向RTC傳送對應的路由資訊,同樣的道理RTC也會向RTE傳送路由資訊;最終RTD傳送的路由資訊,從RTE發回給RTD,這樣一來就形成了區域間路由環路;為了避免這個多區域間路由環路,ospf就規定不允許非骨幹區域間傳送路由資訊;如上圖,正常情況RTE和RTD不能互相傳送路由資訊,這樣環路就不會產生;

  避免區域間路由環路

  提示:為了防止區域間環路,ospf定義了骨幹區域和非骨幹區域以及三類LSA的傳遞規則;首先ospf劃分了骨幹區域和非骨幹區域,所有非骨幹區域均直接和骨幹區域相連,並且骨幹區域只有一個,非骨幹區域之間的通許都要通過骨幹區域中轉,骨幹區域ID是固定為0;ospf規定從骨幹區域傳來的三類LSA不再傳回骨幹區域;通過上述規定,我們不難想象對於ABR來說,它必須和骨幹區域直連,是少有一個介面屬於骨幹區域;如果一個非骨幹區域ABR沒有一個介面屬於骨幹區域,那麼對應網路區域設計就是一個不規範的設計;最終導致路由學習不完整;

  不規範的OSPF區域設計

  提示:上圖區域2的ABR RTC並沒有任何一個介面是屬於區域0(骨幹區域),所以類似這種區域設計是不規範的設計,在現網中應該儘量避免;

  提示:對於這種骨幹區域不連續的拓撲也是不規範的設計;對於ospf來說,骨幹區域有且只有一個,並且所有非骨幹區域必須和骨幹區域相連才是規範的ospf區域設計;

  不規範的ospf區域設計帶來的問題

  實驗:如下拓撲圖,配置ospf

  R1配置

HCNP Routing&Switching之OSPF虛連線
sys
sys R1
int g0/0/0
ip add 12.0.0.1 24
int lo 1
ip add 1.1.1.1 32
ospf 1 router-id 1.1.1.1
area 0
net 12.0.0.1 0.0.0.0
net 1.1.1.1 0.0.0.0
View Code

  R2的配置

HCNP Routing&Switching之OSPF虛連線
sys
sys R2
int g0/0/0
ip add 12.0.0.2 24
int g0/0/1
ip add 23.0.0.2 24
ospf 1 router-id 2.2.2.2
area 0
net 12.0.0.2 0.0.0.0
area 1
net 23.0.0.2 0.0.0.0
View Code

  R3的配置

HCNP Routing&Switching之OSPF虛連線
sys
sys R3
int g0/0/0
ip add 23.0.0.3 24
int g0/0/1
ip add 34.0.0.3 24
ospf 1 router-id 3.3.3.3
area 1
net 23.0.0.3 0.0.0.0
area 2
net 34.0.0.3 0.0.0.0
View Code

  R4的配置

HCNP Routing&Switching之OSPF虛連線
sys
sys R4
int g0/0/0
ip add 34.0.0.4 24
int lo 1 
ip add 4.4.4.4 32
ospf 1 router-id 4.4.4.4
area 2
net 34.0.0.4 0.0.0.0
net 4.4.4.4 0.0.0.0
View Code

  驗證鄰居關係是否起來

  在R1上驗證鄰居關係

  在R2上驗證鄰居關係

  在R3上驗證鄰居關係

  在R4上驗證鄰居關係

  提示:在各路由器上驗證鄰居關係,各鄰居都已正常full起來;

  驗證:在R1上檢視ospf學習到的路由

  提示:可以看到在R1上ospf路由表中並沒有學習到area 2裡的路由以及R4的lo介面路由也沒有學習到;

  驗證:在R4上檢視ospf學習到的路由

  提示:對於R4來說它也沒有學習到area 0、area 1 以及R1的lo介面路由;其實原因很簡單,就是因為上述拓撲架構不是規範的區域,對應區域2並沒有和區域0相連,導致對應區域路由學習不完整;解決辦法,使用虛鏈路將area 2和骨幹區域相連;

  在R2的g0/0/1口和R3的g0/0/0口建立虛鏈路

  提示:vlink-peer 後面是對應要建立虛連線路由器的router id,是在同一個區域內的;簡單講虛連線只能在同一非骨幹區域內建立,不能跨區域建立;

  在R3的g0/0/0口上建立虛連線

  提示:可以看到在R3的ospf裡對應區域裡建立虛連線後,對應提示我們鄰居full了;

  驗證:在R2、R3上驗證虛連線鄰居

  提示:可以看到在對應的路由器上檢視ospf虛連線資訊對應路由器都把鄰居指向對端的router id 並且鄰居狀態都是full,這說明虛連線鄰居建立成功;

  驗證:在R2的g0/0/1口抓包看看現在虛連線hello包和傳統hello包有什麼不同

  提示:在R2上我們抓到了兩種ospf hello包,一種是目標地址是224.0.0.5的組播包,一種是單播包;其中組播包裡區域id都是1,單播包裡區域id都是0;組播包是ospf 區域1正常hello包;單播包就是虛連線的hello包;

  驗證:再次檢視R1是否學習到區域2 以及R4上的路由?

  提示:可以看到現在R1能夠正常學習到區域2以及R4lo介面的路由;

  驗證:R4是否能夠正常學習到區域0、區域1 以及R1的路由呢?

  提示:可以看到現在R4也能正常學習到區域0,區域1以及R1lo介面的路由;

  虛連線給骨幹區域帶來邏輯鏈路冗餘備份

  提示:當骨幹區域鏈路斷開,對於原本走該鏈路的資料也就無法正常通過;此時我們可以通過在區域1建立邏輯的虛連線,讓對應原本走骨幹區域鏈路的流量,通過虛連線鏈路實現通訊;當骨幹區域鏈路恢復正常,對應流量又會自動切回到骨幹區域鏈路;從而實現對骨幹區域鏈路做冗餘備份的效果;

  實驗:如下拓撲,配置ospf

  分析:對於R1的來說,它訪問R2的lo1介面,肯定走R1和R2的直連鏈路;如果在沒有配置虛連線的情況下,當R1和R2的直連鏈路宕掉以後,對應通訊就無法正常實現;

  R1的配置

HCNP Routing&Switching之OSPF虛連線
sys 
sys R1
int g0/0/0
ip add 12.0.0.1 24
int g0/0/1
ip add 13.0.0.1 24
int lo 1
ip add 1.1.1.1 32
ospf 1 router-id 1.1.1.1
a 0
net 12.0.0.1 0.0.0.0
net 13.0.0.1 0.0.0.0
net 1.1.1.1 0.0.0.0
View Code

  R2的配置

HCNP Routing&Switching之OSPF虛連線
sys 
sys R2
int g0/0/0
ip add 12.0.0.2 24
int g0/0/1
ip add 24.0.0.2 24
int lo 1
ip add 2.2.2.2 32
ospf 1 router-id 2.2.2.2
a 0
net 12.0.0.2 0.0.0.0
net 24.0.0.2 0.0.0.0
net 2.2.2.2 0.0.0.0
View Code

  R3的配置

HCNP Routing&Switching之OSPF虛連線
sys
sys R3
int g0/0/0
ip add 13.0.0.3 24
int g0/0/2
ip add 35.0.0.3 24
ospf 1 router-id 3.3.3.3
area 0
net 13.0.0.3 0.0.0.0
area 1
net 35.0.0.3 0.0.0.0
View Code

  R4的配置

HCNP Routing&Switching之OSPF虛連線
sys
sys R4
int g0/0/0
ip add 24.0.0.4 24
int g0/0/2
ip add 46.0.0.4 24
ospf 1 router-id 4.4.4.4
area 0
net 24.0.0.4 0.0.0.0
area 1 
net 46.0.0.4 0.0.0.0
View Code

  R5的配置

HCNP Routing&Switching之OSPF虛連線
sys
sys R5
int g0/0/0
ip add 35.0.0.5 24
int g0/0/1
ip add 56.0.0.5 24
ospf 1 router-id 5.5.5.5
area 1 
net 35.0.0.5 0.0.0.0
net 56.0.0.5 0.0.0.0
View Code

  R6的配置

HCNP Routing&Switching之OSPF虛連線
sys
sys R6
int g0/0/0
ip add 46.0.0.6 24
int g0/0/1
ip add 56.0.0.6 24
ospf 1 router-id 6.6.6.6
area 1 
net 46.0.0.6 0.0.0.0
net 56.0.0.6 0.0.0.0
View Code

  檢視R1和R2的路由表

  提示:可以看到R1通過ospf學習到R2lo介面的路由;

  提示:同樣R2也通過ospf學習到R1lo介面的路由;

  在沒有配置虛連線,看看R1到R2的lo1的路徑

  提示:可以看到正常情況下,R1到R2的lo1介面的流量走R1和R2的直連鏈路;

  當直連鏈路宕掉以後,看看對應通訊是否還能繼續進行呢?

  提示:可以看到當R1和R2的直連鏈路宕掉以後,對應去往R2的lo1介面的路由也隨之被刪除;此時R1並沒有R2的lo1介面的路由,所以現在R1是無法正常和R2的lo1介面通訊;

  在R3上配置虛連線

  在R4上配置虛連線

  提示:虛連線需要在同一非骨幹區域內的兩個路由器上都配置對端為本端的鄰居;從上面的實驗可以看到我們在R3和R4的對應ospf 區域1裡配置了虛連線以後,對應虛連線鄰居就起來;

  驗證:現在看看R1上是否有到達R2的lo1介面的路由呢?

  提示:可以看到雖然R1到R2的直連鏈路是down的狀態,但通過R3和R4建立的虛連線,對應到達R2的lo1介面的路由還是能夠正常學習到;

  驗證:現在在R1上和R2的lo1介面通訊,看看對應資料包走的鏈路

  提示:可以看到現在R1和R2的lo1介面的通訊可以走R3--->R5---->R6---->R4---->R2;

  當R1和R2直連鏈路恢復正常,看看對應通訊鏈路是否會切換回去呢?

  提示:當R1和R2直連鏈路恢復以後,對應ospf鄰居也會重新建立;

  現在R1和R2的lo1介面通訊是否會切換到R1和R2的直連鏈路呢?

  提示:可以看到對應骨幹區域鏈路恢復正常以後,對應的通訊路由也隨之被切換到對應的骨幹區域鏈路;

相關文章