拒絕八股文!這篇圖解動態路由分分鐘愛了
你好,這裡是網路技術聯盟站。
昨天給大家詳細介紹了靜態路由,以及思科、華為、h3c、銳捷、瞻博網路等廠商靜態路由的配置命令:
講到靜態路由,必須要介紹它的兄弟: 動態路由 !
動態路由在中大型網路、有些小型網路架構中是非常常見的,可以這麼說,沒有動態路由,就沒有現在那麼龐大的網路體系!
還是那句話,看別人的文章或者看網上普通八股文可能囉裡囉嗦,在瑞哥這裡全部用人話解釋清楚,如果你覺得文章對你有幫助,別忘了收藏哦。
直接開始吧!
什麼是動態路由?
有關路由的概念,我們在上一節靜態路由中已經詳細介紹了,大家可以直接去看:

動態路由的概念是相對於靜態路由路由的,動態路由也稱為 自適應路由 ,它根據拓撲結構的變化改變 路由表 ,動態路由使用複雜的 路由演算法 ,當網路發生變化(拓撲)時,它會向路由器傳送訊息以確保發生變化,然後重新計算路由以傳送更新的路由資訊。

用人話來做個解釋:你就把動態路由看做智慧無人駕駛汽車,你從家去公司上班有三條路可以選擇:
-
過兩個紅綠燈
-
不過紅綠燈
-
過三個紅綠燈
假設三條路總里程是相同的,那麼作為智慧無人駕駛汽車,它會經過自己的智慧演算法算出哪條路最節省時間、最能帶來更好的體驗,所以選擇的 線路二 。

既然是智慧的,那麼就能動態切換,加入這個時候線路二道路在施工,車流非常緩慢,作為智慧汽車,那一定可以算出來的,這個時候就會選擇 線路一 。

動態路由就是這麼一個智慧無人汽車。
路由器可以根據當前通訊鏈路的情況,通過各種不同的路由傳輸資料併到達目的地,可以根據當時網路的當前場景條件為資料選擇最佳路徑,所以說動態路由就是一種“ 聰明路由 ”!

為啥要選擇動態路由?
這個就要先聊聊動態路由的背景了。
1980 年動態路由首次用於計算機網路,第一個路由協議是 RIP,RIP 相信大家肯定不陌生了,學習動態路由的第一個協議就是 RIP,RIP 協議的第 1 版 RIPv1 於 1988 年釋出。

沒有動態路由的時候,都需要網路管理員手動去配置靜態路由打通鏈路,上節我們提到,靜態路由的配置完全取決於網路管理員或者網路工程師,一旦中間開個小差或者腦子一迷糊,可能就會出錯,在大型網路環境中,動輒上千臺、甚至上萬臺路由器,暫且不談如何配置完那麼龐大數量的路由器,單單你去規劃路由,路由表的長度能嚇死人,所以動態路由就應運而生了!
根據歷史的軌跡,任何新技術的出現都是為了解決某種舊技術的痛點問題的。
既然動態路由比靜態路由好,這個好到底體現在什麼地方呢?
動態路由的優點
-
減輕網路管理員的配置任務。
-
路由表會自動更新。
-
適用於中大型網路
-
網路的整體維護很容易
-
自適應網路能夠立即改變路徑以避免中斷、系統或裝置故障或路由拓撲波動
動態路由的型別
這個在上節也提到過,這裡再說明一下,直接上圖:

這塊就不多說了,因為每種協議背後都是龐大的知識體系,瑞哥會在接下來幾天的文章中,好好與大家講解。
在上圖中,我們看到了幾個關鍵詞:距離向量、鏈路狀態、混合、路徑向量。
這四個東東又是啥呢?
距離向量路由
距離向量路由使用 距離 和 方向 兩個引數來計算資料包從源轉發到目的地的最佳路徑。
-
距離是源和目的地之間的路由器數量,每個路由器都將其相鄰路由器視為 下一跳 。
-
方向就是 資料流向 。

