精!萬字15圖詳解OSPF路由協(xié)議

上帝視角

OSPF出現(xiàn)背景

如上圖就是一張簡單的OSPF協(xié)議網(wǎng)絡(luò),那么為什么會出現(xiàn)OSPF協(xié)議呢?

開放式最短路徑優(yōu)先OSPF(Open Shortest Path First)協(xié)議是IETF定義的一種基于鏈路狀態(tài)的內(nèi)部網(wǎng)關(guān)路由協(xié)議。


為什么會出現(xiàn)OSPF?:因為RIP是一種基于距離矢量算法的路由協(xié)議,存在著

收斂慢;

易產(chǎn)生路由環(huán)路;

可擴(kuò)展性差,最大只能支持15跳。

?OSPF的出現(xiàn)很好地解決了上述3個問題,那么OSPF是如何解決上述3個問題的呢?我們一起來看下。

什么是OSPF協(xié)議?

OSPF是一種基于鏈路狀態(tài)的路由協(xié)議,它從設(shè)計上保證了無路由環(huán)路。

那么什么是鏈路狀態(tài)協(xié)議?

如果說距離矢量路由協(xié)議提供的是路標(biāo),那么鏈路狀態(tài)路由協(xié)議提供的就是地圖。每個運行鏈路狀態(tài)協(xié)議的路由器上都有一張完整的網(wǎng)絡(luò)圖。

就好比你有一張地圖怎么還會迷路?運行鏈路狀態(tài)協(xié)議的每一臺路由器都會有一張地圖庫從而避免了環(huán)路。

鏈路狀態(tài)協(xié)議工作原理

?每臺運行鏈路狀態(tài)路由協(xié)議的路由器都了解整個網(wǎng)絡(luò)的鏈路狀態(tài)信息(地圖),這樣才能計算出到達(dá)目的地的最優(yōu)路徑


1、LSA泛洪:

運行鏈路狀態(tài)路由協(xié)議的路由器都會進(jìn)行鏈路狀態(tài)公告LSA (Link State Advertisement)泛洪,LSA中包含了路由器已知的接口狀態(tài)、接口IP地址、掩碼、開銷和網(wǎng)絡(luò)類型等信息。

通俗點講就是每臺路由器都會將一些關(guān)于自己,關(guān)于本地直連鏈路以及這些鏈路的狀態(tài)和關(guān)于所有直連鄰居的信息傳送給相鄰的其他路由器。


2、建立LSDB:

收到LSA的路由器都可以根據(jù)LSA提供的信息建立自己的鏈路狀態(tài)數(shù)據(jù)庫LSDB(Link State Database)。

通俗點講就是每臺路由器都會收到網(wǎng)絡(luò)中其他的路由器發(fā)送過來的LSA信息,這些所有的LSA信息構(gòu)成了LSDB。這里需要注意的是當(dāng)網(wǎng)絡(luò)穩(wěn)定后,網(wǎng)絡(luò)中的所有設(shè)備應(yīng)該是有相同的LSDB的。


3、建立最短路徑樹:

運行OSPF協(xié)議的路由器在LSDB的基礎(chǔ)上使用SPF算法進(jìn)行運算,建立起到達(dá)每個網(wǎng)絡(luò)的最短路徑樹。


4、路由計算:

通過最短路徑樹得出到達(dá)目的網(wǎng)絡(luò)的最優(yōu)路由,并將其加入到IP路由表中。

常見的鏈路狀態(tài)協(xié)議有:

OSPF:開放式最短路徑優(yōu)先協(xié)議

IS-IS:中間系統(tǒng)到中間系統(tǒng)協(xié)議

OSPF協(xié)議特點

OSPF支持區(qū)域的劃分,區(qū)域內(nèi)部的路由器使用SPF最短路徑算法保證了區(qū)域內(nèi)部的無環(huán)路;

A、為什么劃分區(qū)域?

劃分OSPF區(qū)域可以縮小路由器的LSDB規(guī)模,減少網(wǎng)絡(luò)流量。

區(qū)域內(nèi)的詳細(xì)拓?fù)湫畔?/b>不向其他區(qū)域發(fā)送,區(qū)域間傳遞的是抽象的路由信息,而不是詳細(xì)的描述拓?fù)浣Y(jié)構(gòu)的鏈路狀態(tài)信息。

