HC120115000 OSPF協議基礎2_(OSPF基本工作原理)

Dreamsi_zhang發表於2020-10-16

1、鄰居建立過程

1、Route-id的標識
  1. 裝置在網路中執行了ospf,需要有一個標識來唯一的確定他的存在,相當於給裝置起一個名字,這個名字就叫做Router-id,名字不能相同,Router-id在同一個網路環境中也不能相同,Router-id會在進行鄰居建立以及路由更新時唯一的標識路由器的存在。
  2. Router-id的選舉:(1)以手工配置的為最優。(2)以雙UP狀態的邏輯介面次之。(3)最後選擇雙UP狀態的物理介面。
  3. 實際在ensp當中,關於router-id的選擇,會首先選擇最開始配置的路由器介面IP。
  4. ospf中在進行了router-id的更改後,為了保證路由結構的穩定性,只會在重啟ospf程式後或者重啟裝置後才會生效。
  5. 重啟ospf程式命令為:<Huawei>reset ospf process
2、Hellow報文的作用
  1. 鄰居發現:ospf採用組播方式來自動發現鄰居路由器的存在,組播地址為224.0.0.5和224.0.0.6。
  2. 鄰居建立:進行引數協商,協商成功後即可建立鄰居關係,關鍵在於hellow報文中的欄位匹配程度,可滿足鄰居建立條件則可成功建立鄰居關係。
  3. 鄰居保持:通過Keepalive機制,檢測鄰居執行狀態,通過頻繁進行hello包的傳送進行鄰居保活。
    在這裡插入圖片描述OSPF公共頭部
    version2:版本資訊。(需一致)
    Message Type:訊息型別。( 都為hellow且互相傳送才可建立鄰居關係)
    Packet Length:包長度,包含包頭及內容。(視包大小而不同)
    Source OSPF Router:自身的Router-id。(不可相同)
    Area ID:區域號。(需相同,不通區域則無法建立鄰居關係)
    Checksum:檢驗欄位。
    Auth Type:認證型別。
    Auth Data:認證資料即認證密碼。
    OSPF Hello Packet頭部資訊
    Network Mask:網路掩碼。(需一致)
    Hello Interval:hello包傳送間隔時間。(需一致)
    Options:可選項欄位
  • DN位:用於基於MPLS的三層VPN技術。直接看應用場景。
  • O位:用來說明路由器是 否有能力傳送和接收opaque LSA即型別9,型別10和型別11
  • DC位:當始發路由器支援按需鏈路上的OSPF能力時,設定此位
  • L位:指示OSPF資料包是否包含鏈路本地信令(LLS)資料塊(該資訊在報文後面)。此位僅在Hello和DD資料包中設定
  • N/P位:N位:設定N-bit=1,表明該LSA支援NSSA外部路由,即為LSA 7,N-bit=0則不支援。需要注意的是如果N-bit=1,那麼E-bit必須為0;P位:位和N位在同一欄位內,如果該欄位選擇設定P-bit,可以告訴一個NSSA中的ABR將LSA 7 轉換為 LSA 5,即將P-bit位從1設定為0。
  • MC位:該位描述是否組播擴充套件OSPF,也就是MOSPF。
  • E位:當始發路由器具有接受AS外部LSA的能力時,該位將被設定。
  • MT:設定了該位表示始發路由器支援多拓撲OSPF(MT-OSPF)。
    Router Priority:路由器優先順序。
    Router Dead Interval:失效時間即死亡時間。(需一致)
    Designated Router:DR路由器ID號。
    Backup Designated Router:BDR路由器ID號。
    Active neighbor:鄰居路由器ID號。
2、OSPF鄰居建立過程

在這裡插入圖片描述狀態含義:
Down:這是鄰居的初始狀態,表示沒有從鄰居收到任何資訊。
Init:在此狀態下,路由器已經從鄰居收到了Hello報文,但是自己的Router ID不在所收到的Hello報文的鄰居列表中,表示尚未與鄰居建立雙向通訊關係。
2-Way:在此狀態下,路由器發現自己的Router ID存在於收到的Hello報文的鄰居列表中,已確認可以雙向通訊。
鄰居建立過程如下:
RTA和RTB的Router ID分別為1.1.1.1和2.2.2.2。當RTA啟動OSPF後,RTA會傳送第一個Hello報文。此報文中鄰居列表為空,此時狀態為Down,RTB收到R他的這個Hello報文,狀態置為Init。
RTB傳送Hello報文,此報文中鄰居列表為空,RTA收到RTB的Hello報文,狀態置為Init。
RTB向RTA傳送鄰居列表為1.1.1.1的Hello報文,RTA在收到的Hello報文鄰居列表中發現自己的Router ID,狀態置為2-way。
RTA向RTB傳送鄰居列表為2.2.2.2的Hello報文,RTB在收到的Hello報文鄰居列表中發現自己的Router ID,狀態置為2-way。
因為鄰居都是未知的,所以Hello報文的目的IP地址不是某個特定的單播地址。鄰居從無到有,OSPF採用組播的形式傳送Hello報文(目的地址224.0.0.5)。對於不支援組播的網路,OSPF路由器可以採取手工單播形式進行建立,通過peer指定。

