路由器工作原理是怎樣的
路由器工作原理是怎樣的
本文通過闡述TCP/IP網(wǎng)絡(luò)中路由器的基本工作原理,介紹了IP路由器的幾大功能,給出了靜態(tài)路由協(xié)議和動態(tài)路由協(xié)議,以及內(nèi)部網(wǎng)關(guān)協(xié)議和外部網(wǎng)關(guān)協(xié)議的概念,同時簡要介紹了目前最常見的RIP、OSPF、BGP和BGP-4這幾種路由協(xié)議,然后描述了路由算法的設(shè)計目標(biāo)和種類,著重介紹了鏈路狀態(tài)法和距離向量法。在文章的最后,扼要講述了新一代路由器的特征。
近十年來,隨著計算機(jī)網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大,大型互聯(lián)網(wǎng)絡(luò)(如Internet)的迅猛發(fā)展,路由技術(shù)在網(wǎng)絡(luò)技術(shù)中已逐漸成為關(guān)鍵部分,路由器也隨之成為最重要的網(wǎng)絡(luò)設(shè)備。用戶的需求推動著路由技術(shù)的發(fā)展和路由器的普及,人們已經(jīng)不滿足于僅在本地網(wǎng)絡(luò)上共享信息,而希望最大限度地利用全球各個地區(qū)、各種類型的網(wǎng)絡(luò)資源。而在目前的情況下,任何一個有一定規(guī)模的計算機(jī)網(wǎng)絡(luò)(如企業(yè)網(wǎng)、校園網(wǎng)、智能大廈等),無論采用的是快速以大網(wǎng)技術(shù)、FDDI技術(shù),還是ATM技術(shù),都離不開路由器,否則就無法正常運作和管理。
1 網(wǎng)絡(luò)互連
把自己的網(wǎng)絡(luò)同其它的網(wǎng)絡(luò)互連起來,從網(wǎng)絡(luò)中獲取更多的信息和向網(wǎng)絡(luò)發(fā)布自己的消息,是網(wǎng)絡(luò)互連的最主要的動力。網(wǎng)絡(luò)的互連有多種方式,其中使用最多的是網(wǎng)橋互連和路由器互連。
1.1 網(wǎng)橋互連的網(wǎng)絡(luò)
網(wǎng)橋工作在OSI模型中的第二層,即鏈路層。完成數(shù)據(jù)幀(frame)的轉(zhuǎn)發(fā),主要目的是在連接的網(wǎng)絡(luò)間提供透明的通信。網(wǎng)橋的轉(zhuǎn)發(fā)是依據(jù)數(shù)據(jù)幀中的源地址和目的地址來判斷一個幀是否應(yīng)轉(zhuǎn)發(fā)和轉(zhuǎn)發(fā)到哪個端口。幀中的地址稱為“MAC”地址或“硬件”地址,一般就是網(wǎng)卡所帶的地址。
網(wǎng)橋的作用是把兩個或多個網(wǎng)絡(luò)互連起來,提供透明的通信。網(wǎng)絡(luò)上的設(shè)備看不到網(wǎng)橋的存在,設(shè)備之間的通信就如同在一個網(wǎng)上一樣方便。由于網(wǎng)橋是在數(shù)據(jù)幀上進(jìn)行轉(zhuǎn)發(fā)的,因此只能連接相同或相似的網(wǎng)絡(luò)(相同或相似結(jié)構(gòu)的數(shù)據(jù)幀),如以太網(wǎng)之間、以太網(wǎng)與令牌環(huán)(token ring)之間的互連,對于不同類型的網(wǎng)絡(luò)(數(shù)據(jù)幀結(jié)構(gòu)不同),如以太網(wǎng)與X.25之間,網(wǎng)橋就無能為力了。
網(wǎng)橋擴(kuò)大了網(wǎng)絡(luò)的規(guī)模,提高了網(wǎng)絡(luò)的性能,給網(wǎng)絡(luò)應(yīng)用帶來了方便,在以前的網(wǎng)絡(luò)中,網(wǎng)橋的應(yīng)用較為廣泛。但網(wǎng)橋互連也帶來了不少問題:一個是廣播風(fēng)暴,網(wǎng)橋不阻擋網(wǎng)絡(luò)中廣播消息,當(dāng)網(wǎng)絡(luò)的規(guī)模較大時(幾個網(wǎng)橋,多個以太網(wǎng)段),有可能引起廣播風(fēng)暴(broadcasting storm),導(dǎo)致整個網(wǎng)絡(luò)全被廣播信息充滿,直至完全癱瘓。第二個問題是,當(dāng)與外部網(wǎng)絡(luò)互連時,網(wǎng)橋會把內(nèi)部和外部網(wǎng)絡(luò)合二為一,成為一個網(wǎng),雙方都自動向?qū)Ψ酵耆_放自己的網(wǎng)絡(luò)資源。這種互連方式在與外部網(wǎng)絡(luò)互連時顯然是難以接受的。問題的主要根源是網(wǎng)橋只是最大限度地把網(wǎng)絡(luò)溝通,而不管傳送的信息是什么。
1.2 路由器互連網(wǎng)絡(luò)
路由器互連與網(wǎng)絡(luò)的協(xié)議有關(guān),我們討論限于TCP/IP網(wǎng)絡(luò)的情況。
路由器工作在OSI模型中的第三層,即網(wǎng)絡(luò)層。路由器利用網(wǎng)絡(luò)層定義的“邏輯”上的網(wǎng)絡(luò)地址(即IP地址)來區(qū)別不同的網(wǎng)絡(luò),實現(xiàn)網(wǎng)絡(luò)的互連和隔離,保持各個網(wǎng)絡(luò)的獨立性。路由器不轉(zhuǎn)發(fā)廣播消息,而把廣播消息限制在各自的網(wǎng)絡(luò)內(nèi)部。發(fā)送到其他網(wǎng)絡(luò)的數(shù)據(jù)茵先被送到路由器,再由路由器轉(zhuǎn)發(fā)出去。
IP路由器只轉(zhuǎn)發(fā)IP分組,把其余的部分擋在網(wǎng)內(nèi)(包括廣播),從而保持各個網(wǎng)絡(luò)具有相對的獨立性,這樣可以組成具有許多網(wǎng)絡(luò)(子網(wǎng))互連的大型的網(wǎng)絡(luò)。由于是在網(wǎng)絡(luò)層的互連,路由器可方便地連接不同類型的網(wǎng)絡(luò),只要網(wǎng)絡(luò)層運行的是IP協(xié)議,通過路由器就可互連起來。
網(wǎng)絡(luò)中的設(shè)備用它們的網(wǎng)絡(luò)地址(TCP/IP網(wǎng)絡(luò)中為IP地址)互相通信。IP地址是與硬件地址無關(guān)的“邏輯”地址。路由器只根據(jù)IP地址來轉(zhuǎn)發(fā)數(shù)據(jù)。IP地址的結(jié)構(gòu)有兩部分,一部分定義網(wǎng)絡(luò)號,另一部分定義網(wǎng)絡(luò)內(nèi)的主機(jī)號。目前,在Internet網(wǎng)絡(luò)中采用子網(wǎng)掩碼來確定IP地址中網(wǎng)絡(luò)地址和主機(jī)地址。子網(wǎng)掩碼與IP地址一樣也是32bit,并且兩者是一一對應(yīng)的,并規(guī)定,子網(wǎng)掩碼中數(shù)字為“1”所對應(yīng)的IP地址中的部分為網(wǎng)絡(luò)號,為“0”所對應(yīng)的則為主機(jī)號。網(wǎng)絡(luò)號和主機(jī)號合起來,才構(gòu)成一個完整的IP地址。同一個網(wǎng)絡(luò)中的主機(jī)IP地址,其網(wǎng)絡(luò)號必須是相同的,這個網(wǎng)絡(luò)稱為IP子網(wǎng)。
通信只能在具有相同網(wǎng)絡(luò)號的IP地址之間進(jìn)行,要與其它IP子網(wǎng)的主機(jī)進(jìn)行通信,則必須經(jīng)過同一網(wǎng)絡(luò)上的某個路由器或網(wǎng)關(guān)(gateway)出去。不同網(wǎng)絡(luò)號的IP地址不能直接通信,即使它們接在一起,也不能通信。
路由器有多個端口,用于連接多個IP子網(wǎng)。每個端口的IP地址的網(wǎng)絡(luò)號要求與所連接的IP子網(wǎng)的網(wǎng)絡(luò)號相同。不同的端口為不同的網(wǎng)絡(luò)號,對應(yīng)不同的IP子網(wǎng),這樣才能使各子網(wǎng)中的主機(jī)通過自己子網(wǎng)的IP地址把要求出去的IP分組送到路由器上。
2 路由原理
當(dāng)IP子網(wǎng)中的一臺主機(jī)發(fā)送IP分組給同一IP子網(wǎng)的另一臺主機(jī)時,它將直接把IP分組送到網(wǎng)絡(luò)上,對方就能收到。而要送給不同IP于網(wǎng)上的主機(jī)時,它要選擇一個能到達(dá)目的子網(wǎng)上的路由器,把IP分組送給該路由器,由路由器負(fù)責(zé)把IP分組送到目的地。如果沒有找到這樣的路由器,主機(jī)就把IP分組送給一個稱為“缺省網(wǎng)關(guān)(default gateway)”的路由器上。“缺省網(wǎng)關(guān)”是每臺主機(jī)上的一個配置參數(shù),它是接在同一個網(wǎng)絡(luò)上的某個路由器端口的IP地址。
路由器轉(zhuǎn)發(fā)IP分組時,只根據(jù)IP分組目的IP地址的網(wǎng)絡(luò)號部分,選擇合適的端口,把IP分組送出去。同主機(jī)一樣,路由器也要判定端口所接的是否是目的子網(wǎng),如果是,就直接把分組通過端口送到網(wǎng)絡(luò)上,否則,也要選擇下一個路由器來傳送分組。路由器也有它的缺省網(wǎng)關(guān),用來傳送不知道往哪兒送的IP分組。這樣,通過路由器把知道如何傳送的IP分組正確轉(zhuǎn)發(fā)出去,不知道的IP分組送給“缺省網(wǎng)關(guān)”路由器,這樣一級級地傳送,IP分組最終將送到目的地,送不到目的地的IP分組則被網(wǎng)絡(luò)丟棄了。
目前TCP/IP網(wǎng)絡(luò),全部是通過路由器互連起來的,Internet就是成千上萬個IP子網(wǎng)通過路由器互連起來的國際性網(wǎng)絡(luò)。這種網(wǎng)絡(luò)稱為以路由器為基礎(chǔ)的網(wǎng)絡(luò)(router based network),形成了以路由器為節(jié)點的“網(wǎng)間網(wǎng)”。在“網(wǎng)間網(wǎng)”中,路由器不僅負(fù)責(zé)對IP分組的轉(zhuǎn)發(fā),還要負(fù)責(zé)與別的路由器進(jìn)行聯(lián)絡(luò),共同確定“網(wǎng)間網(wǎng)”的路由選擇和維護(hù)路由表。
路由動作包括兩項基本內(nèi)容:尋徑和轉(zhuǎn)發(fā)。尋徑即判定到達(dá)目的地的最佳路徑,由路由選擇算法來實現(xiàn)。由于涉及到不同的路由選擇協(xié)議和路由選擇算法,要相對復(fù)雜一些。為了判定最佳路徑,路由選擇算法必須啟動并維護(hù)包含路由信息的路由表,其中路由信息依賴于所用的路由選擇算法而不盡相同。路由選擇算法將收集到的不同信息填入路由表中,根據(jù)路由表可將目的網(wǎng)絡(luò)與下一站(nexthop)的關(guān)系告訴路由器。路由器間互通信息進(jìn)行路由更新,更新維護(hù)路由表使之正確反映網(wǎng)絡(luò)的拓?fù)渥兓?,并由路由器根?jù)量度來決定最佳路徑。這就是路由選擇協(xié)議(routing Protocol),例如路由信息協(xié)議(RIP)、開放式最短路徑優(yōu)先協(xié)議(OSPF)和邊界網(wǎng)關(guān)協(xié)議(BGP)等。
轉(zhuǎn)發(fā)即沿尋徑好的最佳路徑傳送信息分組。路由器首先在路由表中查找,判明是否知道如何將分組發(fā)送到下一個站點(路由器或主機(jī)),如果路由器不知道如何發(fā)送分組,通常將該分組丟棄;否則就根據(jù)路由表的相應(yīng)表項將分組發(fā)送到下一個站點,如果目的網(wǎng)絡(luò)直接與路由器相連,路由器就把分組直接送到相應(yīng)的端口上。這就是路由轉(zhuǎn)發(fā)協(xié)議(routed protocol)。
路由轉(zhuǎn)發(fā)協(xié)議和路由選擇協(xié)議是相互配合又相互獨立的概念,前者使用后者維護(hù)的路由表,同時后者要利用前者提供的功能來發(fā)布路由協(xié)議數(shù)據(jù)分組。下文中提到的路由協(xié)議,除非特別說明,都是指路由選擇協(xié)議,這也是普遍的習(xí)慣。
3 路由協(xié)議
典型的路由選擇方式有兩種:靜態(tài)路由和動態(tài)路由。
靜態(tài)路由是在路由器中設(shè)置的固定的路由表。除非網(wǎng)絡(luò)管理員干預(yù),否則靜態(tài)路由不會發(fā)生變化。由于靜態(tài)路由不能對網(wǎng)絡(luò)的改變作出反映,一般用于網(wǎng)絡(luò)規(guī)模不大、拓?fù)浣Y(jié)構(gòu)固定的網(wǎng)絡(luò)中。靜態(tài)路由的優(yōu)點是簡單、高效、可靠。在所有的路由中,靜態(tài)路由優(yōu)先級最高。當(dāng)動態(tài)路由與靜態(tài)路由發(fā)生沖突時,以靜態(tài)路由為準(zhǔn)。
動態(tài)路由是網(wǎng)絡(luò)中的路由器之間相互通信,傳遞路由信息,利用收到的路由信息更新路由器表的過程。它能實時地適應(yīng)網(wǎng)絡(luò)結(jié)構(gòu)的變化。如果路由更新信息表明發(fā)生了網(wǎng)絡(luò)變化,路由選擇軟件就會重新計算路由,并發(fā)出新的路由更新信息。這些信息通過各個網(wǎng)絡(luò),引起各路由器重新啟動其路由算法,并更新各自的路由表以動態(tài)地反映網(wǎng)絡(luò)拓?fù)渥兓?。動態(tài)路由適用于網(wǎng)絡(luò)規(guī)模大、網(wǎng)絡(luò)拓?fù)鋸?fù)雜的網(wǎng)絡(luò)。當(dāng)然,各種動態(tài)路由協(xié)議會不同程度地占用網(wǎng)絡(luò)帶寬和CPU資源。
靜態(tài)路由和動態(tài)路由有各自的特點和適用范圍,因此在網(wǎng)絡(luò)中動態(tài)路由通常作為靜態(tài)路由的補充。當(dāng)一個分組在路由器中進(jìn)行尋徑時,路由器首先查找靜態(tài)路由,如果查到則根據(jù)相應(yīng)的靜態(tài)路由轉(zhuǎn)發(fā)分組;否則再查找動