每個區(qū)域都有自己的LSDB,不同區(qū)域的LSDB是不同的。路由器會為每一個自己所連接到的區(qū)域維護(hù)一個單獨的LSDB。由于詳細(xì)鏈路狀態(tài)信息不會被發(fā)布到區(qū)域以外,因此LSDB的規(guī)模大大縮小了。

B、OSPF是如何劃分區(qū)域的呢?

1、路由器的每個接口可以被劃分在一個區(qū)域,一個路由器可以同時屬于多個區(qū)域。

2、Area 0為骨干區(qū)域,其他區(qū)域為非骨干區(qū)域。每個非骨干區(qū)域都必須連接到骨干區(qū)域。

3、運行在區(qū)域之間的路由器叫做區(qū)域邊界路由器ABR(Area Boundary Router),它包含所有相連區(qū)域的LSDB。

自治系統(tǒng)邊界路由器ASBR(Autonomous System Boundary Router)是指和其他AS中的路由器交換路由信息的路由器,這種路由器會向整個AS通告AS外部路由信息。

C、為什么SPF算法可以保證區(qū)域內(nèi)無環(huán)路?

SPF算法將每一個路由器作為根(ROOT)來計算其到每一個目的地路由器的距離,每一個路由器根據(jù)一個統(tǒng)一的數(shù)據(jù)庫會計算出路由域的拓?fù)浣Y(jié)構(gòu)圖,該結(jié)構(gòu)圖類似于一棵樹,在SPF算法中,被稱為最短路徑樹。樹形是無環(huán)路的。

OSPF利用區(qū)域間的連接規(guī)則保證了區(qū)域之間無路由環(huán)路。

為了避免區(qū)域間路由環(huán)路,非骨干區(qū)域之間不允許直接相互發(fā)布路由信息,所有的非骨干區(qū)域間通信都需要借助骨干區(qū)域。因此,每個區(qū)域都必須連接到骨干區(qū)域。

OSPF通過LSA(Link State Advertisement)的形式發(fā)布路由;

OSPF依靠在OSPF區(qū)域內(nèi)各設(shè)備間交互OSPF報文來達(dá)到路由信息的統(tǒng)一;

OSPF報文封裝在IP報文內(nèi),可以采用單播或組播的形式發(fā)送;

OSPF支持觸發(fā)更新,能夠快速檢測并通告自治系統(tǒng)內(nèi)的拓?fù)渥兓?/b>

OSPF協(xié)議router id

Router ID

Router ID是一個32位的值,它唯一標(biāo)識了一個自治系統(tǒng)內(nèi)的路由器,可以為每臺運行OSPF的路由器上可以手動配置一個Router ID,或者指定一個IP地址作為Router ID。

如果沒有手動配置Router ID,運行OSPF協(xié)議的路由器如何選取Router ID?

1、如果設(shè)備存在多個邏輯接口地址,則路由器使用邏輯接口中最大的IP地址作為Router ID;

2、如果沒有配置邏輯接口,則路由器使用物理接口的最大IP地址作為Router ID。

注意:

1、在為一臺運行OSPF的路由器配置新的Router ID后,需要在路由器上通過重置OSPF進(jìn)程來更新Router ID。

2、通常建議手動配置Router ID,以防止Router ID因為接口地址的變化而改變。

OSPF協(xié)議鄰居/鄰接

鄰居(Neighbor):

OSPF路由器啟動后,便會通過OSPF接口向外發(fā)送Hello報文用于發(fā)現(xiàn)鄰居

收到Hello報文的OSPF路由器會檢查報文中所定義的一些參數(shù),如果雙方的參數(shù)一致,就會彼此形成鄰居關(guān)系。

鄰接(Adjacency):

形成鄰居關(guān)系的雙方不一定都能形成鄰接關(guān)系,這要根據(jù)網(wǎng)絡(luò)類型而定。

只有當(dāng)雙方成功交換DD報文,并能交換LSA之后,才形成真正意義上的鄰接關(guān)系。

OSPF協(xié)議網(wǎng)絡(luò)類型