2、OSPF鏈路狀態資訊

鏈路資訊主要包括:

  1. 鏈路型別:P2P、BMA、NBMA、P2MP。
  2. 介面IP地址以及掩碼。
  3. 鏈路上連線的鄰居路由器。
  4. 鏈路的頻寬(開銷)。在這裡插入圖片描述P2P:對應串列埠現路,hello時間30s。
    BMA:對應乙太網鏈路,hello時間10s。
    NBMA:對應FR、ATM鏈路,hello時間30s。
    P2MP:根據使用場景進行確定,hello時間30s。
2、OSPF的度量方式

OSPF在計算介面的cost時,cost=參考頻寬/實際頻寬,預設參考頻寬為100M。當計算結果有小數位時,只取整數位;結果小於1時,cost取1。
若需要調整介面cost值有兩種方式:

  1. 直接在介面下配置,需要注意的是,配置的cost是此介面最終的cost值,作用範圍僅限於本介面。[Huawei-GigabitEthernet0/0/0]ospf cost 10
  2. 修改OSPF的預設參考頻寬值,作用範圍是本路由器使能OSPF的介面。建議參考整個網路的頻寬情況建立參考基線,所有路由器修改相同的參考頻寬值,從而確保選路的一致性。[Huawei-ospf-10]bandwidth-reference 1000
  3. OSPF以“累計cost”為開銷值,也就是流量從源網路到目的網路所經過所有路由器的出介面的cost總和,以RTA訪問RTC Loopback 1介面192.168.3.3為例,其cost=G1’s cost+G3’s cost。

相比於RIP,OSPF的度量方式不僅考慮“跳數”,而且還考慮了“頻寬”,比RIP更可靠的選擇最優的轉發路徑。

2、OSPF報文型別及作用

在這裡插入圖片描述RIP路由器之間是基於UDP 520的報文進行通訊,OSPF也有其規定的通訊標準。OSPF使用IP承載其報文,協議號為89。
在OSPF Packet部分,所有的OSPF報文均使用相同的OSPF報文頭部:
Version :對於當前所使用的OSPFv2,該欄位的值為2。
Type:OSPF報文型別。
Packet length:表示整個OSPF報文的長度,單位是位元組。
Router ID:表示生成此報文的路由器的Router ID。
Area ID:表示此報文需要被通告到的區域。
Checksum:校驗欄位,其校驗的範圍是整個OSPF報文,包括OSPF報文頭部。
Auth Type:為0時表示不認證;為1時表示簡單的明文密碼認證;為2時表示加密(MD5)認證。
Authentication:認證所需的資訊。該欄位的內容隨AuType的值不同而不同。
在這裡插入圖片描述Type=1為Hello報文,用來建立和維護鄰居關係,鄰居關係建立之前,路由器之間需要進行引數協商。
Type=2為資料庫描述報文(DD),用來向鄰居路由器描述本地鏈路狀態資料庫,使得鄰居路由器識別出資料庫中的LSA是否完整。
Type=3為鏈路狀態請求報文(LSR),路由器根據鄰居的DD報文,判斷本地資料庫是否完整,如不完整,路由器把這些LSA記錄進鏈路狀態請求列表中,然後傳送一個LSR給鄰居路由器。
Type=4為鏈路狀態更新報文(LSU),用於響應鄰居路由器發來的LSR,根據LSR中的請求列表,傳送對應LSA給鄰居路由器,真正實現LSA的泛洪與同步。
Type=5為鏈路狀態確認報文(LSAck),用來對收到的LSA進行確認,保證同步過程的可靠性。
DD、LSR、LSU、LSAck與LSA的關係:
DD報文中包含LSA頭部資訊,包括LS Type、LS ID、Advertising Router 、LS Sequence Number、LS Checksum。
LSR中包含LS Type 、LS ID和Advertising Router 。
LSU中包含完整的LSA資訊。
LSAck中包含LSA頭部資訊,包括LS Type、LS ID、Advertising Router、LS Sequence Number、LS Checksum。
在這裡插入圖片描述OOBResync:帶外資料重新傳送。
Init:表示傳送的第一個DD包。
More:表示後面還有資料。
Master:主備路由器。
報文的功能作用:
在這裡插入圖片描述

2、OSPF中LSDB同步過程