如圖,這張簡單的拓撲中,距離就是經過的三臺路由器,方向就是資料流向方向: PC1 -> R1 -> R2 -> R3 -> PC2
距離向量路由使用 Bellman-Ford 演算法 來計算路由,從直連或鄰居路由器接收路由通告,並定期更新其路由資訊,更新路由資訊的操作從一臺路由器到另外一臺路由器,直到到達目的地,它與直接相鄰的路由器共享整個路由表資訊。
如上圖,PC1 和 PC2 通訊,資料首先會到達 R1,這個 R1 通過 Bellman-Ford 演算法算出來,資料下一個傳輸的裝置應該是 R2,R2 這個時候會接收到 R1 的路由通告,更新自己的路由表,R1 也會動態的感知到,也會更新自己的路由表,R2 和 R3 之間也是同樣的操作,最終實現網路通訊。
距離向量協議最典型的就是 RIP 。
鏈路狀態路由
距離向量路由依賴於相鄰或者直連裝置的路由資訊,鏈路狀態路由則針對的是整張拓撲的路由資訊。
在鏈路狀態路由中,資料從一臺路由器到另外一臺路由器,路由器本身不會改變鄰居路由器的整體路由資訊,而是直接複製從其鄰居路由器接收到的資訊,這樣的話,整體鏈路上的每臺路由器都會形成相同的資訊。
這種操作有個專業術語: 泛洪 。
泛洪,我這邊用一張圖解釋一下:

如圖,假設路由資訊已經從 R1 到達 R4 了,R4 的 g0/1 介面收到了 R1 傳過來的鏈路狀態資訊,這個時候,R4 會立馬將此鏈路狀態資訊從除 g0/1 介面外其他所有介面傳送出去,這就是 泛洪 ,就跟洪水一樣,從閘口往外流。
泛洪後,其他路由器會相應的更新自己的路由表,以達到所有路由器資訊一致。
鏈路狀態路由使用 Dijkstra 演算法 ,也稱為 最短路徑優先 (SPF) 演算法 。

如圖,從 PC1 到 PC2,一共有三條路:
-
鏈路一:
PC1 -> R1 -> R4 -> R3 -> PC2
-
鏈路二:
PC1 -> R1 -> R4 -> R2 -> R3 -> PC2
-
鏈路三:
PC1 -> R1 -> R2 -> R3 -> PC2
開銷:
-
鏈路一:
2 + 5 = 7
-
鏈路二:
2 + 1 + 5 = 8
-
鏈路三:
3 + 6 = 9
最終通過 Dijkstra 演算法即最短路徑優先演算法算出來鏈路一最優,走 PC1 -> R1 -> R4 -> R3 -> PC2
。
鏈路狀態協議最典型的就是 OSPF 和 IS-IS 。
混合路由
顧名思義,它是距離向量協議和鏈路狀態協議的混合體,比較典型的協議就是 EIGRP,中文術語就是 增強型內部閘道器路由協議 。
EIGRP 是一種高階距離向量路由協議,是早期 Cisco 協議(稱為 IGRP)的演進,它不傳送鏈路狀態通告,而是向鄰居路由器傳送傳統的距離向量路由資訊。
EIGRP 是 Cisco 專有協議 ,因此網路中執行 EIGRP 的所有路由器都必須是 Cisco 路由器,但現在 EIGRP 正朝著成為開放標準協議的方向發展。
路徑向量
路徑向量協議不依賴於到達給定目的地的 成本 來確定每個可用路徑是否是無環路的,而是依賴於對到達目的地的 路徑的分析 來確定它是否是無環路的。
路徑向量不同於距離向量路由和鏈路狀態路由,路由表中的每個條目都包含目標網路、下一個路由器和到達目標的路徑。

路徑向量協議最典型的就是 BGP 。
以上就是距離向量、鏈路狀態、混合、路徑向量簡單介紹,具體不能深入,不然一篇文章介紹不清,後面有時間可以單獨拉出來進行討論。
動態路由的工作原理
上面介紹了動態路由的基礎知識部分,下面來討論一下動態路由的工作原理,適用於每一種動態路由的協議:
-
路由器的介面接收或者傳送路有訊息
-
路由訊息通過動態路由協議傳送到其他路由器
-
發訊息的路由器與其他路由器共享路由訊息
-
拓撲變化時,該路由協議會成為路由器與路由器之間通訊的橋樑