OSPF協(xié)議支持四種網(wǎng)絡(luò)類型,分別是點到點網(wǎng)絡(luò),廣播型網(wǎng)絡(luò),NBMA網(wǎng)絡(luò)點到多點網(wǎng)絡(luò)

1、點到點網(wǎng)絡(luò)是指只把兩臺路由器直接相連的網(wǎng)絡(luò)。一個運行PPP的64K串行線路就是一個點到點網(wǎng)絡(luò)的例子。

2、廣播型網(wǎng)絡(luò)是指支持兩臺以上路由器,并且具有廣播能力的網(wǎng)絡(luò)。一個含有三臺路由器的以太網(wǎng)就是一個廣播型網(wǎng)絡(luò)的例子。

OSPF可以在不支持廣播的多路訪問網(wǎng)絡(luò)上運行,此類網(wǎng)絡(luò)包括在hub-spoke拓?fù)渖线\行的幀中繼(FR)和異步傳輸模式(ATM)網(wǎng)絡(luò),這些網(wǎng)絡(luò)的通信依賴于虛電路。

OSPF定義了兩種支持多路訪問的網(wǎng)絡(luò)類型:非廣播多路訪問網(wǎng)絡(luò)(NBMA)點到多點網(wǎng)絡(luò)(Point To Multi-Points)。

3、NBMA:在NBMA網(wǎng)絡(luò)上,OSPF模擬在廣播型網(wǎng)絡(luò)上的操作,但是每個路由器的鄰居需要手動配置。NBMA方式要求網(wǎng)絡(luò)中的路由器組成全連接。

缺省情況下,OSPF認(rèn)為幀中繼、 ATM的網(wǎng)絡(luò)類型是NBMA。

4、P2MP:將整個網(wǎng)絡(luò)看成是一組點到點網(wǎng)絡(luò)。對于不能組成全連接的網(wǎng)絡(luò)應(yīng)當(dāng)使用點到多點方式。

注意:

現(xiàn)網(wǎng)中遇到的大部分屬于點到點網(wǎng)絡(luò)廣播型網(wǎng)絡(luò),因為幀中繼、 ATM網(wǎng)絡(luò)基本已經(jīng)淘汰了。

DR&BDR選舉

為減小廣播型網(wǎng)絡(luò)NBMA網(wǎng)絡(luò)中OSPF流量,OSPF會選擇一個指定路由器(DR)和一個備份指定路由器(BDR)。

選舉DR&BDR的條件:

每一個含有至少兩個路由器廣播型網(wǎng)絡(luò)NBMA網(wǎng)絡(luò)都有一個DR和BDR。在點到點網(wǎng)絡(luò)P2MP不需要選舉DR&BDR。

DR&BDR的工作原理

1、當(dāng)指定了DR后,所有的路由器都與DR建立起鄰接關(guān)系,DR成為該廣播網(wǎng)絡(luò)上的中心點;

2、BDR在DR發(fā)生故障時接管業(yè)務(wù),一個廣播網(wǎng)絡(luò)上所有路由器都必須同BDR建立鄰接關(guān)系。

為什么需要選舉DR&BDR?

1、DR和BDR可以減少鄰接關(guān)系的數(shù)量,從而減少鏈路狀態(tài)信息以及路由信息的交換次數(shù),這樣可以節(jié)省帶寬,降低對路由器處理能力的壓力。

2、一個既不是DR也不是BDR的路由器只與DR和BDR形成鄰接關(guān)系并交換鏈路狀態(tài)信息以及路由信息,這樣就大大減少了大型廣播型網(wǎng)絡(luò)和NBMA網(wǎng)絡(luò)中的鄰接關(guān)系數(shù)量。

DR&BDR的選舉

鄰居發(fā)現(xiàn)完成之后,路由器會根據(jù)網(wǎng)段類型進(jìn)行DR選舉。

1、在廣播和NBMA網(wǎng)絡(luò)上,路由器會根據(jù)參與選舉的每個接口的優(yōu)先級進(jìn)行DR選舉。

優(yōu)先級取值范圍為0-255,值越高越優(yōu)先。缺省情況下,接口優(yōu)先級為1。如果一個接口優(yōu)先級為0,那么該接口將不會參與DR或者BDR的選舉。

