23 張圖詳解路由協(xié)議:計算機網絡的核心技術
▼點擊下方名片,關注公眾號▼
路由的概念
在 TCP/IP 通信中,網絡層的作用是實現終端的點對點通信。IP 協(xié)議通過 IP 地址將數據包發(fā)送給目的主機,能夠讓互聯網上任何兩臺主機進行通信。IP 地址可以識別主機和路由器,路由器可以把全世界的網絡連接起來。什么是路由器
路由器可以連接多個網絡。它有多個端口,分別連接不同的網絡區(qū)域。通過識別目的 IP 地址的網絡號,再根據路由表進行數據轉發(fā)。路由器會維護一張路由表,通過路由表的信息,路由器才能正確的轉發(fā) IP 報文。什么是路由
路由是網絡設備根據 IP 地址對數據進行轉發(fā)的操作。當路由器收到一個數據包時,它根據數據包的目的 IP 地址查詢路由表,如果有匹配的路由條目,就根據查詢結果將數據包轉發(fā)出去,如果沒有任何匹配的路由條目,則將數據包丟棄,這個過程就是 IP 路由。除了路由器,三層交換機、防火墻、負載均衡設備甚至主機等設備都可以進行路由操作,只要這個設備支持路由功能。什么是路由表
為了將數據包發(fā)給目的節(jié)點,所有節(jié)點都維護著一張路由表。路由表是路由器通過各種途徑獲得的路由條目,每一個路由條目包含目的網段地址 / 子網掩碼、路由協(xié)議、出接口、下一跳 IP 地址、路由優(yōu)先級和度量值等信息。路由表記錄 IP 包在下一跳應該發(fā)給哪個路由器。IP 包根據路由表在各個數據鏈路上傳輸。路由表來源
一個實際的網絡中,一臺路由器通常包含多條路由條目,這些路由條目從不同的來源獲取。路由表的來源可分為三類,分別是直連路由、靜態(tài)路由和動態(tài)路由。- 直連路由:路由器直接連接的路由條目,只要路由器接口配置了 IP 地址,接口狀態(tài)正常,就會自動生成對應的直連路由。
- 靜態(tài)路由:通過命令手動添加的路由條目就是靜態(tài)路由。
- 動態(tài)路由:通過路由協(xié)議從相鄰路由器動態(tài)學習到的路由條目。
路由優(yōu)先級
不同來源的路由有不同的優(yōu)先級,優(yōu)先級的值越小,則路由的優(yōu)先級就越高。當存在多條目的網段相同,但來源不同的路由時,具有最高優(yōu)先級的路由成為最優(yōu)路由,將被加入到路由表中,而其它路由則處于未激活狀態(tài),不顯示在路由表中。路由協(xié)議的默認優(yōu)先級如下:路由環(huán)路
路由環(huán)路是數據轉發(fā)形成死循環(huán),不能正確到達目的地。黑洞路由
一條路由條目,無論是靜態(tài)的還是動態(tài)的,都需要關聯到一個出接口,出接口指的是設備要到達目的網絡是的出站接口。路由的出接口可以是這個設備的物理接口,如千兆網口,也可以是邏輯接口,如 VLAN 接口,或者是隧道接口等。其中有一種接口非常特殊,那就是 Null 接口,只有一個編號,那就是 0 。Null0 是一個系統(tǒng)保留的邏輯接口,當網絡設備在轉發(fā)數據包時,如果使用出接口 Null0 的路由,那么數據包將被丟棄,就像被扔進了一個黑洞里,因此出接口為 Null0 的路由條目又被稱為黑洞路由。- 在網絡使用中,按需將數據包指向黑洞路由,實現流量過濾。
- 在已經部署路由匯總的網絡中,用于防止數據轉發(fā)出現環(huán)路。
- 在部署了 NAT 的網絡中,用于防止數據轉發(fā)出現環(huán)路。
- 在 BGP 網絡中,用于發(fā)布特定網段的路由。
動態(tài)路由協(xié)議
靜態(tài)路由是手動添加完成的。如果有 100 個網段,一個路由器就需要設置將近 100 條路由信息。網絡使用過程中,不可避免的出現網段新增、刪除、修改等情況,這些更新的路由信息需要在所有路由器上進行設置。還有一個不可忽視的問題,一旦某個路由器出現故障,數據傳輸無法自動繞過故障節(jié)點,只能通過手動設置才能恢復正常。路由協(xié)議基本原理
路由器之間需要運行相同的路由協(xié)議,才能相互交換路由信息。每種路由協(xié)議都有自己的語言,即相應的路由協(xié)議報文。如果兩臺路由器啟動了相同的路由協(xié)議,那么就有了相互通信的基礎。不同的路由協(xié)議,有相同的目的,就是計算和維護路由表。通常工作過程包含 4 個階段:- 鄰居發(fā)現階段:運行了路由協(xié)議后,路由器會主動把自己的網段信息發(fā)送給相鄰的路由器。既可以使用廣播發(fā)送路由協(xié)議消息,也可以單播將路由協(xié)議消息發(fā)送給指定的鄰居路由器。
- 交換路由信息階段:發(fā)現鄰居后,每臺路由器都將自己的路由信息發(fā)送給相鄰的路由器,相鄰路由器又發(fā)送給下一個相鄰的路由器。經過一段時間后,每臺路由器都會收到網絡中所有的路由信息。
- 計算路由階段:每一臺路由器都會運行某種算法,計算出最終的路由表來。
- 維護路由階段:為了感知突然發(fā)送的網絡故障,比如:設備故障或線路中斷等,路由協(xié)議規(guī)定相鄰兩臺路由器之間,應該周期性發(fā)送協(xié)議報文。如果路由器在一段時間內,沒收到鄰居發(fā)來的協(xié)議報文,就認為鄰居路由器失效。
自治系統(tǒng)
隨著 IP 網絡的發(fā)展,網絡規(guī)模已經很大了,無論哪種路由協(xié)議都不能完成全網的路由計算,因此網絡分成了很多個自治系統(tǒng)( AS , Autonomous System )或路由選擇域 ( Routing Domain )。自治系統(tǒng)可以制定自己的路由策略,并管理自治系統(tǒng)內進行具體路由控制的路由器集合。每個自治系統(tǒng)都有一個唯一的自治系統(tǒng)編號,它的基本思路是希望通過不同的編號來區(qū)分不同的自治系統(tǒng)。通過路由協(xié)議和自治系統(tǒng)編號,路由器可以確定路由路徑和路由信息的交換方式。某個自治系統(tǒng)缺乏足夠的安全機制,就可以利用編號改變路徑回避它。自治系統(tǒng)的編號范圍是1 ~ 65535 ,其中 1 ~ 64511 是注冊的因特網編號,64512 ~ 65535 是專用網絡編號。EGP 和 IGP
自治系統(tǒng)(路由選擇域)內部動態(tài)路由使用的協(xié)議是域內路由協(xié)議,即 IGP 。而自治系統(tǒng)之間的路由控制使用的是域間路由協(xié)議,即 EGP 。IGP 和 EGP 的關系,跟 IP 地址網絡號和主機號的關系類似。根據 IP 地址的網絡號在網絡中進行路由選擇,根據主機號在網段內部進行主機識別一樣。既可以根據 ?EGP 在區(qū)域網絡之間進行路由選擇,也可以根據 IGP 在區(qū)域網絡內部進行主機識別。路由協(xié)議被分為 EGP 和 IGP 兩個層次。沒有 EGP 就不可能有世界上各個不同機構網絡之間的通信,沒有 IGP 機構內部也就不可能進行通信。IGP 是指在同一個自治系統(tǒng)內交換路由信息的路由協(xié)議。RIP 、RIP2 、OSPF 屬于 IGP 。IGP 的主要目的是發(fā)現和計算自治系統(tǒng)內的路由信息。EGP 與 IGP 不同,EGP 用于連接不同的自治系統(tǒng),并在不同自治系統(tǒng)間交換路由信息。EGP 的主要目的是使用路由策略和路由過濾等手段,控制路由信息在自治系統(tǒng)間的傳播。BGP 屬于 EGP 。動態(tài)路由協(xié)議類型
按照路由的算法和路由信息的交換方式,路由協(xié)議可以分為距離矢量( Distance-Vector ,D-V )路由協(xié)議和鏈路狀態(tài)( Link-State )路由協(xié)議。其中典型的距離矢量協(xié)議是 RIP ,典型的鏈路狀態(tài)協(xié)議是 OSPF 。距離矢量路由協(xié)議
距離矢量路由協(xié)議指的是基于距離矢量的路由協(xié)議,RIP 是最具代表性的距離矢量路由協(xié)議。距離矢量這個概念包含兩個關鍵的信息:距離和方向,其中距離是指到達目的網絡的度量值(即所要經過路由器的個數),而方向指的是到達目的網絡的下一跳設備。鏈路狀態(tài)路由協(xié)議
運行鏈路狀態(tài)路由協(xié)議的路由器會使用一些特殊的信息描述網絡的拓撲結構和 IP 網段,這些信息被稱為鏈路狀態(tài)信息( LSA ),所有路由器都會產生自己直連接口的鏈路狀態(tài)信息。路由協(xié)議的性能指標
不同的路由協(xié)議,有不同的特點。各個路由協(xié)議的性能指標體現如下:- 協(xié)議計算的正確性:是指路由協(xié)議的算法會不會產生錯誤的路由導致網絡環(huán)路。不同的路由協(xié)議使用的算法不同,因此路由正確性也不相同。鏈路狀態(tài)路由協(xié)議(如 OSPF )在算法上杜絕了產生路由環(huán)路的可能性,比距離矢量路由協(xié)議更優(yōu)。
- 路由收斂速度:路由收斂是指全網路由器的路由表達到一致狀態(tài)。收斂速度快,意味著網絡拓撲結構發(fā)生變化時,路由器能夠更快的感知,并及時更新相應的路由信息。OSPF 、BGP 等協(xié)議的收斂速度快于 RIP 。
- 協(xié)議所占的系統(tǒng)開銷:路由器在運行路由協(xié)議時,需要消耗的系統(tǒng)資源,比如:CPU 、內存等。工作原理的不同,各個路由協(xié)議對系統(tǒng)資源的需求也不同。OSPF 路由技術的系統(tǒng)開銷要大于 RIP 協(xié)議。
- 協(xié)議自身的安全性:是指協(xié)議設計時,有沒有考慮防止網絡攻擊。OSPF 、RIPv2 有相應的防止攻擊的認證方法,而 RIPv1 沒有。
- 協(xié)議適用網絡規(guī)模:不同路由協(xié)議所適用的網絡規(guī)模、拓撲結構不同。RIP 協(xié)議有 16 跳的限制,所以只能應用在較小規(guī)模的網絡中;而 OSPF 可以應用在幾百臺路由器的大規(guī)模網絡中;BGP 能夠管理全世界所有的路由器,其所管理的網絡規(guī)模大小只受系統(tǒng)資源的限制。
主要路由協(xié)議
各種路由協(xié)議都需要使用 IP 來進行報文封裝,但其細節(jié)有所不同。RIP 協(xié)議是最早的路由協(xié)議,是為小型網絡中提供簡單易用的動態(tài)路由。RIP 協(xié)議報文采用 UDP 封裝,端口號是 520 。由于 UDP 是不可靠的傳輸層協(xié)議,所以 RIP 協(xié)議需要周期性的廣播協(xié)議報文來確保鄰居收到路由信息。OSPF 是目前應用最廣泛的路由協(xié)議,可為大中型網絡提供分層的、可靠的路由服務。OSFP 直接采用 IP 進行封裝,所有協(xié)議報文都由 IP 封裝后進行傳輸,協(xié)議號是 89 。IP 是盡力而為的網絡層協(xié)議,本身是不可靠的,所以為了保證傳輸的可靠性,OSPF 采用了復雜的確認機制來保證傳輸可靠。BGP 采用 TCP 來保證協(xié)議傳輸的可靠性,TCP 端口號是 179 。BGP 不需要自己設計可靠傳輸機制,降低了協(xié)議報文的復雜度和開銷。微信公眾號后臺回復關鍵字“加群”,添加小編微信,拉你入技術群。





