OSPF報文詳解
一、OSPF 概述
1、IGP (Interior Gateway Protocol),AS內部網關路由協議。
2、鏈路狀態動態路由協議。
3、IP 協議號89。
4、分area。area由一些network range組成。area 0 為骨幹區域。同一area內的router 鏈路狀態數據庫需要保持同步。
5、使用hello,Database Description,Link State Request,Link State Update,Link State Acknowledgment 這5中packet來發現和建立鄰接關系,並交換LSA(Link State Advertisement),同步鏈路狀態數據庫。
7、使用鏈路狀態數據庫存儲LSA,並使用SPF(Shortest Path First)算法。以自己為根,計算出到目的網絡的無環的最短路徑樹。
二、OSPF Packet
2.1 OSPF 報文公共header
2.1.1 作用
封裝OSPF packet,表明packet的類型,來源,來源區域。也可以進行認證。
2.1.2 字段說明
Type:表明header下面跟的packet的類型(1-Hello;2-Database Description;3-Link State Request;4-Link State Update;5-Link State Acknowledgment)
Area ID: 發送該OSPF Packet的router interface 所屬的area.
2.2 OSPF Hello Packet
作用:發現鄰居,選舉DR/BDR(multi-access network),建立雙向通信關系。
字段說明:
Network Mask:發送接口的網絡掩碼。
HelloInt:Hello包周期發送時間間隔。
Options:可選能力字段,比如E位用來表示區域是否接收AS External link advertisement.
Rtr Pri: Router Priority在選舉DR/BDR的時候使用。
DeadInt:收到鄰居回復前的最大等待時間,超過改時間認為鄰居Dead。
Designated Router:本router認為的該multi-access network裏面的指定路由器
Backup Designated Router:本router認為的該multi-access network 裏面的備用指定路由器。
Neighbor: 最近收到的hello packet 的 Router ID(發送路由器),如果在收到的hello packet裏面看到自己的router ID 則和hello packet的發送路由器進入雙向通信(2-way)狀態。
2.3 OSPF Database Description Packet
作用:互相交換鏈路狀態數據庫裏面的LSA信息。比較然後發現自己沒有的或者比自己存儲的LSA更新的。
字段說明:
Option:作用同Hello裏面的。
I/M/MS:I(Init bit,設置為1表示發送的第一個DBD,M(More bit,表示後面還有DBD),MS(Master/Slave,置1表示Master,只有1個master,其他的為slave,在DBD交換過程中,Master先發包含LSA頭部信息的DBD包,使用一個DD sequence number,slave 回復DBD包,使用相同的DD sequence number在傳遞LSA的同時對Master發送的DBD進行確認,以此實現可靠的信息交換)
Link State Advertisement Header: LSA數據包的header,header中包含足夠的信息以唯一的確認一個SLA的實例。LSA Header下面會介紹
2.4 OSPF Link State Request
作用:向鄰居請求其數據庫中自己沒有的或者比自己更新的LSA。
字段說明:
LS type:LS 類型如之前介紹的5中LSA。
Link State ID:相應的LS type的LSA header裏面包含的Link State ID字段內容。其具體的值在之後介紹LSA Header時介紹。
Advertisiong Router:通告該被請求LSA的Router。
以上三個字段可以唯一的確認要請求的LSA。
2.5 OSPF Link State Update
作用:向鄰居發送其請求的LSA(單播),在網絡上泛洪LSA(多播,當網絡有變動時,發送新的LSA),發送的Upadate packet需要neighbor使用 Ackownledged packet進行確認。如果未收到neighbor的確認,對改neighbor進行單播重傳,以確保他們的數據庫信息同步。
字段說明:
#advertisements:包含的LSA的數量。
link state advertisements:完整的LSA數據包。
2.6 OSPF Link State Acknowledgment
作用:對收到的Update packet進行確認。字段說明:
#A Link State Advertisement Header:收到的Update packet裏面包含的LSA的header,發送回去表示具體的LSA已經收到。
三、 OSPF LSA 封裝
上面介紹的5中OSPF packet 是用來建立並維持鄰居關系並交換和保持鏈路狀態數據庫同步的。其交換和存儲的正是下面要介紹的5中LSA。
1、Router links
2、Network links
3、Summary link(IP network)
4、Summary link(ASBR)
5、AS external link
下面通過介紹不同LSA的包的內容,來介紹一下OSPF是如何通過LSA來描述area 的拓撲,及area內包含的網段。並通過LSA來學習area 外部,AS外部的路由。
3.1 OSPF LSA Common Header
作用:通過LS type,Link State ID,Advertising Router, 來唯一的確認一個LSA,通過LS age,LS sequence number 用來唯一確認該LSA最新的實例。
字段說明:
LS age:LSA被生成以後到現在的時間。
Options:可選的能力支持,同Hello。
LS type:頭部下面跟隨的LSA的類型(1-Router links;2-Network links;3-Summary links(IP network);4-Summary link(ASBR);5-AS external link)
Link State ID:表示該LSA描述的網絡環境(internet environment),根據不同的LS type,有不同的值,Router links 其值為router‘s OSPF Router ID; Network links其值為 IP interface address
of the Designated Router;Summary link(3)其值為IP network number;Summary link(4)其值為ASBR‘s Router ID;AS external link其值為IP network number.
Advertising Router:生成改LSA的router‘s router ID。
LS sequence number:LSA 序列號用來檢測舊的或者重瞳的LSA。
LS checksum:整個LSA的一個校驗值。
length:LSA的長度,包括頭部。
3.2 Router link advertisement
作用:描述router上屬於相應area的interface(or link)的state 和 cost。該Router的所有的屬於一個area的link必須被包含在一個Router links advertisement裏面。area裏面的每個router生成。其link State ID為生成該LSA的路由器的Router ID.
字段說明:
E/B: E表明router是否是ASBR,B表明router是否是ABR
#links:改LSA中包含的LINK的數量。
Type:link的類型 1-Point-to-piont;2-transit network;3-stub network;4-Virtual link.
Link ID:定義該link連接的對象,針對不同的link type其值不同,P-2-P其值為Neighboring router‘s ID;Transit-network其值為IP address of Designated Router;Stub-network其值為IP network/sunet number;Virtrual Link 其值為Neighboring router‘s ID.
Link Data:其值也根據鏈路類型來確定:Stub-network其值為network mask;其他類型該值為router 關聯接口的IP 地址。
TOS 0 metric: TOS(Type of Service在IP裏面定義的服務類型)0 的metric 值。也就是cost。
3.3 Network link advertisement
作用:由transit-network(multi-access network)的Designated Router生成,描述所有連接到該multi-access network的router。其Link State ID 為DR‘s interface ip.
字段說明:
Network Mast:transit-network 的網絡掩碼。
Attached Router:附加(連接)在該multi-access network的路由器的router-id ,包括Designated Router 其自己的router ID.
3.4 Summary link advertisement
作用:由ABR(Area Border Router)生成,一個Summary links advertisement 只能包含一條屬於本AS但是是area外的destination route。其lsa header裏的Link State ID就是其要通告的destination route(IP network number)
字段說明:
Network Mast:Link State ID 裏面IP network number 的網絡掩碼。IP network number+ Network Mask 形成該LSA傳遞的路由的具體的目標網絡。
TOS/metric:該路由針對於不同的TOS的metric值。
TYPE-4
作用:由ABR生成告訴區域內的路由器通告AS external link advertisements 的ASBR(Autonomous System Boundary Router)的位置。其LSA header 裏面Link State ID的值為 ASBR的 Router ID.
字段說明:
Network Mask: 在該類型的SLA裏,該字段沒有意義,必須置0.
3.5 AS External Link advertisement
作用:由ASBR生成,一個AS external links advertisement 只能包含一條本AS外部的destination route。其lsa header裏的Link State ID就是其要通告的destination route(IP network number)
字段說明:
Network Mast:Link State ID 裏面IP network number 的網絡掩碼。IP network number+ Network Mask 形成該LSA傳遞的路由的具體的目標網絡。
E:externel metric 類型。置1表示Type2 external metric(只使用外部初始的cost,改路由在AS內部傳遞其metric不隨著內部路徑成本的增加而增加)。置0表示Type 1 external metric(意思是路由的metric隨著內部路徑成本的增加而增加)
TOS/metric:該路由針對於不同的TOS的metric值。
Forwarding address:第三方轉發地址。數據包應該被發送到該地址進行下一步的轉發,而不是發送到ASBR上。如果改地址為0.0.0.0,則數據包路由到ASBR上,之後再進行下一步的轉發。
四、OSPF 工作原理
OSPF是如何通過5中LSA來構建area 拓撲和學習路由的:
其實網絡就是由點(路由器以及附著在路由上的stub network)和線(link/network)組成。
OSPF Router通過Router LSA學習到一下信息:1)、標識出來一個路由器(Router ID);2)router 上的stub network比如interface vlan,loopback interface;3)、和point-to-point link 網段連接的Router的 Router ID.
OSPF Router通過Network LSA學習到multi-access network 裏面附著的Router。
在同一個區域內的所有OSPF Router的LSDB同步以後,Router 就可以計算出一張完成的區域內路由器連接拓撲圖了。到該area內的目的網絡的路由,OSPF Router 以自己為根根據不同鏈路的cost 最後計算出一條到該目的地網絡的最短路徑。
area 外部但是屬於AS內部的目的網絡路由,區域內的路由器通過ABR通告的summary LSA 來學習到(ABR就是一個AREA 的出口)
AS外部的路由,AS內部的路由器通過ASBR通告的 AS external LSA 來學習到。ASBR就是一個AS的出口。
OSPF報文詳解