一個優秀的網絡工程師不僅僅是會調試各種不同類型的網絡設備,更重要的是深入了解每種設備的各種運行原理,這樣才能遇到問題時,能得到科學的解決辦法。下面我們看看一臺機器是怎樣通過報文的發送得到一個完整的LSBD的,下圖能大概描述兩臺路由器從開始聯系到數據庫同步的信息(報文)傳遞過程。
圖 4 兩臺路由器的數據同步過程
向物理上能達(廣播網同一網段或 PPP 或 NBMA 上的指定的節點)所有結點發送 Hello 報文,同時也收到它們發送來的 Hello 報文;這樣,可以確認哪些機器是相連的,這種相連,確定了它們之間的 Neighbor 的關系 .
對 HELLO 報文的處理詳見下圖:
圖 5 HELLO 報文處理過程圖
通過 Hello 報文的所帶 priority 位,和 DR 、 BDR 信息,可以選出該網段的 DR 。所有路由器認可一個優先級最高的路由器作為 DR ,優先級次高的作為 BDR ,所有這個網段的路由器與 DR , BDR 構成鄰接關系:


圖 6 DR 、 BDR 選舉
路由信息 ( 連接狀態傳送報文 ) 只在形成鄰接關系的路由器間傳遞。首先,它們之間互發 DD ( database description )報文,告之對方自己所擁有的路由信息。
DD 報文有兩種,一種是空 DD 報文,用來確定 Master/Slave 關系(避免 DD 報文的無序發送),確定 Master/Slave 關系后,才發送有路由信息的 DD 報文,收到有路由信息的 DD 報文后,比較自己的數據庫,發現對方的數據庫中有自己需要的數據,則向對方發送連接狀態請求( Link State Request )報文,請求對方給自己發送數據。
LSR 報文指示了所需的那部分 LSA 的內容,讓對方給發送,收到 LSR 報文后,按要求發送新的路由信息給對方,即給對方發送連接狀態升級報文( Link State Update )報文。
LSU 報文給對方一個詳細的路由信息
收到 LSU 之后,會給對方發送一個連接狀態響應報文( Link State Ack )報文,以示收到,對 DR 來說,會發送一個包含該連接狀態升級報文的連接狀態升級報文到網段內所有節點(不發連接狀態響應報文)。
LSAck 報文指示收到 LSU 報文
DD , LSR , LSU , LSAck 在沒有收到對方相應的響應時,一般會重傳。
通過 Adjacency 間的連接狀態傳送報文傳遞信息在同一個網段內達到同步;通過屬于多個網段的路由器的“中轉”,區域內路由信息可以達到同步。
有的路由器的兩個或多個接口會配置在幾個區域上,這個路由器是在 backbone 上,它會把它得到的路由信息摘要,發給 backbone 上其它點,摘要指的是只發網段信息。
有些節點會把其它協議的路由(靜態, RIP , BGP , EGP 等),引入到自治系統內部,用類似的方法把 ASE , ASBR 信息傳送到整個自治系統。
LSA 發送可以由下圖表示。
圖 7 各類連接狀態傳送報文的發送
在系統達到同步后,某一臺路由器的路由表發生變化,則把路由變化部分,以類似鏈式反應的方式發送,我們稱之為“ FLOOD ”,把升級的路由表在系統內同步了。