2、如果優(yōu)先級相同時,則比較Router ID,值越大越優(yōu)先被選舉為DR。

為了給DR做備份,每個廣播和NBMA網(wǎng)絡(luò)上還要選舉一個BDR。BDR也會與網(wǎng)絡(luò)上所有的路由器建立鄰接關(guān)系。

為了維護(hù)網(wǎng)絡(luò)上鄰接關(guān)系的穩(wěn)定性,如果網(wǎng)絡(luò)中已經(jīng)存在DR和BDR,則新添加進(jìn)該網(wǎng)絡(luò)的路由器不會成為DR和BDR,不管該路由器的Router Priority是否最大。如果當(dāng)前DR發(fā)生故障,則當(dāng)前BDR自動成為新的DR,網(wǎng)絡(luò)中重新選舉BDR;如果當(dāng)前BDR發(fā)生故障,則DR不變,重新選舉BDR。這種選舉機制的目的是為了保持鄰接關(guān)系的穩(wěn)定,使拓?fù)浣Y(jié)構(gòu)的改變對鄰接關(guān)系的影響盡量小。

例子:

在沒有DR的廣播網(wǎng)絡(luò)上,鄰接關(guān)系的數(shù)量可以根據(jù)公式n(n-1)/2計算出,n代表參與OSPF的路由器接口的數(shù)量。

如圖所示,所有路由器之間有6個鄰接關(guān)系。本例中使用DR和BDR將鄰接關(guān)系從6減少到了5,RTA和RTB都只需要同DR和BDR建立鄰接關(guān)系,RTA和RTB之間建立的是鄰居關(guān)系。

此例中,鄰接關(guān)系數(shù)量的減少效果并不明顯。但是,當(dāng)網(wǎng)絡(luò)上部署了大量路由器時,比如100臺,那么情況就大不一樣了。

OSPF協(xié)議5種報文

OSPF直接運行在IP協(xié)議之上,使用IP協(xié)議號89。

運行OPSF協(xié)議的路由器通過5種報文的交互從鄰居狀態(tài)達(dá)到鄰接狀態(tài),完成LSA的泛洪,使網(wǎng)絡(luò)的路由器LSDB達(dá)到一致,每個路由器按照自己LSDB根據(jù)SPF算法計算路徑,生成最優(yōu)路由加入路由表。

下面我們一起看下這個五種報文類型,每種報文都使用相同的OSPF報文頭。

1、Hello報文:

最常用的一種報文,用于發(fā)現(xiàn)、維護(hù)鄰居關(guān)系。

在廣播和NBMA(None-Broadcast Multi-Access)類型的網(wǎng)絡(luò)中選舉指定路由器DR(Designated Router)和備份指定路由器BDR(Backup Designated Router)

2、DD報文:

兩臺路由器進(jìn)行LSDB數(shù)據(jù)庫同步時,用DD報文來描述自己的LSDB

DD報文的內(nèi)容包括LSDB中每一條LSA的頭部(LSA的頭部可以唯一標(biāo)識一條LSA)。LSA頭部只占一條LSA的整個數(shù)據(jù)量的一小部分,所以,這樣就可以減少路由器之間的協(xié)議報文流量。

3、LSR報文:

兩臺路由器互相交換過DD報文之后,知道對端的路由器有哪些LSA是本地LSDB所缺少的,這時需要發(fā)送LSR報文向?qū)Ψ秸埱笕鄙俚腖SA,LSR只包含了所需要的LSA的摘要信息。

4、LSU報文:用來向?qū)Χ寺酚善?b>發(fā)送所需要的LSA。

5、LSACK報文:用來對接收到的LSU報文進(jìn)行確認(rèn)。

OSPF協(xié)議狀態(tài)機

運行OPSF協(xié)議的路由器通過5種報文的交互從鄰居狀態(tài)達(dá)到鄰接狀態(tài),中間可能會經(jīng)歷以下8種狀態(tài):

Down:這是鄰居的初始狀態(tài),表示沒有從鄰居收到任何信息。

