郝 賢 云
(江西應(yīng)用工程職業(yè)學(xué)院 計(jì)算機(jī)信息工程系,江西 萍鄉(xiāng) 337042)
動(dòng)態(tài)路由協(xié)議在當(dāng)今網(wǎng)絡(luò)通信過(guò)程中發(fā)揮著至關(guān)重要的作用,其設(shè)計(jì)目標(biāo)是為了使網(wǎng)絡(luò)中的路由器能夠交換路由信息,并快速適應(yīng)網(wǎng)絡(luò)結(jié)構(gòu)的變化。如果按作用范圍可進(jìn)一步劃分為:內(nèi)部網(wǎng)關(guān)協(xié)議(通常在自治系統(tǒng)內(nèi)部部署,用于交換自治系統(tǒng)內(nèi)的路由信息)與外部網(wǎng)關(guān)協(xié)議(通常在自治系統(tǒng)邊界路由器中部署,用于交換兩個(gè)自治系統(tǒng)內(nèi)的路由信息)。眾所周知常見(jiàn)的路由信息協(xié)議[1-3](Routing Information Protocol,RIP)就屬于內(nèi)部網(wǎng)關(guān)協(xié)議的一種,具有配置簡(jiǎn)單便捷、占用網(wǎng)絡(luò)帶寬小、支持流量負(fù)載均衡、支持IPV4與IPV6、支持明文與加密認(rèn)證、支持可變長(zhǎng)子網(wǎng)掩碼(Variable Length Subnetwork Mask,VLSM)、支持自動(dòng)路由匯總等優(yōu)點(diǎn)。但是與其他內(nèi)部網(wǎng)關(guān)協(xié)議如OSPF、EIGRP相比,RIP路由協(xié)議不僅在可擴(kuò)展性與收斂速度方面呈現(xiàn)出明顯的劣勢(shì),而且其度量值由跳數(shù)來(lái)決定,且最高跳數(shù)只有15跳的特性使其只適合在小型網(wǎng)絡(luò)中部署使用。(如果跳數(shù)為16跳及以上,則會(huì)被認(rèn)為路由不可達(dá))RIP路由協(xié)議一共有RIPv1、RIPv2、RIPng 3個(gè)版本:早期版本RIPv1安全性與功能性均較差,目前已被RIPv2版本所代替。首先,它不支持安全認(rèn)證;其次,它僅對(duì)有類網(wǎng)絡(luò)提供支持;第三,它采用廣播的方式進(jìn)行報(bào)文發(fā)送(這勢(shì)必會(huì)占用一定的網(wǎng)絡(luò)帶寬)。后期版本RIPv2可以看作是對(duì)RIPv1功能的擴(kuò)展,使RIP路由協(xié)議更適應(yīng)當(dāng)代IPv4網(wǎng)絡(luò)。它不僅支持可變長(zhǎng)子網(wǎng)掩碼、安全認(rèn)證等功能,而且還可以對(duì)路由條目進(jìn)行標(biāo)記。最顯著的特點(diǎn)是其既可以使用組播方式又可以使用廣播方式發(fā)送報(bào)文信息,默認(rèn)情況下使用組播方式發(fā)送報(bào)文信息。RIPng與RIPv2不僅工作方式類似,而且也屬于無(wú)類路由協(xié)議。只是它的配置過(guò)程要比RIPv2繁瑣復(fù)雜,且只能在IPv6網(wǎng)絡(luò)環(huán)境中部署使用。
以運(yùn)行RIP協(xié)議的路由器A與路由器B舉例說(shuō)明。當(dāng) RIP路由器A從與之相鄰的RIP路由器B處獲得RIP報(bào)文后,(此RIP報(bào)文中包含路由器B的完整路由表),需要對(duì)此報(bào)文的下一跳字段和跳數(shù)字段進(jìn)行修改:下一跳字段的地址要更改為路由器B與路由器A互連的接口地址;跳數(shù)字段的具體數(shù)值則需要加1。更改后的報(bào)文需要和路由器A中的路由表進(jìn)行比對(duì):如果在路由器A的路由表與更改后的報(bào)文中同時(shí)存在去往某個(gè)目的網(wǎng)絡(luò)的路由,則比較二者的跳數(shù)(具體相關(guān)規(guī)則如下:更改后的報(bào)文到達(dá)目的網(wǎng)絡(luò)的跳數(shù),大于路由器A的路由表中已有到達(dá)目的網(wǎng)絡(luò)的跳數(shù),則路由器A的路由表不需要進(jìn)行更新;否則路由器A的路由表需要用更改后報(bào)文中到達(dá)目的網(wǎng)絡(luò)的路由替換原有路由條目)。如果去往某個(gè)目的網(wǎng)絡(luò)的路由只在更改后的報(bào)文中存在,則路由器A會(huì)認(rèn)為發(fā)現(xiàn)了新路由,從而將此路由條目加入到自己的路由表中。需要注意的是:RIP協(xié)議交換路由信息這種行為,只會(huì)在兩臺(tái)相鄰RIP路由器之間發(fā)生。如果RIP路由器在更新計(jì)時(shí)器設(shè)定的時(shí)間范圍內(nèi)沒(méi)有收到相同路由的更新信息,則會(huì)認(rèn)為該路由已不可達(dá),并啟動(dòng)垃圾收集定時(shí)器。一旦在垃圾收集定時(shí)器設(shè)定的時(shí)間范圍內(nèi),路由器仍舊沒(méi)有收到該條路由的更新信息,那么就會(huì)將此條路由從路由表中徹底刪除。
RIP路由協(xié)議的部署與配置過(guò)程并不復(fù)雜,通常RIP路由器只需宣告與之相連的主類網(wǎng)絡(luò)即可,受其收斂速度較慢的影響,網(wǎng)絡(luò)中的RIP路由器往往不能在相近的時(shí)間內(nèi)完成對(duì)路由表的更新,造成路由環(huán)路的產(chǎn)生。為盡可能的避免這種情況的出現(xiàn) ,RIP路由協(xié)議采用了水平分割、毒性逆轉(zhuǎn)等多種防范機(jī)制。水平分割對(duì)于防止路由環(huán)路、降低路由更新信息對(duì)網(wǎng)絡(luò)帶寬的占用率有著明顯的作用,其核心思想為:RIP路由器從某個(gè)接口收到路由更新信息后,此路由更新信息將不允許從這個(gè)接口再發(fā)送回去。毒性逆轉(zhuǎn)可使RIP路由器對(duì)無(wú)效路由的處理,不再受路由無(wú)效計(jì)時(shí)器規(guī)定時(shí)間的制約,近而可快速處理網(wǎng)絡(luò)中存在的路由環(huán)路。
在GNS3網(wǎng)絡(luò)仿真平臺(tái)上,搭建一個(gè)由路由器K1、K2、K3組成的小型RIP網(wǎng)絡(luò),并給出路由器K2的相關(guān)配置命令。(路由器K1、K3的配置命令讀者參考K1即可)。網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 RIP協(xié)議基本配置
(1)路由器K2的相關(guān)配置
k2(config)#int e1/0
k2(config-if)#ip add 211.68.202.2 255.255.255.0
k2(config)#int loopback 1
k2(config-if)#ip add 211.68.194.1 255.255.255.0
k2(config)#router rip
k2(config-router)#ver 2
k2(config-router)# network 211.68.202 0
k2(config-router)# network 211.68.194.0
為驗(yàn)證RIP協(xié)議配置是否正確,以路由器K2為例,使用sh ip proto命令查看路由器K2上RIP協(xié)議的工作狀態(tài)。如圖2所示。從中可以得出以下幾點(diǎn)結(jié)論:路由器K2只運(yùn)行了RIP這一種內(nèi)部網(wǎng)關(guān)路由協(xié)議(使用的版本為Version 2),且該協(xié)議所通告路由的管理距離為120,路由更新計(jì)時(shí)器所設(shè)定的路由更新頻率為30 s一次,確定路由為無(wú)效的等待時(shí)間為180 s,最多可支持4條鏈路負(fù)載均衡,且沒(méi)有其他路由協(xié)議重分布到RIP自治域中;路由器K2所有接口的入方向與出方向均沒(méi)有配置訪問(wèn)控制列表;路由器K2從鄰居路由器K1的e1/0 接口(接口地址為211.68.202.1)學(xué)習(xí)RIP路由信息。
路由器K1、K2、K3在按順序啟動(dòng)過(guò)程中,以路由器K1的e1/0接口為源,通過(guò)網(wǎng)絡(luò)分析軟件捕獲了K1--K2鏈路上的RIP報(bào)文如圖3所示。由圖3可見(jiàn):路由器K1通過(guò)e1/0接口,使用組播地址224.0.0.9,發(fā)送編號(hào)為10的RIP請(qǐng)求報(bào)文。路由器K2在接收到路由器K1發(fā)送的RIP請(qǐng)求報(bào)文后,以單播的方式發(fā)送編號(hào)為11的報(bào)文作為對(duì)其的回應(yīng),該報(bào)文中包含211.68.194.0網(wǎng)段的路由信息。緊接著路由器K2以組播的方式發(fā)送編號(hào)為12的RIP更新報(bào)文,該報(bào)文中同樣包含211.68.194.0網(wǎng)段的路由信息。此時(shí),路由器K1已學(xué)習(xí)到全網(wǎng)路由,并以組播的方式發(fā)送編號(hào)為19的RIP更新報(bào)文,該報(bào)文中包含211.68.195.0網(wǎng)段的路由信息。至此路由器K2也學(xué)習(xí)到了全網(wǎng)路由。
圖2 路由器K2上RIP協(xié)議的工作狀態(tài)
圖3 K1-K2鏈路上的RIP報(bào)文
運(yùn)行RIP協(xié)議的路由器通常會(huì)在網(wǎng)絡(luò)中以30s一次的頻率,以廣播或組播的方式發(fā)送大量的路由更新信息。這其中有一部分路由更新信息是RIP路由器不必要發(fā)送的,這樣不僅會(huì)造成網(wǎng)絡(luò)帶寬被大量占用,也給網(wǎng)絡(luò)安全帶來(lái)極大的隱患。黑客有可能截獲網(wǎng)絡(luò)中的路由更新信息并對(duì)其進(jìn)行修改,再將偽造的路由更新信息發(fā)往RIP路由器,導(dǎo)致路由表的度量值發(fā)生錯(cuò)誤。為有效避免這種情況的發(fā)生,可以將RIP路由器的接口均設(shè)置為被動(dòng)接口(被動(dòng)接口不允許發(fā)送路由更新報(bào)文,主要用來(lái)防止其它路由器學(xué)習(xí)到本地路由器中的路由信息),路由器之間互聯(lián)的串口設(shè)置為單播更新,提高網(wǎng)絡(luò)的安全性,減少不必要的帶寬損耗。
為讓讀者能夠輕松掌握RIP協(xié)議被動(dòng)接口與單播更新的具體配置方法,在GNS3網(wǎng)絡(luò)仿真平臺(tái)上,搭建一個(gè)由路由器R1、R2組成的RIP網(wǎng)絡(luò),路由器之間使用單播的方式發(fā)送路由更新信息,且所有接口均設(shè)置為被動(dòng)接口。網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。下面給出路由器R1、R2的相關(guān)配置命令。
圖4 RIP協(xié)議被動(dòng)接口與單播更新
(1)路由器R1的被動(dòng)接口配置
R1(config)#router rip
R1(config-router)#passive-interface def //路由器R1中的所有接口均配置為被動(dòng)接口
R1(config-router)#network 192.168.30.0
R1(config-router)#network 211.68.195.0
(2)路由器R2的被動(dòng)接口配置
R2(config)#router rip
R2(config-router)#passive-interface def
R2(config-router)#network 192.168.40.0
R2(config-router)#network 211.68.195.0
路由器R1、R2的被動(dòng)接口配置完成后,其各自的S2/0接口將無(wú)法使用廣播或組播的方式發(fā)送路由更新信息,但該接口仍可以接收路由更新信息。此時(shí),由于路由器R1、R2沒(méi)有進(jìn)行單播更新配置,路由器R1、R2的路由表中只有自己的直連路由。以路由器R1為例,查看其路由表如圖5所示。
(3)路由器R1的單播更新配置
R1(config-router)#neigh 211.68.195.2
(4)路由器R2的單播更新配置
R2(config-router)#neigh 211.68.195.1
路由器R1、R2的單播更新配置完成后,其各自的S2/0接口將使用單播的方式發(fā)送路由更新信息,兩臺(tái)路由器的路由表中存在全網(wǎng)路由。就路由器R1而言,其路由表中新增加了到達(dá)192.168.40.0網(wǎng)段的路由;對(duì)于路由器R2來(lái)說(shuō),其路由表中新增加了到達(dá)192.168.30.0網(wǎng)段的路由。以路由器R1為例,再次查看其路由表如圖6所示。
圖5 被動(dòng)接口配置完成后路由器R1的路由表
圖6 單播更新配置完成后路由器R1的路由表
為能有效節(jié)省網(wǎng)絡(luò)帶寬資源以及提高網(wǎng)絡(luò)收斂速度,RIP協(xié)議改進(jìn)出了一種新的機(jī)制用于發(fā)送路由更新數(shù)據(jù)包,即觸發(fā)更新(RIP路由器僅在有路由表發(fā)生變化時(shí)發(fā)送的RIP路由通告,且僅攜帶本地路由表中有變化的路由信息)。需要注意的是:RIP觸發(fā)更新只能配置在點(diǎn)到點(diǎn)的鏈路中,只有鏈路兩端的路由器都配置了觸發(fā)更新,這種新的路由更新數(shù)據(jù)包發(fā)送機(jī)制才會(huì)生效。配置了觸發(fā)更新的兩臺(tái)RIP路由器,收到的路由信息會(huì)被標(biāo)注為permanent。
在GNS3網(wǎng)絡(luò)仿真平臺(tái)上,搭建了一個(gè)由路由器R1、R2組成的RIP網(wǎng)絡(luò)。兩臺(tái)路由器使用串口S2/0進(jìn)行互聯(lián),并分別啟用RIP觸發(fā)更新機(jī)制。網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示。
下面給出路由器R1、R2的相關(guān)配置命令。
(1)路由器R1的RIP觸發(fā)更新配置
R1(config)#int s2/0
圖7 RIP協(xié)議觸發(fā)更新
R1(config-if)#ip rip trig
(2)路由器R2的RIP觸發(fā)更新配置
R2(config)#int s2/0
R2(config-if)#ip rip trig
為了驗(yàn)證在路由器R1、R2上配置的RIP觸發(fā)更新是否成功,以路由器R1為例,使用debug ip rip命令查看RIP協(xié)議的更新過(guò)程。如圖8所示。從中可以看到:在路由器R1、R2上配置的RIP觸發(fā)更新已成功開(kāi)啟。路由器R1在S2/0接口與LOOPBACK 1接口上發(fā)送RIP觸發(fā)更新請(qǐng)求,向路由器R2的S2/0接口發(fā)送觸發(fā)更新。在從路由器R2的S2/0接口收到觸發(fā)更新后,路由器R1會(huì)向路由器R2的S2/0接口發(fā)送一個(gè)編號(hào)為5的確認(rèn)。192.168.40.0 in 1 hops 為從路由器R2的S2/0接口收到的路由條目。
圖8 RIP協(xié)議更新過(guò)程
為提高網(wǎng)絡(luò)的可靠性與安全性,避免偽造的路由更新被路由器接收,RIP提供了以下2種身份認(rèn)證方式:明文認(rèn)證和密文認(rèn)證(只有RIP協(xié)議版本2支持身份認(rèn)證功能,而RIP協(xié)議版本1是不支持身份認(rèn)證功能的)。但是RIP協(xié)議版本2支持的身份認(rèn)證均為單向,舉例來(lái)說(shuō):兩臺(tái)RIP路由器A與B,路由器A對(duì)路由器B進(jìn)行了認(rèn)證,并不等于路由器B對(duì)路由器A也進(jìn)行了認(rèn)證。因此路由器A可以接收來(lái)自路由器B的路由更新信息,但是路由器B不能接收路由器A的路由更新信息。需要注意的是:無(wú)論進(jìn)行明文認(rèn)證還是密文認(rèn)證,兩臺(tái)RIP路由器都需要先定義鑰匙串名(兩臺(tái)路由器的鑰匙串名可以相同也可以不同)和具體的鑰匙即KEY值(可定義多個(gè)KEY值)。路由器A對(duì)B進(jìn)行明文認(rèn)證時(shí):路由器B會(huì)向路由器A發(fā)送不帶ID信息的最小ID值KEY;路由器A收到路由器B發(fā)來(lái)的KEY后,會(huì)與自己的KEY進(jìn)行比對(duì),只要能夠匹配上就認(rèn)證通過(guò);路由器A對(duì)B進(jìn)行密文認(rèn)證時(shí):路由器B會(huì)向路由器A發(fā)送帶ID信息的最小ID值KEY;路由器A收到路由器B發(fā)來(lái)的KEY后,會(huì)在定義的鑰匙串中查找是否有相同ID 的KEY,如果存在并且KEY值相同則認(rèn)證通過(guò),否則不予通過(guò)。如果沒(méi)有相同ID 的KEY,則向后查找一次與之最相近ID的KEY(如果存在并且KEY值相同則認(rèn)證通過(guò),否則不予通過(guò))。
在GNS3網(wǎng)絡(luò)仿真平臺(tái)上,搭建了一個(gè)由路由器A、B組成的RIP網(wǎng)絡(luò)。兩臺(tái)路由器使用串口S2/1進(jìn)行互聯(lián),并分別啟用明文認(rèn)證與密文認(rèn)證。網(wǎng)絡(luò)結(jié)構(gòu)如圖9所示。下面給出路由器A、B的相關(guān)配置命令。
(1)RIP協(xié)議明文認(rèn)證配置
A(config)#key chain yangyang
圖9 RIP協(xié)議認(rèn)證
A(config-keychain)#key 1
A(config-keychain-key)#key-string gyy
A(config)#int s2/1
A(config-if)#ip rip authent mode text
A(config-if)#ip rip authent key-chain yangyang
B(config)#key chain shenb
B(config-keychain)#key 1
B(config-keychain-key)#key-string gyy
B(config)#int s2/1
B(config-if)#ip rip authent mode text
B(config-if)#ip rip authent key-chain shenb
(2)RIP協(xié)議密文認(rèn)證配置
A(config)#int s2/1
A(config-if)#ip rip authent mode MD5
B(config)#int s2/1
B(config-if)#ip rip authent mode MD5
負(fù)載均衡有助于提高網(wǎng)絡(luò)的靈活性與可靠性。RIP協(xié)議默認(rèn)支持4條鏈路的負(fù)載均衡,但是通過(guò)maximum-paths命令可實(shí)現(xiàn)支持16條鏈路的負(fù)載均衡。另外,需要說(shuō)明的是:RIP協(xié)議可支持2種方式的負(fù)載均衡,即基于目的地址的負(fù)載均衡(需要在路由器中開(kāi)啟CEF)和基于分組的負(fù)載均衡(需要路由器關(guān)閉CEF與路由交換高速緩存)。其中,基于目的地址的負(fù)載均衡可根據(jù)數(shù)據(jù)包目的地址的不同,選擇不同的路徑進(jìn)行轉(zhuǎn)發(fā)。這種方式的負(fù)載均衡工作效率更高,因此在實(shí)際工作中普遍采用這種方式的負(fù)載均衡。
為讓讀者能夠輕松掌握RIP協(xié)議負(fù)載均衡的具體配置方法,在GNS3網(wǎng)絡(luò)仿真平臺(tái)上,搭建了一個(gè)由路由器R1、R2、R3組成的RIP網(wǎng)絡(luò),路由器R1與路由器R2通過(guò)S2/0接口互聯(lián),路由器R3與路由器R1通過(guò)S2/1接口互聯(lián),路由器R3與路由器R2通過(guò)S2/2接口互聯(lián)。當(dāng)路由器R1采用基于目的地址的負(fù)載均衡時(shí):訪問(wèn)IP地址192.168.70.1的數(shù)據(jù)包走S2/0接口,訪問(wèn)IP地址192.168.70.2的數(shù)據(jù)包走S2/1接口;當(dāng)路由器R1采用基于分組的負(fù)載均衡時(shí):訪問(wèn)IP地址192.168.70.1的數(shù)據(jù)包一半走S2/0接口,另一半走S2/1接口。網(wǎng)絡(luò)結(jié)構(gòu)如圖10所示。下面給出路由器R1的相關(guān)配置命令。
圖10 RIP協(xié)議負(fù)載均衡
(1)路由器R1基于目的地址的負(fù)載均衡配置
R1(config)#router rip
R1(config)#ip cef
R1(config)#int s2/0
R1(config-if)#ip route-cache
R1(config)#int s2/1
R1(config-if)#ip route-cache
(2)路由器R1基于分組的負(fù)載均衡配置
R1(config)#router rip
R1(config)#no ip cef
R1(config)#int s2/0
R1(config-if)#no ip route-cache
R1(config)#int s2/1
R1(config-if)#no ip route-cache
上述配置完成后,在路由器R1中使用擴(kuò)展PING命令測(cè)試基于分組的負(fù)載均衡配置效果。
R1#ping
Protocol [ip]:
Target IP address:192.168.70.1
Repeat count [2]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]:y
Source address or interface:192.168.20.1
Sending 2,100-byte ICMP Echos to 192.168.70.1,timeout is 2 seconds:
Packet sent with a source address of 192.168.20.1
Reply to request 0 (36 ms).Received packet has options
Total option bytes= 40,padded length=40
Record route:
(192.168.60.1)
(192.168.70.1)
(192.168.60.2)
(192.168.20.1)<*>
(0.0.0.0)
(0.0.0.0)
End of list
Reply to request 1 (116 ms).Received packet has options
Total option bytes= 40,padded length=40
Record route:
(192.168.50.1)
(192.168.70.2)
(192.168.70.1)
(192.168.60.2)
(192.168.20.1)<*>
(0.0.0.0)
(0.0.0.0)
End of list
從中可以看到:當(dāng)以路由器R1上的LOOPBACK 1接口IP地址為源地址訪問(wèn)目標(biāo)IP地址192.168.70.1時(shí),會(huì)有一半的數(shù)據(jù)包先從S2/0接口發(fā)出,到達(dá)訪問(wèn)目標(biāo)后,再經(jīng)路由器R1的S2/0接口返回源地址。剩下的另一半數(shù)據(jù)包會(huì)先從S2/1接口發(fā)出,然后經(jīng)路由器R3的S2/2接口到達(dá)訪問(wèn)目標(biāo),而后同樣經(jīng)路由器R1的S2/0接口返回源地址。至此可以說(shuō),路由器R1已成功實(shí)現(xiàn)了基于分組的負(fù)載均衡。
RIP路由協(xié)議相對(duì)于其它動(dòng)態(tài)路由協(xié)議不僅配置過(guò)程較為簡(jiǎn)單,而且也便于管理和實(shí)施,但是其自身的局限性使其只適用于小型網(wǎng)絡(luò)?,F(xiàn)實(shí)中的網(wǎng)絡(luò)往往不局限于部署一種路由協(xié)議,更多的是在路由器中部署多種路由協(xié)議,通過(guò)路由重分布的方式讓不同自治域中的路由可以相互學(xué)習(xí)。總之,無(wú)論部署哪種路由協(xié)議都應(yīng)從網(wǎng)絡(luò)性能角度考慮,合理規(guī)劃網(wǎng)絡(luò)結(jié)構(gòu)以及選擇網(wǎng)絡(luò)設(shè)備。