度量值與管理距離
度量值
假設一個路由器有多個目的地到一個網路,它如何確定到那個網路的最佳路徑?
可以用 度量值 ,也就是 Metric 進行計算。
度量值你可以想象成你從南京到上海,你車裡的燃油量是固定的,假設中間不給加油,選擇最佳路徑到達:

此時耗費的燃油量就是恆定路線的度量值。
下圖是各個路由協議的度量值:

管理距離
如果我們在一臺路由器上配置了多個路由協議,路由器將如何確定通往所需網路的最佳路徑?
可以用 管理距離 ,也就是 AD 去計算,管理距離是路由器用來 優先選擇 路由源的方式。
AD 通常是 0 到 255 之間的一個值,該值越小,路由源越好,管理距離為 255 的路由永遠不會被信任。
還是以南京到上海為例:

管理距離就好比交通工具選擇,那麼高鐵和飛機一定是非常快的(不算去機場的路上的時間)
動態路由和靜態路由的比較
上節講了靜態路由,那麼在本節最後呢,我們來做個兩者比較:
-
路由模式:在靜態路由中,路由是使用者定義的;在動態路由中,路由會根據網路的變化進行更新。
-
路由演算法:沒有用於計算最短路徑的複雜演算法;動態路由採用複雜的演算法來尋找最短的路線。
-
安全:靜態路由提供更高的安全性;動態路由提供的安全性較低。
-
自動化:靜態路由是手動的;動態路由是自動化的。
-
適用性:靜態路由用於較小的網路;動態路由用於中大型網路。
-
協議:靜態路由可以不遵循任何特定協議;動態路由遵循 BGP、RIP 和 EIGRP 等協議。
-
額外資源:靜態路由不需要任何額外的資源;動態路由需要額外的資源,如記憶體、頻寬等。
總結
在動態路由中,路由條目是由路由演算法自動生成的,路由表會定期更新,因此,如果發生任何變化,新的路由表將根據它們形成。
本文瑞哥主要介紹了:
-
什麼是動態路由?
-
為啥要選擇動態路由?
-
動態路由的優點
-
動態路由的型別
-
距離向量路由
-
鏈路狀態路由
-
混合路由
-
路徑向量
-
動態路由的工作原理
-
度量值與管理距離
-
度量值
-
管理距離
-
動態路由和靜態路由的比較
從下一節開始,將帶大家一一瞭解動態路由協議。
朋友們,本節涉及的動態路由,你明白了嗎?
- “打臉”谷歌雲,說好的超低延遲和可靠性呢?
- 過去的十五年,我們怎樣做 IM?
- 轉轉 K8s 實踐:如何解決容器化帶來的四大問題
- 企業級證券業務中臺探索與實踐
- 雲原生(十八) | Kubernetes 篇之 Kubernetes(k8s)工作負載
- 【原始碼解析】MyBatis 整體架構與原始碼解析
- 見微知著,帶你認認資料分析的大門,站在門口感受一下預測的魅力
- 未來是國產作業系統的鑽石時代,微核心將成為新的發展方向|對話中興新支點作業系統崔黎明
- 【React 原始碼系列】React Hydrate 原理及原始碼剖析
- 花 31 萬元重新設計網站後,我後悔了
- 一文帶你打通 Node 流的"任督二脈"
- RT-Thread 記錄(七、IPC 機制之郵箱、訊息佇列)
- 開發人員應該知道的零信任模型
- 大佬,還記得設計模式的六大設計原則嗎?
- Java 引數傳遞到底是按 值傳遞 還是 引用傳遞 ?
- 資料技術大融合,HSTAP 資料庫有多少想象空間?
- 說了半天跨平臺,今兒咱就來跨跨!(完結篇)——Kubernetes 上手實踐
- 我認為前端的職責可能需要重新劃分
- 使用 External Secrets Operator 管理 Kubernetes 的 Secret
- Android 應用安全機制實現方案探究