開放式最短路徑優先

開放式最短路徑優先（Open Shortest Path First，縮寫為 OSPF）是廣泛使用的一種路由協議，它屬於鏈路狀態路由協議，具有路由變化收斂速度快、無路由環路、支持變長子網掩碼（VLSM）和匯總、層次區域劃分等優點。

OSPF是一種基於IP協議的路由協議。它是大中型網路上使用較為廣泛的IGP協議。OSPF是對鏈路狀態路由協議的一種實現，運作於自治系統內部。OSPF分為OSPFv2和OSPFv3兩個版本：OSPFv2定義於RFC 2328（1998），支持IPv4網路；而OSPFv3定義於RFC 5340（2008），支持IPv6網路。

它採用戴克斯特拉演算法來計算最短路徑樹。它使用「開銷（Cost）」作為路由度量。鏈路狀態資料庫（LSDB）用來保存當前網路拓撲結構，路由器上屬於同一區域的鏈路狀態資料庫是相同的（屬於多個區域的路由器會為每個區域維護一份鏈路狀態資料庫）。

OSPF提出了「區域（Area）」的概念，一個網路可以由單一區域或者多個區域組成。其中，一個特別的區域被稱為骨幹區域（Backbone Area），該區域是整個OSPF網路的核心區域，並且所有其他的區域都與之直接連接。所有的內部路由都通過骨幹區域傳遞到其他非骨幹區域。所有的區域都必須直接連接到骨幹區域，如果不能建立直接連接，那麼可以通過虛鏈路（virtual link）和骨幹區域建立虛擬連接。

同一個廣播域（Broadcast Domain）的路由器或者一個點對點（Point To Point）連接的兩端的路由器，在發現彼此的時候，建立鄰接（Adjacencies）。多路訪問網路以及非廣播多路訪問網路的路由器會選舉指定路由器（Designated Router, DR）和備份指定路由器（Backup Designated Router, BDR），DR和BDR作為網路的中心負責路由器之間的資訊交換從而降低了網路中的資訊流量。OSPF協議同時使用單播（Unicast）和群播（Multicast）來發送Hello包和鏈路狀態更新（Link State Updates），使用的群播地址為224.0.0.5和224.0.0.6。與RIP和BGP不同的是，OSPF協議不使用TCP或者UDP協議而是直接承載在IP協議之上，IP協議號為89。

## 區域

一個OSPF網路分為多個區域。區域將網路中的路由器在邏輯上分組並以區域為單位向網路的其餘部分發送匯總路由資訊。區域編號由一個長度為32位的欄位所定義，區域編號有兩種表示方法，一種為點分十進位（如Area 1.1.1.1，寫法規則同IPv4地址）；另外一種為十進位數字格式（如Area 1，注意Area 1不等於Area 1.1.1.1，而是0.0.0.1）。根據 RFC2328 描述，區域編號通常使用 32 bits的點分十進位表示。區域編號不是IP位址，用於IPv6網路的OSPFv3也使用同樣的（形似IPv4地址的）區域編號格式。

區域是以接口（Interface）為單位來劃分的，所以一台多接口路由器可能屬於多個區域。相同區域內的所有路由器都維護一份相同的鏈路狀態資料庫（LSDB），如果一台路由器屬於多個區域，那麼它將為每一個區域維護一份LSDB。

- 某一區域內的路由器只需要維護該區域的鏈路狀態資料庫，而不用維護整個OSPF網路的鏈路狀態資料庫。
- 將某一區域網絡拓撲變化的影響限制在該區域內，不會影響到整個OSPF網路，從而減小OSPF計算的頻率。
- 將鏈路狀態通告（LSA）的洪泛限制在本區域內，從而降低OSPF協議產生的數據量。
- 劃分區域可以對網路進行層次化結構設計。
- 劃分區域有利於資源合理調配，核心區域部署性能較好的設備資源，邊緣區域部署性能較差的設備資源即可。

OSPF有多種區域類型，其中定義了幾種特殊的區域：

### 骨幹區域

骨幹區域（Backbone Area），Area 0（點分十進位表示為0.0.0.0），是整個OSPF域的核心區域。所有其他非骨幹區域必須和骨幹區域直接或間接相連。骨幹區域的功能是在不同的非骨幹區域之間分發路由資訊。

骨幹區域必須是唯一而且連續的，但不需要在物理上連續：它可以使用虛擬連接。

### 傳送區域

傳送區域連接至少2個其他區域，它將通告從一個區域傳送到另一個區域。

