1、OSPF概述 node
回顧一下距離矢量路由協議的工做原理:運行距離矢量路由協議的路由器週期性的泛洪本身的路由表,經過路由的交互,每臺路由器都從相鄰的路由器學習到路由,而且加載進本身的路由表中,而對於這個網絡中的全部路由器而言,他們並不清楚網絡的拓撲,他們只是簡單的知道要去往某個目的應該從哪裏走,距離有多遠。
相比之下鏈路狀態路由協議就要複雜的多: 算法
1. LSAs的泛洪 數據庫
運行鏈路狀態路由協議的路由器之間首先會創建一個協議的鄰居關係。以後彼此之間開始交互LSA,也就是鏈路狀態通告,注意這裏交互的不是路由信息,而是鏈路狀態通告,那麼什麼是鏈路狀態通告呢,你能夠簡單的理解爲每臺路由器都產生一個描述本身直鏈接口狀態(包括接口的開銷、與鄰居路由器之間的關係等)的通告,更通俗點的講法是,每臺路由器都產生一個通告,這個通告描述它自家門口的狀況。 網絡
2. LSDB的組建 dom
每臺路由器都會產生LSAs,路由器將蒐集到的網絡中的LSAs放入本身的LSDB(鏈路狀態數據庫),有了LSDB,路由器也就清楚了全網的拓撲。由於LSDB中所存儲的每條LSA都是由網絡中各路由器產生而且描述其直鏈接口各項信息的條目。 oop
3. SPF計算 性能
接下去,每臺路由器基於LSDB,使用SPF(最短路徑算法)進行計算。SPF是OSPF路由協議的一個核心算法,用來在一個複雜的網絡中作出路由優選的決策。通過SPF算法的計算後,每臺路由器都計算出一棵以本身爲根的、無環的、擁有最短路徑的「樹」。有了這棵「樹」,事實上路由器就已經知道了到達網絡各個角落的最優路徑。 學習
4. 維護路由表優化
最後,路由器將計算出來的最優路徑,加載進本身的路由表。 ui
OSPF:Open Shortest Path First,開放最短路徑優先協議,是一種鏈路狀態路由協議,在RFC 2328中描述。OSPF中的字母O意爲open,也就是開放、公有,任何標準化的設備廠商都可以支持OSPF。
OSPF是一種使用至關普遍的IGP協議,深刻掌握OSPF很是有必要。
與距離矢量路由協議直接交互路由器的路由表不一樣,OSPF做爲鏈路狀態路由協議,路由器之間交互的是LSA(鏈路狀態通告),路由器將網絡中泛洪的LSA蒐集到本身的LSDB(鏈路狀態數據庫)中,這有助於OSPF理解整張網絡拓撲,並在此基礎上經過SPF最短路徑算法計算出以本身爲根的、到達網絡各個角落的、無環的樹,最終,路由器將計算出來的路由裝載進路由表中。
2、OSPF基本概念
1、Router-ID
OSPF Router-ID用於在OSPF domain中惟一地表示一臺OSPF路由器,從OSPF網絡設計的角度,咱們要求全OSPF域內,禁止出現兩臺路由器擁有相同的OSPFRouterID。
OSPF Router-ID的設定能夠經過手工配置的方式,或者經過協議自動選取的方式。固然,在實際網絡部署中,強烈建議手工配置OSPF的Router-ID,由於這關係到協議的穩定。
在路由器運行了OSPF並由系統自動選定Router-ID以後,若是該Router-ID對應的接口DOWN掉,或出現一個更大的IP,OSPF仍然保持原Router-ID(也就是說,Router-ID值是非搶佔的,穩定第一),即便此時reset ospf process重啓OSPF進程,Router-ID也不會發生改變;除非從新手工配置Router-ID(OSPF進程下手工敲router-id xxx),而且重啓OSPF進程方可。另外,若是該Router-ID對應的接口IP 地址消失,例如undo ip address,則reset ospf process後,RouterID也會發生改變。
2、COST
OSPF使用cost「開銷」做爲路由度量值。
每個激活OSPF的接口都有一個cost值。OSPF接口cost=100M /接口帶寬,其中100M爲OSPF的參考帶寬(reference-bandwidth)。
一條OSPF路由的cost由該路由從路由的起源一路到達本地的全部入接口cost值的總和。
注意:上圖只是爲了幫助你們理解路由cost的計算過程,咱們都知道OSPF實際的路由計算是由LSA通過計算得來的,因此這裏只是形象化的幫助你們理解而已:R1將路由更新出來,Cost=1,R2從Serial4/0/0口收到這條路由,最終這條路由在R2的路由表中的cost等於1加上serial4/0/0接口的cost 50也就是51,再將這條路由更新給R3,那麼這條路由在R3上的cost=51+1也就是52。
另外,因爲默認的參考帶寬是100M,這意味着更高帶寬的傳輸介質(高於100M)在OSPF協議中將會計算出一個小於1的分數,這在OSPF協議中是不容許的(會被四捨五入爲1)。而現今網絡設備滿地都是大於100M帶寬的接口,這時候路由COST的計算其實就不精確了。因此可使用bandwidth-reference 1000命令修改,可是這條命令要謹慎使用,一旦要配置,則建議全網OSPF路由器都配置。
3、報文類型
OSPF一共有五種報文,各有各的用途:
Hello創建和維護OSPF鄰居關係
DBD鏈路狀態數據庫描述信息(描述LSDB中LSA頭部信息)
LSR鏈路狀態請求,用於向OSPF鄰居請求鏈路狀態信息
LSU鏈路狀態更新(包含一條或多條LSA)
LSAck對LSU中的LSA進行確認
4、OSPF的三張表
鄰居表(Peer table):
OSPF是一種可靠的路由協議,要求在路由器之間傳遞鏈路狀態通告以前,需先創建OSPF鄰居關係,hello報文用於發現直連鏈路上的其餘OSPF路由器,再通過一系列的OSPF消息交互最終創建起全毗鄰的鄰居關係,其中二者之間須要經歷幾個鄰居關係狀態,這也是一個重要的知識點。路由器在各個激活的OSPF的接口上維護的鄰居都列在鄰居表中,經過觀察鄰居表,可以進一步瞭解OSPF路由器之間的鄰居狀態。
鏈路狀態數據庫LSDB(Link-state database):
OSPF用LSA(link state Advertisement 鏈路狀態通告)來描述網絡拓撲信息,而後OSPF路由器用鏈路狀態數據庫來存儲網絡的這些LSA。OSPF將本身產生的以及鄰居通告的LSA蒐集並存儲在鏈路狀態數據庫LSDB中。掌握LSDB的查看以及對LSA的深刻分析纔可以深刻理解OSPF。
OSPF路由表(Routing table):
對鏈路狀態數據庫進行SPF(Dijkstra)計算,而得出的OSPF路由表。
5、OSPF鄰居關係創建過程
OSPF鄰居關係的創建過程是咱們在學習OSPF過程當中的一個重點,並且很是具備研究價值,就OSPF的實際部署而言,掌握這裏頭的機制也是頗有必要的,由於鄰居關係的創建是OSPF工做的基本,若是連鄰居關係都創建不起來,就別談其餘的了。在實際業務部署中,可能會碰到各類問題致使OSPF鄰居關係沒法正常創建,所以這個模塊很是值得推敲。
本文描述數據通訊基礎性知識,所以更加深刻的內容暫不涉及。
6、OSPF網絡類型
OSPF是一個「接口敏感型」協議,這句話很是值得細細品味。在上面咱們介紹ospf cost的時候,就曾經講過,路由的cost實際上得累加上入接口的cost。而OSPF中後續要介紹的DR、BDR的概念,實際上也是基於接口的,另外鄰居關係的創建,也是與接口有關,所以其實不少機制着眼點都與接口有關。一旦咱們在某個接口上激活了OSPF,那麼這個接口將會根據該接口的二層(數據鏈路層)封裝,捆綁對應的OSPF網絡類型,注意,不一樣的OSPF接口網絡類型,OSPF在該接口上的操做將有所不一樣。
OSPF支持的網絡類型:
· 點到點網絡
· 廣播型多路訪問網絡
· 非廣播型多路訪問(NBMA)網路
· P2MP網絡
常見鏈路層協議對應的默認網絡類型
若是一個接口是以太網接口,那麼該接口激活OSPF後,該接口的缺省OSPF網絡類型爲Broadcast也就是廣播型多路訪問網絡。而若是一個接口是serial接口,二層封裝爲HDLC或者PPP,那麼激活OSPF後,其缺省的OSPF網絡類型就是Point-to-Point也就是點對點。
接口的OSPF網絡類型是能夠經過命令修改的。
7、DR、BDR
在廣播多路訪問網絡(Multi Access)中,例如以太接口,全部的路由器的接口都是相同網段、處於同一個廣播網絡中,這些接口若是兩兩創建OSPF鄰居關係,這就意味着,網絡***有:
n(n-1)/2
這麼多個OSPF鄰居關係,維護如此多的鄰居關係不只僅額外消耗設備資源,更是增長了網絡中LSA的泛洪數量。
· 爲減少多路訪問網絡中的 OSPF 流量,OSPF 會在每個MA網絡(多路訪問網絡)選舉一個指定路由器 (DR) 和一個備用指定路由器 (BDR)。
· DR選舉規則:最高OSPF接口優先級擁有者被選做DR,若是優先級相等(默認爲1),具備最高的OSPF Router-ID的路由器被選舉成DR,而且DR具備非搶佔性,也就是說若是該MA網絡中,已經選舉完成、而且選舉出了一個DR,那麼後續即便有新的、更高優先級的設備加入,也不會影響DR的選舉,除非DR掛掉。
· 指定路由器 (DR):DR 負責偵聽多路訪問網絡中的拓撲變動信息並將變動信息通知給其餘路由器,同時負責表明該MA網絡發送LSA類型2。MA網絡中,全部的OSPF路由器都與DR創建全毗鄰的OSPF鄰接關係。
· 備用指定路由器 (BDR):BDR 會監控 DR 的狀態,並在當前 DR 發生故障時接替其角色
· 注意OSPF爲「接口敏感型協議」,DR及BDR的身份狀態是基於OSPF接口的,因此若是咱們說:「這臺路由器是DR」實際上這種說法是不嚴謹的,嚴格的說,應該是:「這臺路由器的這個接口,在這個MA網絡上是DR」。
· MA網絡中,全部的DRother路由器均只與DR和BDR創建全毗鄰的鄰接關係,DRother間不創建全毗鄰鄰接關係,如此一來,該多路訪問網絡中設備須要維護的OSPF鄰居關係大幅減少:M= (n-2)×2+1,LSA的泛洪問題也能夠獲得必定的緩解
· 路由器的接口若是網絡類型爲廣播多路訪問或者非廣播多路訪問型,那麼都會進行DR/BDR的選舉。因此咱們看,OSPF接口網絡類型的不一樣,OSPF的操做是有所不一樣的。在P2P或者P2MP類型的接口上,就不選舉DR\BDR。
接下去看看在MA網絡中,有了DR、BDR的存在後,LSA的泛洪:
假設網絡已經完成了OSPF收斂,如今忽然R3下掛的一個網絡發生了故障
路由器R3用224.0.0.6通知DR及BDR
DR、BDR監聽224.0.0.6這一組播地址
DR向組播地址224.0.0.5發送更新以通知其它路由器
全部的OSPF路由器監聽224.0.0.5這一組播地址
路由器收到包含變化後的LSA的LSU後,更新本身的LSDB,過一段時間(SPF延遲),對更新的鏈路狀態數據庫執行SPF算法,必要時更新路由表。
這裏有個知識點要記住,OSPF使用兩個well-know的組播地址:224.0.0.5及224.0.0.6,這是一個常識,需熟記。全部的OSPF路由器(的接口)都會偵聽發向224.0.0.5這個組播地址的報文,全部DR/BDR都會偵聽224.0.0.6。
8、OSPF 區域(area)的概念
單區域存在的問題:
設想一下,若是OSPF沒有區域的概念,或者整個OSPF網絡就是一個區域,那麼會有什麼問題?在一個區域內,LSA會被泛洪,而且同一個區域的OSPF路由器,關於該區域的LSA會同步,這樣一來,若是整個網絡就一個單獨的區域的話,若是規模很是龐大,那麼LSA的泛洪會很嚴重,OSPF路由器的負擔很大,由於OSPF要求區域內的全部路由器,LSDB必須統一,這樣以便計算出一個統一的、無環的拓撲;
區域內部動盪會引發全網路由器的SPF計算;
LSDB龐大,資源消耗過多,設備性能降低,影響數據轉發;
每臺路由器都須要維護的路由表愈來愈大,單區域內路由沒法彙總。
OSPF多區域:
基於上述緣由,OSPF設計了區域area的概念
多區域的設計減小了LSA洪泛的範圍,有效地把拓撲變化控制在區域內,達到網絡優化的目的
在區域邊界能夠作路由彙總,減少了路由表
充分利用OSPF特殊區域的特性,進一步減小LSA泛洪,從而優化路由
多區域提升了網絡的擴展性,有利於組建大規模的網絡
OSPF區域中的骨幹區域area0:
在部署OSPF時,要求全OSPF域,必須有且只能有一個area0,Area 0爲骨幹區域,骨幹區域負責在非骨幹區域之間發佈由區域邊界路由器彙總的路由信息(並不是詳細的鏈路狀態信息),爲避免區域間路由環路,非骨幹區域之間不容許直接相互發布區域間路由。所以,全部區域邊界路由器都至少有一個接口屬於Area 0,即每一個區域都必須鏈接到骨幹區域。
OSPF路由器的角色
OSPF路由器的角色:
區域內路由器Internal Router
區域邊界路由器Area Border Router
骨幹路由器Backbone Router
AS邊界路由器AS Boundary Router
3、OSPF LSAs及特殊區域
1、前言
前面咱們已經介紹過了,對於OSPF這類的鏈路狀態路由協議而言,LSA鏈路狀態通告是工做在底層、最爲關鍵、最爲核心的構件,正由於有了LSA,OSPF可以準確的描述網絡拓撲而且最終計算出最優的路由。OSPF設計了多種LSA,以便描述網絡拓撲及各類類型的路由。
2、實驗環境
上圖是本次咱們用於講解OSPF LSA的網絡拓撲,比較簡單:
· R一、R二、R三、R4四臺路由器運行OSPF。
· 設備接口互聯IP如圖所示,都是192.168.0.0/16開頭的地址段。
· 全部設備配置Loopback0接口,IP地址爲x.x.x.x/32,x爲設備編號。
但僅在R1及R2上network loopback0接口。
· 全部設備的OSPF RouterID均使用Loopback0接口的IP地址,也就是x.x.x.x
· 在R一、R二、R3所處的LAN中,將R3的GE0/0/0口優先級調高,使之成爲DR
咱們開始來逐一認識每種LSA:
3、LSA詳解
1) LSA類型1-路由器LSA(Router SLA)
每一臺運行OSPF的路由器均會產生1類LSA,1類LSA怎麼理解?其實很簡單,就是每臺路由器描述一下本身「家門口的情況」,而且只會告訴給「全村的人」(本區域內泛洪)。
1類LSA主要的功能有如下兩點:
描述路由器的特殊角色,如Virtual-link、ABR、ASBR:
這是經過1類LSA中相關的V、B、E位的置1來體現的,例如若是本臺設備是ABR,那麼它產生的1類LSA中B位會置1。
描述本路由器在某個區域內部的直連鏈路(接口)及接口COST值。
例如上圖中,全部OSPF路由器都會產生1類LSA,而且在本區域內泛洪。咱們以R1舉例,它會產生一個類型1的LSA,那麼在這個LSA1中,包含兩個鏈路的描述,一個用於描述Loopback接口以及接口的COST值,另外一個是描述GE0/0/0接口以及COST值。這個1類LSA會在area1內泛洪。
咱們首先來看一下R1的LSDB:
[R1] display ospf lsdb
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 527 48 80000005 1
Router 1.1.1.1 1.1.1.1 562 48 80000006 1
Router 3.3.3.3 3.3.3.3 775 36 80000007 1
Network 192.168.123.33.3.3.3 816 36 80000003 0
Sum-Net 192.168.34.0 3.3.3.3 771 28 80000001 48
上面就是R1的LSDB,實際上在area1內,OSPF路由器關於area1的LSDB都是統一的。在上面的LSDB中咱們觀察到了一、二、3類LSA。重點來看一下R1本身產生的1類LSA:
[R1] display ospf lsdb router 1.1.1.1 #這條命令查看router lsa也就是1類LSA 1.1.1.1
OSPF Process 1 with Router ID 1.1.1.1
Area: 0.0.0.1
Link State Database
Type : Router #LSA類型爲router lsa,也就是類型1
Ls id : 1.1.1.1 # LS ID爲1.1.1.1,這是R1的RouterID
Adv rtr : 1.1.1.1 # 該LSA通告者的RouterID,也就是R1的RouterID
Ls age : 644
Len : 48
Options : E
seq# : 80000006
chksum : 0xbca7
Link count: 2 #這個LSA包含2個鏈路的描述
* Link ID: 192.168.123.3 #鏈路1,ID爲192.168.123.3也就是DR的IP地址
Data : 192.168.123.1 #R1的GE0/0/0口的IP
Link Type: TransNet #鏈路類型
Metric : 1 #接口Cost=1
* Link ID: 1.1.1.1 #鏈路2,對應Loopback接口
Data : 255.255.255.255
Link Type: StubNet
Metric : 0 #接口Cost=0
Priority: Medium
這就是1類LSA, R2在Area1中的1類LSA大致上相似,那麼R3泛洪的1類LSA是如何?
[R3 ]display ospf lsdb router 3.3.3.3
OSPF Process 1 with Router ID 3.3.3.3
Area: 0.0.0.0#R3在area0內泛洪的1類LSA
Link State Database
Type : Router
Ls id : 3.3.3.3
Adv rtr : 3.3.3.3
Ls age : 946
Len : 48
Options : ABR E
seq# : 80000002
chksum : 0x2878
Link count: 2 #R3在area0內泛洪的1類LSA包含兩個Link,實際上一個用於描述這個接口所在的網段,另外一個用於描述這個點到點接口對端的路由器也就是R4
* Link ID: 4.4.4.4 #R4的RouterID
Data : 192.168.34.3 #R3的serial4/0/0的IP地址
Link Type: P-2-P
Metric : 48
* Link ID: 192.168.34.0 #描述R4的Serial4/0/0口所在的網段及掩碼
Data : 255.255.255.0
Link Type: StubNet
Metric : 48
Priority : Low
Area: 0.0.0.1 #R3在area1內泛洪的1類LSA
Link State Database
Type : Router
Ls id : 3.3.3.3
Adv rtr : 3.3.3.3
Ls age : 970
Len : 36
Options : ABR E
seq# : 80000007
chksum : 0x7fe4
Link count: 1
* Link ID: 192.168.123.3
Data : 192.168.123.3
Link Type: TransNet
Metric : 1
咱們來總結一下,針對不一樣的鏈路類型,OSPF 1類LSA在描述不一樣鏈路類型的時候,LSID及Data字段的內容有不一樣:
2) LSA類型2-網絡LSA(Network LSA)
在多路訪問型MA網絡中(例如以太網,或者幀中繼網絡),會選舉DR、BDR,而全部的Drother都只能和DR及BDR創建鄰接關係,Drother也就是非DR、BDR路由器之間不會創建全毗鄰的OSPF鄰接關係。
從某種層面上說,DR實際上表明瞭這個MA網絡,在本區域內泛洪2類LSA,來呈現該MA網絡中的全部路由器。所以2類LSA僅存在於有MA網絡的area中,而且由DR發送,用來描述這個MA網絡中的全部路由器(的Router-ID)。
在上例中,R3的GE0/0/0口是123.0網絡的DR,所以R一、R2都只和R3創建全毗鄰的鄰接關係。這時候R3就成了這個MA網絡的表明者,其發送2類LSA,該LSA包含的內容如圖,詳細信息見下,注意該2類LSA也只是在area1內泛洪。
[R3] display ospf lsdb network
OSPF Process 1 with Router ID 3.3.3.3
Area: 0.0.0.1
Link State Database
Type : Network #LSA類型爲network lsa,也就是類型2
Ls id : 192.168.123.3 #LS ID鏈路狀態ID爲DR的接口IP地址
Adv rtr : 3.3.3.3 #通告者RouterID,天然就是R3的RouerID
Ls age : 1256
Len : 36
Options : E
seq# : 80000003
chksum : 0x2a1e
Net mask : 255.255.255.0 #掩碼信息
Priority : Low
Attached Router 3.3.3.3 #鏈接到這個MA網絡的路由器:R3
Attached Router 1.1.1.1 #鏈接到這個MA網絡的路由器:R1
Attached Router 2.2.2.2 #鏈接到這個MA網絡的路由器:R2
總結一下:
2類LSA,也就是網絡LSA,由DR產生,描述其在該MA網絡上鍊接的全部路由器的RouterID(包括DR本身)以及該MA網絡的掩碼。
2類LSA只在本區域Area內洪泛,不容許跨越ABR。並且只有在MA網絡纔會出現。
2類LSA中沒有COST字段(所以需藉助1類LSA來進行SPF算法)
得益於一、2類LSA,OSPF在一個區域內的路由計算就沒有問題了。
3) LSA類型3-網絡彙總LSA(Network Summary LSA)
前兩類LSA解決了區域內路由計算的問題,那麼區域間呢?若是路由器須要訪問其餘區域呢?
這時就須要3類LSA。3類LSA是網絡彙總LSA,這裏的「彙總」二字,其實翻譯爲「概括」更貼切,它和路由匯老是徹底不一樣的概念。因爲ABR同時屬於兩個以上的區域(其中必須有骨幹區域),它知道這些區域的一、2類LSA,那麼就能作件事:將某個區域的一、2類LSA,作個概括,而後爲其餘區域生成3類LSA並泛洪到其餘區域中,如此一來,區域間的路由計算就沒問題了。.
所以3類LSA,由ABR產生:
上圖中,R3將area0內的LSA1作了概括,而後爲area1注入LSA3,這個LSA3其實是描述的192.168.34.0/24這個網段,以及cost值,固然,這個cost值實則爲R3的Serial4/0/0口的接口cost。
上圖是R3將area1內的網絡信息經過LSA3注入到了area0中,其中包含三個網段信息,分別是192.168.123.0/2四、1.1.1.1/3二、2.2.2.2/32。那麼這樣一來R4就能進行計算,得出三條路由。
來看一下R3的LSDB
[R3] display ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 1574 48 80000002 48
Router 3.3.3.3 3.3.3.3 1573 48 80000002 48
Sum-Net 192.168.123.03.3.3.3 1593 28 80000001 1
Sum-Net 2.2.2.2 3.3.3.3 1350 28 80000001 1
Sum-Net 1.1.1.1 3.3.3.3 1386 28 80000001 1
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 1351 48 80000005 1
Router 1.1.1.1 1.1.1.1 1387 48 80000006 1
Router 3.3.3.3 3.3.3.3 1597 36 80000007 1
Network 192.168.123.3 3.3.3.3 1638 36 80000003 0
Sum-Ne192.168.34.0 3.3.3.3 1593 28 80000001 48
在更詳細點的來查看一下R3產生的3類LSA
[R3] display ospf lsdb summary
OSPF Process 1 with Router ID 3.3.3.3
Area: 0.0.0.0
# R3爲area0注入的LSA3
Link State Database
Type : Sum-Net
Ls id : 192.168.123.0
Adv rtr : 3.3.3.3
Ls age : 1637
Len : 28
Options : E
seq# : 80000001
chksum : 0x1b50
Net mask : 255.255.255.0
Tos 0 metric: 1
Priority : Low
Type : Sum-Net
Ls id : 2.2.2.2 #描述2.2.2.2/32這個子網的LSA3
Adv rtr : 3.3.3.3
Ls age : 1394
Len : 28
Options : E
seq# : 80000001
chksum : 0xbe89
Net mask : 255.255.255.255
Tos 0 metric: 1#cost=1
Priority : Low
Type : Sum-Net
Ls id : 1.1.1.1 #描述1.1.1.1/32這個子網的LSA3
Adv rtr : 3.3.3.3
Ls age : 1430
Len : 28
Options : E
seq# : 80000001
chksum : 0xec5f
Net mask : 255.255.255.255
Tos 0 metric: 1#cost=1
Priority : Low
Area: 0.0.0.1
#R3爲area1注入的LSA3
Link State Database
Type : Sum-Net
Ls id : 192.168.34.0 #描述192.168.34.0/24這個子網
Adv rtr : 3.3.3.3
Ls age : 1637
Len : 28
Options : E
seq# : 80000001
chksum : 0xc9cb
Net mask : 255.255.255.0
Tos 0 metric: 48#cost爲48
Priority : Low
以上就是R1在area0及area1中產生的3類LSA。事實上3類LSA由ABR就是將某個區域的子網信息通告給其餘區域。往更深的角度思考,其實OSPF在area之間的3了LSA傳遞很像距離矢量路由協議的行爲。
4) LSA類型4-ASBR彙總LSA(ASBR Summary LSA)
爲了講解LSA4及LSA5,咱們須要將配置作點小變動。在R4上,咱們開設一個新的Loopback接口,配置一個IP地址,子網位44.44.44.0/24,如今咱們使用import-route的方式,將44.44.44.0/24的直連路由重發布進OSPF。而後繼續咱們的講解:
4類LSA是一個指向ASBR的LSA,由該ASBR所在的area中的ABR產生(這點要格外留意)。
ASBR做爲域邊界路由器,將外部的路由經過重發布的方式注入了OSPF域,這些外部路由在OSPF中進行傳遞(這些外部路由是以5類LSA的形式在域內傳播),而咱們OSPF內部的路由器若是想前往這些外部網段,則須要同時具有兩個條件:
· 知道外部的路由(這經過重發布的動做,已經完成了注入,藉助5類LSA完成傳播)
· 知道完成這個重分發動做的ASBR的位置
也就是說,咱們在圍城裏,想要去圍城外的某個地方,需具有兩個條件,1是你要知道外頭有什麼,2是你要知道城門在哪裏,因此5類LSA告訴你外頭有啥,4類LSA告訴你城門是誰。
關鍵在於第二點。與ASBR在同一區域的區域內部路由器(例如本實驗中的R3),能經過ASBR(R4)產生的1類LSA知道該ASBR的位置(1類LSA中E位=1,因此與ASBR同區域的路由器都知道),可是問題來了,1類LSA的泛洪範圍是本區域內,那麼該區域外的路由器(如area1中的R一、R2),如何得知這臺ASBR的位置呢?那麼就須要藉助4類LSA了。
所以4類LSA由ABR產生,用來告訴與ASBR不在同一個區域內的其餘OSPF Router關於 ASBR的信息。
上圖中R4做爲ASBR,作了路由import,將直連路由4.4.4.4/32引入了OSPF。這些路由經過5類LSA的形式在OSPF Domain裏擴散。可是4.4.4.4/32的路由要真正加載進OSPF路由表,還須要一個重要因素,那就是他們得知道注入這條外部路由的ASBR在哪兒。咱們已經說了,與ASBR R4同處一個area的R3已經經過LSA1知道了ASBR,可是area1內的路由器卻並不知道,由於R4產生的1類LSA只可以在area0內泛洪。
在這個時候,R3做爲ABR,就扮演一個重要做用,它本身得知ASBR的位置後,會向area1注入4類LSA,用於描述ASBR。這樣一來area1內的R1及R2就既經過LSA5學習到了路由4.4.4.4/32,又經過LSA4瞭解到了ASBR的位置,所以這條外部路由纔可以被加載進他們的路由表中。
咱們在R1上查看一下這個4類LSA:
[R1]display ospf lsdb asbr
OSPF Process 1 with Router ID 1.1.1.1
Area: 0.0.0.1
Link State Database
Type : Sum-Asbr
Ls id : 4.4.4.4#ASBR的RouterID
Adv rtr : 3.3.3.3 #通告這條4類LSA的ABR的RouterID
Ls age : 1037
Len : 28
Options : E
seq# : 80000001
chksum : 0x2ce3
Tos 0 metric: 48 #ABR也就是R3本身到達ASBR的開銷
5)LSA類型5-AS外部LSA(AS External LSA)
R4此刻已是一臺ASBR了,由於它將外部路由44.44.44.0/24經過import-route的方式注入到了OSPF中,這條外部路由其實是經過LSA5在整個OSPF domain內泛洪。
[R1]display ospf lsdb ase
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Type : External
Ls id : 44.44.44.0 #注入進來的這條外部路由的網絡號
Adv rtr : 4.4.4.4 #ASBR的RouteriD
Ls age : 781
Len : 36
Options : E
seq# : 80000001
chksum : 0xcde2
Net mask : 255.255.255.0#外部路由的掩碼
TOS 0 Metric: 1 #這條外部路由的外部metric
E type : 2 #外部路由的metric類型,爲metric-type 2
Forwarding Address : 0.0.0.0
Tag : 1
Priority : Medium
6)LSA類型7:NSSA外部LSA(NSSA External LSA)
7類LSA是一種很是特殊的LSA,要注意的是這種LSA做爲一種描述外部路由的LSA它只能被在NSSA中進行泛洪,不能跨越NSSA進入骨幹區域0。特殊區域NSSA會阻擋從骨幹區域area0中過來的5類LSA進入,同時容許NSSA本地始發外部路由,這些外部路由以7類LSA的形式在本地NSSA中進行泛洪,當這些7類LSA到達NSSA的ABR時,由該ABR負責將這些7類LSA轉換成5類LSA,方可注入骨幹區域。
留意一下上圖,咱們將配置作一點變動:將area1配置爲NSSA。而後在R1上再建立一個Loopback1,配置一個11.11.11.0/24的子網IP,而後將這個直連路由import到OSPF中:
這樣一來,這條外部路由因爲是在特殊區域NSSA中被注入的,那麼它是以LSA類型7注入進來,並在NSSA area1內泛洪的。
在R2上作一下查看:
[R2]display ospf lsdb
OSPF Process 1 with Router ID 2.2.2.2
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 100 48 80000006 1
Router 1.1.1.1 1.1.1.1 100 48 80000007 1
Router 3.3.3.3 3.3.3.3 100 36 80000006 1
Network 192.168.123.3 3.3.3.3 100 36 80000003 0
Sum-Net 192.168.34.0 3.3.3.3 148 28 80000001 48
NSSA 11.11.11.0 1.1.1.1 163 36 80000001 1
咱們看到area 1中,已經出現了一條NSSA類型的LSA,這就是7類LSA。
再來看一下詳細內容:
[R2] display ospf lsdb nssa 11.11.11.0
OSPF Process 1 with Router ID 2.2.2.2
Area: 0.0.0.1
Link State Database
Type : NSSA
Ls id : 11.11.11.0
Adv rtr : 1.1.1.1
Ls age : 253
Len : 36
Options : NP
seq# : 80000001
chksum : 0xf90
Net mask : 255.255.255.0
TOS 0 Metric: 1
E type : 2
Forwarding Address : 1.1.1.1
Tag : 1
Priority : Low
咱們看到,其實7類LSA在報文格式上,與5類LSA沒有明顯的差異。二者都用於描述外部路由。可是7類LSA只可以存在於NSSA中,不能被泛洪到常規區域中。所以在本實驗中,R3也可以從area1中收到R1產生的7類LSA,而且在路由表中加載以下路由:
[R3] display ip routing-table
Route Flags: R – relay, D – download to fib
——————————————————————————
Routing Tables: Public
Destinations : 16 Routes : 16
Destination/Mask Proto Pre Cost Flags NextHop Interface
11.11.11.0/24 O_NSSA 150 1 D 192.168.123.1 GigabitEthernet0/0/0
……
可是7類LSA是不能進入area0的,那麼area0內的用戶如何可以學習到這條外部路由呢?R3做爲一臺ABR,就發揮了很重要的做用,它會作一個「7轉5」的動做,也就是講7類LSA轉換成5類LSA,而後在泛洪到area0中,從而泛洪到其餘常規區域中:
咱們能夠在R4上再作查看:
[R4] display ospf lsdb
OSPF Process 1 with Router ID 4.4.4.4
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 765 48 8000000C 48
Router 3.3.3.3 3.3.3.3 686 48 8000000B 48
Sum-Net 192.168.123.0 3.3.3.3 685 28 8000000A 1
Sum-Net 2.2.2.2 3.3.3.3 640 28 80000001 1
Sum-Net 1.1.1.1 3.3.3.3 642 28 80000001 1
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 44.44.44.0 4.4.4.4 638 36 80000001 1
External 11.11.11.0 3.3.3.3 642 36 80000001 1
咱們看到,11.11.11.0這條外部SLA,到了area0裏的R4上,就變成了5類LSA了,而且advrouter,也就是通告者是R3。
4、特殊區域詳解
爲了讓咱們的講解更加的通俗易懂,咱們看上面這個拓撲,這是一個根據客戶業務邏輯結構所涉及的OSPF網絡,共有三個區域(實際上遠遠不止),骨幹區域area0爲一級行及二級行所部署,***行部署的是OSPF的常規區域,爲了保證網絡的暢通,咱們將網絡中的各個角落都宣告進了OSPF,感受上很爽,可是其實路由器很壓抑,畢竟隨着設備愈來愈多、網絡前綴愈來愈多,路由條目勢必逐漸增多,那麼路由器就亞歷山大了,畢竟龐大的路由表及LSA在極大地消耗着路由器的資源。
從網絡優化的角度,咱們一直在試圖在保證網絡通暢的狀況下減小網絡中傳遞的路由條目及LSA的數量,路由彙總就是一種很好的方式,固然,從OSPF的設計規劃角度,咱們還有特殊區域可供咱們靈活運用,下面來看看OSPF特殊區域是如何幫助咱們減小LSA泛洪的。
咱們拿area1作參考區域,當area1爲常規區域時,區域中會有多少種LSA在泛洪呢?1類是必然有的,因爲area1中存在以太網鏈路,所以2類LSA也有。另外其餘區域的3類LSA被ABR也都注入進了本區域。再者因爲area2的ASBR引入了外部路由(5類LSA),所以LSA5也會被泛洪進area1,固然4類LSA也跟着來了。那麼如此一來,area1中就有一、二、三、四、5,共計5種類型的LSA,齊活了。可是仔細一想咱們就發現,其實area1做爲「葉」區域,不必知道外部路由的詳細狀況,我只須要知道有那麼一條路,讓我到達域外便可,所以,第一種特殊區域:末梢區域 stub area。
實驗環境介紹
本次內容講解使用的實驗環境如上:
· R一、R二、R三、R4運行OSPF;
· 設備互聯地址IP如圖所示;
· 全部設備配置Loopback0口,IP爲x.x.x.x/32,其中x爲設備編號。例如R1的Loopback0地址爲1.1.1.1/32,該地址不network進OSPF,只做爲設備OSPF RouterID使用;
· R4上配置Loopback1接口,IP子網爲44.44.44.0/24,R4將這條直連路由import進OSPF。
R1的配置以下(省略接口Ip地址的配置):[R1] ospf 1 router-id 1.1.1.1
[R1-ospf-1] area 1
[R1-ospf-1-area-0.0.0.1] network 10.1.12.1 0.0.0.0
R2的配置以下(省略接口Ip地址的配置):
[R2] ospf 1 router-id 2.2.2.2
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] network 10.1.12.2 0.0.0.0
[R2-ospf-1] area 0
[R2-ospf-1-area-0.0.0.0] network 10.1.23.2 0.0.0.0
R3的配置以下(省略接口Ip地址的配置):
[R3] ospf 1 router-id 3.3.3.3
[R3-ospf-1] area 0
[R3-ospf-1-area-0.0.0.0] network 10.1.23.3 0.0.0.0
[R3-ospf-1] area 2
[R3-ospf-1-area-0.0.0.2] network 10.1.34.3 0.0.0.0
R4的配置以下(省略接口Ip地址的配置):
[R4] acl 2000
[R4- acl-basic-2000] rule permit source 44.44.44.0 0
[R4- acl-basic-2000] quit
[R4] route-policy RP permit node 10
[R4-route-policy] if-match acl 2000
[R4-route-policy] quit
[R4] ospf 1 router-id 4.4.4.4
[R4-ospf-1] import-route direct route-policy RP
[R4-ospf-1] area 2
[R4-ospf-1-area-0.0.0.2] network 10.1.34.4 0.0.0.0
下面咱們開始介紹各類特殊區域:
1.Stub area末梢區域
咱們能夠經過配置,能夠將一個常規區域設置爲stub區域。例以下圖,將area1配置爲stub area。Stub區域將禁止四、5類LSA進入該區域,同時該區域的ABR將會自動下發一條默認路由(3類LSA)進該區域,以確保區域內訪問區域外的路由通路沒有問題。這能夠形象的理解爲:「外面的世界再怎麼精彩,你不用告訴我細節,只要讓我出去就好了」。這就是stub area的設計思路。當引入大量的外部路由進OSPF,適當的規劃某些區域爲stub,能夠起到不錯的網絡優化做用,大大的下降路由器須要維護的路由條目數量。
有一點值得注意,你不能將骨幹區域area0配置爲stub區域,同時,讓一個區域被指定爲stub area,區域內將不容許注入外部路由,也就是不能作重發布。
在初始狀況下R1的路由表以下:
[R1] display ip routing-table
Route Flags: R – relay, D – download to fib
——————————————————————————
Routing Tables: Public
Destinations : 11 Routes : 11
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.1.23.0/24 OSPF 10 2 D 10.1.12.2 GigabitEthernet0/0/0
10.1.34.0/24 OSPF 10 3 D 10.1.12.2 GigabitEthernet0/0/0
44.44.44.0/24 O_ASE150 1 D 10.1.12.2 GigabitEthernet0/0/0
……
咱們看到有其餘區域的路由,以及外部路由44.44.44.0/24
再看一下R1的LSDB:
[R1] display ospf lsdb
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 1723 36 80000005 1
Router 1.1.1.1 1.1.1.1 116 36 80000007 1
Network 10.1.12.1 1.1.1.1 116 32 80000004 0
Sum-Net 10.1.23.0 2.2.2.2 1710 28 80000002 1
Sum-Net 10.1.34.0 2.2.2.2 1655 28 80000002 2
Sum-Asbr 4.4.4.4 2.2.2.2 1572 28 80000002 2
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 44.44.44.0 4.4.4.4 1673 36 80000002 1
從上面能看到R1的LSDB裏有一、二、三、四、5類LSA。
如今將area1配置爲stub area:
R1的配置修改以下:
[R1] ospf 1 router-id 1.1.1.1
[R1-ospf-1] area 1
[R1-ospf-1-area-0.0.0.1] stub
[R1-ospf-1-area-0.0.0.1] network 10.1.12.1 0.0.0.0
R2的配置修改以下:
[R2] ospf 1 router-id 2.2.2.2
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] stub
[R2-ospf-1-area-0.0.0.1] network 10.1.12.1 0.0.0.0
[R2-ospf-1-area-0.0.0.1] area 0
[R2-ospf-1-area-0.0.0.0] network 10.1.23.2 0.0.0.0
須要注意的是,該命令要配置在stub區域中的全部路由器上,若是某臺路由器沒有配置,那麼它將沒法去其餘stub area router創建鄰接關係。
實現效果:
Area1中將不會在有四、5類LSA,也就是area2重發布進來的路由,被ABR(R2)過濾掉了,同時area1中的路由器將獲取到一條ABR(R2)下發的3類LSA的默認路由。
[R1] display ip routing-table
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 OSPF 10 2 D 10.1.12.2 GigabitEthernet0/0/0
10.1.23.0/24 OSPF 10 2 D 10.1.12.2 GigabitEthernet0/0/0
10.1.34.0/24 OSPF 10 3 D 10.1.12.2 GigabitEthernet0/0/0
咱們發現以前的44.44.44.0/24這條外部路由沒有了,另外多了一條OSPF默認路由,這條默認路由是由ABR R2產生的,是3類LSA描述的。這個時候R1仍是能ping通44.44.44.44的。
[R1]display ospf lsdb
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 106 36 80000005 1
Router 1.1.1.1 1.1.1.1 109 36 80000004 1
Network 10.1.12.2 2.2.2.2 106 32 80000002 0
Sum-Net 0.0.0.0 2.2.2.2 158 28 80000001 1
Sum-Net 10.1.23.0 2.2.2.2 158 28 80000001 1
Sum-Net 10.1.34.0 2.2.2.2 158 28 80000001 2
再看R1的LSDB,咱們發現四、5類LSA都沒有了,只剩下一、二、3類LSA。
2. Totally stub area徹底末梢區域
經過將區域規劃爲stub area,能夠起到必定的網絡優化做用,可是感受上還不夠完全,除了外部路由,其餘area的路由(LSAs)其實我也不必知道太多細節,徹底用一條默認路由替代也行嘛,那麼你能夠將area1配置爲徹底末梢區域(totally stub area),當一個區域被配置爲徹底末梢區域,這個區域將:
· 阻擋三、四、5類LSA進入本區域
· 區域的ABR自動下發一條3類LSA的默認路由進入本區域
這麼一來,area1內路由器收到的LSA將進一步減小,在存儲LSA及進行SPF算法運算的時候,耗費的資源天然也就減小了,另外當區域外拓撲出現變動的時候,對本區域的影響也將變爲最小。
與stub區域相似,你沒法將骨幹區域area0配置爲totally stub area,固然,若是一個區域被指定爲totally stub area,你將不能在區域中的路由器上作路由重發布動做。
如今將area1配置爲Totally stub area:
R1的配置修改以下:
[R1] ospf 1 router-id 1.1.1.1
[R1-ospf-1] area 1
[R1-ospf-1-area-0.0.0.1] stub
[R1-ospf-1-area-0.0.0.1] network 10.1.12.1 0.0.0.0
R2(ABR)的配置修改以下:
[R2] ospf 1 router-id 2.2.2.2
[R2-ospf-1] area 1
[R2-ospf-1] stub no-summary
[R2-ospf-1-area-0.0.0.1] network 10.1.12.1 0.0.0.0
[R2-ospf-1-area-0.0.0.1] area 0
[R2-ospf-1-area-0.0.0.0] network 10.1.23.2 0.0.0.0
實現效果:
完成上述配置後,area1內的路由器(ABR除外)將只有本區域內的路由,同時都能獲取到ABR下發的3類的默認路由。也就是說其餘區域的路由以及外部注入的路由都被ABR阻擋在外,取而代之的是一條默認路由。
[R1] display ospf lsdb
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 27 36 80000008 1
Router 1.1.1.1 1.1.1.1 29 36 80000007 1
Network 10.1.12.1 1.1.1.1 25 32 80000002 0
Sum-Net 0.0.0.0 2.2.2.2 572 28 80000001 1
3. Not-So-Stubby Area 非徹底末梢區域(NSSA)
在前面的知識基礎上,咱們已經瞭解到,在保證網絡連通性的狀況下,減小LSA的泛洪以及精簡路由表,咱們能夠將特定區域配置爲末梢區域或徹底末梢區域。看下面的拓撲,咱們將area2配置爲stub,那麼,這個區域一來將阻擋來自其餘區域的四、5類LSA,同時區域內的路由器禁止重發布外部路由,那麼若是此時我指望這個區域保持「阻擋其餘區域過來的四、5類LSA」這個特性,同時容許我在區域本地重發布路由呢?
例如,假設area2原先是做爲一個末梢區域運行的,但忽然有一個外部網絡,須要接入到咱們這個OSPF網絡中,而且鏈接在area2中,那麼這個時候,爲了保證路由的可達,就必須向area2中注入外部路由了,而這又違反了stub area的規則。
這裏就引入NSSA(not-so-stubby-area)的概念,中文翻譯過來,能夠理解爲非徹底末梢區域,當你將一個區域配置爲NSSA,那麼這個區域一來將阻擋骨幹區域過來的四、5類LSA,同時容許區域本地import-route外部路由,這些外部路由以一種特殊的LSA類型—7類LSA在NSSA中泛洪,而且7類LSA不容許進入骨幹區域或常規區域,NSSA的ABR會負責將7類LSA「轉換」成5類LSA,從而在常規區域中進一步泛洪。上面的「容許區域本地注入」的意思是,NSSA這個區域的路由器配置重發布,以下圖。
如今將area2配置爲NSSA
R3的配置修改以下:
[R3] ospf 1 router-id 3.3.3.3
[R3-ospf-1] area 2
[R3-ospf-1-area-0.0.0.2] nssa
[R3-ospf-1-area-0.0.0.2] network 10.1.34.3 0.0.0.0
[R3-ospf-1-area-0.0.0.2] area 0
[R3-ospf-1-area-0.0.0.0] network 10.1.23.3 0.0.0.0
R4(ASBR)的配置修改以下:
[R4] acl 2000
[R4- acl-basic-2000] rule permit source 44.44.44.0 0
[R4- acl-basic-2000] quit
[R4] route-policy RP permit node 10
[R4-route-policy] if-match acl 2000
[R4-route-policy] quit
[R3] ospf 1 router-id 4.4.4.4
[R3-ospf-1] import-route direct route-policy RP
[R3-ospf-1] area 2
[R3-ospf-1-area-0.0.0.2] network 10.1.34.4 0.0.0.0
[R3-ospf-1-area-0.0.0.2] nssa
實現效果:
將area2配置爲nssa後,從骨幹區域過來的四、5類LSA將沒法進入NSSA,也就是說若是area1作了重發布,那麼這些重發布的外部路由將沒法進入NSSA(這是由於NSSA中不容許出現5類LSA),與此同時,area2容許本地的路由器作重發布動做,重發布進來的路由,以LSA7在NSSA中泛洪,你們在路由表中看到的這些外部路由,標記爲「O_NSSA」,而這些7類LSA在「穿越」NSSA的ABR(R3)進入骨幹區域以前,由ABR(R3)負責將7類LSA「轉換」成5類LSA。最終area0及area1也都能學習到這些外部路由,只不過,他們路由表中呈現的是「O_ASE」標記。
咱們在R3上驗證一下:
[R3] display ip routing-table
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.1.12.0/24 OSPF 10 2 D 10.1.23.2 GigabitEthernet0/0/0
44.44.44.0/24 O_NSSA 150 1 D 10.1.34.4 GigabitEthernet0/0/1
……
咱們看到R3學習到了44.44.44.0/24這條外部路由,而且協議類型爲「O_NSSA」表示這是一條經過LSA7計算出來的路由。
[R3] display ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 141 36 80000014 1
Router 3.3.3.3 3.3.3.3 143 36 80000012 1
Network 10.1.23.2 2.2.2.2 141 32 80000002 0
Sum-Net 10.1.34.0 3.3.3.3 151 28 80000001 1
Sum-Net 10.1.12.0 2.2.2.2 160 28 80000006 1
Area: 0.0.0.2
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 106 36 80000004 99
Router 3.3.3.3 3.3.3.3 110 36 80000003 1
Network 10.1.34.4 4.4.4.4 111 32 80000001 0
Sum-Net 10.1.23.0 3.3.3.3 151 28 80000001 1
Sum-Net 10.1.12.0 3.3.3.3 144 28 80000001 2
NSSA 0.0.0.0 3.3.3.3 145 36 80000001 1
NSSA 44.44.44.0 4.4.4.4 158 36 80000001 1
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 44.44.44.0 3.3.3.3 106 36 80000001 1
咱們看到R3的LSDB中,area2內有R4產生的7類LSA。同時R3本身作了7轉5的動做,將7類LSA轉換成了5類LSA,而後將這條44.44.44.0/24的5類LSA泛洪到骨幹區域area0中。
因此在R2上,路由的類型就爲O_ASE,這是由於描述44.44.44.0/24外部路由的LSA如今是5類LSA:
[R2] display ip routing-table
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.1.34.0/24 OSPF 10 2 D 10.1.23.3 GigabitEthernet0/0/1
44.44.44.0/24 O_ASE 150 1 D 10.1.23.3 GigabitEthernet0/0/1
……
如今咱們再去R4上看一下:
[R4] display ip routing-table
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 O_NSSA 150 1 D 10.1.34.3 GigabitEthernet0/0/0
10.1.12.0/24 OSPF 10 101 D 10.1.34.3 GigabitEthernet0/0/0
10.1.23.0/24 OSPF 10 100 D 10.1.34.3 GigabitEthernet0/0/0
R4的路由表中,有從骨幹區域area0傳遞過來的LSA3計算出來的路由:10.1.12.0/24及10.1.23.0/24。同時也有NSSA的ABR(R3)自動下發的7類LSA的默認路由0.0.0.0/0。
那麼,既然R4有了ABR下發的默認路由,其實是可以到達R一、R2底下的網段的,其實也就不須要其餘區域的路由了,所以能夠在ABR(R3)上進一步作配置,過濾掉3類LSA,進一步減小NSSA內的LSA數量,R3的配置變動以下:
[R3] ospf 1 router-id 3.3.3.3
[R3-ospf-1] area 2
[R3-ospf-1-area-0.0.0.2] nssa no-summary
[R3-ospf-1-area-0.0.0.2] network 10.1.34.3 0.0.0.0
[R3-ospf-1-area-0.0.0.2] area 0
[R3-ospf-1-area-0.0.0.0] network 10.1.23.3 0.0.0.0
如此一來,R4的路由表:
[R4] display ip routing-table
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 O_NSSA 150 1 D 10.1.34.3 GigabitEthernet0/0/0
就只有一條R3下發的7類默認路由了,固然這時候R3訪問全網是可以通的。
4、OSPF的配置
1、基礎配置
建立OSPF進程,並指定OSPF進程號及RouterID
[Router] ospf [ process-id | router-id router-id ]
其中process-id爲進程號,關於進程號的詳細描述,請見下文。另外Router-ID關鍵字指定的是本臺路由器ospf的Router-ID,建議在建立OSPF進程時,採用該方法手工配置Router-ID。
在area0中宣告指定接口
[Router-ospf] area area-id
[Router-ospf-area] network ip-address wildcard-mask
上面的network命令用於在特定接口上激活OSPF。
OSPF進程號(Processor ID):
進程號取值範圍1-65535,只標識ospf在本路由器內的一個進程,這個進程號只是本地有效。在同一臺路由器上能夠運行多個不一樣的OSPF進程,它們之間互不影響,彼此獨立。不一樣OSPF 進程之間的路由交互至關於不一樣路由協議之間的路由交互。
進程號是本地有效,若不一樣的路由器之間OSPF對接,兩臺路由器的OSPF進程號能夠不一樣,這是不會有任何問題的,可是爲了保證網絡配置的規範性和標準化,建議仍是採用相同的進程號。
通配符掩碼wildcard-mask:
通配符是一個用於決定哪些IP地址位該精確匹配(0表明精確匹配)哪些地址位被忽略的32位數值,通配符掩碼一般用於處理訪問控制列表(ACL)、OSPF和EIGRP等路由協議的網絡通告。下面看一下網絡掩碼netmask和通配符掩碼wildcard-mask的區別:
接下去看幾個例子:
上面的例子中,咱們在network命令後關聯的IP是172.16.1.0,通配符掩碼是0.0.0.255,那麼將這兩個數都轉成二進制,其中通配符掩碼位爲0的位,必須嚴格匹配,爲1的位則無所謂。那麼咱們就看路由器本地的接口IP,去作對應,若是能匹配上,該接口就激活OSPF,不然就不激活。
一樣的拓撲,若是咱們將通配符掩碼換成0.0.255.255,則最後兩個八位組無所謂,最終路由器的三個接口都激活了OSPF。
2、示例(單區域)
網絡拓撲中包含三臺路由器及兩臺PC;
爲了可以更直觀的觀察到實現現象,每臺路由器使用x.x.x.x的地址做爲OSPF的RouterID,其中x爲設備編號,例如R1的RouterID爲1.1.1.1,以設備的接口編號及IP編址如圖所示。
R1的配置以下:
#完成接口IP的配置
[R1] interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0] ip address 192.168.12.1 24
[R1] interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1] ip address 192.168.1.254 24
#建立OSPF進程1,而且設置router-ID爲1.1.1.1;在R1的GE0/0/0及GE0/0/1口上激活OSPF:
[R1] ospf 1 router-id 1.1.1.1
[R1-ospf-1] area 0
[R1-ospf-1-area-0.0.0.0] network 192.168.12.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
R2的配置以下:
#完成接口IP的配置
[R2] interface GigabitEthernet 0/0/0
[R2-GigabitEthernet0/0/0] ip address 192.168.12.2 24
[R2] interface GigabitEthernet 0/0/1
[R2-GigabitEthernet0/0/1] ip address 192.168.23.2 24
#建立OSPF進程1,而且設置router-ID爲2.2.2.2;在R1的GE0/0/0及GE0/0/1口上激活OSPF:
[R2] ospf 1 router-id 2.2.2.2
[R2-ospf-1] area 0
[R2-ospf-1-area-0.0.0.0] network 192.168.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0] network 192.168.23.0 0.0.0.255
R3的配置以下:
#完成接口IP的配置
[R3] interface GigabitEthernet 0/0/0
[R3-GigabitEthernet0/0/0] ip address 192.168.23.3 24
[R3] interface GigabitEthernet 0/0/1
[R3-GigabitEthernet0/0/1] ip address 192.168.2.254 24
#建立OSPF進程1,而且設置router-ID爲3.3.3.3;在R3的GE0/0/0及GE0/0/1口上激活OSPF
[R3] ospf 1 router-id 3.3.3.3
[R3-ospf-1] area 0
[R3-ospf-1-area-0.0.0.0] network 192.168.2.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0] network 192.168.23.0 0.0.0.255
完成配置後咱們來作一下查看及驗證,首先看一下OSPF的鄰居關係,這是OSPF路由收斂的基礎,若是鄰居關係的狀態不正確,那麼路由確定是沒法正常獲悉的,咱們在R1上先作個查看:
[R1] display ospf peer
OSPF Process 1 with Router ID 1.1.1.1
Neighbors
#如下是R1的G0/0/0口的OSPF鄰居
Area 0.0.0.0 interface 192.168.12.1(GigabitEthernet0/0/0)’s neighbors
Router ID: 2.2.2.2 Address: 192.168.12.2
State: Full Mode:Nbr is Master Priority: 1
DR: 192.168.12.2 BDR: 192.168.12.1 MTU: 0
Dead timer due in 34 sec
Retrans timer interval: 5
Neighbor is up for 01:53:16
Authentication Sequence: [ 0 ]
使用display ospf peer命令能查看OSPF鄰居關係,上面的輸出就是R1的OSPF鄰居關係,咱們看到R1發現了一個OSPF鄰居,這個OSPF鄰居是鏈接在R1的GE0/0/0口上,且其RouterID爲2.2.2.2,接口IP爲192.168.12.2。最重要的是狀態爲Full,表示R1與R2的OSPF鄰居關係已經爲全毗鄰狀態。
同理在R2上應該能看到兩個OSPF鄰居,而在R3上能看到一個OSPF鄰居。
接下去看看路由表。
[R1] display ip routing-table
Route Flags: R – relay, D – download to fib
——————————————————————————
Routing Tables: Public
Destinations : 12 Routes : 12
Destination/Mask ProtoPre CostFlags NextHop Interface
192.168.1.0/24 Direct 0 0 D 192.168.1.254 GigabitEthernet0/0/1
192.168.1.254/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
192.168.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
192.168.2.0/24 OSPF10 3 D 192.168.12.2 GigabitEthernet0/0/0
192.168.12.0/24 Direct 0 0 D 192.168.12.1 GigabitEthernet0/0/0
192.168.12.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
192.168.12.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
192.168.23.0/24 OSPF 10 2 D 192.168.12.2 GigabitEthernet0/0/0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
在上述輸出中,咱們看到R1已經學習到兩條OSPF路由,分別是192.168.2.0/24及192.168.23.0/24;同理在R2就R3上也能看到相應的OSPF路由。如今PC1及PC2就可以互相通訊了。
3、示例(多區域)
網絡中包含三臺路由器及兩臺PC;
爲了可以更直觀的觀察到實現現象,每臺路由器使用x.x.x.x的地址做爲OSPF的RouterID,其中x爲設備編號,例如R1的RouterID爲1.1.1.1;OSPF區域的規劃如圖所示;
R1的配置以下:
#完成接口IP的配置
[R1] interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0] ip address 192.168.12.1 24
[R1] interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1] ip address 192.168.1.254 24
#在R1的GE0/0/0及GE0/0/1口上激活OSPF
[R1] ospf 1 router-id 1.1.1.1
[R1-ospf-1] area 0
[R1-ospf-1-area-0.0.0.0] network 192.168.12.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
R2的配置以下:
#完成接口IP的配置
[R2] interface GigabitEthernet 0/0/0
[R2-GigabitEthernet0/0/0] ip address 192.168.12.2 24
[R2] interface GigabitEthernet 0/0/1
[R2-GigabitEthernet0/0/1] ip address 192.168.23.2 24
#在R2的GE0/0/0及GE0/0/1口上激活OSPF,需留意,R2是ABR,所以要注意激活的OSPF接口所在的區域。
[R2] ospf 1 router-id 2.2.2.2
[R2-ospf-1] area 0
[R2-ospf-1-area-0.0.0.0] network 192.168.12.0 0.0.0.255
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] network 192.168.23.0 0.0.0.255
R3的配置以下:
#完成接口IP的配置
[R3] interface GigabitEthernet 0/0/0
[R3-GigabitEthernet0/0/0] ip address 192.168.23.3 24
[R3] interface GigabitEthernet 0/0/1
[R3-GigabitEthernet0/0/1] ip address 192.168.2.254 24
#在R3的GE0/0/0及GE0/0/1口上激活OSPF
[R3] ospf 1 router-id 3.3.3.3
[R3-ospf-1] area 0
[R3-ospf-1-area-0.0.0.0] network 192.168.2.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0] network 192.168.23.0 0.0.0.255
完成配置後,PC1與PC2便可互相ping通。
4、查看及驗證
查看OSPF協議相關運行參數display ospf brief查看OSPF鄰居表display ospf peer查看LSDB表display ospf lsdb查看OSPF路由display ospf routing