1 OSPF報文類型數據庫
OSPF用IP報文直接封裝協議報文,協議號爲89。OSPF分爲5種報文:Hello報文、DD報文、LSR報文、LSU報文和LSAck報文。網絡
1. Hello報文:週期性發送,用於發現和維持OSPF鄰居關係;ide
2. DD報文(DataBase Description Packet):數據庫描述報文,描述本地LSDB的摘要信息,用於兩臺路由器進行數據庫同步;ui
3. LSR報文(Link State Request Packet):鏈路狀態請求報文,向對方請求所須要的LSA;spa
4. LSU報文(Link State Update Packet):鏈路狀態更新報文,向對方發送其所須要的LSA或者泛洪本身更新的LSA;3d
5. LSAck報文(Link State Acknowledgment Packet):鏈路狀態確認報文,用於對收到的LSA進行確認。orm
Hello報文和LSAck報文不須要確認。router
2 OSPF 報文頭blog
OSPF這五種報文具備相同的報文頭格式,長度爲24字節。索引
Version:8bit,OSPFv2值爲2,OSPFv3值爲3;
Type:8bit,OSPF報文類型,1:hello,2:DD,3:LSR,4:LSU,5:LSAck;
Packet length:16bit,OSPF報文總長度,包括報文頭在內,單位Byte;
Router ID:32bit,發送該報文的路由器標識,恰好爲IP地址長度;
Area ID:32bit,發送該報文的路由器接口所屬區域;
Checksum:16bit,校驗和,包含除了認證字段的整個報文的校驗和;
Autype:16bit,驗證類型,0:不驗證;1:簡單認證;2:MD5認證;
Authentication:64bit,鑑定字段,其數值根據驗證類型而定。當驗證類型爲0時未做定義;類型爲1時此字段爲密碼信息;類型爲2時此字段包括Key ID、MD5驗證數據長度和序列號的信息。MD5驗證數據添加在OSPF報文後面,不包含在Authenticaiton字段中。
抓包舉例:
3 OSPF Hello報文格式
Hello報文是最經常使用的一種報文,其做用爲創建和維護鄰接關係,週期性的在使能了OSPF的接口上發送。報文內容包括一些定時器的數值、DR、BDR以及本身已知的鄰居。
Network Mask:32bit,發送Hello報文接口所在的子網掩碼;
Hello interval:16bit,發送hello報文的時間間隔;
Options:8bit,可選項,E:容許泛洪 AS-External-LSAs,MC:轉發IP組播報文,N/P:處理Type-7 LSAs,DC:處理按需鏈路;
Rtr Pri:8bit,DR優先級,默認爲1,若是爲0不參與DR/BDR選舉;
Router Dead Interval:32bit,失效時間。若是在此時間內未收到鄰居發來的Hello報文,則認爲鄰居失效;
Designated Router:32bit,本網段DR的接口地址;
Backup Designated Router:32bit,本網段BDR的接口地址;
Neighbor:32bit,鄰居列表,以router ID標識;
抓包舉例:
4 OSPF DD報文格式
兩臺路由器在鄰接關係初始化時,用DD報文(DataBase Description Packet)描述本身的LSDB,進行數據庫的同步。報文內容包括LSDB的每一條LSA的Header(LSA的header能夠惟一標識一條LSA)。LSA Header只佔一條LSA整個數據量的一小部分,這樣能夠減小路由器之間的協商報文流量,對端路由器根據LSA Header就能夠判斷出是否已有這條LSA。兩臺路由器在交換DD報文過程當中,一臺爲Master,一臺爲Slave,Master規定起始序列號,每發送一個DD報文序列號加1,Slave方使用Master的序號做爲確認。
Interface MTU:16bit,表示部分片狀況下,此接口可發出的最大IP報文長度,默認不填充時爲0;
Options:8bit,同hello報文的option;
I(Initialization)位:1bit,初始位,當發送連續多個DD報文時,若是這是第一個DD報文,則置爲1,不然置爲0;
M (More)位:1bit,當發送連續多個DD報文時,若是這是最後一個DD報文,則置爲0。不然置爲1,表示後面還有其餘的DD報文;
M/S (Master/Slave)位:1bit,當兩臺OSPF路由器交換DD報文時,首先須要肯定雙方的主從關係,Router ID大的一方會成爲Master。當值爲1時表示發送方爲Master;
DD sequence number:32bit,DD報文序列號。主從雙方利用序列號來保證DD報文傳輸的可靠性和完整性;
LSA Headers:可變,該DD報文中所包含的LSA的頭部信息。
抓包舉例:
5 OSPF LSR報文格式
兩臺路由器互相交換過DD報文以後,知道對端的路由器有哪些LSA是本地的LSDB所缺乏的和哪些LSA是已經失效的,這時須要發送LSR報文(Link State Request Packet)向對方請求所需的LSA。內容包括所須要的LSA的摘要。LSR報文格式以下圖所示,其中LS type、Link State ID和Advertising Router能夠惟一標識出一個LSA,當兩個LSA同樣時,須要根據LSA中的LS sequence number、LS checksum和LS age來判斷出所須要LSA的新舊。
LS type:32bit,LSA的類型號;
Link State ID:32bit,根據LSA中的LS Type和LSA description在路由域中描述一個LSA;
Advertising Router:32bit,產生此LSA的路由器的Router ID。
抓包舉例:
6 OSPF LSU報文格式
用來向對端Router發送其所須要的LSA或者泛洪本身更新的LSA,內容是多條LSA(所有內容)的集合。LSU報文(Link State Update Packet)在支持組播和廣播的鏈路上是以組播形式將LSA泛洪出去。爲了實現Flooding的可靠性傳輸,須要LSAck報文對其進行確認。對沒有收到確認報文的LSA進行重傳,重傳的LSA是直接發送到鄰居的。
Number of LSAs:32bit,LSA的數量;
LSAs…:多個完整的LSA。經常使用的LSA共有5種,分別爲:Router-LSA、Network-LSA、Network-summary-LSA、ASBR-summary-LSA和AS-External-LSA。全部的LSA都有相同的報文頭。
抓包舉例:
6.1 LSA報文頭
全部的LSA都有相同的報文頭
LS age:16bit,LSA產生後所通過的時間,單位秒,不管是鏈路上傳送仍是保存在LSDB中,其值是一直增加的,默認每通過一臺路由器加1,若是LS age高位爲1,表明進入LSDB後不老化,僅出如今DemandCircuit(按需)鏈路上;
Options:8bit,同Hello的option;
LS type:8bit,LSA類型:
Type1:Router-LSA,
Type2:Network-LSA,
Type3:Network-summary-LSA,
Type4:ASBR-summary-LSA,
Type5:AS-External-LSA,
Type7:NSSA-LSA;
Link State ID:32bit,與LSA中的LS Type和LSA description一塊兒在路由域中描述一個LSA;
Advertising Router:32bit,產生此LSA的路由器的Router ID;
LS sequence number:32bit,LSA的序列號。其餘路由器根據這個值能夠判斷哪一個LSA是最新的;
LS checksum:16bit,除了LS ag e外其它各域的校驗和;
Length:16bit,LSA的總長度,包括LSA Header,以字節爲單位。
抓包舉例:
6.2 Router-LSA格式
Router-LSA(Type1):每一個路由器都會產生,描述了路由器的鏈路狀態和花費,僅在所屬的區域內傳播(泛洪)。
Router-LSA的Link State ID爲生成LSA的Router ID。
V (Virtual Link):1bit,若是產生此LSA的路由器是虛鏈接的端點,則置爲1;
E (External):1bit,若是產生此LSA的路由器是ASBR,則置爲1;
B (Border):1bit,若是產生此LSA的路由器是ABR,則置爲1;
# links:16bit,LSA中所描述的鏈路信息的數量,包括路由器上處於某區域中的全部鏈路和接口;
Link ID:32bit,路由器所接入的目標,其值取決於鏈接的類型:
1:Router ID(P2P鏈路狀況下);
2:DR的接口IP地址(MA類型鏈路狀況下);
3:網段/子網號(Stub網絡狀況下);
4:虛鏈接中對端的Router ID(Vlink狀況下)。
Link Data:32bit,鏈接數據,其值取決於鏈接的類型:
unnumbered P2P(P2P使用借用地址狀況下):接口的索引值;
stub網絡:子網掩碼;
其它鏈接:路由器接口的IP地址。
Type:8bit,路由器鏈接的基本描述:
1:點到點鏈接到另外一臺路由器;
2:鏈接到傳輸網絡;
3:鏈接到stub網絡;
4:虛擬鏈路。
# TOS:8bit,鏈接不一樣的TOS數量;
Metric:16bit,鏈路的開銷值;
TOS:8bit,服務類型;
TOS metric:16bit,和指定TOS值相關聯的度量。
抓包舉例:
6.3 Network-LSA格式
Network-LSA(Type2):由廣播網或NBMA網絡中的DR產生,Network-LSA中記錄了這一網絡上全部路由器的Router ID,描述本網段的鏈路狀態,僅在所屬的區域內傳播(泛洪),僅存在廣播類型和NBMA鏈路上(P2P鏈路上沒有)。
Network-LSA的Link State ID爲DR的接口IP地址。
Network Mask:32bit,該廣播網或NBMA網絡地址的掩碼;
Attached Router:32bit,鏈接在同一個網絡上的全部路由器的Router ID,也包括DR的Router ID。
抓包舉例:
6.4 Summary-LSA格式
Type3和Type4的LSA有相同的格式,它們都是由ABR產生。
Network-summary-LSA(Type3):描述區域內全部網段的路由,由ABR產生並通告給其餘相關區域。LSA3在區域間傳遞,但該LSA3泛洪範圍只在一個區域內。
ASBR-summary-LSA(Type4):描述到ASBR的路由,通告給除ASBR所在區域的其餘相關區域。該LSA4的泛洪範圍僅在一個區域,ABR會在區域邊界爲其餘區域再產生LSA4並繼續泛洪。
Sunmmary-LSA的Link State ID爲通告的網絡地址;
ASBR-summary-LSA的Link State ID爲ASBR的Router ID。
Network Mask:32bit,該廣播網或NBMA網絡地址的掩碼。若是是ASBR Summary LSA,此字段無心義,設置爲0.0.0.0。
Metric:24bit,到目的地址的路由開銷;
TOS:8bit,服務類型;
TOS metric:24bit,和指定TOS值相關聯的度量。
通告缺省路由時,Link State ID和Network Mask都設置爲0.0.0.0。
抓包舉例:
6.5 AS-External-LSA格式
AS-External-LSA(Type5):由ASBR產生,描述到AS外部的路由,這是五種LSA中,惟一一種通告到全部區域(除了Stub區域和NSSA區域)的LSA。
AS-External-LSA的Link State ID爲通告的網絡地址。
Network Mask:32bit,通告的目的地址的掩碼;
E:1bit,外部度量值類型:0:第一類外部路由;1:第二類外部路由;
Metric:24bit,到目的地址的路由開銷;
Forwarding Address:32bit,到所通告的目的地址的報文將被轉發到這個地址;
External Route Tag:32bit,添加到外部路由上的標記。OSPF自己並不使用這個字段,它能夠用來對外部路由進行管理;
TOS:8bit,服務類型;
TOS metric:24bit,TOS附加距離信息。
抓包舉例:
NSSA AS-External-LSA(Type7):由ASBR產生,NSSA區域描述到AS外部的路由。
注:LSA 7的forwarding address必定是非0.
抓包舉例:
注:LSA 7的forwarding address必定是非0.
7 OSPF LSAck報文格式
用來對接收到的LSU報文進行確認。內容是須要確認的LSA的Header(一個LSAck報文可對多個LSA進行確認)。LSAck(Link State Acknowledgment Packet)報文根據不一樣的鏈路以單播或組播的形式發送。
LSAs Headers:可變,經過LSA的頭部信息確認收到該LSA。
抓包舉例:
8 關於LSA1的Link ID、Link Data、Link Type
Type |
描述 |
Link ID |
Link Data |
Link Type |
Point-to-Point |
點對點類型鏈路 |
鄰居路由器的Router ID |
本身的接口IP地址 |
1 |
TransNetwork |
MA類型鏈路 |
DR的接口IP地址 |
本身的接口IP地址 |
2 |
StubNetwork |
末節類型鏈路(網絡) |
網絡號 |
網絡掩碼 |
3 |
Virtual Link |
虛擬點到點鏈路 |
Vlink對端ABR的Router ID |
本地Vlink的IP地址 |
4 |
9 關於Link State ID的總結
1. Router-LSA(Type1)的Link ID爲Link State ID生成LSA的Router ID;
2. Network-LSA(Type2)的Link ID爲DR的接口IP地址;
3. Summary-LSA(Type3和Type4)的Link ID爲通告的網絡地址;
4. ASBR-summary-LSA(Type5和Type7)的Link ID爲ASBR的Router ID。