概述:
OSPF 全稱為Open Shortest Path First,也就開放的最短路徑優先協議,因為OSPF是由IETF開發的,它的使用不受任何廠商限制,所有人都可以使用,所以稱為開放的,而最短路徑優先(SPF)只是OSPF的核心思想,其使用的算法是Dijkstra算法。
工作過程:

OSPF特點:
- 可適應大規模網絡
- 使用組播更新,屬於觸發更新(組播地址:224.0.0.5,224.0.0.6)
- 快速收斂
- 使用SPF算法構造無環網絡
- 具有區域划分。
- 使用LSA報文來交換路由信息
基本概念:
Router ID:ospf區域內唯一標識路由器的ip地址。
Router ID選取規則:
- 選取路由器loopback接口上數值最高的ip地址
- 沒有loopback接口,在物理端口中選取ip地址最高的
- 也可以使用router-id命令指定Router ID(32位公網IP地址)

區域ID:
- 區域ID可以表示成一個十進制的數字
- 也可以表示成一個ip

DR和BDR的選舉方式
自動選舉DR和BDR
- 網段上Router ID最大的路由器將被選舉位DR,第二大的將被選舉為BDR
手工選擇DR和BDR
- 優先級范圍是0~255,數值越大,優先級越高,默認為1
- 如果優先級相同,則需要比較Router ID
- 如果路由器的優先級被設置為0,則不參與選舉
OSPF的三張表
- 鄰居表
2台路由器的OSPF要協同工作,基本要求就是二者形成全毗鄰的鄰接關系,而鄰居表存儲了OSPF路由器鄰居的狀態和鄰居的其他信息。
- 拓撲數據庫(LSDB)
OSPF用LSA來描述網絡拓撲信息,LSDB中存儲着路由器產生或者受到的LSA。
- OSPF路由表
基於LSDB進行SPF算法運算,計算出的路由存儲在此表中,也就是說用於實際數據傳送的路由存在此處
OSPF中消息數據包的類型(5種)

OSPF協議7種狀態分析:
---------------------------- ---------------------------
| | 112.18.17.1/30 112.18.17.2/30 | |
| 路由A |--------------------------------------------------------------------| 路由B |
| | | |
---------------------------- ----------------------------
E0 E1
【Down State】
I am route ID 112.18.17.1/30, and I see no one
-------- ---------------
|Hello|----------》》》--------------------------------------------------------》》》----------|to 244.0.0.5|
-------- ---------------
E0 E1
【Init State】
Router B
Neighbor list
112.18.17.1/30 init E1
I am route ID 112.18.17.2/30, and I see 112.18.17.1
-------- -------
| to A |----------《《《--------------------------------------------------------《《《---------|Hello|
-------- -------
Router A
Neighbor list
112.18.17.2/30 init E0
【Two-Way State】 ###此時只是建立鄰居關系,還沒有建立連接關系
########################################################################################
第一個DBD不包含LSA頭部嗎,只是RID,
1:init=0 不是第一個DBD
M:more=1表示后讀DBD
MS:master=1表示主
---------------------------- - --------------------------
| | 112.18.17.1/30 112.18.17.2/30 | |
| 路由A |----------------------------------------------------------------- --| 路由B |
| | | |
---------------------------- ---------------------------
E0 E1
【Exstart State】
I will start exchange because I have router ID 112.18.17.1
--------
| DBD |----------》》》--------------------------------------------------------》》》---------------
--------
No ,I will start exchange because I have a higher router ID
-------
-------------------《《《--------------------------------------------------------《《《---------|DBD|
-------
選主從的目的,是誰先發DBD,這和選DR、BDR是兩個概念
【Exchange State】
Here is a summary of my LSDB -------
-------------------《《《--------------------------------------------------------《《《---------|DBD|
-------
-------- Here is a summary of my LSDB
| DBD |----------》》》--------------------------------------------------------》》》---------------
--------
########################################################################################
---------------------------- ---------------------------
| | 112.18.17.1/30 112.18.17.2/30 | |
| 路由A |----------------------------------------------------------------- --| 路由B |
| | | |
---------------------------- ----------------------------
E0 E1
-------- Thanks for the information ---------
|LsAck|----------《《《--------------------------------------------------------》》》----------|LsAck|
-------- ---------
【Loading State】
-------- I need the complete entry for net work 112.18.16.0
| LSR |----------》》》--------------------------------------------------------》》》---------------
--------
Here is the entry for network 112.18.16.0 ------
-------------------《《《--------------------------------------------------------《《《---------|LSU|
------
-------- Thanks for the information
|LsAck|------------》》》--------------------------------------------------------》》》----------
--------
【Full State】
OSPF的三種通信量:
- 域內通信量:單個區域內的路由器之間交換數據包構成的通信量
- 域間通信量:不同區域的路由器之間交換數據包構成的通信量
- 外部通信量:ospf域內的路由器與ospf域外或另一個自治系統內的路由器之間交換數據包構成的通信量
ospf鏈路狀態數據庫
鏈路狀態數據庫的組成
- 每個路由器都創建了由每個接口、對應的相鄰節點和接口速度組成的數據庫
- 鏈路狀態數據庫中每個條目稱為LSA(鏈路狀態通告),常見的有六種LSA類型

