23 張圖詳解路由協議:計算機網絡的核心技術

開門見山,先上一張全景圖。

上帝視角

路由的概念

在 TCP/IP 通信中,網絡層的作用是實現終端的點對點通信。IP 協議通過 IP 地址將數據包發送給目的主機,能夠讓互聯網上任何兩臺主機進行通信。IP 地址可以識別主機和路由器,路由器可以把全世界的網絡連接起來。

網絡層

什麼是路由器

路由器可以連接多個網絡。它有多個端口,分別連接不同的網絡區域。通過識別目的 IP 地址的網絡號,再根據路由表進行數據轉發。路由器會維護一張路由表,通過路由表的信息,路由器才能正確的轉發 IP 報文。

路由器

什麼是路由

路由是網絡設備根據 IP 地址對數據進行轉發的操作。當路由器收到一個數據包時,它根據數據包的目的 IP 地址查詢路由表,如果有匹配的路由條目,就根據查詢結果將數據包轉發出去,如果沒有任何匹配的路由條目,則將數據包丟棄,這個過程就是 IP 路由。除了路由器,三層交換機、防火牆、負載均衡設備甚至主機等設備都可以進行路由操作,只要這個設備支持路由功能

路由

什麼是路由表

爲了將數據包發給目的節點,所有節點都維護着一張路由表。**路由表是路由器通過各種途徑獲得的路由條目,每一個路由條目包含目的網段地址 / 子網掩碼、路由協議、出接口、下一跳 IP 地址、路由優先級和度量值等信息。**路由表記錄 IP 包在下一跳應該發給哪個路由器。IP 包根據路由表在各個數據鏈路上傳輸。

路由表

路由表來源

一個實際的網絡中,一臺路由器通常包含多條路由條目,這些路由條目從不同的來源獲取。路由表的來源可分爲三類,分別是直連路由靜態路由動態路由

直連路由

靜態路由

動態路由

路由優先級

不同來源的路由有不同的優先級,優先級的值越小,則路由的優先級就越高。當存在多條目的網段相同,但來源不同的路由時,具有最高優先級的路由成爲最優路由,將被加入到路由表中,而其它路由則處於未激活狀態,不顯示在路由表中。

路由協議的默認優先級如下:

路由優先級

路由環路

路由環路是數據轉發形成死循環,不能正確到達目的地。

路由環路

路由環路的主要生成原因是配置錯誤的路由網絡規劃錯誤導致。比如:在兩臺路由器上配置到相同目的地址的路由表項,下一跳互相指向對方,就會造成路由環路。另外某些動態路由協議配置不當,也有可能產生環路。

黑洞路由

一條路由條目,無論是靜態的還是動態的,都需要關聯到一個出接口,出接口指的是設備要到達目的網絡是的出站接口。路由的出接口可以是這個設備的物理接口,如千兆網口,也可以是邏輯接口,如 VLAN 接口,或者是隧道接口等。其中有一種接口非常特殊,那就是 Null 接口,只有一個編號,那就是 0 。Null0 是一個系統保留的邏輯接口,當網絡設備在轉發數據包時,如果使用出接口 Null0 的路由,那麼數據包將被丟棄,就像被扔進了一個黑洞裏,因此出接口爲 Null0 的路由條目又被稱爲黑洞路由

黑洞路由是一種非常有用的路由條目,適用於如下場景:

動態路由協議

靜態路由是手動添加完成的。如果有 100 個網段,一個路由器就需要設置將近 100 條路由信息。網絡使用過程中,不可避免的出現網段新增、刪除、修改等情況,這些更新的路由信息需要在所有路由器上進行設置。還有一個不可忽視的問題,一旦某個路由器出現故障,數據傳輸無法自動繞過故障節點,只能通過手動設置才能恢復正常。

靜態路由

如果是使用動態路由,提前設置好路由協議,路由器之間會定期交換路由信息,路由器會知道網絡中其它網段的信息,動態生成路由表。如果網絡出現變化,網段需要增刪改時,只需要在相應的路由器上配置動態路由即可。不需要像靜態路由那樣,在所有路由器上進行修改。對於大型網絡,路由器個數較多時,主要使用動態路由協議。

動態路由

即使網絡上的節點出現故障,只要有一個可繞行的其它路徑,那麼路由器的路由表會自動重新設置,數據包也會自動選擇這個路徑。

採用路由協議後,網絡拓撲結果變化的響應速度會大大提升。無論網絡正常的增刪改,還是異常的網絡故障,相鄰的路由器都會檢測到變化,會把拓撲的變化通知網絡中其它的路由器,使它們的路由表產生相應的變化。這個過程比手動對路由表的修改要快很多,也準確很多。

對於少於 10 個路由器的小型網絡,靜態路由或許已經能夠滿足需求,但是在大中型網絡中,通常會使用動態路由協議,或者動態路由與靜態路由協議相結合的方式來建設這個網絡。

路由協議基本原理

路由器之間需要運行相同的路由協議,才能相互交換路由信息。每種路由協議都有自己的語言,即相應的路由協議報文。如果兩臺路由器啓動了相同的路由協議,那麼就有了相互通信的基礎。不同的路由協議,有相同的目的,就是計算和維護路由表。通常工作過程包含 4 個階段:

路由協議

自治系統

隨着 IP 網絡的發展,網絡規模已經很大了,無論哪種路由協議都不能完成全網的路由計算,因此網絡分成了很多個自治系統( AS , Autonomous System )或路由選擇域 ( Routing Domain )。自治系統可以制定自己的路由策略,並管理自治系統內進行具體路由控制的路由器集合。

