網路路由詳解
電腦網路之路由詳解
基本概念
IP地址可以識別主機和路由器,而路由器有多個埠,分別連接不同的網路區域。通過識別目的IP地址的網路號,再根據路由表進行數據轉發。
主機和路由器都會維護一張路由表,裡面存放著目的地址段和下一跳的地址。

除了路由器,三層交換機、防火牆、負載均衡設備甚至主機等設備都可以進行路由操作,只要這個設備支援路由功能。路由表是路由器通過各種途徑獲得的路由條目,每一個路由條目包含目的網段地址、子網掩碼、路由協議、出介面、下一跳 IP 地址、路由優先順序和度量值等資訊。

路由表的來源分為三類:直連路由、靜態路由和動態路由。
- 直連路由:路由器直接連接的路由條目,只要路由器介面配置了IP地址,介面狀態正常,就會自動生成對應的直連路由,Proto欄位為Direct
- 靜態路由:手動添加的。Proto欄位為Static。
- 動態路由:通過路由協議從相鄰路由器學習到的。Proto欄位為具體的路由協議,如RIP等。
不同來源的路由有不同的優先順序,值越小,優先順序越高。當存在多條目的網段相同時,具有高優先順序的路由成為最優路由。

一條路由條目,無論是靜態的還是動態的,都需要關聯到一個出介面,路由的出介面可以是這個設備的物理介面,如千兆網口,也可以是邏輯介面,如 VLAN 介面,或者是隧道介面等。其中有一種介面非常特殊,那就是 Null 介面,只有一個編號,那就是 0 。Null0 是一個系統保留的邏輯介面,當網路設備在轉發數據包時,如果使用出介面 Null0 的路由,那麼數據包將被丟棄,就像被扔進了一個黑洞里,因此出介面為 Null0 的路由條目又被稱為黑洞路由。
路由協議
工作流程
路由器之間需要運行相同的路由協議,才能相互交換路由資訊。每種路由協議都有自己的語言,即相應的路由協議報文。如果兩台路由器啟動了相同的路由協議,那麼就有了相互通訊的基礎。不同的路由協議,有相同的目的,就是計算和維護路由表。通常工作過程包含 4 個階段:
- 鄰居發現階段:運行了路由協議後,路由器會主動把自己的網段資訊發送給相鄰的路由器。既可以使用廣播發送路由協議消息,也可以單播將路由協議消息發送給指定的鄰居路由器。
- 交換路由資訊階段:發現鄰居後,每台路由器都將自己的路由資訊發送給相鄰的路由器,相鄰路由器又發送給下一個相鄰的路由器。經過一段時間後,每台路由器都會收到網路中所有的路由資訊。
- 計算路由階段:每一台路由器都會運行某種演算法,計算出最終的路由表來。
- 維護路由階段:為了感知突然發送的網路故障,比如:設備故障或線路中斷等,路由協議規定相鄰兩台路由器之間,應該周期性發送協議報文。如果路由器在一段時間內,沒收到鄰居發來的協議報文,就認為鄰居路由器失效。
隨著 IP 網路的發展,網路規模已經很大了,無論哪種路由協議都不能完成全網的路由計算,因此網路分成了很多個自治系統( AS , Autonomous System )或路由選擇域 ( Routing Domain )。自治系統可以制定自己的路由策略,並管理自治系統內進行具體路由控制的路由器集合。
每個自治系統都有一個編號,範圍是1—65535,通過路由協議和自治系統編號,路由器可以確定路由路徑和路由資訊的交換方式。

自治系統內部使用的協議是域內路由協議,即IGP。RIP、OSPF屬於IGP。
自治系統之間的路由控制使用的是域間路由協議,即EGP。BGP屬於EGP。
路由器工作原理
協議類型
按照路由的演算法和路由資訊的交換方式,路由協議可以分為距離矢量( Distance-Vector ,D-V )路由協議和鏈路狀態( Link-State )路由協議。其中典型的距離矢量協議是 RIP ,典型的鏈路狀態協議是 OSPF 。
距離矢量路由協議
距離矢量這個概念包含兩個關鍵的資訊:距離和方向,其中距離是指到達目的網路的度量值(即所要經過路由器的個數),而方向指的是到達目的網路的下一跳設備。
鏈路狀態路由協議
運行鏈路狀態路由協議的路由器會使用一些特殊的資訊描述網路的拓撲結構和 IP 網段,這些資訊被稱為鏈路狀態資訊( LSA ),所有路由器都會產生自己直連介面的鏈路狀態資訊。
路由器將網路中泛洪的鏈路狀態資訊搜集起來,存入一個資料庫中,這個資料庫就是 LSDB (鏈路狀態資料庫),LSDB 是對整個網路的拓撲結構及 IP 網段的描述,路由器擁有相同的 LSDB 。對於任何一台路由器,網路拓撲都完全一樣。

接下來所有的路由器都基於 LSDB 使用最短路由優先演算法進行計算,得到一棵已自己為根的、無環路的最短路徑樹,並將得到的路由載入到路由表中。
相比距離矢量路由協議,鏈路狀態路由協議具有更大的擴展性和更快的收斂速度,但是它的演算法消耗更多的記憶體和 CPU 處理能力。

