1. 首頁
  2. 面試

面試的時候被問了個問題OSPF鄰居關係如何建立

面試的時候被問了個問題OSPF鄰居關係如何建立

找了些資料,竊取別人的勞動成果,得出以下結論:

OSPF:OpenShortestPathFirst

OSPF路由協議是由IETF組織開發,作為RIP路由協議的替代協議,解決RIP路由協議的固有問題。是IETF組織推薦使用的IGP協議。OSPF路由協議是一種鏈路狀態協議,使用SPF演算法進行最佳路由計算。

作為鏈路狀態協議,OSPF協議的主要優點在於路由表的快速收斂,對大型網路的支援以及不易受到錯誤路由資訊的影響。OSPF路由協議其他的的特點如下:

使用area的概念,降低協議對CPU和記憶體的影響,減少路由協議產生的流量,可以構築分層的網路拓撲結構。

完全支援無類別路由處理,消除了有類別路由協議的一些問題,例如不連續子網的問題。

支援無類別路由表的檢索,支援VLSM,支援Supernetting可以更有效的進行地址管理。

支援無大小限制的,任意的metric值。

等價負載均衡,可以更有效的利用多路徑進行資料傳輸。

使用預留的組播地址,減小對非OSPF裝置的影響。

支援認證,提供更安全的路由

可以對路由進行標記,跟蹤外部的路由。

OSPF的操作介紹

第一步:OSPF路由器從啟動了OSPF協議的介面向外傳送Hello資料包,如果兩臺路由器共享公共的資料鏈路,並且Hello資料包中指定的資料引數協商一致,這兩個路由器將建立鄰居關係成為鄰居(Neighbors)。

第二步:建立鄰接(Adjacencies)關係。鄰接關係是在兩個建立了鄰居關係的OSPF路由器之間建立的,類似於一條點到點的虛擬鏈路。兩個OSPF路由器必須先建立鄰居關係然後才能建立鄰接關係。因此在故障排除時可以依次檢查相應的資料庫列表。OSPF定義了幾種網路型別和路由器型別,網路型別和路由器型別也在Hello資料包中傳輸。鄰接關係的建立也需要依據網路型別和路由器型別來建立。

第三步:所有的路由器向所有的建立了鄰接關係的路由器上傳送LSA(Link State Advertisement)資料包。在LSA資料包中,描述了路由器的介面、鏈路和鏈路的狀態。這些鏈路可以是到stub網路的鏈路,可以是到其他OSPF路由器的鏈路,可以是到位於其他區域的網路的鏈路,或者是到外部網路的鏈路。由於網路中存在著多種型別的鏈路,因此也就存在著多種型別的鏈路狀態資訊,因此OSPF也就定義了多種的LSA型別。

第四步:每個路由器從鄰居路由器接收到後,將會在鏈路狀態資料庫中記錄下LSA的內容,並且將LSA的一個複製傳送給他的其他鄰居路由器。

第五步:透過在一個區域內擴散LSA,所有的路由器將會建立統一的鏈路狀態資料庫。

第六步:當鏈路狀態資料庫建立完成後,每個路由器使用SPF演算法計算出一個無環路的圖表,這個圖表可以用來描述從這個路由器到任意一個已知目的地的最短的路徑也就是最小鏈路開銷的路徑。這個圖表就是SPF樹。

第七步:每個路由器利用SPF樹來建立自己的路由表。

在一個區域內,當所有的鏈路狀態資訊已經被擴散到所有的路由器上以後,我們就可以說鏈路狀態資料庫已經被同步了。同時,路由表也已經建立了。Hello資料包在鄰居路由器之間進行交換,提供存活(keepalive)資料包的作用。當一臺OSPF路由器出現問題時,他的鄰居路由器可以透過Hello資料包的交換情況來獲知情況。LSA資料包每30分鐘會被重新傳遞一次。

鄰居和鄰接關係

傳送LSA資料包之前,OSPF路由器必須能夠發現鄰居路由器並且與鄰居路由器建立鄰接關係。鄰居路由器資訊會被建立在鄰居列表中,同時還記錄每個鄰居路由器位於的鏈路或介面資訊,以及記錄其他維護鄰居關係所需的必要資訊。

針對OSPF路由器,我們需要一個標記來唯一的標識一個路由器,這個標記就是RouterID。RouterID就是路由器上的一個IP地址。Cisco路由器透過以下的原則來自行確定路由器的RouterID:

路由器選擇數值最大的Loopback介面的IP地址作為RouterID。

如果路由器上沒有配置Loopback介面,路由器就選擇配置在物理介面上的數值最大的IP地址作為RouterID。這個介面可以不執行OSPF路由協議。

使用與Loopback介面的IP地址具有以下的好處:

Loopback介面比物理介面更穩定,當路由器啟動後Loopback介面就被啟動,只有路由器失敗了,Loopback接口才會失敗。

使用Loopback介面的ip地址作為路由器的RouterID,可以使網路管理員在給OSPF路由器分配一個可預測的或是可確認的RouterID方面,具有更大的自由度。

如果CiscoOSPF路由器使用一個物理介面的IP地址作為路由器的RouterID,那麼,即使這個物理介面後來失效了或是被刪除了,OSPF路由協議仍然會使用這個物理介面的IP地址作為RouterID來使用。因此,Loopback介面的ip地址作為RouterID所帶來的穩定性只是一個附屬的優點,使用Loopback介面地址的最大好處是可以控制RouterID。

OSPF路由器透過在Hello資料包中廣播自己的RouterID,來啟動鄰居關係的建立。

Hello協議

