OSPF報文格式詳解

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字節。索引

2


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字段中

抓包舉例

2.2

2.3



3      OSPF Hello報文格式

Hello報文是最經常使用的一種報文,其做用爲創建和維護鄰接關係,週期性的在使能了OSPF的接口上發送。報文內容包括一些定時器的數值、DR、BDR以及本身已知的鄰居

3


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標識;

抓包舉例

3.1

3.2



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的序號做爲確認。

4


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的頭部信息。

抓包舉例:

4.1


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的新舊

5

LS type:32bit,LSA的類型號;

Link State ID:32bit,根據LSA中的LS Type和LSA description在路由域中描述一個LSA;

Advertising Router:32bit,產生此LSA的路由器的Router ID。

抓包舉例:

5.1

6      OSPF LSU報文格式

用來向對端Router發送其所須要的LSA或者泛洪本身更新的LSA,內容是多條LSA(所有內容)的集合。LSU報文(Link State Update Packet)在支持組播和廣播的鏈路上是以組播形式將LSA泛洪出去。爲了實現Flooding的可靠性傳輸,須要LSAck報文對其進行確認。對沒有收到確認報文的LSA進行重傳,重傳的LSA是直接發送到鄰居的。

6

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


6.1    LSA報文頭

全部的LSA都有相同的報文頭

6.11

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.12


6.2    Router-LSA格式

Router-LSA(Type1):每一個路由器都會產生,描述了路由器的鏈路狀態和花費,僅在所屬的區域內傳播(泛洪)。

6.21

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.22

6.23

6.3    Network-LSA格式

Network-LSA(Type2):由廣播網或NBMA網絡中的DR產生,Network-LSA中記錄了這一網絡上全部路由器的Router ID,描述本網段的鏈路狀態,僅在所屬的區域內傳播(泛洪),僅存在廣播類型和NBMA鏈路上(P2P鏈路上沒有)。

6.31

Network-LSA的Link State ID爲DR的接口IP地址

Network Mask:32bit,該廣播網或NBMA網絡地址的掩碼;

Attached Router:32bit,鏈接在同一個網絡上的全部路由器的Router ID,也包括DR的Router ID。

抓包舉例:

6.32

6.4    Summary-LSA格式

Type3和Type4的LSA有相同的格式,它們都是由ABR產生

Network-summary-LSA(Type3):描述區域內全部網段的路由,由ABR產生並通告給其餘相關區域。LSA3在區域間傳遞,但該LSA3泛洪範圍只在一個區域內。

ASBR-summary-LSA(Type4):描述到ASBR的路由,通告給除ASBR所在區域的其餘相關區域。該LSA4的泛洪範圍僅在一個區域,ABR會在區域邊界爲其餘區域再產生LSA4並繼續泛洪

6.41


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.42


6.5    AS-External-LSA格式

AS-External-LSA(Type5):由ASBR產生,描述到AS外部的路由,這是五種LSA中,惟一一種通告到全部區域(除了Stub區域和NSSA區域)的LSA。

6.51


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附加距離信息。

抓包舉例:

6.52


NSSA AS-External-LSA(Type7):由ASBR產生,NSSA區域描述到AS外部的路由。


注:LSA 7的forwarding address必定是非0.

抓包舉例:

6.53

注:LSA 7的forwarding address必定是非0.

7      OSPF LSAck報文格式

用來對接收到的LSU報文進行確認。內容是須要確認的LSA的Header(一個LSAck報文可對多個LSA進行確認)。LSAck(Link State Acknowledgment Packet)報文根據不一樣的鏈路以單播或組播的形式發送。

7


LSAs Headers:可變,經過LSA的頭部信息確認收到該LSA。

抓包舉例:

7.1


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

相關文章
相關標籤/搜索