首頁 > 農業

精!萬字15圖詳解OSPF路由協議

由 網路工程師阿成 發表于 農業2021-06-14

簡介OSPF協議5種報文OSPF直接執行在新新增進該網路的路由器不會成為DR和BDR,不管該路由器的Router Priority是否最大,使用IP協議號鄰接關係

報文是什麼

精!萬字15圖詳解OSPF路由協議

上帝視角

原文傳送門:

https://mp。weixin。qq。com/s/U5rLJ7M_gsk5nOw3hJOLsw

OSPF出現背景

精!萬字15圖詳解OSPF路由協議

如上圖就是一張簡單的OSPF協議網路,那麼為什麼會出現OSPF協議呢?

開放式最短路徑優先OSPF(Open Shortest Path First)協議是IETF定義的一種

基於鏈路狀態的

內部閘道器路由協議

為什麼會出現OSPF?:因為

RIP是一種基於距離向量演算法的路由協議

,存在著

收斂慢;

易產生路由環路;

可擴充套件性差,最大隻能支援15跳。

OSPF的出現很好地解決了上述3個問題,那麼

OSPF是如何解決上述3個問題的呢

?我們一起來看下。

什麼是OSPF協議?

OSPF是一種基於鏈路狀態的路由協議,它從設計上保證了無路由環路。

那麼什麼是

鏈路狀態協議

如果說距離向量路由協議提供的是

路標

,那麼鏈路狀態路由協議提供的就是

地圖

每個執行鏈路狀態協議的路由器上都有一張完整的網路圖。

就好比你有一張地圖怎麼還會迷路?執行

鏈路狀態協議

的每一臺路由器都會有一張地相簿從而避免了環路。

鏈路狀態協議工作原理

精!萬字15圖詳解OSPF路由協議

每臺執行

鏈路狀態路由協議

的路由器都

瞭解整個網路的鏈路狀態資訊(地圖)

,這樣才能計算出到達目的地的

最優路徑

1、LSA泛洪:

執行

鏈路狀態路由協議

的路由器都會進行

鏈路狀態公告LSA (Link State Advertisement)泛洪

,LSA中包含了路由器已知的介面狀態、介面IP地址、掩碼、開銷和網路型別等資訊。

通俗點講就是每臺路由器都會將

一些關於自己,關於本地直連鏈路以及這些鏈路的狀態和關於所有直連鄰居的資訊

傳送給相鄰的其他路由器。

2、建立LSDB:

收到LSA的路由器都可以根據LSA提供的資訊建立自己的

鏈路狀態資料庫LSDB(Link State Database)

通俗點講就是每臺路由器都會收到網路中其他的路由器傳送過來的LSA資訊,這些所有的LSA資訊構成了LSDB。這裡需要注意的是當網路穩定後,網路中的所有裝置應該是有相同的LSDB的。

3、建立最短路徑樹:

執行OSPF協議的路由器在LSDB的基礎上使用

SPF演算法

進行運算,建立起到達每個網路的

最短路徑樹

4、路由計算:

透過最短路徑樹得出到達目的網路的最優路由,並將其加入到IP路由表中。

常見的鏈路狀態協議有:

OSPF

:開放式最短路徑優先協議

IS-IS

:中間系統到中間系統協議

OSPF協議特點

OSPF支援區域的劃分,區域內部的路由器使用SPF最短路徑演算法保證了區域內部的無環路;

A、為什麼劃分區域?

劃分OSPF區域可以

縮小路由器的LSDB規模

,減少網路流量。

區域內的詳細拓撲資訊

不向其他區域傳送,

區域間傳遞的是抽象的路由資訊

,而不是詳細的描述拓撲結構的鏈路狀態資訊。

每個區域都有自己的LSDB,不同區域的LSDB是不同的。

路由器會為每一個自己所連線到的區域維護一個單獨的LSDB。由於詳細鏈路狀態資訊不會被髮布到區域以外,因此LSDB的規模大大縮小了。

B、OSPF是如何劃分區域的呢?

精!萬字15圖詳解OSPF路由協議

1、

路由器的每個介面可以被劃分在一個區域

,一個路由器可以同時屬於多個區域。

2、

Area 0為骨幹區域

,其他區域為非骨幹區域。每個非骨幹區域都必須連線到骨幹區域。

3、執行在區域之間的路由器叫做

區域邊界路由器ABR(Area Boundary Router)

,它包含所有相連區域的LSDB。

自治系統邊界路由器ASBR(Autonomous System Boundary Router)

是指和其他AS中的路由器交換路由資訊的路由器,這種路由器會向整個AS通告AS外部路由資訊。

C、為什麼SPF演算法可以保證區域內無環路?

SPF演算法

