路由器的工作不外乎兩個,一是路徑選擇,二是數(shù)據(jù)轉(zhuǎn)發(fā)。進行數(shù)據(jù)轉(zhuǎn)發(fā)相對容易一些,難的是如何判斷到達目的網(wǎng)絡的最佳路徑。所以,路徑選擇就成了路由器最重要的工作!
許多路由協(xié)議可以完成路徑選擇的工作,常見的有RIP,OSPF,IGRP和 EIGRP協(xié)議等等。這些算法中,我們不能簡單的說誰好誰壞,因為算法的優(yōu)劣要依據(jù)使用的環(huán)境來判斷。比如RIP協(xié)議,它有時不能準確地選擇最優(yōu)路徑,收斂的時間也略顯長了一些,但對于小規(guī)模 的,沒有專業(yè)人員維護的網(wǎng)絡來說,它是首選的路由協(xié)議,我們看中的是它的簡單性。
如果你手頭正有一個小的網(wǎng)絡項目,那么,就讓我們來安排一個計劃,30分鐘讀完本文(一讀),20分鐘再細看一遍本文提及的命令和操作方法(二讀),用30分鐘配置網(wǎng)絡上的所有路由器(小網(wǎng)絡,沒有幾臺路由器可以配的),最后20分鐘,檢查一下網(wǎng)絡工作是否正常。好了,一百分鐘,你的RIP網(wǎng)絡運轉(zhuǎn)起來了。就這么簡單,不信,請繼續(xù)往下看!
一、RIP是什么
RIP(Routing Information Protocols,路由信息協(xié)議)是使用最廣泛的距離向量協(xié)議,它是由施樂(Xerox)在70年代開發(fā)的。當時,RIP是XNS(Xerox Network Service,施樂網(wǎng)絡服務)協(xié)議簇的一部分。TCP/IP版本的RIP是施樂協(xié)議的改進版。RIP最大的特點是,無論實現(xiàn)原理還是配置方法,都非常簡單。
度量方法
RIP的度量是基于跳數(shù)(hops count)的,每經(jīng)過一臺路由器,路徑的跳數(shù)加一。如此一來,跳數(shù)越多,路徑就越長,RIP算法會優(yōu)先選擇跳數(shù)少的路徑。RIP支持的最大跳數(shù)是15,跳數(shù)為16的網(wǎng)絡被認為不可達!
路由更新
RIP中路由的更新是通過定時廣播實現(xiàn)的。缺省情況下,路由器每隔30秒向與它相連的網(wǎng)絡廣播自己的路由表,接到廣播的路由器將收到的信息添加至自身的路由表中。每個路由器都如此廣播,最終網(wǎng)絡上所有的路由器都會得知全部的路由信息。正常情況下,每30秒路由器就可以收到一次路由信息確認,如果經(jīng)過180秒,即6個更新周期,一個路由項都沒有得到確認,路由器就認為它已失效了。如果經(jīng)過240秒,即8個更新周期,路由項仍沒有得到確認,它就被從路由表中刪除。上面的30秒,180秒和240秒的延時都是由計時器控制的,它們分別是更新計時器(Update Timer)、無效計時器(Invalid Timer)和刷新計時器(Flush Timer)!
路由循環(huán)
距離向量類的算法容易產(chǎn)生路由循環(huán),RIP是距離向量算法的一種,所以它也不例外。如果網(wǎng)絡上有路由循環(huán),信息就會循環(huán)傳遞,永遠不能到達目的地。為了避免這個問題,RIP等距離向量算法實現(xiàn)了下面4個機制!
水平分割(split horizon)。水平分割保證路由器記住每一條路由信息的來源,并且不在收到這條信息的端口上再次發(fā)送它。這是保證不產(chǎn)生路由循環(huán)的最基本措施。
毒性逆轉(zhuǎn)(poison reverse)。當一條路徑信息變?yōu)闊o效之后,路由器并不立即將它從路由表中刪除,而是用16,即不可達的度量值將它廣播出去。這樣雖然增加了路由表的大小,但對消除路由循環(huán)很有幫助,它可以立即清除相鄰路由器之間的任何環(huán)路。
觸發(fā)更新(trigger update)。當路由表發(fā)生變化時,更新報文立即廣播給相鄰的所有路由器,而不是等待30秒的更新周期。同樣,當一個路由器剛啟動RIP時,它廣播請求報文。收到此廣播的相鄰路由器立即應答一個更新報文,而不必等到下一個更新周期。這樣,網(wǎng)絡拓撲的變化會最快地在網(wǎng)絡上傳播開,減少了路由循環(huán)產(chǎn)生的可能性。
抑制計時(holddown timer)。一條路由信息無效之后,一段時間內(nèi)這條路由都處于抑制狀態(tài),即在一定時間內(nèi)不再接收關于同一目的地址的路由更新。如果,路由器從一個網(wǎng)段上得知一條路徑失效,然后,立即在另一個網(wǎng)段上得知這個路由有效。這個有效的信息往往是不正確的,抑制計時避免了這個問題,而且,當一條鏈路頻繁起停時,抑制計時減少了路由的浮動,增加了網(wǎng)絡的穩(wěn)定性!
即便采用了上面的4種方法,路由循環(huán)的問題也不能完全解決,只是得到了最大程度的減少。一旦路由循環(huán)真的出現(xiàn),路由項的度量值就會出現(xiàn)計數(shù)到無窮大(Count to Infinity)的情況。這是因為路由信息被循環(huán)傳遞,每傳過一個路由器,度量值就加1,一直加到16,路徑就成為不可達的了。RIP選擇16作為不可達的度量值是很巧妙的,它既足夠的大,保證了多數(shù)網(wǎng)絡能夠正常運行,又足夠小,使得計數(shù)到無窮大所花費的時間最短!
鄰居
有些網(wǎng)絡是NBMA(Non-Broadcast MultiAccess,非廣播多路訪問)的,即網(wǎng)絡上不允許廣播傳送數(shù)據(jù)。對于這種網(wǎng)絡,RIP就不能依賴廣播傳遞路由表了。解決方法有很多,最簡單的是指定鄰居(neighbor),即指定將路由表發(fā)送給某一臺特定的路由器!
RIP的缺陷
RIP雖然簡單易行,并且久經(jīng)考驗,但是也存在著一些很重要的缺陷,主要有以下幾點:
過于簡單,以跳數(shù)為依據(jù)計算度量值,經(jīng)常得出非最優(yōu)路由;
度量值以16為限,不適合大的網(wǎng)絡;
安全性差,接受來自任何設備的路由更新;
不支持無類IP地址和VLSM(Variable Length Subnet Mask,變長子網(wǎng)掩碼);
收斂緩慢,時間經(jīng)常大于5分鐘;
消耗帶寬很大。
二、路由器怎么配
路由器本身就是一臺有多個網(wǎng)絡接口的計算機,同普通計算機一樣,它也有中央處理器(CPU)、系統(tǒng)主存(RAM)和只讀存儲器(ROM)等部件。
除此之外,一個很重要的部分是它的網(wǎng)絡接口(Interface),為了連結不同類型的網(wǎng)絡,路由器的網(wǎng)絡接口種類繁多,比如應用在局域網(wǎng)中的以太、快速以太、令牌環(huán)接口,應用于廣域網(wǎng)的V.35、RS232、ISDN BRI PRI接口等等。
路由器的外存儲器主要有兩種:NVRAM(Non-Volatile RAM,非易失性RAM)和Flash(閃存)。NVRAM存儲路由器的配置文件,F(xiàn)lash用于存放操作系統(tǒng)IOS(Internet Operating System)。
配置模式
CISCO路由器最基本的配置模式有兩種:用戶(user)和特權(privileged)。在用戶模式下,只能顯示路由器的狀態(tài),特權模式還可以更改路由器的配置!
特權模式下可以進入安裝(setup)模式、全局配置(global config)模式,局部配置(sub config)模式!
安裝模式提供菜單提示,引導用戶進行路由器的基本配置。新路由器第一次啟動后,自動進入安裝模式!
全局配置模式中可以改變路由器的全局參數(shù),如主機名、密碼等等!
局部配置改變路由器的局部參數(shù),例如某一個網(wǎng)絡接口的配置、某一種路由協(xié)議的配置等等。
配置方法
路由器的配置可以使用多種方法,下面這五種是最常見的:
使用超級終端類的工具通過串行口登錄控制臺(console port)!
將調(diào)制解調(diào)器連結至路由器的輔助口(auxiliary port),遠程撥號登錄控制臺!
遠程登錄(telnet)至路由器的某一IP 地址,通過VTY(virtue terminal line,虛擬終端)方式訪問路由器!
編輯配置文件,并通過TFTP上傳至路由器。
通過網(wǎng)絡管理軟件(network management system)遠程設置路由器參數(shù)!
安裝路由器
假設我們的項目網(wǎng)絡中只有三臺路由器。它們放在北京、上海和天津,名字分別叫testBJ、testSH和testTJ。我們采用B類保留IP地址172.16.0.0,共劃分了四個子網(wǎng)172.16.1.0、172.16.2.0、172.16.3.0和172.16.4.0,子網(wǎng)掩碼均為255.255.255.0。
基本配置
將包裝中附帶的串行電纜一端連接到Beijing路由器的console口上,另外一端連接到計算機的com口上。啟動超級終端程序(Win95/NT中),作適當配置,連接路由器。給路由器加電,連續(xù)鍵入數(shù)個回車,出現(xiàn)如下提示符,顯示路由器處于用戶模式!
testBJ>
由用戶模式轉(zhuǎn)入特權模式,使用enable命令!
testBJ> enable
testBJ#
和UNIX主機一樣,“#”代表特權(root)用戶的系統(tǒng)提示符,它表示你進入了特權模式。與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的一個非常引人的特色是它的命令行幫助,一個?解決了所有的問題。?可以顯示當前模式下的命令列表,可以顯示命令全稱,還可以顯示命令的參數(shù)和幫助信息。在任何對命令不確定的地方鍵入?,系統(tǒng)會給出提示信息!
CISCO路由器還支持命令簡寫功能,只要不引起歧義,可以用命令的前幾個字符替代整個命令,這樣,配置時的打字工作量就小多了!
路由器的全部配置信息都保存在配置文件中,當前正在使用的配置文件是running-config,它存放在系統(tǒng)內(nèi)存里,我們在特權模式下對配置的修改會立即反映到running-config中。startup-config是存儲在NVRAM中的配置文件,只有它是掉電不丟失的,所以如果想使所做的修改到下一次啟動時仍然有效,就必須保存當前配置。存盤命令如下:
testBJ#copy running-config startup-config
Building configuration...
[OK]
testBJ#
更改路由器名、密碼
路由器的名字可以用hostname命令修改!
Router(config)#hostname testBJ
testBJ(config)#
enable password和enable secret命令可以修改特權模式的密碼。
testBJ(config)#enable password cisco
testBJ(config)#enable secret cisco
進入line console局部配置模式下,修改console登錄密碼;進入line vty局部配置模式,修改telnet登錄的密碼。login命令指出需要登錄,修改密碼的命令都是password!
testBJ(config)#line console 0
testBJ(config-line)#login
testBJ(config-line)#password cisco
testBJ(config-line)#exit
testBJ(config)#line vty 0 4
testBJ(config-line)#login
testBJ(config-line)#password cisco
測試連通性
打開其余兩臺路由器,按上述方法進行配置,然后就可以檢查它們之間是否連通了。
測試線路連通性的方法有三種,ping、traceroute和telnet。ping可以檢測目的地是否可達;trace不僅檢測連通性,還給出到達目的地所經(jīng)過的路徑;telnet測試應用層軟件的連通性,如下所示!
testBJ#ping 172.16.4.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.4.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 24/25/28 ms
testBJ#traceroute 172.16.4.2
Type escape sequence to abort.
Tracing the route to 172.16.4.2
1 172.16.2.2 16 msec 16 msec *
testBJ#telnet 172.16.4.2
Trying 172.16.4.2 ... Open
User Access Verification
Password:
testTJ>
172.16.4.2是路由器testTJ上的一個端口,我們在testBJ上運行上述三個命令,得知它運行正常!
顯示當前狀態(tài)
為了使網(wǎng)絡管理員能夠方便地了解路由器的狀態(tài),CISCO路由器提供了豐富的show命令。我們在這里介紹最簡單的幾個,如下所示!
show version命令顯示路由器的硬軟件版本號及配置信息!
show flash:命令相當于DOS的dir命令,顯示flash中包含的文件信息。
show interface命令顯示網(wǎng)絡接口的狀態(tài)!
配置路由器的過程中,最重要的一個show命令莫過于查看配置文件的內(nèi)容,可以用show命令查看running-config或startup-config,如下所示!
show running-config
show startup-config
配置文件是一個文本文件,其中包含著你鍵入的每一條配置命令?梢詫⑴渲梦募螺d到計算機上,用文本編輯器修改之后,再傳回路由器。
三、RIP要配什么
IP地址配置
我們可以使用interface命令進入局部配置模式,然后利用ip address設置接口的IP地址。如下所示。
testBJ#conf t
Enter configuration commands, one per line. End with CNTL/Z.
testBJ(config)#interface e0/1
testBJ(config-if)#ip address 172.16.1.2 255.255.255.0
testBJ(config-if)#
為了便于配置和記憶,你還可以給每個端口添加一些描述信息。如下所示,在端口局部配置模式下使用description命令!
testBJ(config-if)#description connect to testSH
testBJ(config-if)#end
testBJ#
有些網(wǎng)絡是NBMA(Non-Broadcast MultiAccess,非廣播多路訪問)的,即網(wǎng)絡上不允許廣播傳送數(shù)據(jù)。對于這種網(wǎng)絡,RIP就不能依賴廣播傳遞路由表了。解決方法有很多,最簡單的是指定鄰居(neighbor),即指定將路由表發(fā)送給某一臺特定的路由器!
有些網(wǎng)絡是NBMA(Non-Broadcast MultiAccess,非廣播多路訪問)的,即網(wǎng)絡上不允許廣播傳送數(shù)據(jù)。對于這種網(wǎng)絡,RIP就不能依賴廣播傳遞路由表了。解決方法有很多,最簡單的是指定鄰居(neighbor),即指定將路由表發(fā)送給某一臺特定的路由器!
RIP配置
RIP是最容易配置的路由協(xié)議。配置它只需要兩步操作,首先,指定使用RIP協(xié)議,然后,聲明所連接的網(wǎng)絡號,如下所示。
testBJ(config)#router rip
testBJ(config-router)#network 172.16.0.0
testBJ(config-router)#end
testBJ#
router rip命令用于指定使用RIP協(xié)議,network命令聲明網(wǎng)絡號,由于RIP是一個有類路由協(xié)議,所以不必聲明各個子網(wǎng)號。
對每一臺路由器重復上述操作,一個使用RIP路由的網(wǎng)絡就建成了!
測試配置正確性
配置RIP之后,要檢查數(shù)據(jù)是否可以被正確路由。除了可以使用上面提到的連通性測試工具之外,還有以下幾個命令:
sh ip route用于檢測路由表;
sh ip protocols用于檢查路由協(xié)議狀況;
debug ip rip用于調(diào)試RIP協(xié)議信息。
使用sh ip route命令顯示各臺路由器的路由表!
testBJ#sh ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2,
* - candidate default, U - per-user static route, o - ODR
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 4 subnets
R 172.16.4.0 [120/1] via 172.16.2.2, 00:00:12, Serial1/0
C 172.16.1.0 is directly connected, Ethernet0/1
C 172.16.2.0 is directly connected, Serial1/0
R 172.16.3.0 [120/1] via 172.16.1.3, 00:00:09, Ethernet0/1
[120/1] via 172.16.2.2, 00:00:22, Serial1/0
上面顯示的是北京路由器的路由信息。字母C開頭的是直接相連的網(wǎng)絡,有172.16.1.0和172.16.2.0,分別連接在e0/1和s1/0端口上。字母R開頭的是RIP協(xié)議學習到的路由,有172.16.3.0和172.16.4.0,其中,到172.16.3.0有兩條路徑供選擇,分別經(jīng)由testSH和testTJ路由器。對比網(wǎng)絡拓撲圖,可以看出實際情況與設計的完全一致。
中括號里的內(nèi)容是路由項的管理距離和度量值,RIP的缺省管理距離是120,到達3、4子網(wǎng)的度量值是1,即經(jīng)過1個路由器可達。
同樣的命令在另外兩臺路由器上運行,結果如下!
testSH#sh ip route
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 4 subnets
R 172.16.4.0 [120/1] via 172.16.3.2, 00:00:13, Ethernet0/0
C 172.16.1.0 is directly connected, Ethernet0/1
R 172.16.2.0 [120/1] via 172.16.1.2, 00:00:11, Ethernet0/1
[120/1] via 172.16.3.2, 00:00:13, Ethernet0/0
C 172.16.3.0 is directly connected, Ethernet0/0
testTJ#sh ip route
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 4 subnets
C 172.16.4.0 is directly connected, Ethernet0/0
R 172.16.1.0 [120/1] via 172.16.3.3, 00:00:07, Ethernet0/1
[120/1] via 172.16.2.3, 00:00:19, Serial1/0
C 172.16.2.0 is directly connected, Serial1/0
C 172.16.3.0 is directly connected, Ethernet0/1
分析上述命令輸出時,一定要隨時參照拓撲圖,離開網(wǎng)絡拓撲,上面的信息就沒有任何意義。動態(tài)路由的靈活性體現(xiàn)在一條鏈路出現(xiàn)故障,路由算法會自動切換到迂回鏈路上。例如我們將testBJ和testTJ之間的串行線纜斷開,一段時間后,再檢查路由表,如下所示!
testBJ#sh ip route
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 3 subnets
R 172.16.4.0 [120/2] via 172.16.1.3, 00:00:22, Ethernet0/1
C 172.16.1.0 is directly connected, Ethernet0/1
R 172.16.3.0 [120/1] via 172.16.1.3, 00:00:22, Ethernet0/1
我們發(fā)現(xiàn)串行鏈路所在的子網(wǎng)2斷開了,到網(wǎng)絡172.16.4.0網(wǎng)絡的數(shù)據(jù)包都將繞經(jīng)testSH路由器。
sh ip protocols命令可以顯示當前路由協(xié)議的狀況,如下所示!
testBJ#sh ip protocols
Routing Protocol is "rip"
Sending updates every 30 seconds, next due in 19 seconds
Invalid after 180 seconds, hold down 180, flushed after 240
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Redistributing: connected, rip
Default version control: send version 1, receive any version
Interface Send Recv Key-chain
Ethernet0/1 1 1 2
Serial1/0 1 1 2
Routing for Networks:
172.16.0.0
Routing Information Sources:
Gateway Distance Last Update
172.16.2.2 120 00:00:05
172.16.1.3 120 00:00:27
Distance: (default is 120)
從命令輸出中,可以看出RIP協(xié)議的基本配置,還可以得知與當前路由器交換信息的路由器有testTJ(172.16.2.2)和testSH(172.16.1.3)兩臺路由器,上次接收路由信息分別在5秒和27秒之前!
要了解路由器之間交換路由信息的詳情,可以使用debug ip rip命令。如下所示,輸入命令后,隔一段時間,控制臺上出現(xiàn)接收或者發(fā)送RIP廣播的信息。
testBJ#debug ip rip
RIP protocol debugging is on
testBJ#
RIP: received v1 update from 172.16.2.2 on Serial1/0
172.16.4.0 in 1 hops
172.16.3.0 in 1 hops
RIP: received v1 update from 172.16.1.3 on Ethernet0/1
172.16.4.0 in 2 hops
172.16.3.0 in 1 hops
RIP: sending v1 update to 255.255.255.255 via Ethernet0/1 (172.16.1.2)
subnet 172.16.4.0, metric 2
subnet 172.16.2.0, metric 1
RIP: sending v1 update to 255.255.255.255 via Serial1/0 (172.16.2.3)
subnet 172.16.1.0, metric 1
RIP: received v1 update from 172.16.1.3 on Ethernet0/1
172.16.4.0 in 2 hops
172.16.3.0 in 1 hops
RIP: received v1 update from 172.16.2.2 on Serial1/0
172.16.4.0 in 1 hops
172.16.3.0 in 1 hops
testBJ#no debug all
All possible debugging has been turned off
testBJ#
從上述信息中可以得到RIP廣播的詳情。路由器先是從testTJ收到子網(wǎng)3、4的信息,然后又從testSH收到子網(wǎng)3、4的信息。其中,到子網(wǎng)4走testTJ一跳,走testSH兩跳,所以,路由表中反映出來的是經(jīng)由testTJ到子網(wǎng)4;到子網(wǎng)3的距離都是一跳,所以,路由表中有兩條并列的路由!
一段時間后,當前路由器的更新計時達到30秒,于是,它在兩條鏈路上廣播自身的路由表信息。注意,廣播路由更新時,RIP采用了水平分割機制,從一個端口上學得的信息就不在這個端口上進行廣播,所以當前路由器testBJ只發(fā)送子網(wǎng)172.16.1.0的路由信息!
使用no debug all命令結束調(diào)試信息的顯示。需要注意的是debug命令非常消耗路由器資源,所以不要在通訊繁忙的路由器上使用,否則,路由器就會象死機一樣停止反應。
掃碼關注5G通信官方公眾號,免費領取以下5G精品資料
1、回復“YD5GAI”免費領取《中國移動:5G網(wǎng)絡AI應用典型場景技術解決方案白皮書》
2、回復“5G6G”免費領取《5G_6G毫米波測試技術白皮書-2022_03-21》
3、回復“YD6G”免費領取《中國移動:6G至簡無線接入網(wǎng)白皮書》
4、回復“LTBPS”免費領取《《中國聯(lián)通5G終端白皮書》》
5、回復“ZGDX”免費領取《中國電信5G NTN技術白皮書》
6、回復“TXSB”免費領取《通信設備安裝工程施工工藝圖解》
7、回復“YDSL”免費領取《中國移動算力并網(wǎng)白皮書》
8、回復“5GX3”免費領取《 R16 23501-g60 5G的系統(tǒng)架構1》
|