農林漁牧網

您現在的位置是:首頁 > 漁業

OSPF路由器完全鄰接關係的建立詳細過程 - 有這麼幾個過程

2022-02-04由 威海資訊解讀 發表于 漁業

毗連是什麼意思

執行OSPF協議的路由器,如果你想正常運轉的話,那麼就得和其他的路由器建立完全鄰接的關係。因為這種狀態下,同一個區

中的所有的路由器的LSDB都是完全同步的、一致的。呵呵、、、其實呢,應該反過來說,當同一個區域中的所有的路由器的LSDB的完全同步、一致的情況下,OSPF路由器才算是達到了這個完全鄰接的狀態!

有這麼幾個過程:

OSPF 處於 down 狀態——#224; Init狀態——-#224; 雙向(two-way)狀態——-#224; 鄰接狀態——#224; 預啟動( exstart )狀態 ————#224; 交換(exchange )狀態——#224; 完全( full )鄰接狀態!

當配置了OSPF的路由器剛剛啟動的時候,這個協議還是處於down的狀態的,為什麼呢?因為還沒有其他的路由器和他交換資訊啊。所以他接下來要做的就是透過所有的OSPF介面向外傳送HELLO分組,並且分組的目標地址是224。0。0。5 (這個地址代表的是哪些路由器呢?我認識吧,他代表的是與傳送HELLO分組的路由器直接相連的那些路由器,就是指的那些直連路由器。並且在這裡需要說明的是,HELLO分組不會被路由,這個HELLO分組的行程只有一跳。那我們看到的“HELLO分組在整個區域中的多個路由器之間進行擴充套件”又該如何解釋呢?HELLO分組在同一個區域中的多個路由器之間進行擴充套件,運用的不是路由功能,而是一個路由器傳送這個HELLO分組到了直接相連的所有的路由器後,這些路由器就複製一個副本,並且將自己的資訊新增進去後,就還是運用目標地址為224。0。0。5來分發這個HELLO分組到與自己直接相連的各個路由器上。就這樣一直下去,以此類推!)

所有的直連OSPF路由器接收到這個路由器傳送來的HELLO分組後,就將這個路由器加入到鄰居列表中。這就是Init狀態!(這裡說的這個“鄰居列表”說的是HELLO分組中的資料部分。如果不理解的話,可以去看看5種類型的OSPF分組的格式)

所有的這些收到HELLO分組的路由器,都會向傳送這個HELLO分組的路由器傳送一個單播應答分組;其中包含著自己的資訊(因為人家這個路由器也不是死的啊,人家也同時在進行這個過程啊,人家也有自己的一些鄰居啊),這個發回去的應答分組中的“鄰居列表”中自然是包含那個開始傳送這個HELLO分組的路由器了。現在這個應答分組就是返回給他的。

原來那個路由器接收到這個應答分組後,先看看這個鄰居列表中是否包含自己。如果包含自己的話,就說明一個問題:即對方已經知道我的存在了。並且接下來就將這個HELLO分組中帶來的那些鄰居表中包含的路由器ID加入到自己的LSDB中。這樣一來呢,這些路由器就建立了雙向( two-way )狀態。到此為止,所有的路由器之間都建立了雙向狀態,即路由ID彼此出現在對方的鄰居列表中;

接下來,要看看網路型別,確定下是否有必要進行DR與BDR的選舉。如果這個網路屬於廣播型別的網路(如乙太網),那麼就需要進行選舉。具體的選舉過程可以自己去查閱相關的資料。選擇了DR與BDR後,那麼網路中的路由器都只與這種身份的路由器建立雙向鄰接關係,然後路由器之間才能進行交換鏈路狀態資訊。

注:當一個路由器加入到已經有DR與BDR的廣播網路時,將同所有的路由器(包括DR、BDR、DROTHER)建立雙向狀態,但是隻與DR與BDR建立雙向鄰接關係!並且我們需要知道的是,網路中的所有的路由器都會定期的進行HELLO包的交換,以確保通訊不

中斷

。預設的時間間隔是10S。這個HELLO分組中包含DR、BDR與一個路由器列表,其實他們都是鄰居,也可以說是已經相互建立了雙向狀態的路由器。

還想來分析下這個“雙向狀態”與“鄰接”狀態的不同之處:

雙向狀態:這個狀態下的路由器之間定期進行交換的是HELLO分組,透過這個HELLO分組可以學習到的是所有可能存在的鄰居。這個定期的交換,指的是10S一次,並且這個物件說的是同一個區域中的所有的路由器,他們相互之間都會定期的進行這個動作,而不是某些具備特定條件的路由器才進行定期的交換!

鄰接 狀態:這種狀態是在“雙向狀態”狀態下的一種提升。且,這種狀態下進行交換的已經不是HELLO分組了,而是LSU了。並且,這種動作並不是定期的,而是觸發式的,即只要有鏈路狀態的改變,就會進行相應的LSU的建立、傳送。並且這個動作也不是發生在同一個區域中的所有路由器之間了。而是發生具有特定身份的路由器之間的。即發生在一個普通的路由器(DROTHER)與一個特殊角色路由器(DR/BDR)之間。

上面是選舉了DR、BDR,各個路由器與DR、BDR建立了雙向 鄰接 關係,此時路由器就是處於預啟動(exstart)狀態了。這個狀態下,路由器已經做好了發現有關網際網路絡的鏈路狀態資訊並建立LSDB的準備。

處於預啟動狀態後,DR與BDR之間建立主從關係。接下來他們就開始互相交換DBD(此時就算是進入了交換狀態),這個就是5種OSPF分組中的第二種。裡面包含的是LSDB中LSA條目的摘要資訊。LSA是關於鏈路或者網路的。摘要資訊包括鏈路狀態型別、通告LSA的路由器的IP地址、鏈路的成本和序列號。當路由器收到DBD後並不是將其中的包含的內容全部的收下,而是一步一步的採取下面的步驟:

1、首先給對方一個LSACK,來確認下已經收到了這個分組;

2、將收到的資訊同本身的LSDB中資訊進行比較。如果有更新的條目的話,那麼就向傳送方傳送一個LSR(這時候你就想了,他知道這個LSR發給誰嗎?只要想要的是什麼嗎?呵呵、當然知道了,因為這些資訊都在傳送來的LSA摘要資訊中包含著呢。尤其是那個“通告LSA的路由器的地址”。)

3、對方用LSU分組進行響應,該LSU中包含著有關被請求的條目的完整資訊。同樣呢,收到這個LSU分組後,也要給對方一個LSACK進行確認下!

4、路由器將提供來的新的完整的LSA條目加入到自己的LSDB中。

彼此給對方提供所需要的全部LSA後相鄰路由器就處於同步和完全的 鄰接 狀態了。

上面說的是DR與BDR之間完全 鄰接 的這麼一個過程,那麼其他的互為 鄰接 關係的路由器達到完全 鄰接 的狀態也是這麼一個過程。其實說的就是DRother 與 DR之間的完全 鄰接 過程!

那麼如何來判定條目的新舊呢?透過摘要資訊中的序列號欄位就可以了,這個序列號是個長32位的欄位,最小的一個序列號是0X80000001,最大的是0X8FFFFFFF。當序列號越大的時候,就表示越新!

路由器想轉發資料流的話,必須處於完全 鄰接 狀態。至此,區域內所有路由器的LSDB都相同。