將每一個路由器作為根(ROOT)來計算其到每一個目的地路由器的距離,每一個路由器根據一個統一的資料庫會計算出路由域的拓撲結構圖,該結構圖類似於一棵樹,在SPF演算法中,被稱為

最短路徑樹

樹形是無環路的。

OSPF利用

區域間的連線規則

保證了區域之間無路由環路。

為了

避免區域間路由環路

,非骨幹區域之間不允許直接相互發布路由資訊,所有的非骨幹區域間通訊都需要藉助骨幹區域。因此,每個區域都必須連線到骨幹區域。

OSPF透過LSA(Link State Advertisement)的形式釋出路由;

OSPF依靠在OSPF區域內各裝置間互動OSPF報文來達到路由資訊的統一;

OSPF報文封裝在IP報文內,可以採用

單播或組播

的形式傳送;

OSPF支援觸發更新,能夠快速檢測並通告自治系統內的拓撲變化

OSPF協議router id

Router ID

Router ID是一個32位的值,它

支援觸發更新

,可以為每臺執行OSPF的路由器上可以

觸發更新

一個Router ID,或者指定一個IP地址作為Router ID。

快速檢測並通告自治系統內的拓撲變化

1、如果裝置存在多個邏輯介面地址,則路由器使用

唯一標識了一個自治系統內的路由器

作為Router ID;

2、如果沒有配置邏輯介面,則路由器使用

手動配置

作為Router ID。

如果沒有手動配置Router ID,執行OSPF協議的路由器如何選取Router ID?

1、在為一臺執行OSPF的路由器配置新的Router ID後,需要在路由器上透過

邏輯介面中最大的IP地址

來更新Router ID。

2、通常建議

物理介面的最大IP地址

,以防止Router ID因為介面地址的變化而改變。

OSPF協議鄰居/鄰接

鄰居(Neighbor):

OSPF路由器啟動後,便會透過OSPF介面向外

注意:

用於

重置OSPF程序

收到Hello報文的OSPF路由器會檢查報文中所定義的一些引數,

手動配置Router ID

傳送Hello報文

鄰接(Adjacency):

形成鄰居關係的雙方不一定都能形成鄰接關係,這要

發現鄰居

而定。

如果雙方的引數一致,就會彼此形成

鄰居關係

根據網路型別

OSPF協議網路型別

OSPF協議支援四種網路型別,分別是

只有當雙方成功交換DD報文,並能交換LSA之後,才形成真正意義上的

鄰接關係

點到點網路

廣播型網路

NBMA網路

是指只把兩臺路由器直接相連的網路。一個執行PPP的64K序列線路就是一個點到點網路的例子。

點到多點網路

是指支援兩臺以上路由器,並且具有廣播能力的網路。一個含有三臺路由器的乙太網就是一個廣播型網路的例子。

OSPF可以在不支援廣播的

1、點到

上執行,此類網路包括在hub-spoke拓撲上執行的幀中繼(FR)和非同步傳輸模式(ATM)網路,這些網路的通訊依賴於虛電路。

OSPF定義了兩種支援多路訪問的網路型別:

點網路

2、廣播型網路

多路訪問網路

在NBMA網路上,OSPF模擬在廣播型網路上的操作,但是每個路由器的鄰居需要手動配置。NBMA方式要求網路中的路由器組成全連線。

非廣播多路訪問網路(NBMA)

點到多點網路(Point To Multi-Points)

將整個網路看成是一組點到點網路。對於不能組成全連線的網路應當使用點到多點方式。

3、NBMA:

現網中遇到的大部分屬於

預設情況下,OSPF認為幀中繼、 ATM的網路型別是NBMA。

4、P2MP:

因為幀中繼、 ATM網路基本已經淘汰了。

DR&BDR選舉

為減小

注意:

點到點網路

中OSPF流量,OSPF會選擇一個指定路由器(DR)和一個備份指定路由器(BDR)。

選舉DR&BDR的條件:

每一個含有

廣播型網路,

廣播型網路

NBMA網路

都有一個DR和BDR。在

至少兩個路由器

廣播型網路

不需要選舉

NBMA網路

DR&BDR的工作原理

1、當指定了DR後,所有的路由器都與DR建立起鄰接關係,

點到點網路

2、

P2MP

,一個廣播網路上所有路由器都必須同BDR建立鄰接關係。

為什麼需要選舉DR&BDR?

1、DR和BDR可以

DR&BDR。

,從而減少鏈路狀態資訊以及路由資訊的交換次數,這樣可以節省頻寬,降低對路由器處理能力的壓力。

2、一個既不是DR也不是BDR的路由器只與DR和BDR形成鄰接關係並交換鏈路狀態資訊以及路由資訊,這樣就

DR成為該廣播網路上的中心點

DR&BDR的選舉

