OSPF協定總結(1)

2020-10-06 15:00:38

OSPF協定總結

OSPF:開放式最短路徑優先協定(Open Shortest Path First)

OSPF概述

版本:V1/V2/V3(V3使用的是IPv6)

屬於無類別鏈路狀態路由協定–基於拓撲資訊進行收斂

組波更新:224.0.0.5

觸發更新 僅對變化量進行更新

週期更新 基於時間週期進行更新—更新量大

若一個協定希望實現增量更新— 僅觸發無週期;hello機制(週期保活) ACK確認機制

1.OSPF封包型別

在這裡插入圖片描述
在這裡插入圖片描述

  • OPSF Version:是指OSPF的版本號。v2表示IPv4;v3表示IPv6
  • Message Type:指出跟在頭部後面的封包型別

在這裡插入圖片描述

  • Packet Length:OSPF封包的長度,包括封包頭部的長度,以八位組位元組計。
  • Source OSPF Router:始發路由器的ID
  • Area ID:始發封包的路由所在區域。如果封包是在一個虛鏈路上傳送的,那麼區域ID為0.0.0.0,也就是骨幹區域ID,因為虛鏈路被認為是骨幹的一部分。
  • Packet Checksum:一個對整個封包的標準IP校驗和。
  • Auth Type:正在使用的認證模式

在這裡插入圖片描述

  • Auth Data:未完!!!!!!!!!!

在這裡插入圖片描述

ospf跨層封裝在IPv4報頭,協定號為89;

存在5種不同型別的封包

在這裡插入圖片描述

型別作用
Hello包鄰居、鄰接的發現、建立、週期保活;hello time10s或30s;dead time為hello time 四倍鄰居、鄰接的發現、建立、週期保活;hello time10s或30s;dead time為hello time 四倍
DBD包資料庫描述包 (資料庫目錄)LSA更新時的主從選舉;LSA互動
LSR包鏈路狀態請求請求自身缺少的LSA資訊
LSU包鏈路狀態更新(攜帶具體的LSA資訊)LSA更新資訊(迴應對方的LSR的請求)
LSack包鏈路狀態確認包LSA更新的確認回覆

LSA(鏈路狀態通告):路由或者拓撲資訊(在不同條件下產生不同型別的拓撲或路由資訊)

hello包

在這裡插入圖片描述

  • **網路掩碼(Network Mask):**指傳送封包的介面的網路掩碼。如果這個掩碼和接收該封包的介面網路掩碼不匹配,那麼該封包將被丟棄。(可以確保路由器之間只有他們共用網路的地址精確匹配時才能互相成為鄰居)。
  • **Hello時間間隔(Hello Interval ):**介面上Hello封包傳送之間的時間間隔,也是一個週期性的時間段。如果接收和傳送路由器沒有相同的值,就不能建立鄰接關係。
  • 可選項(Option):未完待續!!!!!!!!!!!
  • **路由優先順序(Router Priority):**用來做DR和BDR路由器選舉。如果該欄位為0,則始發路由器沒有資格被選成DR和BDR路由器。
  • **路由器死亡時間(Router Dead Interval):**始發路由器在宣告鄰接路由器無效之前,將要等待從鄰接路由器發出的Hello封包的時長。
  • 指定路由器(Designated Router):網路上指定路由器介面的IP地址。注:不是指定路由器的路由器ID。如果沒有DR(DR還沒有選出或者網路型別不需要DR),那麼這個欄位設定為0.0.0.0
  • **備份路由器(Backup Desinated Router):**網路上備份指定路由器介面的IP地址。沒有選出設定為0.0.0.0
  • **鄰居(Active Neighbor):**是一個遞迴欄位,如果始發路由器在過去的一個Router DeadInterval時間內,從網路上已經收到來自他的某些鄰居的有效Hello包,那麼將會在這個欄位中列出所有這些鄰居的RID。