Attempt:此狀態(tài)只在NBMA網(wǎng)絡(luò)上存在,表示沒有收到鄰居的任何信息,但是已經(jīng)周期性的向鄰居發(fā)送報文,發(fā)送間隔為HelloInterval。如果RouterDeadInterval間隔內(nèi)未收到鄰居的Hello報文,則轉(zhuǎn)為Down狀態(tài)。

Init:在此狀態(tài)下,路由器已經(jīng)從鄰居收到了Hello報文,但是自己不在所收到的Hello報文的鄰居列表中,尚未與鄰居建立雙向通信關(guān)系。

2-Way:在此狀態(tài)下,雙向通信已經(jīng)建立,但是沒有與鄰居建立鄰接關(guān)系。這是建立鄰接關(guān)系以前的最高級狀態(tài)。

ExStart:這是形成鄰接關(guān)系的第一個步驟,鄰居狀態(tài)變成此狀態(tài)以后,路由器開始向鄰居發(fā)送DD報文。主從關(guān)系是在此狀態(tài)下形成的,初始DD序列號也是在此狀態(tài)下決定的。在此狀態(tài)下發(fā)送的DD報文不包含鏈路狀態(tài)描述。

Exchange:此狀態(tài)下路由器相互發(fā)送包含鏈路狀態(tài)信息摘要的DD報文,描述本地LSDB的內(nèi)容。

Loading:相互發(fā)送LSR報文請求LSA,發(fā)送LSU報文通告LSA。

Full:路由器的LSDB已經(jīng)同步

OSPF協(xié)議詳細(xì)工作原理

結(jié)合OSPF協(xié)議的5種報文8種鄰居狀態(tài)機來一起看下OPSF的工作過程:

1、鄰居發(fā)現(xiàn):

?運行OSPF協(xié)議的路由器會發(fā)送Hello報文,用來發(fā)現(xiàn)和維持OSPF鄰居關(guān)系;

Hello報文結(jié)構(gòu):

Hello報文中的重要字段解釋如下:

Network Mask:32比特,發(fā)送Hello報文的接口的網(wǎng)絡(luò)掩碼。

HelloInterval:16比特,發(fā)送Hello報文的時間間隔,單位為秒。默認(rèn)是10S。

Options:8比特,標(biāo)識發(fā)送此報文的OSPF路由器所支持的可選功能。

可選項:

E:允許Flood AS-External-LSAs

MC:轉(zhuǎn)發(fā)IP組播報文

N/P:處理Type-7 LSAs

DC:處理按需鏈路

Router Priority:8比特,發(fā)送Hello報文的接口的Router Priority,用于選舉DR和BDR。默認(rèn)為1。如果設(shè)置為0,則路由器不能參與DR或BDR的選舉。

RouterDeadInterval:32比特,失效時間。如果在此時間內(nèi)未收到鄰居發(fā)來的Hello報文,則認(rèn)為鄰居失效;單位為秒,通常為四倍HelloInterval。默認(rèn)是40S。

Designated Router:32比特,發(fā)送Hello報文的路由器所選舉出的DR的IP地址。如果設(shè)置為0.0.0.0,表示未選舉DR路由器。

Backup Designated Router:32比特,發(fā)送Hello報文的路由器所選舉出的BDR的IP地址。如果設(shè)置為0.0.0.0,表示未選舉BDR。

Neighbor:32比特,鄰居的Router ID列表,表示本路由器已經(jīng)從這些鄰居收到了合法的Hello報文。

如果路由器發(fā)現(xiàn)所接收的合法Hello報文的鄰居列表中有自己的Router ID,則認(rèn)為已經(jīng)和鄰居建立了雙向連接,表示鄰居關(guān)系已經(jīng)建立。

驗證一個接收到的Hello報文是否合法包括:

1、如果接收端口的網(wǎng)絡(luò)類型是廣播型,點到多點或者NBMA,所接收的Hello報文中Network Mask字段必須和接收端口的網(wǎng)絡(luò)掩碼一致,如果接收端口的網(wǎng)絡(luò)類型為點到點類型或者是虛連接,則不檢查Network Mask字段;

2、所接收的Hello報文中Hello Interval字段必須和接收端口的配置一致;

3、所接收的Hello報文中Router Dead Interval字段必須和接收端口的配置一致;

