要理解OSPF路由協議的工做原理,特別是路由更新機制,首先就要對它的各類報文格式有一個全面的瞭解。OSPF報文主要有5種:Hello報文、DD (Database Description,數據庫描述)報文、LSR (LinkState Request,鏈路狀態請求)報文、LSU(LinkState Update,鏈路狀態更新)報文和LSAck(LinkState Acknowledgment,鏈路狀態應答)報文。它們各自在OSPF路由更新中所擔當的用途不同,報文格式也存在比較大的差異。
html
OSPF 的報文格式數據庫
OSPF 的報文直接封裝在IP 數據包 協議號爲89 一個比較完整的OSPF 報文格式以下網絡
IP headeride |
Ospf packet headerspa |
Number LAS srouter |
LSA headerhtm |
lsa Data接口 |
1. OSPF 報文頭ip
OSPF 有五種報文類型 它們有相同的報頭ci
version(8) |
Type(8) |
Packet length(16) |
Router-id(32) |
||
Area-id(32) |
||
Checksum(16) |
Autype(24) |
|
Authentication(32) |
||
Authentication(32) |
字段解釋以下
Version 是ospf 的版本 ospfv2 其值爲 2
Type :ospf 類型有五種報文 分別爲 1: hello 2:dd 3:lsr 4 :lsu 5 lsack
Packet length ospf 報文的總長度 包括報頭在內 單位是字節
Router-id 始發該LSA的路由器ID
Area-id 始發該LSA 的區域ID
Checksum :對整個報文校驗
Autype :驗證類型 可分爲不驗證、明文驗證、MD5驗證 值分別爲 0 1 2
Authenication :其值根據驗證類型來定義, 驗證爲0時未做定義 爲1是爲密碼驗證 爲2時爲KEY-ID 和密碼的MD5 驗證
MD5數據添加在OSPF 報文後面不在authentication 字段裏
二:hello 報文 (hello packet)
它是週期性的發送 來維持鄰居關係 和dr /bdr 選舉內容主要包括:定時器數值、DR BDR 以及本身已知的鄰居 起報文格式以下圖
Version(8) |
1 |
Packet length(16) |
Router-id(32) |
||
Area-id(32) |
||
Checksum(16) |
Autype(24) |
|
Authentication(32) |
||
Authentication(32) |
||
Network mask(32) |
||
Hellointerval (16) options (8) RTR pri |
||
Routerdeadtimeinterval(32) |
||
DR(32) |
||
BDR(32) |
||
Neighbor (32) |
||
-------- |
Network mask 發送hello 包 時 接口下的子網掩碼不一樣不能創建鄰居關係
Hellointerval 發送hello 報的時間間隔不一樣不能創建鄰居關係
Routerdeadtimeinterval:失效時間 若是在規定的時間內沒有收到來自鄰居的hello包則視爲失效,失效時間間隔不一樣不能創建鄰居
Designated router 指路由器本地接口的IP
Neighbor 指鄰居路由器的Ip
DD 報文(database description packet )
兩臺路由器進行數據庫同步時,用DD報文來描述本身的LSDB 內容包括LSDB中每一條LSA 的header LSA header 只佔一個條LSA的整個數據流的一小部分 這樣能夠減小路由器之間的協議報文流量,對端的路由器能夠根據LSA 的頭部 可以判斷是否有這條LSA
Version(8) |
2 |
Packet length(16) |
||
Router-id(32) |
||||
Area-id(32) |
||||
Checksum(16) |
Autype(24) |
|||
Authentication(32) |
||||
Authentication(32) |
||||
interface MTU |
option |
i=1 M=1 ms=1 |
||
DD Sequence number |
||||
LSA header |
主要字段解釋以下:
Interface MTU :在不分片狀況下 在接口處允許最大發出的IP報文長度
I(initial)當發送連續的DD 時 若是是第一個報文則爲1
M(more) 表示多個DD 連續發送報文,若是是最後一個dd 則表示爲0 反則爲1
MS :在雙方交換DD 時還要確認他們的主從關係 ms=1 表示發送方爲主位
Dd sequence number :雙方用序列號來確認DD 收發的持續性和完整性
三:LSR報文(link state request)
兩臺路由器互相交換數據到最後一個LSA 時 若是一方發現本身還有不少不知道的DD 時就會請求對方 lsr 來繼續更新本身的DATABASE
Version(8) |
3 |
Packet length(16) |
Router-id(32) |
||
Area-id(32) |
||
Checksum(16) |
Autype(24) |
|
Authentication(32) |
||
Authentication(32) |
||
LS TYPE |
||
Link state ID |
||
Advertising router |
LS Type :LSA 的類型 例如Type 1表示router lsa
Link state ID 鏈路狀態標識
Advertising router: 產生此lsa 的路由器
5.LSU 報文
LSU 是對LSR 尋求的回答
Version(8) |
4 |
Packet length(16) |
Router-id(32) |
||
Area-id(32) |
||
Checksum(16) |
Autype(24) |
|
Authentication(32) |
||
Authentication(32) |
||
Number of LSAs |
||
LSAs |
Number of LSAs 該報文包含LSA 的數量
LASs :包含全部的LSA
6.LSAck
LSACK 報文是用來對接收到的LSU 報文的進行確認的 內容是須要確認LSA 的header
Version(8) |
Type(8) |
Packet length(16) |
Router-id(32) |
||
Area-id(32) |
||
Checksum(16) |
Autype(24) |
|
Authentication(32) |
||
Authentication(32) |
||
LSA header |
LSA header :該報文包含LSA 的頭部
7.LSA 頭格式
全部的LSA 都有相同的報文頭
LS age |
Options |
LS type |
Linke state ID |
||
Adbertising router |
||
LS sequence number |
||
Ls checksum |
length |
LS age :LSA 產生後所通過的時間 LSA 會在LSDB中有老化時間 但在傳輸過程當中不會
LS type :LSA 類型 3 4 5 7
LS sequence number 其餘路由器能夠根據其值來判斷是不是最新的LSA
Length:LSA 的總長度 以字節爲單位
LS checksum 對LSA 的報文檢查出了LS age
LSA 類型
LS age |
Options |
1 |
|||||
Linke state ID |
|||||||
Adbertising router |
|||||||
LS sequence number |
|||||||
Ls checksum |
length |
||||||
0 |
V |
E |
B |
0 |
#links |
||
Link id |
|||||||
Type |
Tos |
metric |
|||||
TOS |
0 |
TOS metric |
|||||
Link ID |
|||||||
Link data |
Link state id :產生此LSA 的路由器的router id
V(virtual link) 若是產生此LSA 的路由器是虛鏈接的端點 則 值爲1
E (external): 若是產生此LSA 的路由器是ASBR 值爲1
B (border):若是產生此LSA 的路由器是ABR 值爲1
#links:LSA 中所描述的鏈路信息的數量,包括路由器處於某區域中全部鏈路和接口
Link ID :鏈路標識 具體的數值根據鏈路類型而定
Link data 鏈路數據具體的值根據類型而定
Type :鏈路類型 取值爲1表示經過點對點鏈路與另外一個路由器相連,取值爲2 表示鏈接到傳送網絡,取值爲3 表示鏈接到STUB 網絡 取值爲4 表示虛電路
#TOS 鏈路不一樣方式的數量
Metric :鏈路開銷
Tos :服務類型
Tos metric :指定服務類型的鏈路開銷
2. network LSA
它是由廣播或NBMA 網絡中的DR 發出,LSA 中記錄了這一段上因此路由器的router-id
LS age |
Options |
2 |
Linke state ID |
||
Adbertising router |
||
LS sequence number |
||
Ls checksum |
length |
|
Network mask |
||
Attached router |
Link state id :DR 的IP 地址
Network mask :BMA/NBMA 網絡地址的掩碼
Attached router:鏈接在同一網段上的全部與DR 創建鄰接關係的router-id 也包括自身的router-id
3. summary LSA
network summary LSA(type3) 和ASBR summary LSA (type4)
LS age |
Options |
3 or 4 |
|
Linke state ID |
|||
Adbertising router |
|||
LS sequence number |
|||
Ls checksum |
length |
||
Network mask |
|||
0 |
metric |
||
Tos |
tos metric |
Link state id :對於type3來講 它是通告到區域外的網絡地址 對於type4來講 它是通告到區域外的ASBR的router id
Network mask :BMA/NBMA 網絡地址的掩碼
Attached router:鏈接在同一網段上的全部與DR 創建鄰接關係的router-id 也包括自身的router-id
4. AS external LSA
由ASBR 產生 描述到AS 外部的路由信息
LS age |
Options |
3 or 4 |
|||
Linke state ID |
|||||
Adbertising router |
|||||
LS sequence number |
|||||
Ls checksum |
Length |
||||
Network mask |
|||||
E |
0 |
metric |
|||
Forwarding address |
|||||
External route lag |
|||||
E |
tos |
tos metric |
|||
Forwarding address |
|||||
External route lag |
主要字段解釋
Link state id :所要通告的其餘外部AS 的目的地址,若是通告的是一條是缺省路由則LS ID和子網掩碼都爲0.0.0.0
Network mask :所通告的目的地址掩碼
E: 外部度量值
5. NSSA external LSA
由NSSA 區域內的ASBR產生 而且在NSSA 內部傳送和type5 類似