在這裡插入圖片描述狀態含義:
ExStart:鄰居狀態變成此狀態以後,路由器開始向鄰居傳送DD報文。Master/Slave關係是在此狀態下形成的,初始DD序列號也是在此狀態下確定的。在此狀態下傳送的DD報文不包含鏈路狀態描述。
Exchange:在此狀態下,路由器與鄰居之間相互傳送包含鏈路狀態資訊摘要的DD報文。
Loading:在此狀態下,路由器與鄰居之間相互傳送LSR報文、LSU報文、LSAck報文。
Full:LSDB同步過程完成,路由器與鄰居之間形成了完全的鄰接關係。
LSDB同步過程如下:
RTA和RTB的Router ID分別為1.1.1.1和2.2.2.2並且二者已建立了鄰居關係。當R他的鄰居狀態變為ExStart後,RTA會傳送第一個DD報文。此報文中,DD序列號被隨機設定為X,I-bit設定為1,表示這是第一個DD報文,M-bit設定為1,表示後續還有DD報文要傳送,MS-bit設定為1,表示RTA宣告自己為Master。
當RTB的鄰居狀態變為ExStart後,RTB會傳送第一個DD報文。此報文中,DD序列號被隨機設定為Y(I-bit=1,M-bit=1,MS-bit=1,含義同上)。由於RTB的Router ID較大,所以RTB將成為真正的Master。收到此報文後,RTA會產生一個Negotiation-Done事件,並將鄰居狀態從ExStart變為Exchange。
在這裡插入圖片描述RTA開始向RTB傳送LSR報文,請求那些在Exchange狀態下通過DD報文發現的、並且在本地LSDB中沒有的鏈路狀態資訊。
RTB向RTA傳送LSU報文,LSU報文中包含了那些被請求的鏈路狀態的詳細資訊。RTA在完成LSU報文的接收之後,會將鄰居狀態從Loading變為Full。
RTA向RTB傳送LSAck報文,作為對LSU報文的確認。RTB收到LSAck報文後,雙方便建立起了完全的鄰接關係。
在這裡插入圖片描述這是形成鄰居關係的過程和相關鄰居狀態的變換過程。
Down:這是鄰居的初始狀態,表示沒有從鄰居收到任何資訊。在NBMA網路上,此狀態下仍然可以向靜態配置的鄰居傳送Hello報文,傳送間隔為PollInterval,通常和Router DeadInterval間隔相同。
Attempt:此狀態只在NBMA網路上存在,表示沒有收到鄰居的任何資訊,但是已經週期性的向鄰居傳送報文,傳送間隔為HelloInterval。如果Router DeadInterval間隔內未收到鄰居的Hello報文,則轉為Down狀態。
Init:在此狀態下,路由器已經從鄰居收到了Hello報文,但是自己不在所收到的Hello報文的鄰居列表中,表示尚未與鄰居建立雙向通訊關係。在此狀態下的鄰居要被包含在自己所傳送的Hello報文的鄰居列表中。
2-Way Received:此事件表示路由器發現與鄰居的雙向通訊已經開始(發現自己在鄰居傳送的Hello報文的鄰居列表中)。Init狀態下產生此事件之後,如果需要和鄰居建立鄰接關係則進入ExStart狀態,開始資料庫同步過程,如果不能與鄰居建立鄰接關係則進入2-Way。
2-Way:在此狀態下,雙向通訊已經建立,但是沒有與鄰居建立鄰接關係。這是建立鄰接關係以前的最高階狀態。
1-Way Received:此事件表示路由器發現自己沒有在鄰居傳送Hello報文的鄰居列表中,通常是由於對端鄰居重啟造成的。
ExStart:這是形成鄰接關係的第一個步驟,鄰居狀態變成此狀態以後,路由器開始向鄰居傳送DD報文。主從關係是在此狀態下形成的;初始DD序列號是在此狀態下決定的。在此狀態下傳送的DD報文不包含鏈路狀態描述。
在這裡插入圖片描述LSA(Link State Advertisement)是路由器之間鏈路狀態資訊的載體。LSA是LSDB的最小組成單位,也就是說LSDB由一條條LSA構成的。
所有的LSA都擁有相同的頭部,關鍵欄位的含義如下:
LS age:此欄位表示LSA已經生存的時間,單位是秒。
LS type:此欄位標識了LSA的格式和功能。常用的LSA型別有五種。
Link State ID:此欄位是該LSA所描述的那部分鏈路的標識,例如Router ID等。
Advertising Router:此欄位是產生此LSA的路由器的Router ID。
LS sequence number:此欄位用於檢測舊的和重複的LSA。
LS type,Link State ID和Advertising Router的組合共同標識一條LSA。
LSDB中除了自己生成的LSA,另一部分是從鄰居路由器接收的。鄰居路由器之間相互更新LSA必然需要一個“通道”。

2、OSPF中DR與BDR的選舉及作用

在這裡插入圖片描述鄰居(Neighbor)關係與鄰接(Adjacency)關係是兩個不同的概念。OSPF路由器之間建立鄰居關係後,進行LSDB同步,最終形成鄰接關係。
在P2P網路及P2MP網路上,具有鄰居關係的路由器之間會進一步建立鄰接關係。
在廣播型網路及NBMA網路上,非DR/BDR路由器之間只能建立鄰居關係,不能建立鄰接關係,非DR/BDR路由器與DR/BDR路由器之間會建立鄰接關係,DR與BDR之間也會建立鄰接關係。
鄰接關係建立完成,意味著LSDB已經完成同步,接下來OSPF路由器將基於LSDB使用SPF演算法計算路由。

  • 選舉規則:(1)首先根據優先順序選舉,0-255,[Huawei-GigabitEthernet0/0/0]ospf dr-priority 255。(2)再選擇Router-id,越大越優先。

--------------------------------------武漢艾迪時代IT教育----------------------------------------------------

相關文章