Hello協議主要是為了實現以下的目的:

Hello協議是OSPF路由協議用來發現鄰居路由器的手段和方法。

Hello資料包重保護了一些引數,兩臺路由器如果要形成鄰居關係,這些引數必須能夠協商成功。

在具有鄰居關係的路由器之間傳輸Hello資料包,可以起到傳遞Keepalives訊號的作用。

透過Hello資料包的交換,可以用來確認鄰居之間雙向通訊的情況是否正常沒有故障。

在廣播網路和非廣播多點訪問網路中,利用Hello資料包進行DesignatedRouter和BackupDesignatedRouter的選舉操作。

OSPF路由器從啟動了OSPF協議的介面上週期性的傳送Hello資料包,這個時鐘週期稱為“HelloInterval”。“HelloInterval”是基於介面進行配置的,兩個介面的“HelloInterval”引數可以不同。

Cisco路由器預設的HelloInterval值被設定為10秒,可以透過執行ipospfhello-interval命令來修改這個預設的引數值。如果一個路由器在一段時間內沒有從它的一個鄰居路由器處接收到Hello資料包,它就會認為這個鄰居路由器已經失效。這個時間段稱為RouterDeadInterval。Cisco路由器預設的RouterDeadInterval值被設定為HelloInterval值的四倍,也就是預設值為40秒。這個值也可以透過執行ipospfdead-interval命令來改變。

OSPF路由協議的Hello資料包包含以下資訊:

生成這個Hello資料包的OSPF路由器的RouterID;

生成併發送出這個Hello資料包的OSPF路由器的介面的AreaID、地址掩碼、認證型別、認證資訊、HelloInterval、RouterDeadInterval;

路由器的優先順序

DR和BDR

五個標識重要功能的標誌位

生成這個Hello資料包的OSPF路由器的所有鄰居的RouterID。這個RouterID的列表中只包括從發出這個Hello資料包的路由器介面在RouterDeadInterval時鐘到時之前透過Hello資料包中監聽到的鄰居的RouterID。這一步是鄰居路由器建立鄰接關係的.手段。

路由器在接收到從一個鄰居路由器傳送過來的Hello資料包後,會檢視Hello資料包中承載的一部分資訊,包括:AreaID、認證的相關資訊、網路掩碼、HelloInterval、RouterDeadInterval和選項值。並且會將這些資訊與配置在接收到這個Hello資料包的介面上的引數進行比較,如果兩者不一致,就會將接收到的Hello資料包丟棄,鄰接關係也就不會被建立。如果兩者一致,那麼這個Hello資料包就是有效的。同時,如果傳送這個Hello資料包的鄰居路由器的RouterID也已經在這個鄰居列表中,並且鄰居列表中記錄的介面和接收這個Hello資料包的介面相同,那麼這個介面的RouterDeadInterval時鐘就會被重置,如果鄰居列表中沒有這個鄰居路由器的RouterID,就會增加這個鄰居路由器的RouterID記錄。

無論何時,路由器在傳送Hello資料包時都會將傳輸這個Hello資料包的鏈路上的所有的鄰居路由器的RouterID的資訊包含在這個Hello資料包裡。如果一個鄰居路由器接收到這個Hello資料包後發現自己的RouterID資訊也包含在這個Hello資料包中,那麼這個路由器就可以確定一條雙向通訊鏈路已經被建立了。一旦雙向通訊被建立,鄰接關係也就可以被建立了。當然並不是所有的鄰居路由器之間都可以形成鄰接關係。鄰居路由器之間是否能夠形成鄰接關係,也要根據連線這兩個鄰居路由器的網路的型別來確定。網路型別也會影響OSPF資料包的傳輸方式。

NetworkTypes

OSPF定義了五種網路型別,分別是:

1、點到點網路(Point-to-pointnetworks)

2、廣播網路(Broadcastnetworks)

3、非廣播多點訪問網路(Non-broadcastMulti-accessnetworksNBMA)

4、點到多點網路(Point-to-multipointnetworks)

5、虛擬鏈路(Virtuallinks)

點到點網路連線一對路由器。在點到點網路上,有效的OSPF鄰居路由器之間總會形成鄰接關係。在點到點網路上,OSPF資料包的目的地址始終是224.0.0.5。這個地址稱為AllSPFRouters,是一個預留的D類IP地址。

廣播網路是一個多點訪問的網路,在廣播網路中可以連線兩臺以上的裝置。並且在這個網路上可以傳輸廣播資料包。一個廣播資料包被髮送到這個網路後,所有裝置都可以接收到。連線到廣播網路上的OSPF路由器會推選出一個路由器作為DR和一個路由器作為BDR。由DR和BDR以組播方式傳送目的地址為224.0.0.5的Hello資料包到廣播網路上,承載這個資料包的幀的目的MAC地址為0100.5E00.0005。廣播網路上的其它OSPF路由器會以組播方式傳送鏈路狀態更新(LSU:LinkStateUpdate)和鏈路狀態回執(LSA:LinkStateAcknowledgment)資料包,組播資料包的目的IP地址是224.0.0.6,這個地址稱為AllDRouter。承載這個組播資料包的幀的目的MAC地址是0100.5E00.0006。

非廣播多點訪問網路可以連線兩個以上的路由器,但是不支援廣播功能。一個數據包傳送出去後,不能夠被所有的路由器接收到。因此需要對非廣播多點訪問網路上的路由器進行額外的配置,以便他們能夠發現鄰居路由器。連線到NBMA網路上的OSPF路由器也會推舉DR和BDR,但是OSPF資料包是以單播資料包的形式傳送的。