DBD包

(Database Description)資料庫描述包

在這裡插入圖片描述

  • 介面MTU(Interface MTU):在封包不分段的情況下,始發路由器介面可以傳送的最大IP封包大小。(華為裝置預設不檢測MTU值,Cisco預設檢測)
  • 可選項(option):
  • **I位(初始位(initial bit)):**當傳送的是一系列資料庫描述封包中的最初的一個封包,該位設定為1.後續的資料庫描述封包將該位設定為0.
  • **M位(後繼位(More bit)):**當傳送的封包不是一系列資料庫描述封包的最後一個時,該位設定為1
  • MS位(主/從位(Master/Slave bit)):在資料庫同步過程中,該位設定為1,用來指明始發資料庫描述封包的路由器是「主」路由器。
  • **資料庫描述序列號(DD Sequence):**在資料庫同步過程中,用來確保路由器能夠收到完整的資料庫描述封包序列。這個序列號將由「主」路由器在最初傳送的資料庫描述封包中設定一些唯一的數值,後續封包的序列號將依次增加。
  • **LSA頭部(LSA Header):**列出了始發路由器的鏈路狀態資料庫中部分或全部LSA頭部。注:在進行DR/BDR選舉的時候不會出現LSA Header

關於DBD的一些問題:

1、 介面MTU,在cisco體系中,鄰居間介面的MTU值預設被檢測,華為預設不檢測;

OSPF協定要求直連線口上鄰居間的MTU值必須完成一致;

[r1]interface GigabitEthernet 0/0/1

[r1-GigabitEthernet0/0/1]ospf mtu-enable 開啟華為MTU檢測

2、 關於DBD的標記位

I 為1標識本地發出的第一個DBD包 M 為1標識不是原生的最後一個DBD包

MS 為1代表主 為0 代表從

3、 使用序列號進行隱性確認 DBD的隱性確認,基於序號進行的,從使用主的序號來對主進行確認

鄰接關係建立後,鄰居間使用真正DBD來獲取對端鄰接的LSDB目錄,之後使用LSR/LSU/LSack來獲取本地未知的LSA資訊;生成LSDB—資料庫表;

LSR包

鏈路狀態請求封包

在這裡插入圖片描述

  • 鏈路狀態通告型別(Link-state Advertisement Type):LSA型別
  • 鏈路狀態ID(link state ID):始發路由器ID
  • 通告路由器(advertising router):始發LSA通告的路由器路由器ID

LSU包

鏈路狀態更新封包

在這裡插入圖片描述

  • LSA數量(number of LSAs):這個封包中包含的LSA數量。
  • 鏈路狀態通告(LSA):在OSPF協定的LSA封包格式中描述的全部LSA。每個更新封包都可以攜帶多個LSA。

LSAck包

鏈路狀態確認封包

在這裡插入圖片描述

被確認的LSA是根據在LSAck包中是否包含包含他的頭部蘭確認的。所以一個LSAck的組成只有OSPF包頭和LSA頭部。

2.OSPF狀態機

(標準7個,還存在第八個)

  • Down:一旦本地發出Hello包,進入下一狀態機

  • Init初始化:接收到的Hello包中若存在本地RID,那麼進入下一狀態

  • 2way雙向通訊:鄰居關係建立的標誌

    ​ 條件:

    ​ 1、點到點網路型別直接進入下一狀態

    ​ 2、MA網路,將進行DR/BDR選舉(40s),非DR/BDR間不得進入下一狀態

  • **Exstart預啟動:**使用未攜帶目錄資訊的DBD包,進行主從關係選舉,RID數值大為主,優先進入下一狀態。

  • Exchange準交換:使用真正的DBD包進行資料庫目錄的互動,需要ack進行確認。

  • **Loading載入:**通過對端的資料庫目錄比對本地,就本地未知的LSA資訊,使用LSR來進行請求,對端使用LSU進行應答,最終需要ack進行確認。

  • **FUll轉發:**鄰接關係建立的標誌。

