路由的概念
在 TCP/IP 通信中,網絡層的作用是實現終端的點對點通信。IP 協議通過 IP 地址將數據包發送給目的主機,能夠讓互聯網上任何兩臺主機進行通信。IP 地址可以識別主機和路由器,路由器可以把全世界的網絡連接起來。
什么是路由器
路由器可以連接多個網絡。它有多個端口,分別連接不同的網絡區域。通過識別目的 IP 地址的網絡號,再根據路由表進行數據轉發。路由器會維護一張路由表,通過路由表的信息,路由器才能正確的轉發 IP 報文。
什么是路由
路由是網絡設備根據 IP 地址對數據進行轉發的操作。當路由器收到一個數據包時,它根據數據包的目的 IP 地址查詢路由表,如果有匹配的路由條目,就根據查詢結果將數據包轉發出去,如果沒有任何匹配的路由條目,則將數據包丟棄,這個過程就是 IP 路由。除了路由器,三層交換機、防火墻、負載均衡設備甚至主機等設備都可以進行路由操作,只要這個設備支持路由功能。
什么是路由表
為了將數據包發給目的節點,所有節點都維護著一張路由表。路由表是路由器通過各種途徑獲得的路由條目,每一個路由條目包含目的網段地址 / 子網掩碼、路由協議、出接口、下一跳 IP 地址、路由優先級和度量值等信息。路由表記錄 IP 包在下一跳應該發給哪個路由器。IP 包根據路由表在各個數據鏈路上傳輸。
路由表來源
一個實際的網絡中,一臺路由器通常包含多條路由條目,這些路由條目從不同的來源獲取。路由表的來源可分為三類,分別是直連路由、靜態路由和動態路由。
直連路由:路由器直接連接的路由條目,只要路由器接口配置了 IP 地址,接口狀態正常,就會自動生成對應的直連路由。
靜態路由:通過命令手動添加的路由條目就是靜態路由。
動態路由:通過路由協議從相鄰路由器動態學習到的路由條目。
路由優先級
不同來源的路由有不同的優先級,優先級的值越小,則路由的優先級就越高。當存在多條目的網段相同,但來源不同的路由時,具有最高優先級的路由成為最優路由,將被加入到路由表中,而其它路由則處于未激活狀態,不顯示在路由表中。
路由協議的默認優先級如下:
路由環路
路由環路是數據轉發形成死循環,不能正確到達目的地。
路由環路的主要生成原因是配置錯誤的路由或網絡規劃錯誤導致。比如:在兩臺路由器上配置到相同目的地址的路由表項,下一跳互相指向對方,就會造成路由環路。另外某些動態路由協議配置不當,也有可能產生環路。
黑洞路由
一條路由條目,無論是靜態的還是動態的,都需要關聯到一個出接口,出接口指的是設備要到達目的網絡是的出站接口。路由的出接口可以是這個設備的物理接口,如千兆網口,也可以是邏輯接口,如 VLAN 接口,或者是隧道接口等。其中有一種接口非常特殊,那就是 Null 接口,只有一個編號,那就是 0 。Null0 是一個系統保留的邏輯接口,當網絡設備在轉發數據包時,如果使用出接口 Null0 的路由,那么數據包將被丟棄,就像被扔進了一個黑洞里,因此出接口為 Null0 的路由條目又被稱為黑洞路由。
黑洞路由是一種非常有用的路由條目,適用于如下場景:
在網絡使用中,按需將數據包指向黑洞路由,實現流量過濾。
在已經部署路由匯總的網絡中,用于防止數據轉發出現環路。
在部署了 NAT 的網絡中,用于防止數據轉發出現環路。
在 BGP 網絡中,用于發布特定網段的路由。
動態路由協議
靜態路由是手動添加完成的。如果有 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 是指在同一個自治系統內交換路由信息的路由協議。RIP 、RIP2 、OSPF 屬于 IGP 。IGP 的主要目的是發現和計算自治系統內的路由信息。
EGP 與 IGP 不同,EGP 用于連接不同的自治系統,并在不同自治系統間交換路由信息。EGP 的主要目的是使用路由策略和路由過濾等手段,控制路由信息在自治系統間的傳播。BGP 屬于 EGP 。
動態路由協議類型
按照路由的算法和路由信息的交換方式,路由協議可以分為距離矢量( Distance-Vector ,D-V )路由協議和鏈路狀態( Link-State )路由協議。其中典型的距離矢量協議是 RIP ,典型的鏈路狀態協議是 OSPF 。
距離矢量路由協議
距離矢量路由協議指的是基于距離矢量的路由協議,RIP 是最具代表性的距離矢量路由協議。距離矢量這個概念包含兩個關鍵的信息:距離和方向,其中距離是指到達目的網絡的度量值(即所要經過路由器的個數),而方向指的是到達目的網絡的下一跳設備。
每一臺運行距離矢量路由協議的路由器會周期性的將自己的路由表通告出去,相鄰的路由器收到路由信息并更新自己的路由表,再繼續向其它直連的路由器通告路由信息,最終網絡中的每臺路由器都能知道各個網段的路由,這個過程稱為路由的泛洪過程。
路由器之間互換目的網絡的方向和距離的信息,并以這些信息更新路由表。這種方法在處理上比較簡單,不過由于只有距離和方向的信息,所以當網絡構造變得復雜時,在獲得穩定的路由信息之前需要消耗一定時間(即路由收斂時間長),也極易發生路由循環等問題。
鏈路狀態路由協議
運行鏈路狀態路由協議的路由器會使用一些特殊的信息描述網絡的拓撲結構和 IP 網段,這些信息被稱為鏈路狀態信息( LSA ),所有路由器都會產生自己直連接口的鏈路狀態信息。
路由器將網絡中泛洪的鏈路狀態信息搜集起來,存入一個數據庫中,這個數據庫就是 LSDB (鏈路狀態數據庫),LSDB 是對整個網絡的拓撲結構及 IP 網段的描述,路由器擁有相同的 LSDB 。對于任何一臺路由器,網絡拓撲都完全一樣。
接下來所有的路由器都基于 LSDB 使用最短路由優先算法進行計算,得到一棵已自己為根的、無環路的最短路徑樹,并將得到的路由加載到路由表中。
鏈路狀態算法使用增量更新機制,只有當鏈路的狀態發生變化時,才發送路由更新信息。
相比距離矢量路由協議,鏈路狀態路由協議具有更大的擴展性和更快的收斂速度,但是它的算法消耗更多的內存和 CPU 處理能力。
路由協議的性能指標
不同的路由協議,有不同的特點。各個路由協議的性能指標體現如下:
協議計算的正確性:是指路由協議的算法會不會產生錯誤的路由導致網絡環路。不同的路由協議使用的算法不同,因此路由正確性也不相同。鏈路狀態路由協議(如 OSPF )在算法上杜絕了產生路由環路的可能性,比距離矢量路由協議更優。
路由收斂速度:路由收斂是指全網路由器的路由表達到一致狀態。收斂速度快,意味著網絡拓撲結構發生變化時,路由器能夠更快的感知,并及時更新相應的路由信息。OSPF 、BGP 等協議的收斂速度快于 RIP 。
協議所占的系統開銷:路由器在運行路由協議時,需要消耗的系統資源,比如:CPU 、內存等。工作原理的不同,各個路由協議對系統資源的需求也不同。OSPF 路由技術的系統開銷要大于 RIP 協議。
協議自身的安全性:是指協議設計時,有沒有考慮防止網絡攻擊。OSPF 、RIPv2 有相應的防止攻擊的認證方法,而 RIPv1 沒有。
協議適用網絡規模:不同路由協議所適用的網絡規模、拓撲結構不同。RIP 協議有 16 跳的限制,所以只能應用在較小規模的網絡中;而 OSPF 可以應用在幾百臺路由器的大規模網絡中;BGP 能夠管理全世界所有的路由器,其所管理的網絡規模大小只受系統資源的限制。
主要路由協議
各種路由協議都需要使用 IP 來進行報文封裝,但其細節有所不同。
RIP 協議是最早的路由協議,是為小型網絡中提供簡單易用的動態路由。RIP 協議報文采用 UDP 封裝,端口號是 520 。由于 UDP 是不可靠的傳輸層協議,所以 RIP 協議需要周期性的廣播協議報文來確保鄰居收到路由信息。
OSPF 是目前應用最廣泛的路由協議,可為大中型網絡提供分層的、可靠的路由服務。OSFP 直接采用 IP 進行封裝,所有協議報文都由 IP 封裝后進行傳輸,協議號是 89 。IP 是盡力而為的網絡層協議,本身是不可靠的,所以為了保證傳輸的可靠性,OSPF 采用了復雜的確認機制來保證傳輸可靠。
BGP 采用 TCP 來保證協議傳輸的可靠性,TCP 端口號是 179 。BGP 不需要自己設計可靠傳輸機制,降低了協議報文的復雜度和開銷。
幾種主要的路由協議表如下:
編輯:黃飛
?
評論
查看更多