4、所接收的Hello報文中Options字段中的E-bit(表示是否接收外部路由信息)必須和相關(guān)區(qū)域的配置一致。

2、LSDB數(shù)據(jù)庫同步:

路由器在建立完成鄰居關(guān)系之后,便開始進(jìn)行LSDB數(shù)據(jù)庫同步。

路由器使用DD報文來進(jìn)行主從路由器的選舉數(shù)據(jù)庫摘要信息的交互。DD報文包含LSA的頭部信息,用來描述LSDB的摘要信息。

具體過程如下:

主從路由器的選舉:

1、鄰居狀態(tài)變?yōu)?b>ExStart以后,RTA向RTB發(fā)送第一個DD報文,在這個報文中,DD序列號被設(shè)置為X(假設(shè)),RTA宣告自己為主路由器。

2、RTB也向RTA發(fā)送第一個DD報文,在這個報文中,DD序列號被設(shè)置為Y(假設(shè))。RTB也宣告自己為主路由器。

由于RTB的Router ID比RTA的大,所以RTB應(yīng)當(dāng)為真正的主路由器。

數(shù)據(jù)庫摘要信息的交互:

3、RTA發(fā)送一個新的DD報文,在這個新的報文中包含LSDB的摘要信息(LSDB的摘要信息可以類比成一本書的目錄),序列號設(shè)置為RTB在步驟2里使用的序列號(表示承認(rèn)RTB為真正的主路由器),因此RTB將鄰居狀態(tài)改變?yōu)?b>Exchange。

4、鄰居狀態(tài)變?yōu)?b>Exchange以后,RTB發(fā)送一個新的DD報文,該報文中包含LSDB的描述信息,DD序列號設(shè)為Y+1(上次使用的序列號加1)。

5、即使RTA不需要新的DD報文描述自己的LSDB,但是作為從路由器,RTA需要對主路由器RTB發(fā)送的每一個DD報文進(jìn)行確認(rèn)。所以,RTA向RTB發(fā)送一個內(nèi)容為空的DD報文,序列號為Y+1。

3、建立完全鄰接關(guān)系:

6、發(fā)送完最后一個DD報文之后,RTA將鄰居狀態(tài)改變?yōu)?b>Loading;鄰居狀態(tài)變?yōu)長oading之后,RTA開始向RTB發(fā)送LSR報文,請求那些在Exchange狀態(tài)下通過DD報文發(fā)現(xiàn)的,而且在本地LSDB中沒有的鏈路狀態(tài)信息。

RTB收到最后一個DD報文之后,改變狀態(tài)為Full(假設(shè)RTB的LSDB是最新最全的,不需要向RTA請求更新)。

7、RTB收到LSR報文之后,向RTA發(fā)送LSU報文,在LSU報文中,包含了那些被請求的鏈路狀態(tài)的詳細(xì)信息。RTA收到LSU報文之后,將鄰居狀態(tài)從Loading改變成Full

8、RTA向RTB發(fā)送LSACK報文,用于對已接收LSA的確認(rèn)。

此時,RTA和RTB之間的鄰居狀態(tài)變成Full,表示達(dá)到完全鄰接狀態(tài)。

OSPF協(xié)議5種報文頭格式

OSPF用IP報文直接封裝協(xié)議報文,協(xié)議號為89。OSPF分為5種報文,Hello報文、DD報文、LSR報文、LSU報文和LSAck報文。

OSPF報文頭格式:

OSPF這五種報文具有相同的報文頭格式,長度為24字節(jié)。

1、Type:?1字節(jié) ,表示OSPF報文的類型,有下面幾種類型:Hello報文;DD報文;LSR報文;LSU報文;LSAck報文。

2、Packet length?:2字節(jié),OSPF報文的總長度,包括報文頭在內(nèi),單位為字節(jié)。

3、Router ID?:4字節(jié),發(fā)送該報文的路由器標(biāo)識。

4、Area ID: 4字節(jié) ,發(fā)送該報文的所屬區(qū)域。

5、Checksum?:2字節(jié),校驗和,包含除了認(rèn)證字段的整個報文的校驗和。