3.OSPF工作過程

啟動OSPF協定後,本地基於所有啟用介面使用組播224.0.0.5進行週期的hello收發;接收到的hello包若存在原生的RID,那麼建立鄰居,生成鄰居表

表中所有鄰居存在條件,條件匹配失敗將停留在鄰居關係,僅hello週期保活即可。;條件匹配成功後,需要進一步建立為鄰接關係鄰接關係間,需要使用DBD包來進行資料庫目錄共用,使用LSR/LSU/LSACK來獲取本地未知的LSA資訊,補全原生的LSDB(鏈路狀態資料庫—所有LSA的集合)–生成資料表

資料庫同步完成後,本地其餘SFP演演算法,基於資料庫生成有向圖,合成最短路徑樹,最終將所有未知網段的路由載入於原生的路由表中;–收斂完成,hello包週期保活,每30min再週期比對一次資料庫目錄;

網路結構突變:

1、 新增網段 – 直連新增網段的裝置,使用更新包告知本地所有鄰接,之後擴散到全網,需要ACK確認;

2、 斷開網段-直連斷開網段的裝置,使用更新包告知本地所有鄰接,之後擴散到全網,需要ACK確認;

3、 無法溝通 — dead time到時間時,斷開鄰居,刪除鄰居;且通過該鄰接獲取的LSA將不再被使用;

4.OSPF介面網路型別

OSPF協定在不同網路型別的介面工作方式不同。

網路型別OSPF工作方式
loopback華為雖然標記為點到點,實際為環回的特殊工作,無hello包收發,直接學習32位元主機路由
點到點10s hello time;直接鄰接關係,不進行DR選舉;(串線上的PPP/HDLC;普通GRE)
BMA(乙太網)broadcast;10s hello time;進行DR/BDR選舉,最終建立鄰接關係
NBMA(MGRE)預設為點到點的工作方式,該方式只能建立一個鄰居;故在NMBA環境下將無法和所有節點建立關係;

NBMA拓撲結構:

1、 星型—中心到站點

2、 部分網狀結構,除去星型

3、 全連網狀結構

NBMA不能和所有節點建立鄰接關係解決方法:修改介面型別為broadcast

[r1]interface Tunnel 0/0/0
[r1-Tunnel0/0/0]ospf network-type broadcast  該網段所有介面修改為broadcast;

注:

1.若一端為點到點,另一端為broadcast,由於hello time均為10s,將建立鄰居關係,但無法正常工作;因此一旦修改任何一個的ospf型別,就必須保障該網段所有節點型別一致;

2.在星型和部分網狀結構中,若使用broadcast工作方式,必須考慮dr的位置;建議直接固定放置於中心站點; 若為全連網狀結構,可以不用dr位置;

5.OSPF的DR選舉

鄰居關係成為鄰接關係的條件:

​ 在MA網路中,由於節點數量不限制,故倆倆間均為鄰居,若不加管制將出現大量的重複更新;距離向量協定(RIP/EIGRP)均存在水平分割機制來解決;但OSPF協定無法使用介面水平分割(從此口進不從此口出),因此ospf選擇了DR/BDR選舉方式來解決,在MA網段中存在一個DR和一個DBR,其他裝置非DR/BDR,非DR/BDR之間不建立鄰接關係,僅維持鄰居關係,避免重複更新。

選舉規則:

1、 比較介面優先順序,0-255預設為1;數值大優 為0標識不參選

2、 若介面優先順序一致,比較參選裝置的RID,數值大優;

[r1]interface GigabitEthernet 0/0/0
[r1-GigabitEthernet0/0/0]ospf dr-priority ?
  INTEGER<0-255>  Router priority value

6.OSPF基礎設定

[r1]ospf 1 router-id 1.1.1.1 
1.啟動時需要定義程序號,僅具有本地意義;

