本書以Cisco硬件模擬器——Dynamips和GNS3為實驗平臺(模擬Cisco c1700、c2600、c3600、c3700、c7200系列路由器和交換機(jī)),以Cisco IOS(12.4版本)為操作系統(tǒng)平臺,講解了一系列緊扣計算機(jī)網(wǎng)絡(luò)理論知識,同時又貼近實戰(zhàn)的實驗內(nèi)容。 全書以計算機(jī)網(wǎng)絡(luò)TCP/IP體系結(jié)構(gòu)為組織線索,分別為網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、運輸層和應(yīng)用層上的重要知識點提供了配套實驗,依次介紹了實驗環(huán)境的安裝使用、以太網(wǎng)交換機(jī)和路由器的基本配置方法、局域網(wǎng)技術(shù)(VTP、STP協(xié)議以及VLAN間路由)和廣域網(wǎng)技術(shù)(PPP封裝和PAP、CHAP認(rèn)證)、路由協(xié)議(靜態(tài)路由協(xié)議、路由信息協(xié)議和OSPF路由協(xié)議)、訪問控制列表(ACL)、網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT),以及應(yīng)用層上的動態(tài)主機(jī)配置協(xié)議(DHCP)和域名系統(tǒng)(DNS)。 本書適合作為高等院校計算機(jī)、軟件工程等專業(yè)開設(shè)了“計算機(jī)網(wǎng)絡(luò)”課程的本科生學(xué)習(xí)“計算機(jī)網(wǎng)絡(luò)”的配套實驗教材,同時可供對計算機(jī)網(wǎng)絡(luò)設(shè)備需進(jìn)一步了解的廣大開發(fā)人員和研究人員作為參考。
第5章
路 由 協(xié) 議
本章學(xué)習(xí)目標(biāo)
掌握路由協(xié)議的分類、作用和工作原理;
理解路由表各項的含義;
掌握路由協(xié)議配置方法;
掌握對路由協(xié)議配置的檢查與測試;
能夠使用路由技術(shù)實現(xiàn)網(wǎng)絡(luò)互通。
本章首先向讀者介紹路由協(xié)議的作用、工作原理和類型,接著分別介紹靜態(tài)路由、RIP動態(tài)路由協(xié)議和OSPF動態(tài)路由協(xié)議三種路由協(xié)議的配置方法,讓讀者能夠自行使用路由協(xié)議實現(xiàn)網(wǎng)絡(luò)互通。
5.1路由協(xié)議概述
通過網(wǎng)絡(luò)接口層上的設(shè)備(如交換機(jī)),可以組建一個個獨立的網(wǎng)絡(luò),這些網(wǎng)絡(luò)各自采用不同網(wǎng)絡(luò)號的IP地址,邏輯上是分開的。路由器(Router)用于連接多個邏輯上分開的網(wǎng)絡(luò),轉(zhuǎn)發(fā)這些網(wǎng)絡(luò)之間的通信數(shù)據(jù)。同時,網(wǎng)絡(luò)接口層上的協(xié)議多種多樣(如前面學(xué)習(xí)過的以太網(wǎng)CSMA/CD和廣域網(wǎng)的PPP協(xié)議等),基于這些不同的協(xié)議,組建各種異構(gòu)的網(wǎng)絡(luò),這些異構(gòu)網(wǎng)絡(luò)無法通信。而路由器為異構(gòu)網(wǎng)絡(luò)提供了互聯(lián)的機(jī)制,實現(xiàn)了異構(gòu)網(wǎng)絡(luò)之間的數(shù)據(jù)通信。
路由信息是用于指導(dǎo)網(wǎng)絡(luò)間數(shù)據(jù)(IP數(shù)據(jù)報)通信的路徑信息。由于網(wǎng)絡(luò)路徑選擇是一個非常復(fù)雜的問題,路由器之間往往需要通過一定的協(xié)議通信才能獲取這些路由信息。路由協(xié)議是路由器事先約定好的交換路由信息的規(guī)定和標(biāo)準(zhǔn)。路由協(xié)議通過路由信息的交換生成并維護(hù)轉(zhuǎn)發(fā)引擎所需的路由表。路由協(xié)議作為TCP/IP協(xié)議族中重要成員之一,其尋徑過程實現(xiàn)的好壞將顯著地影響整個Internet網(wǎng)絡(luò)的通信效率。
1. 路由原理
路由是把數(shù)據(jù)從一個網(wǎng)絡(luò)轉(zhuǎn)發(fā)到另一個網(wǎng)絡(luò)的過程,完成這個過程的設(shè)備就是路由器。數(shù)據(jù)在網(wǎng)絡(luò)上以數(shù)據(jù)包為單元傳送。每個數(shù)據(jù)包都攜帶兩個邏輯地址(在Internet中這個邏輯地址就是IP地址),一個是數(shù)據(jù)的源地址,另一個是數(shù)據(jù)的目的地地址,所以每個數(shù)據(jù)包可以被獨立地轉(zhuǎn)發(fā)。以圖5.1為例解釋一下路由過程。
圖5.1路由過程示意圖
在圖5.1中,兩臺路由器R1和R2使用兩條鏈路把兩個網(wǎng)絡(luò)連接起來,它們是192.168.1.0/24和192.168.2.0/24。兩臺路由器互連又占用了兩個網(wǎng)段號,它們是10.0.0.0/8和11.0.0.0/8。
假如Host1向Host2發(fā)送數(shù)據(jù)。拓?fù)滹@示,Host1和Host2不在同一個網(wǎng)絡(luò),數(shù)據(jù)要到達(dá)Host2有兩條路可選,一條路是由路由器R1的s0/0接口和路由器R2的s0/0接口互連所形成的鏈路; 另一條路是由路由器R1的f0/1接口和路由器R2的f0/0接口互連所形成的鏈路。
Host1是看不到這個拓?fù)鋱D的,它的首要任務(wù)是判斷Host2是否與自己在同一個網(wǎng)段內(nèi)。它的做法是: 用自己的IP地址和子網(wǎng)掩碼做“與”運算,計算出自己的網(wǎng)絡(luò)號是192.168.1.0; 再用Host2的IP地址(這個地址Host1知道)和自己的掩碼進(jìn)行“與”運算,計算出Host2的網(wǎng)絡(luò)號是192.168.2.0。然后比較這兩個計算結(jié)果,結(jié)果相同表示在同一網(wǎng)段內(nèi),結(jié)果不同則表示兩者不在同一個網(wǎng)絡(luò)中。
不同網(wǎng)絡(luò)之間的主機(jī)通信需要借助路由器完成。路由器就像是郵局,用戶把數(shù)據(jù)送到路由器后,具體怎么“郵遞”就是路由器的工作,用戶不必操心。因此,Host1只需將數(shù)據(jù)包送到距它最近的路由器(R1)即可,如同生活中人們只需要把信件投遞到最近的郵局一樣。因此,Host1需要知道路由器R1的位置。在Host1上除了配置IP地址和掩碼外,還配置了另外一個參數(shù)——默認(rèn)網(wǎng)關(guān)地址,其實就是路由器R1與Host1處于同一個網(wǎng)絡(luò)的接口——f0/0的地址。在Host1上設(shè)置默認(rèn)網(wǎng)關(guān)的目的就是把那些去往外網(wǎng)(不同于自己所在的網(wǎng)絡(luò))的數(shù)據(jù)發(fā)送給默認(rèn)網(wǎng)關(guān)。為了找到路由器R1的f0/0接口的MAC地址,Host1使用了地址解析協(xié)議(ARP)。
獲得了必要信息之后,Host1開始封裝數(shù)據(jù):
(1) 把f0/0接口的MAC地址封裝在數(shù)據(jù)鏈路層的目的地址域;
(2) 把自己的MAC地址封裝在數(shù)據(jù)鏈路層的源地址域;
(3) 把自己的IP地址封裝在網(wǎng)絡(luò)層的源地址域;
(4) 把Host2的IP地址封裝在網(wǎng)絡(luò)層的目的地址域。
之后,Host1把數(shù)據(jù)發(fā)送出去。
路由器R1收到Host1送來的數(shù)據(jù)后,把數(shù)據(jù)解開到第三層,讀取數(shù)據(jù)包中的目的IP地址,然后查閱路由表決定如何轉(zhuǎn)發(fā)數(shù)據(jù)。路由表是路由器轉(zhuǎn)發(fā)數(shù)據(jù)的依據(jù)。如果路由表中沒有任何可用的路徑,路由器就會把該數(shù)據(jù)丟棄。路由表中記錄有以下內(nèi)容:
(1) 已知的目標(biāo)網(wǎng)絡(luò)號(目的地網(wǎng)絡(luò));
(2) 到達(dá)目標(biāo)網(wǎng)絡(luò)的距離;
(3) 到達(dá)目標(biāo)網(wǎng)絡(luò)應(yīng)該經(jīng)由自己哪一個接口;
(4) 到達(dá)目標(biāo)網(wǎng)絡(luò)的下一臺路由器的地址是什么。
路由器使用最近的路徑轉(zhuǎn)發(fā)數(shù)據(jù),而且只把數(shù)據(jù)交給路徑中的下一臺路由器,并不負(fù)責(zé)把數(shù)據(jù)送到最終目的地。
對于本例來說,路由器R1有兩種選擇,一種選擇是經(jīng)由自己的s0/0接口把數(shù)據(jù)交給路由器R2; 一種選擇是經(jīng)由自己的f0/1接口把數(shù)據(jù)交給路由器R2。選擇路徑的依據(jù)是: 經(jīng)由哪一條鏈路到達(dá)目標(biāo)網(wǎng)絡(luò)的距離近,路由器就使用哪一條鏈路。這里假設(shè)經(jīng)由f0/1接口的路徑近。路由器R1經(jīng)由f0/1接口把數(shù)據(jù)轉(zhuǎn)發(fā)給路由器R2。
路由器R2收到路由器R1的數(shù)據(jù)后所做的工作跟前面的R1所做的工作一樣,即查閱路由表。不同的是在自己的路由表里有一條記錄,該記錄表明它的f0/1接口正好和數(shù)據(jù)聲稱到達(dá)的網(wǎng)絡(luò)相連,也就是說,Host2和它的f0/1接口在同一個網(wǎng)絡(luò)中。路由器R2使用ARP獲得Host2的MAC地址之后開始封裝數(shù)據(jù):
(1) 把Host2的MAC地址封裝在數(shù)據(jù)鏈路層的目的地址域;
(2) 把自己f0/1接口的MAC地址封裝在數(shù)據(jù)鏈路層的源地址域;
(3) 網(wǎng)絡(luò)層的兩個IP地址不變。
然后把數(shù)據(jù)傳送給Host2。
至此,數(shù)據(jù)傳遞的一個單程完成了。
Host2回應(yīng)給Host1的數(shù)據(jù)經(jīng)過同樣的處理過程到達(dá)目的地——Host1,只不過是數(shù)據(jù)包中的目的地IP地址是Host1的地址,先經(jīng)過路由器R2再經(jīng)由路由器R1,最后到達(dá)Host1。
從數(shù)據(jù)轉(zhuǎn)發(fā)的過程看出,為了能夠轉(zhuǎn)發(fā)數(shù)據(jù),路由器必須對整個網(wǎng)絡(luò)拓?fù)溆袀清晰的了解,并把這些信息反映在路由表里。當(dāng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)發(fā)生變化時,路由器也需要及時地在路由表里反映出這些變化,這項工作由路由器的路由計算功能來完成。路由器還有一項獨立于路由計算功能的工作就是交換/轉(zhuǎn)發(fā)數(shù)據(jù),即把數(shù)據(jù)從進(jìn)入接口轉(zhuǎn)移到外出接口的過程。路由器必須具備這兩種功能。
2. 路由的分類
根據(jù)產(chǎn)生的方式、依據(jù)的算法和應(yīng)用范圍的不同,路由可進(jìn)行如下分類:
1) 按產(chǎn)生的方式分類
路由信息根據(jù)產(chǎn)生的方式和特點可以分為直連路由、靜態(tài)路由和動態(tài)路由。
2) 按依據(jù)的算法分類
路由協(xié)議分為距離矢量(Distance Vector)型路由協(xié)議、鏈路狀態(tài)(Link State)型路由協(xié)議和混合(Hybrid)型路由協(xié)議。在IP協(xié)議集中,典型的距離矢量路由協(xié)議有RIP、RIPv2和IGRP; 典型的鏈路狀態(tài)協(xié)議有OSPF。Cisco專有協(xié)議EIGRP協(xié)議屬于混合型路由協(xié)議。
3) 按應(yīng)用范圍分類
根據(jù)路由協(xié)議運行在自治系統(tǒng)內(nèi)還是運行在自治系統(tǒng)之間,路由協(xié)議又分為內(nèi)部網(wǎng)關(guān)路由協(xié)議(Interior Gateway routing Protocol,IGP)和外部網(wǎng)關(guān)路由協(xié)議(Exterior Gateway routing Protocol,EGP)。在IP協(xié)議集中,屬于IGP的有RIP、RIPv2、IGRP、EIGRP和OSPF; 屬于EGP的是邊界網(wǎng)關(guān)協(xié)議(Border Gateway Protocol,BGP)。
3. 路由表的形成
路由器在轉(zhuǎn)發(fā)數(shù)據(jù)時,要先在路由表(Routing Table)中查找相應(yīng)的路由。路由器有以下三種途徑建立路由。
(1) 直連路由: 路由器自動添加和自己直接連接的網(wǎng)絡(luò)的路由;
(2) 靜態(tài)路由: 網(wǎng)絡(luò)管理員手動輸入到路由器的路由;
(3) 動態(tài)路由: 由路由協(xié)議(Routing Protocol)動態(tài)建立的路由。
4. 管理距離(AD)
管理距離用來表示路由的可信度,路由器可能從多種途徑獲得同一路由,例如,一個路由器要獲得“10.2.0.0/24”網(wǎng)絡(luò)的路由,可以來自RIP,也可以是靜態(tài)路由。不同途徑獲得的路由可能采取不同的路徑到達(dá)目的網(wǎng)絡(luò),為了區(qū)分不同路由協(xié)議的可信度,用管理距離加以表示。表5.1是通過各種路由協(xié)議獲得的路由的默認(rèn)管理距離。路由表中管理距離越小,說明路由的可靠程度越高; 靜態(tài)路由的管理距離為1,說明手工輸入的路由優(yōu)先于其他路由。
atic Route)是一種特殊的路由,它是由網(wǎng)絡(luò)管理員手工配置的路由信息。當(dāng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)或鏈路的狀態(tài)發(fā)生變化時,網(wǎng)絡(luò)管理員需要手工去修改路由表中相關(guān)的靜態(tài)路由信息。靜態(tài)路由信息在默認(rèn)情況下是私有的,不會傳遞給其他的路由器。當(dāng)然,網(wǎng)絡(luò)管理員也可以通過對路由器進(jìn)行設(shè)置使之成為共享的。靜態(tài)路由一般適用于比較簡單的網(wǎng)絡(luò)環(huán)境,在這樣的環(huán)境中,網(wǎng)絡(luò)管理員易于清楚地了解網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),便于設(shè)置正確的路由信息。
1. 靜態(tài)路由的優(yōu)點
(1) 手工配置,可以對路由表查詢實施精確的控制,改進(jìn)網(wǎng)絡(luò)的性能。
(2) 不需要動態(tài)路由協(xié)議參與,這將會減少路由器的開銷,為重要的應(yīng)用保證帶寬,減少路由器之間鏈路上的數(shù)據(jù)傳輸量,因為網(wǎng)絡(luò)在使用靜態(tài)路由后,路由器之間沒有必要進(jìn)行路由信息的交換。
(3) 在一個支持DDR(DialonDemand Routing)的網(wǎng)絡(luò)中,撥號鏈路只在需要時才撥通,因此不能為動態(tài)路由信息表提供路由信息的變更情況。在這種情況下,網(wǎng)絡(luò)也適合使用靜態(tài)路由。
(4) 網(wǎng)絡(luò)安全保密性高。動態(tài)路由因為需要路由器之間頻繁地交換各自的路由表,而對路由表的分析可以揭示網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)和網(wǎng)絡(luò)地址等信息。因此,出于安全方面的考慮網(wǎng)絡(luò)也可以采用靜態(tài)路由。
2. 靜態(tài)路由的缺點
大型和復(fù)雜的網(wǎng)絡(luò)環(huán)境通常不宜采用靜態(tài)路由,很明顯,既然是人為的手工輸入信息,那么如果網(wǎng)絡(luò)規(guī)模過大,需要的工作量很大。一方面,網(wǎng)絡(luò)管理員難以全面地了解整個網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu); 另一方面,當(dāng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)和鏈路狀態(tài)發(fā)生變化時,路由器中的靜態(tài)路由信息需要大范圍地調(diào)整,這一工作的難度和復(fù)雜程度非常高。
3. 默認(rèn)路由
默認(rèn)路由是一種特殊的路由。當(dāng)路由器在查找路由表,沒有找到與目標(biāo)相匹配的路由表項時,默認(rèn)路由則是路由器為數(shù)據(jù)指定的路由。在路由表中,默認(rèn)路由是以到網(wǎng)絡(luò)0.0.0.0/0的路由形式出現(xiàn)。所有的網(wǎng)絡(luò)都會和這條路由記錄符合,由于路由器在查詢路由表時采用的是深度優(yōu)先原則,也就是子網(wǎng)掩碼位數(shù)長的路由記錄先作轉(zhuǎn)發(fā)。而默認(rèn)路由的掩碼為0,所以最后考慮。這樣就保證了路由器將在路由表中查詢不到數(shù)據(jù)包的相關(guān)路由信息時最后采用默認(rèn)路由轉(zhuǎn)發(fā)。默認(rèn)路由可以通過靜態(tài)路由手工配置,某些動態(tài)路由協(xié)議也可以自動生成默認(rèn)路由,如OSPF。默認(rèn)路由通常會在存根網(wǎng)絡(luò)(Stub Network,即只有一個出口的網(wǎng)絡(luò))中使用。在存根網(wǎng)絡(luò)出口上配置這樣一條默認(rèn)路由可以代替大量具體路由項,因此可以極大地減少路由表大小。
4. 靜態(tài)路由的匯總
匯總路由指的是通過對一組子網(wǎng)匯總,可以使靜態(tài)路由項的數(shù)目迅速減少。但是在對地址進(jìn)行匯總的時候需要小心,當(dāng)匯總不正確的時候,可能會有意想不到的路由行為發(fā)生。下面是一個匯總路由的例子。
……