6、AuType?:2字節(jié) ,驗證類型值有如下幾種表示, 0表示不驗證;1表示簡單認(rèn)證;3表示MD5認(rèn)證。

7、Authentication :8字節(jié) ,鑒定字段,其數(shù)值根據(jù)驗證類型而定。當(dāng)驗證類型為0時未作定義;類型為1時此字段為密碼信息;類型為2時此字段包括Key ID、MD5驗證數(shù)據(jù)長度和序列號的信息。MD5驗證數(shù)據(jù)添加在OSPF報文后面,不包含在Authenticaiton字段中。

OSPF Hello報文格式

Hello報文是最常用的一種報文,其作用為建立和維護(hù)鄰接關(guān)系,周期性的在使能了OSPF的接口上發(fā)送。報文內(nèi)容包括一些定時器的數(shù)值、DR、BDR以及自己已知的鄰居。

報文的字段解釋上一章解已經(jīng)介紹過:5種報文、8種鄰居狀態(tài)機詳解OSPF工作原理

OSPF DD 報文格式

兩臺路由器在鄰接關(guān)系初始化時,用DD報文(Database Description

Packet)來描述自己的LSDB,進(jìn)行數(shù)據(jù)庫的同步。報文內(nèi)容包括LSDB中每一條LSA的Header(LSA的Header可以唯一標(biāo)識一條LSA)。

LSA?Header只占一條LSA的整個數(shù)據(jù)量的一小部分,這樣可以減少路由器之間的協(xié)議報文流量,對端路由器根據(jù)LSA Header就可以判斷出是否已有這條LSA。

在兩臺路由器交換DD報文的過程中,一臺為Master,另一臺為Slave。由Master規(guī)定起始序列號,每發(fā)送一個DD報文序列號加1,Slave方使用Master的序列號作為確認(rèn)。

1、Interface MTU:?16比特 ,在不分片的情況下,此接口最大可發(fā)出的IP報文長度。

2、Options:?8比特 ,可選項

3、DD sequence number?:32比特 DD報文序列號。主從雙方利用序列號來保證DD報文傳輸?shù)目煽啃院屯暾浴?/p>

4、LSA Headers :可變 ,該DD報文中所包含的LSA的頭部信息。

OSPF LSR報文格式

兩臺路由器互相交換過DD報文之后,知道對端的路由器有哪些LSA是本地的LSDB所缺少的和哪些LSA是已經(jīng)失效的,這時需要發(fā)送LSR報文(Link State Request Packet)向?qū)Ψ秸埱笏璧腖SA。內(nèi)容包括所需要的LSA的摘要。

LSR報文格式如下圖所示,其中LS type、Link State ID和Advertising Router可以唯一標(biāo)識出一個LSA,當(dāng)兩個LSA一樣時,需要根據(jù)LSA中的LS sequence number、LS checksum和LS age來判斷出所需要LSA的新舊。

1、LS type:32比特,LSA的類型號。

2、Link State ID:32比特,根據(jù)LSA中的LS Type和LSA description在路由域中描述一個LSA。

3、Advertising Router:32比特,產(chǎn)生此LSA的路由器的Router ID。

OSPF LSU報文格式

用來向?qū)Χ薘outer發(fā)送其所需要的LSA或者泛洪自己更新的LSA,內(nèi)容是多條LSA(全部內(nèi)容)的集合。

LSU報文(Link State Update?Packet)在支持組播和廣播的鏈路上是以組播形式將LSA泛洪出去。為了實現(xiàn)Flooding的可靠性傳輸,需要LSAck報文對其進(jìn)行確認(rèn)。對沒有收到確認(rèn)報文的LSA進(jìn)行重傳,重傳的LSA是直接發(fā)送到鄰居的。

Number of LSAs:32比特,LSA的數(shù)量。

OPSF LSAck報文格式

用來對接收到的LSU報文進(jìn)行確認(rèn)。內(nèi)容是需要確認(rèn)的LSA的Header(一個LSAck報文可對多個LSA進(jìn)行確認(rèn))。

LSAck(Link State Acknowledgment Packet)報文根據(jù)不同的鏈路以單播或組播的形式發(fā)送。

LSAs Headers:可變,通過LSA的頭部信息確認(rèn)收到該LSA。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容