前文我們了解了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;