OSPF路由協議中的鄰居與鄰接的區別

在RFC2328 Version 2 中定義了鄰居關係(Neighbors)和鄰接關係(Adjacency),本文旨在分析一下二者之間的聯繫和區別。

  1. OSPF的鄰居(Neighbors)
  同一個網段上的路由器可以成爲鄰居。鄰居是通過Hello報文來選擇的,Hello 報文使用IP多播方式在每個端口定期發送。路由器一旦在其相鄰路由器的Hello 報文中發現他們自己,則他們就成爲鄰居關係了,在這種方式中,需要通信的雙方確認。鄰居的協商只在主地址(Primary address) 間協商。
  兩個路由器之間如果他們不滿足下列條件,則他們就不能成爲鄰居:
  1、Area-id:兩個路由器必須有共同的網段上,它們的端口必須屬於該網段上的同一個區,當然這些端口必須屬於同一個子網。
  2 驗證(Authentication OSPF)允許給每一個區域配置一個密碼來進行互相驗證。路由器必須交換相同的密碼,才能成爲鄰居。
  3、Hello Interval和Dead Interval: OSPF協議在每個網段上交換Hello 報文,這是Keeplive的一種形式,路由器用它來確認該網段上存在哪些路由器,並且選定一個指定路由器DR(Designated Router)。Hello Interval定義了路由器上OSPF端口上發送Hello 報文時間間隔長度(秒爲單位)。Dead Interval是指鄰居路由器宣佈其狀態爲DOWN之前,沒有收到其Hello報文的時間。
  OSPF協議需要兩個鄰居路由器的這些時間間隔相同,如果這些時間間隔不同,這些路由器就不能成爲鄰居路由器。可在路由器的端口模式下設置這些定時器:
  ip ospf hello-interval <seconds>
  ip ospf dead-interval <seconds>
  4 Stub區標記:兩個路由器爲了成爲鄰居還可以在Hello報文中通過協商Stub區的標記來達到。Stub區的定義會影響鄰居選擇的過程。
  2. 鄰接(Adjacencies)
  鄰居關係形成後路由器之間就會進行鄰接關係的形成。成爲鄰接關係的路由器之間,不僅僅是進行簡單的Hello報文的交換,而是進行數據庫的交換/爲了減少特定網段上的交換信息。OSPF協議在每一個多址可達的網段上選擇一個路由器作爲指定路由器(DR Designated Router), 選擇另外一個路由器作爲備份的指定路由器BDR (Backup Designated Router), BDR作爲DR的備份。這種設計的考慮是讓DR或BDR成爲信息交換的中心,而不是讓每個路由器與該網段上其它路由器兩兩做更新信息的交換。路由器首先與 DR、 BDR交換更新信息,然後DR 、BDR將這些更新信息轉發給該網段上的其他路由器。這樣信息交換的複雜度就會從O (n*n)降到O (n),其中n是多址可達網段上的路由器的數量。如圖1,顯示了DR和BDR的關係。
  在上圖中,所有的路由器在同一個多址可達網段上,通過相互交換Hello報文來選擇DR和BDR. 在該網段上的每個路由器(他們之間已經成爲Neighbor)會進一步與DR和BDR建立鄰接(Adjacency)關係。
