開放式最短路徑優先

開放式最短路徑優先和彙總、層次區域劃分等優點。OSPF是一種基於IP協議的路由協議。它是大中型網路上使用較為廣泛的IGP協議。OSPF是對的一種實現，運作於自治系統內部。OSPF分為OSPFv2和OSPFv3兩個版本：OSPFv2定義於RFC 2328，支援IPv6網路。它採用戴克斯特拉演算法來計算最短路徑樹。它使用“開銷。OSPF提出了“區域和骨幹區域建立虛擬連線。同一個廣播域，使用的組播地址為224.0.0.5和224.0.0.6。與RIP和BGP不同的是，OSPF協議不使用TCP或者UDP協議而是直接承載在IP協議之上，IP協議號為89。區域.一個OSPF網路分為多個區域。區域將網路中的路由器在邏輯上分組並以區域為單位向網路的其餘部分發送彙總路由資訊。區域編號由一個長度為32位的欄位所定義，區域編號有兩種表示方法，一種為點分十進位制區域編號格式。區域是以介面，如果一臺路由器屬於多個區域，那麼它將為每一個區域維護一份LSDB。OSPF有多種區域型別，其中定義了幾種特殊的區域：骨幹區域.骨幹區域，是整個OSPF域的核心區域。所有其他非骨幹區域必須和骨幹區域直接或間接相連。骨幹區域的功能是在不同的非骨幹區域之間分發路由資訊。骨幹區域必須是唯一而且連續的，但不需要在物理上連續：它可以使用虛擬連線。傳送區域.傳送區域連線至少2個其他區域，它將通告從一個區域傳送到另一個區域。末梢區域.末梢區域到該區域內所有路由器，任何發往AS外部網路的資料流都將依據預設路由來轉發。不完全末梢區域.非純末梢區域。NSSA ASBR將產生型別7 LSA，並在NSSA區域內洪泛。NSSA ABR將會把型別7 LSA轉換成5類LSA，並洪泛到其他區域。完全末梢區域.完全末梢區域是 Cisco 特有的區域型別。完全末梢區域不僅不允許AS外部路由通告在其內部洪泛，還不允許區域間彙總路由在其內部洪泛。同末梢區域一樣，完全末梢區域ABR也會向該區域內所有路由器通告一條預設路由，任何發往其他區域以及AS外部網路的資料流都將依據預設路由來轉發。將區域設定為完全末梢區域可以顯著的降低路由表條目的數量。完全非純末梢區域.完全非純末梢區域也是 Cisco 特有的區域型別，該種區域除了擁有和NSSA相同的特性外，還不允許型別3 LSA在該區域內部洪泛。完全非純末梢區域ABR也會向該區域內所有路由器通告一條預設路由。將區域設定為完全非純末梢區域也會顯著的降低路由表條目的數量。OSPF路由器型別.OSPF定義了以下4種路由器型別：一臺路由器可以同時屬於多種型別，如右圖所示，R2同時屬於多種型別路由器。每一臺OSPF路由器都有一個路由器識別符號混淆，DR和BDR是路由器介面屬性，而不是整個路由器的屬性。內部路由器.如果一臺路由器上所有啟用了OSPF的介面都在同一區域，那麼這臺路由器就是內部路由器。骨幹路由器.骨幹路由器是指至少有一個啟用了OSPF的介面是和骨幹區域相連的路由器。一臺骨幹路由器也可以同時是ABR或ASBR，如上圖中的R2和R3。區域邊界路由器.區域邊界路由器是指連線一個或者多個區域的路由器。區域邊界路由器為每一個與之相連的區域維護一份鏈路狀態資料庫，因此區域邊界路由器需要比內部路由器更多的記憶體資源和更高效能的處理器。自治系統邊界路由器.自治系統邊界路由器。一臺ASBR可以是OSPF域內非末梢區域的任何路由器，它可以是內部路由器、區域邊界路由器、骨幹路由器。OSPF網路型別.OSPF定義了以下4種網路型別：點到點網路.點到點網路，例如E1、SONET，是單獨連線一對路由器的網路。點到點網路上的一對OSPF路由器形成完全鄰接關係，並且不進行DR和BDR的選舉。點到點網路上的路由器使用組播地址224.0.0.5傳送OSPF協議資料包。廣播網路.廣播網路即可以同時連線多於兩臺裝置的網路，如乙太網、令牌環網、FDDI。廣播網路上的路由器傳送的組播/廣播資料包會被其他與之相連的路由器收到。在廣播網路上的OSPF路由器會選舉一臺指定路由器。所有始發於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完成以下工作：DR本後的概念是將多路訪問網路看作一個“偽節點”。當SPF進行計算的時候，把鏈路看作一個節點，與該鏈路相連的路由器也是連線到這個節點上的。從與偽節點相連的路由器到這個偽節點的代價是該路由器與這個多路訪問網路相連的介面的出站代價，從偽節點到任何與之相連的路由器的代價都為0。一臺路由器可能連線到多個多路訪問網路，該路由器可能是它所連線的其中一個多路訪問網路的DR，也可能不是它所連線的另一個多路訪問網路的DR，也就是說，DR是路由器介面的屬性，而不是整個路由器的屬性。為了避免因DR失效導致的單點故障，多路訪問網路上還將選舉BDR。DR失效時，BDR將成為DR，由於網路上其他路由器已經和BDR形成了完全鄰接關係，因此可以將DR失效對網路的影響降至最低。DR和BDR的相關選舉規則如下：OSPF鄰接關係.在OSPF路由器之間互相交換資訊之前，必須先建立鄰接關係。兩臺OSPF路由器要建立完全鄰接關係，以下引數必須相同：一般來說，建立OSPF完全鄰接時會經過以下狀態：OSPFv2資料包型別和格式.OSPFv2定義了以下5種協議資料包型別：OSPF包頭.5種OSPF訊息有共通的24位元組的頭部結構。其結構如下：Hello包.Hello包的OSPF包型別為1。這些包被週期性的從各個介面發出，用來建立和維護鄰居關係。另外，在支援組播或廣播的物理網路上，Hello包使用組播地址（通常為224.0.0.5)傳送。Hello包的傳送間隔由HelloInterval指定內仍未收到一個已建立連線的路由器的Hello包，路由器將會終止這一連線。將對方的狀態轉為Down。Hello包的格式如下：資料庫描述包.資料庫描述包。資料庫描述包包含兩種，即空資料庫描述包和包含LSA頭部資訊的資料庫描述包。當兩個路由器互相收到HelloSeen包之後，他們將會開始互相傳送空資料庫描述包，空資料庫描述包被用來進行主從關係的確定。通常以路由標識較大的為Master，當主從關係確立之後，從機將會使用主機的序號向主機發送第一個包含LSA頭部資訊的資料庫描述包。主機將會在收到從機的資料庫描述包之後傳送自己的序號加一的資料庫描述包，作為對於從機的收到確認。在這樣的互動過程中，只有主機可以更改序號(DD sequence number)，從機使用主機序號。資料庫描述包的格式如下：鏈路狀態請求包.鏈路狀態請求包的OSPF包型別為3。在交換資料庫描述包之後，路由器便知道其自身鏈路狀態資料庫缺少哪些LSA，以及哪些LSA是過期的。這時就可以傳送鏈路狀態請求包來請求對方傳送缺少的LSA和最新的LSA。鏈路狀態請求包格式如下：鏈路狀態更新包.鏈路狀態更新包的OSPF包型別為4。LSA的洪泛就是由此型別的包實現的。每一個鏈路狀態更新包可能包含多條LSA資訊。這裡的LSA資訊是完整的，而不像資料庫描述包只包含LSA的頭部資訊。鏈路狀態更新包的格式如下：鏈路狀態確認包.鏈路狀態確認包的OSPF包型別為5。為了確保LSA的洪泛是可靠的，LSA資訊必須被顯式的確認。鏈路狀態確認包的格式如下：LSA型別.OSPF定義了11種LSA，所有型別的LSA都以一個20位元組的通用LSA頭部開始。這些不同型別的LSA共同描述了OSPF域內的網路拓撲結構。所有的LSA都儲存在LSDB中。SPF演算法根據LSDB中的資訊計算出最佳路徑。定義了3種新的LSA，稱作不透明LSA。這3種新的LSA為OSPF的擴充套件性提供了通用的機制。它們可以攜帶用於OSPF的資訊，也可以直接攜帶應用的資訊。目前有以下3種不透明LSA，它們的區別主要是洪泛範圍不同：OSPF路徑選擇.OSPF使用“開銷。OSPF有以下4種路由型別，優先順序由高到低排序如下：因此如果有多條去往相同目的地的路由具有相同的度量值，那麼將比較它們的路由型別。假設有兩條去往相同目的地的路由A和路由B的度量值都是30，A是內部路由，B區域間路由，則A將會被裝入路由表。如果有多條去往相同目的地的路由具有相同的型別，相同的度量值，則它們都將被裝入路由表，並在不同路由之間進行負載均衡。OSPF的反擊機制.大多數執行OSPF的路由器具有一種被稱為(fight back)的安全機制。即當一個路由器收到關於自己的虛假或者不正確的LSA資訊時，它將立刻發出一個包含自己正確的LSA的LSU報文，這一機制被稱為反擊或者自反擊。不過需要注意的是，反擊機制並不是OSPF協議官方規定的安全機制。在RFC2328中，沒有對此機制的任何描述。