路由的概念
在 TCP/IP 通信中,網絡層的作用是實現(xiàn)終端的點對點通信。IP 協(xié)議通過 IP 地址將數(shù)據(jù)包發(fā)送給目的主機,能夠讓互聯(lián)網上任何兩臺主機進行通信。IP 地址可以識別主機和路由器,路由器可以把全世界的網絡連接起來。
什么是路由器
路由器可以連接多個網絡。它有多個端口,分別連接不同的網絡區(qū)域。通過識別目的 IP 地址的網絡號,再根據(jù)路由表進行數(shù)據(jù)轉發(fā)。路由器會維護一張路由表,通過路由表的信息,路由器才能正確的轉發(fā) IP 報文。
什么是路由
路由是網絡設備根據(jù) IP 地址對數(shù)據(jù)進行轉發(fā)的操作。當路由器收到一個數(shù)據(jù)包時,它根據(jù)數(shù)據(jù)包的目的 IP 地址查詢路由表,如果有匹配的路由條目,就根據(jù)查詢結果將數(shù)據(jù)包轉發(fā)出去,如果沒有任何匹配的路由條目,則將數(shù)據(jù)包丟棄,這個過程就是 IP 路由。除了路由器,三層交換機、防火墻、負載均衡設備甚至主機等設備都可以進行路由操作,只要這個設備支持路由功能。
什么是路由表
為了將數(shù)據(jù)包發(fā)給目的節(jié)點,所有節(jié)點都維護著一張路由表。路由表是路由器通過各種途徑獲得的路由條目,每一個路由條目包含目的網段地址 / 子網掩碼、路由協(xié)議、出接口、下一跳 IP 地址、路由優(yōu)先級和度量值等信息。路由表記錄 IP 包在下一跳應該發(fā)給哪個路由器。IP 包根據(jù)路由表在各個數(shù)據(jù)鏈路上傳輸。
路由表來源
一個實際的網絡中,一臺路由器通常包含多條路由條目,這些路由條目從不同的來源獲取。路由表的來源可分為三類,分別是直連路由、靜態(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)路是數(shù)據(jù)轉發(fā)形成死循環(huán),不能正確到達目的地。
路由環(huán)路的主要生成原因是配置錯誤的路由或網絡規(guī)劃錯誤導致。比如:在兩臺路由器上配置到相同目的地址的路由表項,下一跳互相指向對方,就會造成路由環(huán)路。另外某些動態(tài)路由協(xié)議配置不當,也有可能產生環(huán)路。
黑洞路由
一條路由條目,無論是靜態(tài)的還是動態(tài)的,都需要關聯(lián)到一個出接口,出接口指的是設備要到達目的網絡是的出站接口。路由的出接口可以是這個設備的物理接口,如千兆網口,也可以是邏輯接口,如 VLAN 接口,或者是隧道接口等。其中有一種接口非常特殊,那就是 Null 接口,只有一個編號,那就是 0 。Null0 是一個系統(tǒng)保留的邏輯接口,當網絡設備在轉發(fā)數(shù)據(jù)包時,如果使用出接口 Null0 的路由,那么數(shù)據(jù)包將被丟棄,就像被扔進了一個黑洞里,因此出接口為 Null0 的路由條目又被稱為黑洞路由。
黑洞路由是一種非常有用的路由條目,適用于如下場景:
在網絡使用中,按需將數(shù)據(jù)包指向黑洞路由,實現(xiàn)流量過濾。
在已經部署路由匯總的網絡中,用于防止數(shù)據(jù)轉發(fā)出現(xiàn)環(huán)路。
在部署了 NAT 的網絡中,用于防止數(shù)據(jù)轉發(fā)出現(xiàn)環(huán)路。
在 BGP 網絡中,用于發(fā)布特定網段的路由。
動態(tài)路由協(xié)議
靜態(tài)路由是手動添加完成的。如果有 100 個網段,一個路由器就需要設置將近 100 條路由信息。網絡使用過程中,不可避免的出現(xiàn)網段新增、刪除、修改等情況,這些更新的路由信息需要在所有路由器上進行設置。還有一個不可忽視的問題,一旦某個路由器出現(xiàn)故障,數(shù)據(jù)傳輸無法自動繞過故障節(jié)點,只能通過手動設置才能恢復正常。
如果是使用動態(tài)路由,提前設置好路由協(xié)議,路由器之間會定期交換路由信息,路由器會知道網絡中其它網段的信息,動態(tài)生成路由表。如果網絡出現(xiàn)變化,網段需要增刪改時,只需要在相應的路由器上配置動態(tài)路由即可。不需要像靜態(tài)路由那樣,在所有路由器上進行修改。對于大型網絡,路由器個數(shù)較多時,主要使用動態(tài)路由協(xié)議。
即使網絡上的節(jié)點出現(xiàn)故障,只要有一個可繞行的其它路徑,那么路由器的路由表會自動重新設置,數(shù)據(jù)包也會自動選擇這個路徑。
采用路由協(xié)議后,網絡拓撲結果變化的響應速度會大大提升。無論網絡正常的增刪改,還是異常的網絡故障,相鄰的路由器都會檢測到變化,會把拓撲的變化通知網絡中其它的路由器,使它們的路由表產生相應的變化。這個過程比手動對路由表的修改要快很多,也準確很多。
對于少于 10 個路由器的小型網絡,靜態(tài)路由或許已經能夠滿足需求,但是在大中型網絡中,通常會使用動態(tài)路由協(xié)議,或者動態(tài)路由與靜態(tài)路由協(xié)議相結合的方式來建設這個網絡。
路由協(xié)議基本原理
路由器之間需要運行相同的路由協(xié)議,才能相互交換路由信息。每種路由協(xié)議都有自己的語言,即相應的路由協(xié)議報文。如果兩臺路由器啟動了相同的路由協(xié)議,那么就有了相互通信的基礎。不同的路由協(xié)議,有相同的目的,就是計算和維護路由表。通常工作過程包含 4 個階段:
鄰居發(fā)現(xiàn)階段:運行了路由協(xié)議后,路由器會主動把自己的網段信息發(fā)送給相鄰的路由器。既可以使用廣播發(fā)送路由協(xié)議消息,也可以單播將路由協(xié)議消息發(fā)送給指定的鄰居路由器。
交換路由信息階段:發(fā)現(xiàn)鄰居后,每臺路由器都將自己的路由信息發(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 地址網絡號和主機號的關系類似。根據(jù) IP 地址的網絡號在網絡中進行路由選擇,根據(jù)主機號在網段內部進行主機識別一樣。既可以根據(jù) ?EGP 在區(qū)域網絡之間進行路由選擇,也可以根據(jù) IGP 在區(qū)域網絡內部進行主機識別。
路由協(xié)議被分為 EGP 和 IGP 兩個層次。沒有 EGP 就不可能有世界上各個不同機構網絡之間的通信,沒有 IGP 機構內部也就不可能進行通信。
IGP 是指在同一個自治系統(tǒng)內交換路由信息的路由協(xié)議。RIP 、RIP2 、OSPF 屬于 IGP 。IGP 的主要目的是發(fā)現(xiàn)和計算自治系統(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é)議。距離矢量這個概念包含兩個關鍵的信息:距離和方向,其中距離是指到達目的網絡的度量值(即所要經過路由器的個數(shù)),而方向指的是到達目的網絡的下一跳設備。
每一臺運行距離矢量路由協(xié)議的路由器會周期性的將自己的路由表通告出去,相鄰的路由器收到路由信息并更新自己的路由表,再繼續(xù)向其它直連的路由器通告路由信息,最終網絡中的每臺路由器都能知道各個網段的路由,這個過程稱為路由的泛洪過程。
路由器之間互換目的網絡的方向和距離的信息,并以這些信息更新路由表。這種方法在處理上比較簡單,不過由于只有距離和方向的信息,所以當網絡構造變得復雜時,在獲得穩(wěn)定的路由信息之前需要消耗一定時間(即路由收斂時間長),也極易發(fā)生路由循環(huán)等問題。
鏈路狀態(tài)路由協(xié)議
運行鏈路狀態(tài)路由協(xié)議的路由器會使用一些特殊的信息描述網絡的拓撲結構和 IP 網段,這些信息被稱為鏈路狀態(tài)信息( LSA ),所有路由器都會產生自己直連接口的鏈路狀態(tài)信息。
路由器將網絡中泛洪的鏈路狀態(tài)信息搜集起來,存入一個數(shù)據(jù)庫中,這個數(shù)據(jù)庫就是 LSDB (鏈路狀態(tài)數(shù)據(jù)庫),LSDB 是對整個網絡的拓撲結構及 IP 網段的描述,路由器擁有相同的 LSDB 。對于任何一臺路由器,網絡拓撲都完全一樣。
接下來所有的路由器都基于 LSDB 使用最短路由優(yōu)先算法進行計算,得到一棵已自己為根的、無環(huán)路的最短路徑樹,并將得到的路由加載到路由表中。
鏈路狀態(tài)算法使用增量更新機制,只有當鏈路的狀態(tài)發(fā)生變化時,才發(fā)送路由更新信息。
相比距離矢量路由協(xié)議,鏈路狀態(tài)路由協(xié)議具有更大的擴展性和更快的收斂速度,但是它的算法消耗更多的內存和 CPU 處理能力。
路由協(xié)議的性能指標
不同的路由協(xié)議,有不同的特點。各個路由協(xié)議的性能指標體現(xiàn)如下:
協(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é)議,本身是不可靠的,所以為了保證傳輸?shù)目煽啃?,OSPF 采用了復雜的確認機制來保證傳輸可靠。
BGP 采用 TCP 來保證協(xié)議傳輸?shù)目煽啃裕?strong>TCP 端口號是 179 。BGP 不需要自己設計可靠傳輸機制,降低了協(xié)議報文的復雜度和開銷。
幾種主要的路由協(xié)議表如下:
編輯:黃飛
?
評論