### 末梢區域

末梢區域（Stub Area）是一個不允許AS外部路由通告（AS External LSA，即類型5 LSA）在其內部進行洪泛擴散的區域。末梢區域的ABR會通告一條默認路由（default route）到該區域內所有路由器，任何發往AS外部網絡的數據流都將依據默認路由來轉發。

#### 不完全末梢區域

非純末梢區域（Not-So-Stubby Area，NSSA）允許引入AS外部路由並且擴散到其他區域，但是NSSA仍舊不允許其他區域通告的AS外部路由進入該區域。為了使NSSA能夠引入AS外部路由，OSPF定義了新的LSA類型，即NSSA External LSA（類型7 LSA）。NSSA ASBR將產生類型7 LSA，並在NSSA區域內洪泛。NSSA ABR將會把類型7 LSA轉換成5類LSA，並洪泛到其他區域。

#### 完全末梢區域

完全末梢區域（Totally Stubby Areas）是 Cisco 特有的區域類型。完全末梢區域不僅不允許AS外部路由通告在其內部洪泛，還不允許區域間匯總路由（Network Summary LSA，即類3 LSA）在其內部洪泛。同末梢區域一樣，完全末梢區域ABR也會向該區域內所有路由器通告一條默認路由，任何發往其他區域以及AS外部網絡的數據流都將依據默認路由來轉發。將區域設置為完全末梢區域可以顯著的降低路由表條目的數量。

#### 完全非純末梢區域

完全非純末梢區域（Totally NSSA）也是 Cisco 特有的區域類型，該種區域除了擁有和NSSA相同的特性外，還不允許類型3 LSA在該區域內部洪泛。完全非純末梢區域ABR也會向該區域內所有路由器通告一條默認路由。將區域設置為完全非純末梢區域也會顯著的降低路由表條目的數量。

## OSPF路由器類型

OSPF定義了以下4種路由器類型：

- 內部路由器（Internal Router）
- 骨幹路由器（Backbone Router）
- 區域邊界路由器（Area Border Router，ABR）
- 自治系統邊界路由器（Autonomous System Boundary Router，ASBR）

一台路由器可以同時屬於多種類型，如右圖所示，R2同時屬於多種類型路由器。

每一台OSPF路由器都有一個路由器標識符（Identifier），一般寫作路由器ID。路由器ID由一個長度為32 bits的欄位所定義，通常用IPv4地址格式來表示（如1.2.2.2）。如果沒有顯式的設置路由器ID，則該路由器上最大的活躍邏輯接口IP位址將成為路由器ID；如果路由器不存在邏輯接口，則最大的活躍物理接口IP位址將成為路由器ID。注意，不要將路由器類型和指定路由器（Designated Router，DR）、備份指定路由器（Backup Designated Router，BDR）混淆，DR和BDR是路由器接口屬性，而不是整個路由器的屬性。

### 內部路由器

如果一台路由器上所有啟用了OSPF的接口都在同一區域，那麼這台路由器就是內部路由器。

### 骨幹路由器

骨幹路由器是指至少有一個啟用了OSPF的接口是和骨幹區域（Area 0）相連的路由器。一台骨幹路由器也可以同時是ABR或ASBR，如上圖中的R2和R3。

### 區域邊界路由器

區域邊界路由器是指連接一個或者多個區域的路由器。區域邊界路由器為每一個與之相連的區域維護一份鏈路狀態資料庫，因此區域邊界路由器需要比內部路由器更多的記憶體資源和更高性能的處理器。

### 自治系統邊界路由器

自治系統邊界路由器（ASBR）用來把從其他路由協議（如BGP、EIGRP、其他進程號的OSPF等）學習到的路由以路由重分發的方式注入到OSPF進程中，從而使得整個OSPF域內的路由器都可以學習到這些路由（除了末梢區域內的路由器）。一台ASBR可以是OSPF域內非末梢區域的任何路由器，它可以是內部路由器、區域邊界路由器、骨幹路由器。

## OSPF網路類型

OSPF定義了以下4種網路類型：

- 點到點網路（point-to-point）
- 廣播網路（broadcast）
- 非廣播多路訪問網路（non-broadcast multi-access，NBMA）
- 點到多點網路（Point-to-MultiPoint）

### 點到點網路

點到點網路，例如E1、SONET，是單獨連接一對路由器的網路。點到點網路上的一對OSPF路由器形成完全鄰接關係（Full Adjacency），並且不進行DR和BDR的選舉。點到點網路上的路由器使用群播地址224.0.0.5發送OSPF協議數據包。

