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