2.同時建議設定RID,ipv4地址編寫規則;必須全網唯一;

3.手工---》環回最大數值-》物理介面最大數值

[r1-ospf-1]

宣告:
1、啟用—被選中介面可以收發ospf 的封包
2、傳遞介面資訊—被選中介面的資訊將被共用給原生的其他鄰接  3、區域劃分
[r1-ospf-1]area 0

[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0

[r1-ospf-1-area-0.0.0.0]network 12.1.1.1 0.0.0.255

區域劃分規則:

1、 星型結構拓撲 – 區域0 為骨幹,大於0為非骨幹;非骨幹必須連線骨幹區域;

2、 區域間必須存在ARB—區域邊界路由器

啟動設定完成後,鄰居間收發hello包建立鄰居關係,生成鄰居表:

Hello包中的內容

[外連圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-sAWzwWax-1601902102827)(file:///C:/Users/Lenovo/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png)]

鄰居間hello包中必須完全一致的引數;否則無法建立鄰居關係;

1、hello、dead time 2、區域ID (ABR) 3、認證 4、末梢區域標記(特殊區域)

5、在華為裝置的hello包中,還存在本地介面ip地址的的子網掩碼,鄰居間介面掩碼不一致將無法建立鄰居關係

[r2]display ospf peer 檢視鄰居關係

[r2]display ospf peer brief 摘要表格

鄰居關係建立後,鄰居間基於條件決定是否建立鄰接關係;鄰接關係間將使用DBD包來溝通;

優先順序為10;cost的參考頻寬為100M; COST=參考頻寬/介面頻寬

Ospf選擇cost值之和最小的路徑為最短路徑;若介面頻寬大於參考頻寬,cost值為1,將可能導致選路不佳,建議修改參考頻寬,修改時全網裝置必須修改為一致;

[r1]ospf 1

[r1-ospf-1]bandwidth-reference ?

 INTEGER<1-2147483648> The reference bandwidth (Mbits/s)

[r1-ospf-1]bandwidth-reference 1000

7.OSPF不規則區域

1.遠離骨幹的非骨幹區域

2.不連續骨幹區域

注:一臺ABR裝置若未連線到骨幹區域,將被定義為非法ABR,不得進行區域間資訊共用;

解決方案:

1、 Tunnel 在非法ABR與合法ABR間建立一條隧道,之後將該隧道鏈路宣告於OSPF協定中;

在OSPF協定,若接收到去往相同目標的多條路由;先優選從骨幹區域傳遞過來的路由;

若所有路由器均基於骨幹區域,或均基於非骨幹區域傳遞,進行cost值對比;

缺點:

  1. 選路不佳

  2. 週期性的資訊對中間穿越的區域存在資源佔用

2、 OSPF的虛鏈路

合法的ABR對非法ABR進行授權,使得非法ABR可以進行區域間路由資訊共用;

優點:由於沒有新增鏈路,故不存在選路的問題;正常選路

缺點:

cisco為了避免週期資訊對中間區域的影響,在虛鏈路上關閉了週期行為—失去可靠性

華為選擇保持週期行為 —繼續對中間區域資源佔用

[r2]ospf 1 

[r2-ospf-1]area 1  兩臺ABR共同存在的區域

[r2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4 對端ABR裝置的RID;

[r2-ospf-1]display ospf vlink

3、 多程序雙向重發布(推薦)

一臺裝置執行所有路由協定程序,不同程序存在獨立的資料庫,相互間不進行共用;

僅將計算所得路由載入於同一張路由表中;

將不規則部分的區域宣告到其他的ospf程序中,之後使用重發布機制進行路由共用;

避免了週期資訊和選路問題;

[r2]ospf 1 

[r2-ospf-1]import-route ospf 2 

[r2-ospf-1]q

[r2]ospf 2 

[r2-ospf-2]import-route ospf 1