### 廣播網路

廣播網路即可以同時連接多於兩台設備的網路，如乙太網、令牌環網、FDDI。廣播網路上的路由器發送的群播/廣播數據包會被其他與之相連的路由器收到。在廣播網路上的OSPF路由器會選舉一台指定路由器（DR）和一台備份指定路由器（BDR）。所有始發於DR和BDR的OSPF數據包使用目的地址224.0.0.5，以群播方式發送到所有其他OSPF路由器，所有其他的路由器都將使用目的地址224.0.0.6，以群播方式發送OSPF數據包到DR和BDR。所有其他的路由器只與DR和BDR建立完全鄰接關係。

### 非廣播多路訪問網路

NBMA網路，諸如X.25、幀中繼、ATM等，可以同時連接兩台以上的路由器，但是這種網路沒有廣播數據包的能力。一台處於NBMA網路上的路由器發送的群播/廣播數據包將不能被其他與之相連的路由器收到。在NBMA網路上需要選舉DR和BDR，並且所有的OSPF數據包都是單播發送的。

### 點到多點網路

點到多點網路是NBMA網路的一個特殊設置，可以看作是一群點到點鏈路的集合，因此在該種網路上不必選舉DR和BDR。點到多點網路上OSPF的行為和點到點網路OSPF的行為一樣，也使用群播地址224.0.0.5發送OSPF協議數據包。

## 虛鏈路

虛鏈路被路由器認為是沒有編號的點到點網路的一種特殊設置，在虛鏈路上OSPF數據包是以單播方式發送的。不能人工設置一個接口的網路類型為虛鏈路。

此外還有一種特殊的網路類型，稱之Loopback類型。OSPF路由器上的環回接口在默認狀態下均為此類型。不能人工設置一個接口的網路類型為Loopback。

## 指定路由器和備份指定路由器

在廣播多路訪問網路和NBMA網路上會選舉DR和BDR。所有其他路由器只與DR和BDR建立完全鄰居關係，其他路由器之間的鄰居狀態停留在2-Way狀態。所有其他路由器使用群播目的地址224.0.0.6向DR和BDR發送鏈路狀態更新。

如果在多路訪問網路中不選舉DR，所有路由器之間都建立完全鄰接關係，會產生很多不必要的LSA。假設一個多路訪問網路上有n台路由器，那麼就會建立n(n-1)/2個鄰接關係。每台路由器都會產生n-1條LSA到與之建立鄰接關係的路由器，再加上1條網路LSA，最終這個網路上會產生n²條LSA，並且其中很多都是重複的LSA副本。

DR完成以下工作：

- 描述該多路訪問網路和與其相連的路由器。
- 管理該多路訪問網路上的LSA洪泛擴散過程。

DR本後的概念是將多路訪問網路看作一個「偽節點（Pseudo Node）」。當SPF進行計算的時候，把鏈路看作一個節點，與該鏈路相連的路由器也是連接到這個節點上的。從與偽節點相連的路由器到這個偽節點的代價是該路由器與這個多路訪問網路相連的接口的出站代價，從偽節點到任何與之相連的路由器的代價都為0。一台路由器可能連接到多個多路訪問網路，該路由器可能是它所連接的其中一個多路訪問網路的DR，也可能不是它所連接的另一個多路訪問網路的DR，也就是說，DR是路由器接口的屬性，而不是整個路由器的屬性。

為了避免因DR失效導致的單點故障，多路訪問網路上還將選舉BDR。DR失效時，BDR將成為DR，由於網路上其他路由器已經和BDR形成了完全鄰接關係，因此可以將DR失效對網路的影響降至最低。

DR和BDR的相關選舉規則如下：

- 如果一台OSPF路由器的接口優先級（Priority）為0，那麼這台路由器永遠不能成為DR或BDR。
- 具有最高優先級的路由器將會選舉為DR，具有次高優先級的路由器將會選舉為BDR。
- 如果同時有多台路由器具有相同的優先級，那麼具有最高路由器ID的路由器將會選舉為DR。
- 當DR失效時，BDR將成為DR，並將重新選舉一個BDR。
- 優先級的取值範圍為0-255，更高的優先級意味著路由器有更大的機會成為DR。
- 如果一台具有更高優先級的路由器在選舉完DR和BDR之後接入網路，該路由器將不會成為DR或BDR，直到DR和BDR失效，當DR失效，具有更高優先級的路由器也只會成為BDR。即DR和BDR的選舉不是搶占式的。

