什么是Internet路由
路由概述
路由的過程可以概述為一個節(jié)點找到通往每個可能目的地的路徑。路由出現(xiàn)在從第一層到第七層的每一層中。人們所熟悉的路由是出現(xiàn)在第三層(網(wǎng)絡(luò)層)的,因此我們也只討論第三層的IP路由。
交換路由信息的協(xié)議聯(lián)接世界上的許多路由器,盡管這些路由器并不同類,通過路由表還是可以提供它們共同的網(wǎng)絡(luò)視圖。路由表為路由器存儲了到達網(wǎng)絡(luò)上任一目的地所需要的一切必要的信息。
路由協(xié)議
各種各樣的路由協(xié)議被用來填寫網(wǎng)絡(luò)中的路由表。象BGP,OSPF,RIP和ISIS這樣的協(xié)議可以傳輸給所有的路由器一個正確和一致的網(wǎng)絡(luò)視圖。
路由協(xié)議想要實現(xiàn)目標
你能夠想象如果每個路由器都存儲從它的節(jié)點所能到達的每個目標點所需的信息,很可能該路由器會積累一張龐大的路由表。由于物理上(cpu,內(nèi)存)的限制路由器很難有時就根本不可能處理一個龐大的路由表。因此在不影響到達每個目的地的能力的情況下,我們要使路由表最小化。例如,一個路由器通過連接到另一個路由器一個DS1鏈路連接到Internet,那么這個路由器可以將Internet上所有節(jié)點的信息都存儲,或者它也可以將所有DS1串行鏈路外的非本地的信息都不存儲。也就是說路由器沒有在它的路由表中存儲任何有關(guān)數(shù)據(jù)“包”要尋找的非本地網(wǎng)絡(luò)目的地的信息,而是將這些“包”發(fā)送到串行鏈路另一端的路由器,由這個路由器來提供必要的信息。我們常把像本例中我們所說的在串行DS1鏈路另一端的路由器稱為“Gateway of Last Resort”。這種簡單的小把戲可以替路由表節(jié)省30個數(shù)量級的條目。路由信息沒有必要被過于頻繁地在路由器之間交換。通常路由表中的攪拌器給任何路由器所能提供的貧乏的內(nèi)存和CPU施加了許多不必要的壓力。信息的復(fù)制不應(yīng)該影響路由器的轉(zhuǎn)發(fā)操作。盡管沒有必要每毫秒都刷新路由表,當(dāng)然也不能每隔一個星期才刷新一次路由表。路由的一重要的目標就是為主機提供能夠準確反映當(dāng)前網(wǎng)絡(luò)狀態(tài)的一張路由表。
路由器最重要的操作是將接收的包發(fā)送到正確的路徑。未經(jīng)路由的包可能會導(dǎo)致數(shù)據(jù)丟失。而路由表的不一致將會導(dǎo)致路由環(huán)路并使某個數(shù)據(jù)包在兩個相鄰的界面之間被循環(huán)發(fā)送。
人們十分希望所有的路由器都能有快速的收斂性。收斂性可以被非正式地定義為計量所有路由器獲得一致的網(wǎng)絡(luò)視圖的速度的單位。人們希望有極小的收斂時間,因為如此網(wǎng)絡(luò)上的每個路由器即使在網(wǎng)絡(luò)拓撲(即網(wǎng)絡(luò)視圖)被嚴重改變的情況下也能準確地反映當(dāng)前的網(wǎng)絡(luò)拓撲。當(dāng)網(wǎng)絡(luò)拓撲被改變時,每個路由器必須傳輸數(shù)據(jù)以幫助其它路由器來收斂出正確的網(wǎng)絡(luò)視圖。但是在刷新路由表時快速收斂也存在著它的問題。如果一個鏈路在迅速地振動(一會兒斷開,一會兒合上),它會產(chǎn)生大量的安裝和撤銷的請求。這個鏈路最終將會耗盡網(wǎng)絡(luò)上每個路由器的資源,因為其它路由器被強迫快速安裝或撤消這個路由。因此,即使快速收斂是路由協(xié)議的目標,它也不是所有網(wǎng)絡(luò)難題的萬能藥。
距離矢量路由
距離矢量路由協(xié)議向路由器的所有鄰居分發(fā)一張記錄形式為<目標,開銷>的列表。這些記錄為網(wǎng)絡(luò)中的每個非本節(jié)點的其它節(jié)點賦上了開銷這個值。值得注意的是這些信息只分發(fā)給源路由器的鄰路由器。這里的鄰路由器常常是物理上的,但在eBGP中也有適用于邏輯上的情況。開銷的意思是從源路由器到目標節(jié)點的鏈路開銷的總和。源路由器定期地刷新它的距離矢量記錄并把記錄分發(fā)給它的鄰路由器。鄰路由器將過去接收到的記錄與現(xiàn)在的比較,如果過去的開銷較小路由器將沿過去接收的距離矢量記錄所指的路徑發(fā)送輸出。
許多距離矢量在實際使用時將會碰到無窮大的問題。例如,我們假設(shè)所有的鏈路都有一個開銷單元并且每一對相鄰節(jié)點之間的鏈路對應(yīng)一個單元。如果路由器X連接到路由器Y并且路由器Y連接到路由器Z如圖1,我們將會發(fā)現(xiàn)無窮大的問題。Y知道到Z要有1個單元的開銷并且X知道到Z要2個單元的開銷。假設(shè)鏈路YZ關(guān)閉,這條鏈路的開銷就成為無窮大(如圖2)?,F(xiàn)在Y知道到達Z的開銷是無窮大,它就將這個距離矢量路由發(fā)送給X。假設(shè)X這時發(fā)送給Y一個距離矢量路由聲稱它到達Z要2個單元的開銷?,F(xiàn)在Y就會認為它能通過X到達Z,它就發(fā)送給X一個刷新的距離矢量路由聲稱它到達Z的開銷是3個單元(如 圖3)。請注意X沒有想到Y(jié)發(fā)給它的這個距離矢量路由是由它發(fā)送給Y的那個距離矢量路由推算來的。這就是距離矢量路由的嚴重缺陷,在它們未改進的結(jié)構(gòu)中不包含路由障礙的信息。正如圖例所示路由器將會不斷改變到Z的路徑信息。X和Y這兩個路由器將會永遠交換這個有關(guān)Z路由器的路徑信息或者直到開銷單元的值到達某一個事先約定的無窮大的值(例如,在RIP中是15)。
X--------------------Y--------------------Z
Y:1 X:1 X:2
Z:2 Z:1 Y:1
[ 圖一 ]
X--------------------Y--------* *---------Z
Y:1 <------------- Z:無窮大
Z:2 -------------> X:1
[ 圖二 ]
X--------------------Y--------* *---------Z
Z:無窮大(從 Y) -> X:1
Y:1 <------------- Z:3
[ 圖三 ]
使用路徑矢量路由就可以解決無窮大的問題。每個距離矢量也包括他所通過的路徑(如圖4)。路由器如果接收到一個路徑矢量中包含自己的刷新記錄,路由器將不會刷新該記錄(如圖5)。邊界網(wǎng)關(guān)協(xié)議(The Border Gateway Protocol)就使用了上述的方法以解決無窮大的問題。很明顯如果你想使路由表包含路由器所傳輸?shù)腁S(Autonomous Systems on the internet)路徑信息,你將必須要向路由表中添入更多的信息。因此BGP的設(shè)計者決定犧牲一點路由器能夠承受的起的存儲空間和處理能力。
X--------------------Y--------------------Z
Y:1 (Y) X:1 (X) X:2 (YX)
Z:2 (YZ) Z:1 (Z) Y:1 (Y)
[ 圖四 ]
X--------------------Y--------* *---------Z
Y:1 (Y) X:1 (X)
Z:2 (Y Z) Z:infinity
[ 圖五 ]
另一個無窮大問題的解決之道是分離范圍。主要思想是,如果鄰路由器處在通往目的地的路徑上的第二個節(jié)點,路由器就不向該鄰路由器廣播該路徑。這個解決的辦法可以用剛才的例子來說明。因為到Z的路徑是從X通過Y再到Z,又因為Y是X的鄰路由器,所以該路徑從X廣播時Y不被廣播。
鏈路狀態(tài)路由
一個路由器在使用鏈路狀態(tài)路由時,它將會向網(wǎng)絡(luò)上所有其它的路由器分發(fā)它到它鄰路由器的距離。這就使每個路由器不用知道從某一源節(jié)點到目的節(jié)點的開銷,該路由器就可以產(chǎn)生一張路由表。環(huán)路的問題不會出現(xiàn),因為每個路由器都擁有整個網(wǎng)絡(luò)的拓撲。主要思想是一個路由器產(chǎn)生有3個部分的記錄包含源路由器(它自己)、鄰路由器和到鄰路由器的開銷。因此,如果路由器A通過一條開銷為3的鏈路連接到路由器B,并且路由器A通過一條開銷為5的鏈路連接到路由器C,那么路由器將會向網(wǎng)絡(luò)上所有的路由器廣播鏈路狀態(tài)包(LSPs)和。每個路由器將可以從接收到的LSPs中推算出一條通向目的節(jié)點的最短路徑。
很顯然,LSP是收斂過程中的一個組成部分。如果向網(wǎng)絡(luò)中加入了錯誤的LSP。將會導(dǎo)致錯誤的路由信息(會使包沿比原來更長的路徑傳輸)甚至產(chǎn)生路由黑洞。如果路由器C向其它路由器廣播一條到他的鄰路由器的路徑信息,但當(dāng)該鏈路斷開時路由器C撤回了剛才的廣播。不幸的是第二個LSP先到而第一個LSP先到,這時其它路由器的路由表就不能正確地反映網(wǎng)絡(luò)的拓撲,而只能等到另一個正確的LSP來到。
為了解決這個問題,LSP引進了序列碼。因此網(wǎng)絡(luò)上所有的路由器都會以一些值作為起始值來初始化他們的序列碼,然后在廣播他們的LSP。這就解決了剛才的問題。
當(dāng)使用序列碼時會碰到序列碼空間是有限這一問題。LSPs可以用的序列碼都被設(shè)置成有限值。因此,當(dāng)序列碼到達最大值后,有要從最小值重新開始。這就給路由器在比較鏈路狀態(tài)的當(dāng)前記錄和刷新記錄時帶來困難,因為序列碼大的有優(yōu)先權(quán)。為了解決這個問題,可以為LSP定義一個最大老化時間。也就是說,如果路由器在X段時間內(nèi)沒有收到刷新記錄,它就將現(xiàn)有的記錄丟棄而去等待更新的記錄。要注意必須使到目的地的路徑信息無效。例如,當(dāng)路由器Y連向某一局網(wǎng)的鏈路斷開時,路由器Y向路由器Z廣播了這條鏈路的信息,這時局網(wǎng)中的路由器們此時還在認為它們?nèi)钥梢缘竭_Z。如果它們在最大老化時間內(nèi)接收不到刷新記錄,它們就會假設(shè)到Y(jié)的鏈路已經(jīng)不可達。這樣所有的路由器的路由表才會一致,路由器Y和Z也可以使用有限的序列碼。
序列碼的初始化也是這個問題中另一個重要的方面。假設(shè)路由器Y重起了,而此時網(wǎng)絡(luò)又開始重新計算路徑。當(dāng)該路由器的鏈路狀態(tài)協(xié)議開始工作,它必須知道重新初始化它的序列碼為何值以使它和其它路由器保持一致。因此,它就廣播一個帶有特別的初始化集合的路徑信息。這條記錄會告訴其它路由器它需要那個序列碼,并且其它路由器會告訴它。
[1]
文章錄入:csh 責(zé)任編輯:csh相關(guān)文章
網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)之十七路由器原理、分類和選購
網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)之十七路由器原理、分類和選購...2007-09-09回歸正途,用Opteron 144打造高性價比服務(wù)器
回歸正途,用Opteron 144打造高性價比服務(wù)器...2007-09-09