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