## OSPF鄰接關係

在OSPF路由器之間互相交換資訊之前，必須先建立鄰接關係。

兩台OSPF路由器要建立完全鄰接關係，以下參數必須相同：

- Hello時間間隔
- Dead時間間隔
- 區域編號
- 認證（如果啟用了認證）
- 鏈路MTU大小
- 子網掩碼
- 子網號
- 末梢區域設置

一般來說，建立OSPF完全鄰接時會經過以下狀態：

- 失效狀態（Down）：這是鄰居會話的初始狀態，表示最近沒有從鄰居收到資訊。在NBMA網路上，可能仍然會以較低頻率向處於Down狀態的鄰居發送Hello數據包。
- 嘗試狀態（Attempt）：該狀態僅僅適用於連接在NBMA網路上的鄰居。該狀態表示最近沒有從鄰居收到資訊，但仍需要作進一步的嘗試，來聯繫鄰居。這時按某一特定間隔向鄰居發送Hello數據包。
- 初始狀態（Init）:在此狀態下，表示最近收到了從鄰居發來的Hello數據包。但是，仍然沒有和鄰居建立雙向通信（Bidirectional Communication），例如，路由器自身並沒有出現在鄰居發送的Hello數據包中。
- 雙向通信狀態（2-Way）：此狀態意味著兩台路由器之間建立了雙向通信。在此狀態下還將進行DR和BDR的選舉（只有處於2-Way狀態的路由器才有資格參選DR和BDR）
- 資訊交換初始狀態（ExStart）：這個狀態是建立鄰接關係的第一步。該狀態的目標是決定信息交換時路由器的主從關係，並確定初始資料庫描述（DD）數據包的序列號。具有最高路由器ID的路由器將成為主路由器。
- 資訊交換狀態（ExChange）：在此狀態的路由器通過向鄰居發送DD數據包來描述其完整的鏈路狀態資料庫。每一個DD數據包都有一個序列號，並且需要被顯式的確認。在任何時候，每次只能發送一個DD數據包。在此狀態下，路由器也可以發送鏈路狀態請求數據包，用來向鄰居請求最新的LSA。實際上，這些狀態的鄰接關係完全有能力發送和接收所有類型的OSPF協議數據包。
- 資訊加載狀態（Loading）：在此狀態下，路由器將會向鄰居路由器發送鏈路狀態請求數據包，用來請求資訊交換狀態發現的最新的LSA。
- 完全鄰接狀態（Full）：在此狀態下，鄰居路由器形成完全鄰接關係。這些鄰接關係將會在路由器LSA和網路LSA中被描述。

## OSPFv2數據包類型和格式

OSPFv2定義了以下5種協議數據包類型：

- Hello包 HELLO
- 資料庫描述包 DBD
- 鏈路狀態請求包 LSR
- 鏈路狀態更新包 LSU
- 鏈路狀態確認包 LSAck

### OSPF包頭

5種OSPF消息有共通的24位元組的頭部結構。其結構如下：

位｜第1位元組｜第2位元組｜第3位元組｜第4位元組

0~31｜Version #｜type｜Packet length

32~63｜Router ID

64~95｜Area ID

96~127｜Checksum｜AuthType

128~159｜Authentication

160~191｜Authentication

### Hello包

Hello包的OSPF包類型為1。這些包被周期性的從各個接口（包括虛鏈路）發出，用來建立和維護鄰居關係。另外，在支持群播或廣播的物理網路上，Hello包使用群播地址（通常為224.0.0.5)發送。

Hello包的發送間隔由HelloInterval指定（通常為10s），路由器將會先發出不包含鄰居欄位的空Hello包，當收到鄰接路由器的Hello包之後，將對方的路由器標識放入本機的Hello包中進行群播，這種包含鄰居欄位的包，也被稱為HelloSeen包。假如在間隔達到RouterDeadInterval所規定的時長（通常為40s）內仍未收到一個已建立連接的路由器的Hello包，路由器將會終止這一連接。將對方的狀態轉為Down。

Hello包的格式如下：

位｜第1位元組｜第2位元組｜第3位元組｜第4位元組

0~191｜OSPF包頭

192~223｜Network Mask

224~255｜HelloInterval｜Options｜Rtr Pri

256~287｜RouterDeadInterval

288~319｜Designated Router

320~351｜Backup Designated Router

352~383｜Neighbor

......

### 資料庫描述包