2.1 DR 的選擇
  DR與BDR的選擇是通過Hello報文來進行的,而Hello報文又是通過每個網段上IP多播報文來進行交換的。在一個網段上,OSPF優先級最高的那臺路由器將成爲DR, OSPF優先級次高的那臺路由器將成爲BDR. 若OSPF的優先級相同,則路由器的Router ID大者將成爲DR. 默認情況下,OSPF的優先級爲1. 一定要記住DR和BDR的概念只在每個多址可達的網段上纔有,如Point to Point, Point to MultiPoint等網絡上沒有這個概念。
  可以在端口模式下使用下面的命令來設置路由器端口的OSPF優先級:
  ip ospf priority <value>
  可用在特權模式下使用下面的命令查看端口的OSPF優先級:
  show ip ospf interface Ethernet 0
  如果端口的OSPF優先級爲0 則表示該端口永遠不會被選擇爲DR或BDR.
  OSPF端口優先級爲0時,端口狀態爲DROTHER. 如圖2,顯示了DR選擇過程。
  在上圖Segment 1中,RTA與RTB的端口OSPF優先級相同,都爲1 (默認值),但是RTB的RID (4.4.4.4) 比RTA的RID (3.3.3.3)大,則RTB將成爲那個網段的DR. 在Segment 2中,RTC比RTB相應OSPF端口的優先級高,則RTC是該網段的DR.
  2.2 建立鄰接關係(Adjacency)
  鄰接關係的建立過程由多個步驟組成,成爲鄰接關係的路由器會保留一份精確的鏈路狀態數據庫。下面是路由器之間在形成鄰接關係過程中端口狀態變化的一個簡單總結:
  1、DOWN狀態,表示在多址可達網絡中沒有收到任何信息。
  2、Attempt狀態,在Frame Relay和X.25等NBMA網絡中,這種狀態表示路由器沒有從其鄰居路由器上接收任何信息。
  3、Init,狀態端口檢測到從鄰居路由器上來的Hello報文,但還沒有建立起雙向通信。
  4、Two-way 狀態,路由器與其鄰居路由器建立起雙向通信,路由器會在其鄰居路由器發送過來的Hello報文中看到自己。在這個狀態的末段,將進行DR和BDR的選擇,鄰居路由器間決定是否建立鄰接關係。
 5、Exstart狀態,在該狀態中路由器會產生一個初始序列號,用來交換信息報文,這個序列號能確保路由器收到的是最新的報文信息,一個路由器將成爲主,另一個路由器則成爲輔,主路由器會獲得輔路由器的信息。
  6、Exchang狀態,路由器通過發送DD報文(Database Description Packects)來建立他們的整個鏈路狀態數據庫。在這個狀態過程中,報文會通過泛洪(Fooding)到路由器的其他端口上。
  7、 Loading狀態,在這個狀態中,路由器將結束信息的交換,路由器會建立一個鏈路狀態請求列表(Link-state Request List)和一個鏈路狀態轉發列表(Link-state Retransmission List)。所有的不完整的或廢棄的信息都將放到請求列表,中所有的更新報文將被送到轉發列表中,直到該報文得到迴應。
  8、Full狀態,在這個狀態過程中,鄰接關係已經形成,鄰居路由器完全鄰接,鄰接路由器具有相同的鏈路狀態數據庫。
2.3 點到點端口的鄰接關係
  在點到點串行鏈路上,OSPF協議會始終保持兩端的鄰居成爲鄰接關係,在這種鏈路上沒有DR或BDR的概念。串口的網絡狀態爲Point to Point.
  2.4 NBMA網絡中的鄰接關係
  在Frame Relay、 X.25、 ATM等NBMA網絡中配置OSPF協議時需要特別小心。
  OSPF協議會把這些網絡與其他廣播型網絡如(以太網)同等看待。一般PVC和SVC提供的只是部分連接,而達不到完全網狀連接;不能提供多址可達的物理網絡。在這樣的網絡中,DR和BDR的選擇將會有問題,因爲DR和BDR的選擇要求網絡中的路由器進行全網連接(Full Mesh)。由於NBMA網絡沒有廣播功能,DR和BDR與網絡中其他路由器也可以通過靜態列表來指定。用下面的命令:
  neigbhor ip-address [priority number] [poll-interval seconds]
  其中"ip-address" 和"priotity" 是鄰居路由器的端口IP地址和優先級。
  “poll-interval” 是NBMA端口發送Hello報文測試鄰居路由器狀態的時間間隔。
  這個命令一般用在有可能成爲DR或BDR的路由器上(端口的OSPF優先級一定不能爲0)。下面這個網絡中DR的選擇非常重要。
  在圖4, RTA具備成爲DR的條件,它的一個端口與網絡中其他的路由器是全鏈接的。DR的選擇可通過設置端口的OSPF優先級來決定。Neighbor命令在這裏只講這些,另外一種方法,可以定置OSPF端口的網絡類型,這樣就不用考慮底層的物理介質是什麼了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章