OSPF動態路由協議筆記之(四) : 域內路由和計算最短路徑
OSPF動態路由協議筆記之(四) : 域內路由和計算最短路徑
本節筆記,主要介紹OSPF域內路由的基本知識,內容涵蓋如何使用一類LSA(Router-LSA)和二類LSA(Network-LSA)描述拓撲資訊和路由資訊,以及如何使用這兩類LSA通過SPF演算法計算域內路由,構建最短路徑樹。
第一類LSA:Router-LSA
每臺OSPF路由器使用一條Router-LSA描述本區域內的鏈路狀態資訊。
LSA頭部的三個欄位含義如下:
①Type :LSA型別,Router-LSA是一類LSA。
② LS id :鏈路狀態ID。
③ Adv rtr :產生此Router-LSA的路由器Router ID。
(1)Router-LSA描述P2P網路
一條Router-LSA可以描述多條連結,每條連結描述資訊由Link ID,Data,Link Type和Metric組成。
命令:
display ospf lsdb router self-originate
其關鍵字含義如下:
①Type:連結型別(並非OSPF定義的四種網路型別),Router LSA描述的連結型別主要有:
lPoint-to-Point(P2P):描述一個從本路由器到鄰居路由器之間的點到點連結,屬於拓撲資訊。
lTransNet:描述一個從本路由器到一個Transit網段(例如MA網段或者NBMA網段)的連結,屬於拓撲資訊
lStubNet:描述一個從本路由器到一個Stub網段(例如Loopback介面)的連結,屬於路由資訊。
② Link ID :此連結的對端標識,不同連結型別的Link ID表示的意義也不同。
③ Data :用於描述此連結的附加資訊,不同的連結型別所描述的資訊也不同。
④ Metric :描述此連結的開銷。
(2)Router-LSA描述MA網路或NBMA網路
如下圖所示,RTB、RTC、RTE之間通過以太鏈路互連,連結型別(Link Type)為TransNet。以RTC產生的LSA為例,Link ID為DR的介面IP地址(10.1.235.2),Data為本地路由器連線此MA網路的介面IP地址(10.1.235.3),Link Type為TransNet,Metric表示到達DR的開銷值。
TransNet描述的連結中僅包括與DR的連線關係及開銷,沒有網路號/掩碼及共享鏈路上其他路由器的任何資訊。
Tips:總結。當連結型別Link Type有所不同時,其Link ID和Data分別代表什麼:
Link Type |
場景 |
Link ID含義 |
Data含義 |
P-2-P |
點對點連結 |
鄰居路由器Router ID |
宣告該Router LSA的路由器介面的IP地址 |
TransNet |
MA或NBMA網段 |
DR的介面IP地址 |
宣告該Router LSA的路由器介面的IP地址 |
StubNet |
Loopback介面 |
該Stub網路的IP地址 |
該Stub網路的網路掩碼 |
第二類LSA:Network-LSA
MA共享網段或NBMA共享網段中的網路號/掩碼及路由器間的連結關係,通過Network-LSA來呈現。
命令:
display ospf lsdb network self-originate
在Network-LSA中關鍵字含義如下:
lType:LSA型別,Network-LSA是二類LSA。
lLS id:DR的介面IP地址。
lAdv rtr:產生此Network-LSA的路由器Router ID,在該例子中就是DR的Router ID。
lNet mask:該網段的網路掩碼。
lAttached Router:連線到該網段的路由器列表,呈現了此網段的拓撲資訊。
基於上述欄位表達的資訊,Ls id和Net mask做與運算,即可得出該網段的IP網路號,另外,從DR路由器到其所連線的路由器的開銷為0。
從Attached Router部分可以看出,2.2.2.2、3.3.3.3、5.5.5.5共同連線到該共享MA網段中,DR路由器為2.2.2.2,網路號10.1.235.0,掩碼255.255.255.0。
OSPF區域LSDB
如下圖所示,五臺路由器互連並執行OSPF協議。以RTA的LSDB為例,其中包括了五個路由器產生的Router-LSA,以及兩個廣播型網路中產生的Network-LSA。
命令:
display ospf lsdb
SPF演算法
在一類LSA和二類LSA中,包括了拓撲資訊和路由資訊。OSPF路由協議通過使用SPF(最短路徑優先)演算法,計算到達每個路由器的最短路徑。
SPF演算法分為兩個階段:構建SPF樹和計算最優路由。OSPF將依據SPF演算法和各類LSA進行最短路徑樹的計算。
階段 1:構建SPF樹。
根據Router-LSA中的Point to Point,TransNet(拓撲資訊)和Network-LSA中的拓撲資訊,構建SPF樹幹。
階段 2:計算最優路由
基於SPF樹幹和Router-LSA中的Stub(路由資訊)、Network- LSA中的路由資訊,計算最優路由。
階段一:構建SPF樹
接下來將會分步驟介紹SPF演算法計算最短路徑:
Step 1:OSPF路由器將分別以自身為根節點計算最短路徑樹。
以RTA為例,計算過程如下:
RTA將自己新增到最短路徑樹的樹根位置,然後檢查自己生成的Router-LSA,對於該LSA中所描述的每一個連線,如果不是一個Stub連線,就把該連線新增到候選列表中,分節點的候選列表為Link ID,對應的候選總開銷為本LSA中描述的Metric值和父節點到達根節點開銷之和。
根節點RTA的Router-LSA中存在TransNet中Link ID為10.1.12.2 Metric=1和P-2-P中Link ID為3.3.3.3 Metric=48的兩個連線,被新增進候選列表中。
RTA將候選列表中候選總開銷最小的節點10.1.12.2移到最短路徑樹上,並從候選列表中刪除。
Step 2:DR被加入到SPF中,接下來檢查Ls id為10.1.12.2的Network-LSA。如果LSA中所描述的分節點在最短路徑樹上已經存在,則忽略該分節點。
如上圖所示,在Attached Router部分:
節點1.1.1.1被忽略,因為1.1.1.1已經在最短路徑樹上。
將節點2.2.2.2,Metric=0,父節點到根節點的開銷為1,所以候選總開銷為1,加入候選列表。
候選節點列表中有兩個候選節點,選擇候選總開銷最小的節點2.2.2.2加入最短路徑樹並從候選列表中刪除。
Step 3:節點2.2.2.2新新增進最短路徑樹上,此時繼續檢查Ls id為2.2.2.2的Router-LSA:
第一個TransNet連線中,Link ID為10.1.12.2,此節點已經在最短路徑樹上,忽略。
第二個TransNet連線中,Link ID為10.1.235.2,Metric=1,父節點到根節點的開銷為1,候選總開銷為2,加入候選列表。
第三個P-2-P連線中,Link ID為4.4.4.4,Metric=48,父節點到根節點的開銷為1,候選總開銷為49,加入候選列表。
候選節點列表中有三個候選節點,選擇候選總開銷最小的節點10.1.235.2加入最短路徑樹並從候選列表中刪除。
Step 4:DR被加入到SPF中,接下來檢查Ls id為10.1.235.2的Network-LSA。
如上圖所示,在Attached Router部分:
節點2.2.2.2被忽略,因為2.2.2.2已經在最短路徑樹上。
將節點3.3.3.3,Metric=0,父節點到根節點的開銷為2,候選總開銷為2,加入候選列表。(如果在候選列表中出現兩個節點ID一樣但是到根節點的開銷不一樣的節點,則刪除到根節點的開銷大的節點。所以刪除節點3.3.3.3 累計開銷為48的候選項)。
將節點5.5.5.5,Metric=0,父節點到根節點的開銷為2,候選總開銷為2,加入候選列表。
候選節點列表中有三個候選節點,選擇候選總開銷最小的節點3.3.3.3和5.5.5.5加入最短路徑樹並從候選列表中刪除。
Step 5:節點3.3.3.3和5.5.5.5新新增進最短路徑樹上,此時繼續檢查Ls id分別為3.3.3.3和5.5.5.5的Router-LSA。
① Ls id為3.3.3.3的LSA:
Link ID為10.1.235.2的節點已經在最短路徑樹上,忽略。
Link ID為1.1.1.1的節點已經在最短路徑樹上,忽略。
② Ls id為5.5.5.5的LSA:
Link ID為10.1.235.2的節點已經在最短路徑樹上,忽略。
Link ID為4.4.4.4的P-2-P連線,Metric=48,父節點到根節點的開銷為2,候選總開銷為50。因為節點4.4.4.4已經在候選列表中出現,且候選總開銷為49。49<50,所以子節點4.4.4.4的父節點選擇2.2.2.2。
至此,再通過命令display ospf lsdb router 4.4.4.4發現,LSA中的連線所描述的相鄰節點都已經新增到了SPF樹中。
此時候選列表為空,完成SPF計算,其中10.1.12.2和10.1.235.2是虛節點(DR)。
階段二:計算最優路由
從根節點開始依次新增各節點LSA中的路由資訊,新增順序為各節點加入SPF樹的順序。
第二階段根據Router LSA中的Stub、Network LSA中的路由資訊,完成最優路由的計算。
從根節點開始,依次新增LSA中的路由資訊(新增順序按照每個節點加入SPF樹的順序):
① 1.1.1.1(RTA)的Router LSA中,共1個Stub連線,網路號/掩碼10.1.13.0/24,Metric=48;
② 10.1.12.2(DR)的Network LSA中,網路號/掩碼10.1.12.0/24,Metric=1+0=1;
③ 2.2.2.2(RTB)的Router LSA中,共1個Stub連線,網路號/掩碼10.1.24.0/24,Metric=1+0+48=49;
④ 10.1.235.2(DR)的Network LSA中,網路號/掩碼10.1.235.0/24,Metric=1+0+1=2;
⑤ 3.3.3.3(RTC)的Router LSA中,共1個Stub連線,網路號/掩碼10.1.13.0/24,已在RTA上,忽略;
⑥ 5.5.5.5(RTE)的Router LSA中,共1個Stub連線,網路號/掩碼10.1.45.0/24,Metric=1+0+0+1+48=50;
⑦ 4.4.4.4(RTD)的Router LSA中,共2個Stub連線,網路號/掩碼10.1.24.0/24,已在RTB上,忽略;網路號/掩碼10.1.45.0/24,已在RTE上,忽略。
檢視OSPF路由表
經歷上述兩個階段的計算,RTA生成的OSPF路由如下圖所示。
經過OSPF優選後的路由並不一定會安裝進系統路由表,因為路由器還可以通過其他協議獲得路由,通過不同方式獲得的路由需要進行優先順序比較。
Q:Router-LSA中主要包含哪幾種鏈路型別?
A:P2P、TransNet、StubNet、vlink。
Q:經過SPF演算法計算後,被認為是最優的OSPF路由是否一定會被放入路由器的路由表中?
A:不一定,路由器可能通過多種路由協議獲得同一路由字首的路由資訊,還需要通過路由優先順序比較確定通過哪個路由協議獲得的路由會放入路由表。
下一節筆記,將會介紹OSPF路由區域間傳遞過程,理解區域間防環機制,以及掌握虛連線的配置過程。