資料庫描述包（Database Description）的OSPF包類型為2。當鄰接關係初始化後，便開始交換這些數據包。它們描述了鏈路狀態資料庫的摘要資訊（只包含LSA的頭部資訊）。

資料庫描述包包含兩種，即空資料庫描述包和包含LSA頭部資訊的資料庫描述包。

當兩個路由器互相收到HelloSeen包之後，他們將會開始互相發送空資料庫描述包，空資料庫描述包被用來進行主從關係的確定。

通常以路由標識較大的為Master，當主從關係確立之後，從機將會使用主機的序號向主機發送第一個包含LSA頭部資訊的資料庫描述包。主機將會在收到從機的資料庫描述包之後發送自己的序號加一的資料庫描述包，作為對於從機的收到確認。在這樣的交互過程中，只有主機可以更改序號(DD sequence number)，從機使用主機序號。資料庫描述包的格式如下：

位｜0~7｜8~15｜16~23｜24｜25｜26｜17｜28｜29｜30｜31

第1位元組｜第2位元組｜第3位元組｜第4位元組

0~191｜OSPF包頭

192~223｜Interface MTU｜Options｜0｜0｜0｜0｜0｜I｜M｜MS

224~255｜DD sequence number

256~287｜An LSA Header

288~319 320~351 352~383 384~415 ......

### 鏈路狀態請求包

鏈路狀態請求包（Link State Request）的OSPF包類型為3。在交換資料庫描述包之後，路由器便知道其自身鏈路狀態資料庫缺少哪些LSA，以及哪些LSA是過期的。這時就可以發送鏈路狀態請求包來請求對方發送缺少的LSA和最新的LSA。鏈路狀態請求包格式如下：

位｜第1位元組｜第2位元組｜第3位元組｜第4位元組

0~191｜OSPF包頭

192~223｜LS type

224~255｜Link State ID

256~287｜Advertising Router

......

### 鏈路狀態更新包

鏈路狀態更新包（Link State Update）的OSPF包類型為4。LSA的洪泛就是由此類型的包實現的。每一個鏈路狀態更新包可能包含多條LSA資訊。這裡的LSA資訊是完整的，而不像資料庫描述包只包含LSA的頭部資訊。

鏈路狀態更新包的格式如下：

位｜第1位元組｜第2位元組｜第3位元組｜第4位元組

0~191｜OSPF包頭

192~223｜# LSAs

224~255｜LSAs

256~287 288~319 ......

### 鏈路狀態確認包

鏈路狀態確認包（Link State Acknowledgement）的OSPF包類型為5。為了確保LSA的洪泛是可靠的，LSA資訊必須被顯式的確認。鏈路狀態確認包的格式如下：

位｜第1位元組｜第2位元組｜第3位元組｜第4位元組

0~191｜OSPF包頭

192~223｜An LSA Header

224~255 256~287 288~319 320~351 ......

## LSA類型

OSPF定義了11種LSA，所有類型的LSA都以一個20位元組的通用LSA頭部開始。這些不同類型的LSA共同描述了OSPF域內的網路拓撲結構。所有的LSA都保存在LSDB中。SPF算法根據LSDB中的資訊計算出最佳路徑。

- 路由器LSA（Router-LSA）：路由器LSA的類型為1。每一台OSPF路由器生成一條路由器LSA。該LSA描述了路由器的接口狀態，以及每一個接口的出站代價。路由器LSA只能在始發他們的OSPF區域內進行洪泛，不能洪泛到其他區域。
- 網路LSA（Network-LSA）：網路LSA的類型為2。網路LSA是DR為了描述連接到多路訪問網路並且和DR建立了完全鄰接關係的路由器而生成的，包括DR本身。和路由器LSA一樣，網路LSA也只能在始發這條LSA的區域內進行洪泛。
- 匯總LSA（Summary-LSA）：匯總LSA的類型為3。此類LSA描述了區域間的網路，由ABR生成。對於末梢區域，匯總LSA同樣被用於描述默認路由。
- ASBR匯總LSA（ASBR Summary-LSA）：ASBR匯總LSA的類型為4，也是由ABR生成。ASBR匯總LSA通告的是一台區域外部的ASBR路由器，而不像匯總LSA通告的是區域外的網路。
- 自治系統外部LSA（AS-External-LSA）：自治系統外部LSA的類型為5，由ASBR生成。此類LSA描述AS外部的網路，並可以洪泛到所有非末梢區域中去。
- 組成員LSA（Group-Membership-LSA）：組成員LSA類型為6。組成員LSA是對標準OSPF的一個擴展，使其支持群播路由功能，擴展後的OSPF稱之Multicast Open Shortest Path First（MOSPF）。
- NSSA外部LSA（NSSA-External-LSA）：NSSA外部LSA類型為7。此類LSA由NSSA區域內的ASBR生成，也用來描述AS外部的網路。NSSA外部LSA僅僅在始發他們的NSSA區域內進行洪泛，而不像自治系統外部LSA可以洪泛到所有非末梢區域。
- 鏈路本地LSA（Link-Local LSA）：鏈路本地LSA類型為8。該LSA專門用於OSPFv3（用於IPv6網路的OSPF）。鏈路本地LSA包含了每一個接口的鏈路本地地址和一個IPv6地址列表。