每個自治系統都有一個唯一的自治系統編號,它的基本思路是希望通過不同的編號來區分不同的自治系統。通過路由協議和自治系統編號,路由器可以確定路由路徑和路由信息的交換方式。某個自治系統缺乏足夠的安全機制,就可以利用編號改變路徑迴避它。

自治系統的編號範圍是 1 ~ 65535 ,其中 1 ~ 64511 是註冊的因特網編號,64512 ~ 65535 是專用網絡編號。

自治系統和路由協議

EGP 和 IGP

自治系統(路由選擇域)內部動態路由使用的協議是域內路由協議,即 IGP 。而自治系統之間的路由控制使用的是域間路由協議,即 EGP

IGP 和 EGP 的關係,跟 IP 地址網絡號和主機號的關係類似。根據 IP 地址的網絡號在網絡中進行路由選擇,根據主機號在網段內部進行主機識別一樣。既可以**_根據  EGP 在區域網絡之間進行路由選擇_**,也可以**_根據 IGP 在區域網絡內部進行主機識別_**。

路由協議被分爲 EGP 和 IGP 兩個層次。沒有 EGP 就不可能有世界上各個不同機構網絡之間的通信,沒有 IGP 機構內部也就不可能進行通信。

IGP 是指在同一個自治系統內交換路由信息的路由協議。RIPRIP2OSPF 屬於 IGP 。IGP 的主要目的是發現和計算自治系統內的路由信息。

EGP 與 IGP 不同,EGP 用於連接不同的自治系統,並在不同自治系統間交換路由信息。EGP 的主要目的是使用路由策略和路由過濾等手段,控制路由信息在自治系統間的傳播。BGP 屬於 EGP

動態路由協議類型

按照路由的算法和路由信息的交換方式,路由協議可以分爲距離矢量( Distance-Vector ,D-V )路由協議和鏈路狀態( Link-State )路由協議。其中典型的距離矢量協議是 RIP ,典型的鏈路狀態協議是 OSPF

距離矢量路由協議

距離矢量路由協議指的是基於距離矢量的路由協議,RIP 是最具代表性的距離矢量路由協議。距離矢量這個概念包含兩個關鍵的信息:距離方向,其中距離是指到達目的網絡的度量值(即所要經過路由器的個數),而方向指的是到達目的網絡的下一跳設備。

距離矢量路由協議

每一臺運行距離矢量路由協議的路由器會週期性的將自己的路由表通告出去,相鄰的路由器收到路由信息並更新自己的路由表,再繼續向其它直連的路由器通告路由信息,最終網絡中的每臺路由器都能知道各個網段的路由,這個過程稱爲路由的泛洪過程。

路由宣告

路由器之間互換目的網絡的方向和距離的信息,並以這些信息更新路由表。這種方法在處理上比較簡單,不過由於只有距離和方向的信息,所以當網絡構造變得複雜時,在獲得穩定的路由信息之前需要消耗一定時間(即路由收斂時間長),也極易發生路由循環等問題。

路由收斂

鏈路狀態路由協議

運行鏈路狀態路由協議的路由器會使用一些特殊的信息描述網絡的拓撲結構和 IP 網段,這些信息被稱爲鏈路狀態信息LSA ),所有路由器都會產生自己直連接口的鏈路狀態信息。

鏈路狀態路由協議

路由器將網絡中泛洪的鏈路狀態信息蒐集起來,存入一個數據庫中,這個數據庫就是 LSDB (鏈路狀態數據庫),LSDB 是對整個網絡的拓撲結構及 IP 網段的描述,路由器擁有相同的 LSDB 。對於任何一臺路由器,網絡拓撲都完全一樣。

LSDB

接下來所有的路由器都基於 LSDB 使用最短路由優先算法進行計算,得到一棵已自己爲根的、無環路的最短路徑樹,並將得到的路由加載到路由表中。

帶權有向圖

鏈路狀態算法使用增量更新機制,只有當鏈路的狀態發生變化時,才發送路由更新信息。

最短路徑樹

相比距離矢量路由協議,鏈路狀態路由協議具有更大的擴展性和更快的收斂速度,但是它的算法消耗更多的內存和 CPU 處理能力。

路由協議的性能指標

不同的路由協議,有不同的特點。各個路由協議的性能指標體現如下:

主要路由協議

各種路由協議都需要使用 IP 來進行報文封裝,但其細節有所不同。

RIP 協議是最早的路由協議,是爲小型網絡中提供簡單易用的動態路由。RIP 協議報文采用 UDP 封裝,端口號是 520 。由於 UDP 是不可靠的傳輸層協議,所以 RIP 協議需要週期性的廣播協議報文來確保鄰居收到路由信息。

OSPF 是目前應用最廣泛的路由協議,可爲大中型網絡提供分層的、可靠的路由服務。OSFP 直接採用 IP 進行封裝,所有協議報文都由 IP 封裝後進行傳輸,協議號是 89 。IP 是盡力而爲的網絡層協議,本身是不可靠的,所以爲了保證傳輸的可靠性,OSPF 採用了複雜的確認機制來保證傳輸可靠。

BGP 採用 TCP 來保證協議傳輸的可靠性,TCP 端口號是 179 。BGP 不需要自己設計可靠傳輸機制,降低了協議報文的複雜度和開銷。

路由協議的底層協議圖

幾種主要的路由協議表如下:

路由協議對比表

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/_9eYtOFJADJJGfGl3H2YjQ