BDR在DR發生故障時接管業務

之後,路由器會根據

減少鄰接關係的數量

進行

大大減少了大型廣播型網路和NBMA網路中的鄰接關係數量

1、在廣播和NBMA網路上,路由器會

鄰居發現完成

進行DR選舉。

優先順序取值範圍為0-255,值越高越優先。預設情況下,介面優先順序為1。如果一個介面優先順序為0,那麼該介面將不會參與DR或者BDR的選舉。

2、如果優先順序相同時,

網段型別

,值越大越優先被選舉為DR。

為了給DR做備份,每個廣播和NBMA網路上

DR選舉

。BDR也會與網路上所有的路由器建立鄰接關係。

為了維護網路上鄰接關係的穩定性,如果網路中已經存在DR和BDR,則

根據參與選舉的每個介面的優先順序

。如果當前DR發生故障,則當前BDR自動成為新的DR,網路中重新選舉BDR;如果當前BDR發生故障,則DR不變,重新選舉BDR。這種選舉機制的目的是為了保持鄰接關係的穩定,使拓撲結構的改變對鄰接關係的影響儘量小。

例子:

在沒有DR的廣播網路上,鄰接關係的數量可以根據公式n(n-1)/2計算出,n代表參與OSPF的路由器介面的數量。

精!萬字15圖詳解OSPF路由協議

如圖所示,所有路由器之間有6個

則比較Router ID

。本例中使用DR和BDR將鄰接關係從6減少到了5,RTA和RTB都只需要同DR和BDR建立鄰接關係,RTA和RTB之間建立的是鄰居關係。

此例中,

還要選舉一個BDR

OSPF協議5種報文

OSPF直接執行在

新新增進該網路的路由器不會成為DR和BDR,不管該路由器的Router Priority是否最大

,使用IP協議號

鄰接關係

執行OPSF協議的路由器

鄰接關係數量的減少效果並不明顯。但是,當網路上部署了大量路由器時,比如100臺,那麼情況就大不一樣了

,完成LSA的泛洪,使網路的路由器LSDB達到一致,每個路由器按照自己LSDB根據SPF演算法計算路徑,生成最優路由加入路由表。

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

IP協議之上

最常用的一種報文,

89

在廣播和NBMA(None-Broadcast Multi-Access)型別的網路中

透過5種報文的互動從鄰居狀態達到鄰接狀態

1、Hello報文:

兩臺路由器進行LSDB資料庫同步時,

用於發現、維護鄰居關係

DD報文的內容包括LSDB中每一條LSA的頭部(LSA的頭部可以唯一標識一條LSA)。LSA頭部只佔一條LSA的整個資料量的一小部分,所以,

選舉指定路由器DR(Designated Router)和備份指定路由器BDR(Backup Designated Router)

2、DD報文:

兩臺路由器互相交換過DD報文之後,知道對端的路由器有哪些LSA是本地LSDB所缺少的,這時需要

用DD報文來描述自己的LSDB

這樣就可以減少路由器之間的協議報文流量

用來向對端路由器

3、LSR報文:

傳送LSR報文向對方請求缺少的LSA,LSR只包含了所需要的LSA的摘要資訊。

用來對接收到的

4、LSU報文:

OSPF協議狀態機

傳送所需要的LSA

5、LSACK報文:

這是鄰居的初始狀態,表示沒有從鄰居收到任何資訊。

LSU報文進行確認

此狀態只在NBMA網路上存在,表示沒有收到鄰居的任何資訊,但是已經週期性的向鄰居傳送報文,傳送間隔為HelloInterval。如果RouterDeadInterval間隔內未收到鄰居的Hello報文,則轉為Down狀態。

執行OPSF協議的路由器透過5種報文的互動從鄰居狀態達到鄰接狀態,中間可能會經歷以下8種狀態:

在此狀態下,路由器已經從鄰居收到了Hello報文,但是自己不在所收到的Hello報文的鄰居列表中,尚未與鄰居建立雙向通訊關係。

Down:

在此狀態下,雙向通訊已經建立,但是沒有與鄰居建立鄰接關係。這是建立鄰接關係以前的最高階狀態。

Attempt:

這是形成鄰接關係的第一個步驟,鄰居狀態變成此狀態以後,路由器開始向鄰居傳送DD報文。主從關係是在此狀態下形成的,初始DD序列號也是在此狀態下決定的。在此狀態下發送的DD報文不包含鏈路狀態描述。

Init:

此狀態下路由器相互發送包含鏈路狀態資訊摘要的DD報文,描述本地LSDB的內容。

2-Way:

相互發送LSR報文請求LSA,傳送LSU報文通告LSA。

ExStart:

路由器的LSDB已經同步

Tags:路由器OSPF報文網路dr