RFC2370定義了3種新的LSA，稱作不透明LSA（Opaque LSA）。這3種新的LSA為OSPF的擴展性提供了通用的機制。它們可以攜帶用於OSPF的資訊，也可以直接攜帶應用的資訊。

目前有以下3種不透明LSA，它們的區別主要是洪泛範圍不同：

- 類型9不透明LSA：洪泛範圍僅僅是本地鏈路。
- 類型10不透明LSA：洪泛範圍是始發該LSA的區域。
- 類型11不透明LSA：洪泛範圍是整個OSPF域。

## OSPF路徑選擇

OSPF使用「開銷（Cost）」作為路由的度量值（Metric），路徑的度量值越低，說明該路徑越好，具有最低度量值的路徑將裝入路由表。開銷是根據接口所配置的帶寬來計算的，帶寬越高，開銷越低。在Cisco路由器上，默認情況下使用公式10^8/帶寬（10^8是基準值，可以調整；帶寬的單位是bit/s）來計算代價。例如，接口帶寬為100Mbit/s，則開銷為1；接口帶寬為1000Mbit/s，計算所得的開銷還是1（如果計算所得的開銷小於1，則按1計算）。

OSPF有以下4種路由類型，優先級由高到低排序如下：

- 內部路由：去往區域內部網絡的路由。
- 區域間路由：去往不同區域網絡的路由。
- 類型1的外部路由：去往OSPF域外的路由，類型1的外部路由的度量值包括了外部路由的度量值和到ASBR的度量值。
- 類型2的外部路由：去往OSPF域外的路由，類型2的外部路由的度量值只包括了外部路由的度量值。

因此如果有多條去往相同目的地的路由具有相同的度量值，那麼將比較它們的路由類型。假設有兩條去往相同目的地的路由A和路由B的度量值都是30，A是內部路由，B區域間路由，則A將會被裝入路由表。如果有多條去往相同目的地的路由具有相同的類型，相同的度量值，則它們都將被裝入路由表，並在不同路由之間進行負載均衡。

## OSPF的反擊機制

大多數運行OSPF的路由器具有一種被稱為(fight back)的安全機制。即當一個路由器收到關於自己的虛假或者不正確的LSA資訊時，它將立刻發出一個包含自己正確的LSA的LSU報文，這一機制被稱為反擊或者自反擊。

不過需要注意的是，反擊機制並不是OSPF協議官方規定的安全機制。在RFC2328中，沒有對此機制的任何描述。

## 相關條目

- 中間系統到中間系統 - Intermediate system to intermediate system (IS-IS)
- IEEE 802.1aq - Shortest Path Bridging (SPB)
- 高級綜合
- 網狀網絡
- 路由
- 最短路問題

## 外部連結

- IETF OSPF Working Group
- Zebra free router software which supports OSPF
- Quagga a fork of Zebra
- OSPF Design Guide On Cisco.com
- RFC 5187 OSPF Version 3 Graceful Restart, Juni 2008
- RFC 2740 OSPF Version 3, Dezember 1999
- RFC 2370 OSPF Opaque LSA Option, Juli 1998
- RFC 2328 OSPF Version 2, April 1998
- RFC 1850 OSPF Version 2 MIB, November 1995
- RFC 1793 Extending OSPF to Support Demand Circuits, April 1995
- RFC 1587 OSPF NSSA Option, März 1994
- RFC 1253 OSPF Version 2 MIB, August 1991, ersetzt durch RFC 1850
- RFC 1247 OSPF Version 2, Juli 1991, ersetzt durch RFC 2370
- RFC 1131 OSPF Version 2, Juli 1991, ersetzt durch RFC 1247