Can you summarize the following document?
        
  一個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有多種區域型別,其中定義了幾種特殊的區域:

  骨幹區域(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定義了以下4種路由器型別: 一臺路由器可以同時屬於多種型別,如右圖所示,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定義了以下4種網路型別:

  點到點網路,例如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,最終這個網路上會產生n2條LSA,並且其中很多都是重複的LSA副本。  DR完成以下工作: DR本後的概念是將多路訪問網路看作一個“偽節點(Pseudo Node)”。當SPF進行計算的時候,把鏈路看作一個節點,與該鏈路相連的路由器也是連線到這個節點上的。從與偽節點相連的路由器到這個偽節點的代價是該路由器與這個多路訪問網路相連的介面的出站代價,從偽節點到任何與之相連的路由器的代價都為0。一臺路由器可能連線到多個多路訪問網路,該路由器可能是它所連線的其中一個多路訪問網路的DR,也可能不是它所連線的另一個多路訪問網路的DR,也就是說,DR是路由器介面的屬性,而不是整個路由器的屬性。  為了避免因DR失效導致的單點故障,多路訪問網路上還將選舉BDR。DR失效時,BDR將成為DR,由於網路上其他路由器已經和BDR形成了完全鄰接關係,因此可以將DR失效對網路的影響降至最低。  DR和BDR的相關選舉規則如下:

  在OSPF路由器之間互相交換資訊之前,必須先建立鄰接關係。  兩臺OSPF路由器要建立完全鄰接關係,以下引數必須相同:  一般來說,建立OSPF完全鄰接時會經過以下狀態:

  OSPFv2定義了以下5種協議資料包型別:

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

  Hello包的OSPF包型別為1。這些包被週期性的從各個介面(包括虛鏈路)發出,用來建立和維護鄰居關係。另外,在支援組播或廣播的物理網路上,Hello包使用組播地址(通常為224.0.0.5)傳送。 Hello包的傳送間隔由HelloInterval指定(通常為10s),路由器將會先發出不包含鄰居欄位的空Hello包,當收到鄰接路由器的Hello包之後,將對方的路由器標識放入本機的Hello包中進行組播,這種包含鄰居欄位的包,也被稱為HelloSeen包。假如在間隔達到RouterDeadInterval所規定的時長(通常為40s)內仍未收到一個已建立連線的路由器的Hello包,路由器將會終止這一連線。將對方的狀態轉為Down。 Hello包的格式如下:

  資料庫描述包(Database Description)的OSPF包型別為2。當鄰接關係初始化後,便開始交換這些資料包。它們描述了鏈路狀態資料庫的摘要資訊(只包含LSA的頭部資訊)。  資料庫描述包包含兩種,即空資料庫描述包和包含LSA頭部資訊的資料庫描述包。 當兩個路由器互相收到HelloSeen包之後,他們將會開始互相傳送空資料庫描述包,空資料庫描述包被用來進行主從關係的確定。 通常以路由標識較大的為Master,當主從關係確立之後,從機將會使用主機的序號向主機傳送第一個包含LSA頭部資訊的資料庫描述包。主機將會在收到從機的資料庫描述包之後傳送自己的序號加一的資料庫描述包,作為對於從機的收到確認。在這樣的互動過程中,只有主機可以更改序號(DD sequence number),從機使用主機序號。資料庫描述包的格式如下:

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

  鏈路狀態更新包(Link State Update)的OSPF包型別為4。LSA的洪泛就是由此型別的包實現的。每一個鏈路狀態更新包可能包含多條LSA資訊。這裡的LSA資訊是完整的,而不像資料庫描述包只包含LSA的頭部資訊。  鏈路狀態更新包的格式如下:

  鏈路狀態確認包(Link State Acknowledgement)的OSPF包型別為5。為了確保LSA的洪泛是可靠的,LSA資訊必須被顯式的確認。鏈路狀態確認包的格式如下:

  OSPF定義了11種LSA,所有型別的LSA都以一個20位元組的通用LSA頭部開始。這些不同型別的LSA共同描述了OSPF域內的網路拓撲結構。所有的LSA都儲存在LSDB中。SPF演算法根據LSDB中的資訊計算出最佳路徑。 定義了3種新的LSA,稱作不透明LSA(Opaque LSA)。這3種新的LSA為OSPF的擴充套件性提供了通用的機制。它們可以攜帶用於OSPF的資訊,也可以直接攜帶應用的資訊。 目前有以下3種不透明LSA,它們的區別主要是洪泛範圍不同:

  OSPF使用“開銷(Cost)”作為路由的度量值(Metric),路徑的度量值越低,說明該路徑越好,具有最低度量值的路徑將裝入路由表。開銷是根據介面所配置的頻寬來計算的,頻寬越高,開銷越低。在Cisco路由器上,預設情況下使用公式10^8/頻寬(10^8是基準值,可以調整;頻寬的單位是bit/s)來計算代價。例如,介面頻寬為100Mbit/s,則開銷為1;介面頻寬為1000Mbit/s,計算所得的開銷還是1(如果計算所得的開銷小於1,則按1計算)。 OSPF有以下4種路由型別,優先順序由高到低排序如下: 因此如果有多條去往相同目的地的路由具有相同的度量值,那麼將比較它們的路由型別。假設有兩條去往相同目的地的路由A和路由B的度量值都是30,A是內部路由,B區域間路由,則A將會被裝入路由表。如果有多條去往相同目的地的路由具有相同的型別,相同的度量值,則它們都將被裝入路由表,並在不同路由之間進行負載均衡。

  大多數執行OSPF的路由器具有一種被稱為(fight back)的安全機制。即當一個路由器收到關於自己的虛假或者不正確的LSA資訊時,它將立刻發出一個包含自己正確的LSA的LSU報文,這一機制被稱為反擊或者自反擊。 不過需要注意的是,反擊機制並不是OSPF協議官方規定的安全機制。在RFC2328中,沒有對此機制的任何描述。
開放式最短路徑優先(英語:Open Shortest Path First,縮寫為 OSPF)是一種基於IP協議的路由協議。它是大中型網路上使用較為廣泛的IGP協議。OSPF是對鏈路狀態路由協議的一種實現,運作於自治系統內部。OSPF分為OSPFv2和OSPFv3兩個版本:OSPFv2定義於RFC 2328(1998),支援IPv4網路;而OSPFv3定義於RFC 5340(2008),支援IPv6網路。