前文我們瞭解了OSPF LSA更新規則以及路由彙總相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15231880.html;今天我們來聊一聊OSPF的特殊區域相關話題;
OSPF的特殊區域,主要目的是遮蔽相關LSA,從而到達精簡LSDB資料庫和路由條目的目的;它和路由彙總都是優化技術,但和路由彙總又有差別,路由彙總是將多個子網合併成一個子網,但本質上該有的3類、4類、5類LSA也會有;對於ospf特殊區域來講,它主要是遮蔽3、4、5類LSA,通過一條預設路由來實現和區域間或外部網路通訊;
如上圖所示,全網分為4個部分,分別是區域1,區域0,區域2和外部網路;對於ospf各區域來說,主要分傳輸區域和末端區域;所謂傳輸區域就是骨幹區域,它除了承載本區域發起的流量和訪問本域的流量外,還承載了源ip和目標IP不屬於本區域的流量;末端區域是指,只承擔本區域發起的流量和訪問本區域的流量;對於末端區域來說,它去訪問外部網路或者訪問非本區域的其他區域網路,它的流量都會經過abr;即訪問外部網路和區域間的網路流量路徑只有一條;此時我們應該考慮末端區域是否有儲存達到其他區域明細路由的必要性,同時考慮末端區域裝置效能;即如何精簡LSDB資料庫、路由表條目,從而實現提高路由器效能;我們知道ospf的路由,是通過收集網路中大量的LSA計算出來的;大量的LSA會佔用LSDB儲存空間;所以為了優化,在不影響正常路由的情況下減少LSA數量,從而減少LSDB儲存空間,提高路由器的效能;
Stub區域
提示:Stub區域的ABR不向stub區域內傳播它接受到的外部路由,即遮蔽4類、5類LSA,stub區域中路由器的LSDB、路由表規模都會大大減小;為了保證stub區域能夠和外部網路通訊,stub區域的abr將生成一條預設路由(對應3類LSA),併發布給stub區域中的其他路由;此時stub區域中的路由器到達外部網路或非本區域其他區域網路,都會通過這條預設的預設路由,進行資料的轉發;stub區域是一種可選的配置屬性,但並不建議將每個區域都配置成stub區域;通常情況stub區域位於自制系統的末梢,是那些只有一個abr的非骨幹區域;
配置stub區域需注意事項
1、骨幹區域不能配置為stub區域;
2、如果要將一個區域配置成stub區域,則該區域中的所有路由器必須都要配置成stub路由;
3、stub區域不能存在ASBR,因為外部路由在stub區域不能傳播(stub遮蔽了4類和5類LSA);
4、stub區域不能配置虛連線;即虛連線不能在stub區域建立;
實驗:如下拓撲,配置ospf
R1的配置
sys sys R1 int g0/0/0 ip add 12.0.0.1 24 ospf 1 router-id 1.1.1.1 area 1 net 12.0.0.1 0.0.0.0
R2的配置
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 23.0.0.2 0.0.0.0 area 1 net 12.0.0.2 0.0.0.0
R3的配置
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 0 net 23.0.0.3 0.0.0.0 area 2 net 34.0.0.3 0.0.0.0
R4的配置
sys sys R4 int g0/0/0 ip add 34.0.0.4 24 int lo 1 ip add 1.1.1.1 32 int lo 2 ip add 2.2.2.2 32 int lo 3 ip add 3.3.3.3 32 int lo 4 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 q import-route dir
在未配置stub區域,檢視R1ospf lsdb和路由表
提示:在未配置stub區域時,對應區域中路由器的ospf lsdb資料庫和路由表條目較多;
在R1的ospf 區域1中配置stub區域
提示:可以看到我們在R1的區域1上配置stub區域以後,對應鄰居就down掉了;這其實是因為R1和R2傳送的hello包中的options欄位資訊不一致導致的;
在R2的ospf區域1中配置stub區域
提示:可以看到在R2上ospf 區域1上配置stub區域以後,對應ospf鄰居就建立起來;因為R1和R2在同一個區域中都配置了stub區域,所以hello包裡的options欄位資訊一致,所以鄰居就建立起來了;
驗證:在R1上檢視ospf lsdb資料庫和路由表,看看有什麼變化?
提示:可以看到在R1上對應ospf lsdb中原有的4類、5類LSA沒有了,對應多了一條三類預設LSA;路由表中原來外部網路的明細路由也隨之被刪除,多了一條預設路由;
總結:stub區域遮蔽4類和5類LSA,區域內不能有ASBR,不能是區域0,不能有虛連線;stub區域中ABR路由器會向該區域傳送一條3類預設路由;
Totally Stub區域
提示:Totally stub區域除了不能傳播4類、5類LSA之外,它還不允許3類LSA在本區域內傳播(除abr產生的預設三類LSA路由);即完全末梢區域遮蔽了3類(除ABR產生的預設三類LSA路由)、4類、5類LSA;完全末梢區域內的路由器通過abr產生的預設三類LSA路由,和非本區域、外部網路進行通訊;
實驗:配置上述拓撲,區域1為完全末梢區域(Totally Stub)
在R2(abr)上更改stub為totally stub
提示:配置完全末梢區域,只需要在abr上配置為stub no-summary,其他路由器上配置stub即可;
驗證:在R1上檢視ospf lsdb和路由表,看看有什麼變化?
提示:可以看到R1的ospf lsdb中除了一條三類預設路由LSA外,其餘明細的三類LSA也沒了;對應路由表中區域間的明細路由也沒有了;
總結:完全末梢區域,遮蔽了3類(除abr產生的預設路由的三類LSA)、4類、5類LSA,該區域內的路由器訪問外部網路和區域間網路,通過預設路由實現;它和stub區域的區域區別是stub沒有遮蔽三類LSA,而totally stub遮蔽了三類LSA;
雖然stub、totally stub解決了末端區域維護過大LSDB帶來的問題,但對於某些特定場景,stub 、totally stub並不是最佳解決方案;
stub區域、totally stub區域存在的問題
提示:如上拓撲,對於RTD來說,因為區域1配置了stub或totally stub,導致區域1裡無法傳播4類和5類LSA;這意味著RTD無法引入外部路由;此時只能由RTA引入外部路由;這樣一來RTD訪問外部網路就走預設路由,RTD-->RTB-->RTA--外部網路;很明顯這是一條次優路徑;對於這種既需要引入外部路由有要避免外部路由帶來的資源消耗的場景,stub/totally stub區域就不能滿足需求了;
NSSA區域和Totally NSSA區域
提示:NSSA/Totally NSSA區域有stub/totally stub區域的所有特性,它既能遮蔽3類、4類、5類LSA;同時也能引入外部路由,允許存在ASBR;我們知道外部路由引入就會產生5類LSA,但NSSA/totally NSSA區域規定不允許存在5類LSA;為了能夠引入外部路由的同時遮蔽4、5類LSA;在NSSA/totally NSSA區域對應引入外部路由就不再由5類LSA進行傳播,而是把原有的5類LSA用7類LSA的格式進行傳送;7類LSA是為了支援NSSA區域而新增的一種LSA型別,主要用於描述NSSA區域引入外部路由資訊;我們可以理解為它和原有5類LSA作用一樣,專用於NSSA區域的引入外部路由;7類LSA由NSSA區域的ASBR產生,其傳播範圍僅限於ASBR所在的NSSA區域;預設路由也通過7類LSA來產生,用於指導流量流向其他區域;NSSA區域的ABR收到7類LSA是,會有選擇地將其轉換為5類LSA,這樣做的主要目的是為了讓外部其他路由器能夠通過OSPF學習到NSSA區域匯入的外部路由;對應5類LSA在向其他區域傳播時,和NSSA區域ABR所在非NSSA區域的ABR同時會生成4類LSA,目的是找到NSSA區域的abr(此時對於RTC來說,它會把RTB當作ASBR,因為RTB傳送5類LSA);
實驗:配置上述實驗拓撲區域1為NSSA區域
在R1上建立lo1介面,並配置ip地址為5.5.5.5/32來模擬外部網路
在R1上刪除原有stub配置
在R2上刪除原有stub配置
在R1上ospf區域1配置NSSA區域
在R2上ospf區域1裡配置NSSA區域
在R1上引入直連路由
驗證:檢視R1的ospf lsdb資料庫和路由表
提示:可以看到R1的ospf lsdb中多了三條7類的LSA,有前兩條7類LSA是匯入直連路由時產生的,最後一條是abr(R2)產生的7類預設路由,其目的是告訴NSSA區域其他路由器和外部網路通訊預設流量走向;
驗證:在區域2裡檢視對應路由器是否學習到5.5.5.5的路由?
提示:對於區域2裡的R4來說,它學習到的5.5.5.5路由是外部路由,其宣告者是R2;這意味著R2傳送的是5類LSA;
總結:NSSA區域遮蔽了4類、5類LSA,同時允許有ASBR,允許引入外部路由(打破了末梢區域的規則),因此為了傳遞外部路由,該區域使用7類LSA代替5類LSA,到其他正常區域再轉換成5類LSA;配置NSSA區域ABR會產生一條7類預設路由,其目的是告訴NSSA區域的路由器去往其他外部網路的預設路由;
Totally NSSA區域配置
提示:配置完全NSSA區域和配置完全stub區域一樣,都是在abr上對應區域下在NSSA配置後追加no-summary引數即可;
驗證:檢視R1的ospf LSDB,看看有什麼不同?
提示:可以看到在NSSA區域的abr上對應區域下追加no-summary引數以後,對應NSSA區域的路由器ospf lsdb資料庫中三類LSA也被遮蔽掉了(除abr產生的一條三類LSA預設路由);
總結:Totally NSSA區域不允許三、四、五類LSA在本區域泛洪;配置完全NSSA區域後,對應abr會自動產生一條三類預設路由;完全NSSA區域和NSSA區域的區別在於,NSSA區域不遮蔽三類LSA,完全NSSA區域遮蔽三類LSA;