新手上路:RIP路由協議快速入門
更新時間: 2007-05-16 13:11:16來源: 粵嵌教育瀏覽量:945
路由器的工作不外乎兩個,一是路徑選擇,二是數據轉發。進行數據轉發相對容易一些,難的是如何判斷到達目的網絡的路徑。所以,路徑選擇就成了路由器重要的工作。
許多路由協議可以完成路徑選擇的工作,常見的有RIP,OSPF,IGRP和 EIGRP協議等等。這些算法中,我們不能簡單的說誰好誰壞,因為算法的優劣要依據使用的環境來判斷。比如RIP協議,它有時不能準確地選擇路徑,收斂的時間也略顯長了一些,但對于小規模的,沒有專業人員維護的網絡來說,它是的路由協議,我們看中的是它的簡單性。
如果你手頭正有一個小的網絡項目,那么,就讓我們來安排一個計劃,30分鐘讀完本文(一讀),20分鐘再細看一遍本文提及的命令和操作方法(二讀),用30分鐘配置網絡上的所有路由器(小網絡,沒有幾臺路由器可以配的),20分鐘,檢查一下網絡工作是否正常。好了,一百分鐘,你的RIP網絡運轉起來了。就這么簡單,不信,請繼續往下看。
一、RIP是什么
RIP(Routing Information Protocols,路由信息協議)是使用廣泛的距離向量協議,它是由施樂(Xerox)在70年代開發的。當時,RIP是XNS(Xerox Network Service,施樂網絡服務)協議簇的一部分。TCP/IP版本的RIP是施樂協議的改進版。RIP的特點是,無論實現原理還是配置方法,都非常簡單。
度量方法
RIP的度量是基于跳數(hops count)的,每經過一臺路由器,路徑的跳數加一。如此一來,跳數越多,路徑就越長,RIP算法會優先選擇跳數少的路徑。RIP支持的跳數是15,跳數為16的網絡被認為不可達。
路由更新
RIP中路由的更新是通過定時廣播實現的。缺省情況下,路由器每隔30秒向與它相連的網絡廣播自己的路由表,接到廣播的路由器將收到的信息添加至自身的路由表中。每個路由器都如此廣播,終網絡上所有的路由器都會得知全部的路由信息。正常情況下,每30秒路由器就可以收到一次路由信息確認,如果經過180秒,即6個更新周期,一個路由項都沒有得到確認,路由器就認為它已失效了。如果經過240秒,即8個更新周期,路由項仍沒有得到確認,它就被從路由表中刪除。上面的30秒,180秒和240秒的延時都是由計時器控制的,它們分別是更新計時器(Update Timer)、無效計時器(Invalid Timer)和刷新計時器(Flush Timer)。
路由循環
距離向量類的算法容易產生路由循環,RIP是距離向量算法的一種,所以它也不例外。如果網絡上有路由循環,信息就會循環傳遞,永遠不能到達目的地。為了避免這個問題,RIP等距離向量算法實現了下面4個機制。
水平分割(split horizon)。水平分割保證路由器記住每一條路由信息的來源,并且不在收到這條信息的端口上再次發送它。這是保證不產生路由循環的基本措施。
毒性逆轉(poison reverse)。當一條路徑信息變為無效之后,路由器并不立即將它從路由表中刪除,而是用16,即不可達的度量值將它廣播出去。這樣雖然增加了路由表的大小,但對消除路由循環很有幫助,它可以立即清除相鄰路由器之間的任何環路。
觸發更新(trigger update)。當路由表發生變化時,更新報文立即廣播給相鄰的所有路由器,而不是等待30秒的更新周期。同樣,當一個路由器剛啟動RIP時,它廣播請求報文。收到此廣播的相鄰路由器立即應答一個更新報文,而不必等到下一個更新周期。這樣,網絡拓撲的變化會快地在網絡上傳播開,減少了路由循環產生的可能性。
抑制計時(holddown timer)。一條路由信息無效之后,一段時間內這條路由都處于抑制狀態,即在一定時間內不再接收關于同一目的地址的路由更新。如果,路由器從一個網段上得知一條路徑失效,然后,立即在另一個網段上得知這個路由有效。這個有效的信息往往是不正確的,抑制計時避免了這個問題,而且,當一條鏈路頻繁起停時,抑制計時減少了路由的浮動,增加了網絡的穩定性。
即便采用了上面的4種方法,路由循環的問題也不能完全解決,只是得到了的減少。一旦路由循環真的出現,路由項的度量值就會出現計數到無窮大(Count to Infinity)的情況。這是因為路由信息被循環傳遞,每傳過一個路由器,度量值就加1,一直加到16,路徑就成為不可達的了。RIP選擇16作為不可達的度量值是很巧妙的,它既足夠的大,保證了多數網絡能夠正常運行,又足夠小,使得計數到無窮大所花費的時間短。
鄰居
有些網絡是NBMA(Non-Broadcast MultiAccess,非廣播多路訪問)的,即網絡上不允許廣播傳送數據。對于這種網絡,RIP就不能依賴廣播傳遞路由表了。解決方法有很多,簡單的是指定鄰居(neighbor),即指定將路由表發送給某一臺特定的路由器。
RIP的缺陷
RIP雖然簡單易行,并且久經考驗,但是也存在著一些很重要的缺陷,主要有以下幾點:
過于簡單,以跳數為依據計算度量值,經常得出非路由;
度量值以16為限,不適合大的網絡;
安全性差,接受來自任何設備的路由更新;
不支持無類IP地址和VLSM(Variable Length Subnet Mask,變長子網掩碼);
收斂緩慢,時間經常大于5分鐘;
消耗帶寬很大。
二、路由器怎么配
路由器本身就是一臺有多個網絡接口的計算機,同普通計算機一樣,它也有中央處理器(CPU)、系統主存(RAM)和只讀存儲器(ROM)等部件。
除此之外,一個很重要的部分是它的網絡接口(Interface),為了連結不同類型的網絡,路由器的網絡接口種類繁多,比如應用在局域網中的以太、快速以太、令牌環接口,應用于廣域網的V.35、RS232、ISDN BRI PRI接口等等。
路由器的外存儲器主要有兩種:NVRAM(Non-Volatile RAM,非易失性RAM)和Flash(閃存)。NVRAM存儲路由器的配置文件,Flash用于存放操作系統IOS(Internet Operating System)。
配置模式
CISCO路由器基本的配置模式有兩種:用戶(user)和特權(privileged)。在用戶模式下,只能顯示路由器的狀態,特權模式還可以更改路由器的配置。
特權模式下可以進入安裝(setup)模式、全局配置(global config)模式,局部配置(sub config)模式。
安裝模式提供菜單提示,引導用戶進行路由器的基本配置。新路由器次啟動后,自動進入安裝模式。
全
局配置模式中可以改變路由器的全局參數,如主機名、密碼等等。
局部配置改變路由器的局部參數,例如某一個網絡接口的配置、某一種路由協議的配置等等。
配置方法
路由器的配置可以使用多種方法,下面這五種是常見的:
使用超級終端類的工具通過串行口登錄控制臺(console port)。
將調制解調器連結至路由器的輔助口(auxiliary port),遠程撥號登錄控制臺。
遠程登錄(telnet)至路由器的某一IP 地址,通過VTY(virtue terminal line,虛擬終端)方式訪問路由器。
編輯配置文件,并通過TFTP上傳至路由器。
通過網絡管理軟件(network management system)遠程設置路由器參數。
安裝路由器
假設我們的項目網絡中只有三臺路由器。它們放在北京、上海和天津,名字分別叫testBJ、testSH和testTJ。我們采用B類保留IP地址172.16.0.0,共劃分了四個子網172.16.1.0、172.16.2.0、172.16.3.0和172.16.4.0,子網掩碼均為255.255.255.0。
基本配置
將包裝中附帶的串行電纜一端連接到Beijing路由器的console口上,另外一端連接到計算機的com口上。啟動超級終端程序(Win95/NT中),作適當配置,連接路由器。給路由器加電,連續鍵入數個回車,出現如下提示符,顯示路由器處于用戶模式。
testBJ>
由用戶模式轉入特權模式,使用enable命令。
testBJ> enable
testBJ#
和UNIX主機一樣,“#”代表特權(root)用戶的系統提示符,它表示你進入了特權模式。與enable作用相反,即從特權模式返回用戶模式的命令是disable。
特權模式下,可以使用config terminal命令進入全局配置模式。全局配置模式下,可以使用一些配置子項的名稱進入局部配置模式。返回的方法都是exit命令。其中,從局部配置模式直接返回特權模式的命令是end。如下所示。
testBJ#config terminal
Enter configuration commands, one per line. End with CNTL/Z.
testBJ(config)#router rip
testBJ(config-router)#exit
testBJ(config)#exit
testBJ#
CISCO IOS的一個非常引人的特色是它的命令行幫助,一個?解決了所有的問題。?可以顯示當前模式下的命令列表,可以顯示命令全稱,還可以顯示命令的參數和幫助信息。在任何對命令不確定的地方鍵入?,系統會給出提示信息。
CISCO路由器還支持命令簡寫功能,只要不引起歧義,可以用命令的前幾個字符替代整個命令,這樣,配置時的打字工作量就小多了。
路由器的全部配置信息都保存在配置文件中,當前正在使用的配置文件是running-config,它存放在系統內存里,我們在特權模式下對配置的修改會立即反映到running-config中。startup-config是存儲在NVRAM中的配置文件,只有它是掉電不丟失的,所以如果想使所做的修改到下一次啟動時仍然有效,就必須保存當前配置。存盤命令如下:
testBJ#copy running-config startup-config
Building configuration..