曲軍 李彤
國(guó)家數(shù)字交換系統(tǒng)工程技術(shù)研究中心
摘 要 本文主要介紹了基于IPv6的路由協(xié)議RIPng的工作原理,并分析了其與RIP的區(qū)別,最后闡述了RIPng的改進(jìn)方向及發(fā)展趨勢(shì)。
關(guān)鍵詞 IPv6 路由 RIPng
1 前言
路由技術(shù)的發(fā)展是與整個(gè)因特網(wǎng)的發(fā)展密切相關(guān)的。隨著因特網(wǎng)規(guī)模和負(fù)載的增長(zhǎng),產(chǎn)生了地址空間不足及路由器存儲(chǔ)和交換的信息量急劇增加等一系列問(wèn)題,使得IPv6得以長(zhǎng)足發(fā)展,并將最終取代IPv4。同時(shí)現(xiàn)有的基于IPv4的路由協(xié)議也必須加以改造,使之符合未來(lái)因特網(wǎng)的發(fā)展要求。
眾所周知,路由協(xié)議有基于距離矢量和鏈路狀態(tài)兩種。使用最廣泛的一種基于距離矢量的路由協(xié)議是選路信息協(xié)議RIP(Routing Information Protocol)。RIP產(chǎn)生較早,經(jīng)過(guò)多年的應(yīng)用,已經(jīng)產(chǎn)生成熟的標(biāo)準(zhǔn)和產(chǎn)品。RIP最大的優(yōu)點(diǎn)是其比較簡(jiǎn)單,在規(guī)模不大、拓?fù)浣Y(jié)構(gòu)比較簡(jiǎn)單的網(wǎng)絡(luò)上易于操作和維護(hù)。但對(duì)于規(guī)模較大的網(wǎng)絡(luò),由于其存在選路環(huán)路及無(wú)限計(jì)數(shù)等問(wèn)題,選路性能不如基于鏈路狀態(tài)的協(xié)議(如OSPF),因而較少采用。
RIP作為一種成熟的路由標(biāo)準(zhǔn),在因特網(wǎng)中有著廣泛的應(yīng)用,特別是在一些中小型網(wǎng)絡(luò)中。正是基于這種現(xiàn)狀,同時(shí)考慮到RIP與IPv6的兼容性問(wèn)題,IETF對(duì)現(xiàn)有技術(shù)進(jìn)行改造,制定了IPv6下的RIP標(biāo)準(zhǔn),即RIPng(RIP next generation)。下面的各節(jié)中將分別對(duì)RIPng的消息格式、工作原理、與RIPv1及RIPv2的主要差別、協(xié)議的缺點(diǎn)及改進(jìn)方向、發(fā)展趨勢(shì)等方面做簡(jiǎn)單的介紹。
2 RIPng的報(bào)文格式
RIPng是基于UDP的協(xié)議,并且使用端口號(hào)521發(fā)送和接收數(shù)據(jù)報(bào)。RIPng報(bào)文大致可分為兩類:選路信息報(bào)文和用于請(qǐng)求信息的報(bào)文。它們都使用相同的格式,由固定的首部和路由表項(xiàng)RTE(Route Table Entry)組成,其中路由表項(xiàng)可以有多個(gè)。
首部包括命令字段和版本號(hào)字段。同RIP一樣,命令字段用來(lái)區(qū)分報(bào)文要實(shí)現(xiàn)的各種操作。其中命令號(hào)1表示請(qǐng)求部分或全部選路信息,命令號(hào)2表示響應(yīng),其中包含一個(gè)或多個(gè)RTE。
路由器或主機(jī)可以通過(guò)發(fā)送請(qǐng)求命令向另一個(gè)路由器請(qǐng)求選路信息。路由器使用響應(yīng)命令回答。版本號(hào)字段包含了協(xié)議的版本號(hào)(目前的版本號(hào)值為1),接收方會(huì)檢測(cè)該字段,以確定對(duì)方運(yùn)行的RIPng協(xié)議本地是否能進(jìn)行正確的解釋。
報(bào)文的剩余部分是一個(gè)RTE序列,其中每一個(gè)RTE由目的IPv6前綴、路由標(biāo)記、前綴的有效長(zhǎng)度以及到目的網(wǎng)絡(luò)的花費(fèi)等4部分組成。
IPv6的地址為128bit,因此在RTE中占用16字節(jié)。
路由標(biāo)記字段是從RIP中保留下來(lái)的,其最主要的用途是用來(lái)對(duì)外部路由做標(biāo)志,以區(qū)分內(nèi)部路由和外部路由,供外部網(wǎng)關(guān)路由協(xié)議(如EGP或BGP)使用。該字段也可用于其他目的,只要網(wǎng)絡(luò)內(nèi)所有運(yùn)行RIPng的路由器對(duì)其解釋是一致的。
前綴長(zhǎng)度字段指明了前綴中有效位的長(zhǎng)度,IPv6中使用了前綴長(zhǎng)度的概念代替了IPv4中的子網(wǎng)掩碼。由于IPv6地址的意義很明確,因此RIPng中不再區(qū)分網(wǎng)絡(luò)路由、子網(wǎng)路由或主機(jī)路由。
路由花費(fèi)字段指明到目的網(wǎng)絡(luò)的花費(fèi),由于RIPng的最大工作直徑為15跳,因此該字段可以為1和15之間的任意值,16即意味著目的地不可達(dá)。RIPng中仍然使用固定的度量方式,即該字段的含義只能是跳數(shù),路由器不能對(duì)其進(jìn)行其他的解釋。
RIPng并沒(méi)有限制報(bào)文的大小,RIPng報(bào)文所能攜帶的最大RTE的數(shù)目是由物理介質(zhì)的MTU所決定的,計(jì)算公式如下:
報(bào)文長(zhǎng)度 = RTE數(shù)目×20 + 4
其中RTE數(shù)目的計(jì)算公式如下:
RTE數(shù)目=INT[(MTU - IPv6首部長(zhǎng)度 - UDP首部長(zhǎng)度 - RIPng首部長(zhǎng)度) / RTE長(zhǎng)度]
與RIPv2不同的是,RIPng的下一跳字段是由一個(gè)單獨(dú)的RTE指定的。RIPng使用單獨(dú)的RTE表示下一跳的原因是IPv6的地址多達(dá)128bit,若將下一跳字段與目的網(wǎng)絡(luò)地址放在同一個(gè)RTE中,則RTE的大小幾乎將會(huì)增加一倍,因此RIPng中采取目的網(wǎng)絡(luò)地址和下一跳分開的方法來(lái)減小RTE的長(zhǎng)度。在表示下一跳的RTE中,路由標(biāo)記和前綴長(zhǎng)度字段必須為零,而度量字段為0xFF。
3 RIPng的工作原理
RIPng把參與通信的機(jī)器分為主動(dòng)和被動(dòng)兩種方式。主動(dòng)路由器向其他路由器通告路由,而被動(dòng)路由器接收通告并更新其路由,被動(dòng)路由器自己并不通告路由。只有路由器以主動(dòng)方式使用RIPng,主機(jī)只能使用被動(dòng)方式,因?yàn)橹鳈C(jī)并不了解路由信息。
運(yùn)行RIPng的路由器維持一個(gè)到所有可能目的網(wǎng)絡(luò)的路由表,路由器周期性地(RFC推薦為30s)向鄰居節(jié)點(diǎn)發(fā)送該路由器的路由表,接收方通過(guò)接收鄰居路由器的周期性通告更新自己的路由表。這種周期性的路由信息的交換使得每個(gè)路由器形成對(duì)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的局部的認(rèn)識(shí)。RIPng使用到達(dá)目的站點(diǎn)所經(jīng)過(guò)的鏈路數(shù),即跳數(shù)來(lái)度量路由花費(fèi),同時(shí)RFC規(guī)定RIPng的工作范圍為15跳,數(shù)值16表示無(wú)窮大,即意味著路由不可達(dá)。
路由器通常不會(huì)主動(dòng)發(fā)出請(qǐng)求報(bào)文來(lái)進(jìn)行路由請(qǐng)求,路由請(qǐng)求通常只是在路由器剛啟動(dòng)或是路由器正在尋找路由信息時(shí)才會(huì)發(fā)出請(qǐng)求報(bào)文以獲得響應(yīng)。
路由器在查詢響應(yīng)、周期更新、觸發(fā)更新三種情況下會(huì)收到響應(yīng)報(bào)文。路由器根據(jù)響應(yīng)報(bào)文判斷是否對(duì)本地路由表進(jìn)行更新。由于響應(yīng)報(bào)文可能對(duì)本地路由表進(jìn)行改動(dòng),因此對(duì)報(bào)文的來(lái)源必須進(jìn)行嚴(yán)格的檢查,以確認(rèn)報(bào)文的合法性。
眾所周知,基于距離矢量算法的路由協(xié)議會(huì)產(chǎn)生慢收斂和無(wú)限計(jì)數(shù)問(wèn)題,這樣就引發(fā)了路由的不一致。RIPng使用水平分割技術(shù)、毒性逆轉(zhuǎn)技術(shù)、觸發(fā)更新技術(shù)來(lái)解決這些問(wèn)題,但是這些技術(shù)的引入,同時(shí)又帶來(lái)了另一些問(wèn)題,如采用觸發(fā)更新技術(shù)后,如果不對(duì)產(chǎn)生的報(bào)文進(jìn)行合理的控制,很容易產(chǎn)生廣播風(fēng)暴。
路由器周期性的報(bào)文廣播和觸發(fā)更新給網(wǎng)絡(luò)造成很多額外的負(fù)載,為減少路由信息的數(shù)量,RIPng可以采用多播技術(shù)發(fā)送更新報(bào)文,同時(shí)利用一個(gè)小的隨機(jī)時(shí)延對(duì)觸發(fā)更新報(bào)文進(jìn)行抑制。
介紹RIPng的工作原理就不能不提到定時(shí)器,定時(shí)器在RIPng中起著非常重要的作用,RIPng使用定時(shí)器來(lái)實(shí)現(xiàn)路由表的更新、報(bào)文的發(fā)送。周期性的報(bào)文廣播是由定時(shí)器實(shí)現(xiàn)的,另外為防止路由表長(zhǎng)時(shí)間未更新而失效,每個(gè)路由表項(xiàng)有兩個(gè)定時(shí)器與之相聯(lián)系,超時(shí)的路由表項(xiàng)最終將會(huì)被刪除,以防止路由器廣播和使用已經(jīng)失效的路由。RIPng中使用的定時(shí)器主要有以下三個(gè):
(1)啟動(dòng)周期性廣播的定時(shí)器。此定時(shí)器被設(shè)置成25s到35s之間的任一隨機(jī)數(shù)。這樣設(shè)置的目的是為了避免網(wǎng)絡(luò)上所有路由器以相同的定時(shí)發(fā)送更新報(bào)文,利用隨機(jī)間隔可以均衡通信量,從而減少路由器之間發(fā)生沖突的可能性。
。2)期滿定時(shí)器。路由器只要收到通往特定信宿路由,就對(duì)通往該信宿的期滿定時(shí)器初始化。期滿定時(shí)器被設(shè)定為180s,如果一條路由在期滿定時(shí)器超時(shí)前未得到相關(guān)報(bào)文的更新,則該條路由不再有效,但仍保留在路由表中,以便通知其他路由器這條路由已經(jīng)失效。
。3)垃圾收集定時(shí)器。路由器對(duì)無(wú)效路由打上尺度為無(wú)窮大的無(wú)效標(biāo)記并將垃圾收集定時(shí)器初始化。此時(shí),定時(shí)器被設(shè)置為120s,在這段時(shí)間內(nèi)這些路由仍然會(huì)被路由器周期性地廣播,這樣相鄰路由器就能迅速?gòu)穆酚杀碇袆h除該路由。
4 RIPv1、RIPv2和RIPng的比較
根據(jù)上面的介紹,我們應(yīng)該看到RIPng的目標(biāo)并不是創(chuàng)造一個(gè)全新的協(xié)議,而是對(duì)RIP進(jìn)行必要的改造以使其適應(yīng)IPv6下的選路要求,因此RIPng的基本工作原理同RIP是一樣的,其主要的變化在地址和報(bào)文格式方面。下面列舉了一些RIPv1、RIPv2與RIPng之間的主要區(qū)別:
。1)地址版本。RIPv1、RIPv2是基于IPv4的,地址域只有32bit,而RIPng基于IPv6,使用的所有地址均為128bit。
(2)子網(wǎng)掩碼和前綴長(zhǎng)度。RIPv1被設(shè)計(jì)成用于無(wú)子網(wǎng)的網(wǎng)絡(luò),因此沒(méi)有子網(wǎng)掩碼的概念,這就決定了RIPv1不能用于傳播變長(zhǎng)的子網(wǎng)地址或用于CIDR的無(wú)類型地址。RIPv2增加了對(duì)子網(wǎng)選路的支持,因此使用子網(wǎng)掩碼區(qū)分網(wǎng)絡(luò)路由和子網(wǎng)路由。IPv6的地址前綴有明確的含義,因此RIPng中不再有子網(wǎng)掩碼的概念,取而代之的是前綴長(zhǎng)度。同樣也是由于使用了IPv6地址,RIPng中也沒(méi)有必要再區(qū)分網(wǎng)絡(luò)路由、子網(wǎng)路由和主機(jī)路由。
。3)協(xié)議的使用范圍。RIPv1、RIPv2的使用范圍被設(shè)計(jì)成不只局限于TCP/IP協(xié)議簇,還能適應(yīng)其他網(wǎng)絡(luò)協(xié)議簇的規(guī)定,因此報(bào)文的路由表項(xiàng)中包含有網(wǎng)絡(luò)協(xié)議簇字段,但實(shí)際的實(shí)現(xiàn)程序很少被用于其他非IP的網(wǎng)絡(luò),因此RIPng中去掉了對(duì)這一功能的支持。
(4)對(duì)下一跳的表示。RIPv1中沒(méi)有下一跳的信息,接收端路由器把報(bào)文的源IP地址作為到目的網(wǎng)絡(luò)路由的下一跳。RIPv2中明確包含了下一跳信息,便于選擇最優(yōu)路由和防止出現(xiàn)選路環(huán)路及慢收斂。與RIPv2不同,為防止RTE過(guò)長(zhǎng),同時(shí)也是為了提高路由信息的傳輸效率,RIPng中的下一跳字段是作為一個(gè)單獨(dú)的RTE存在的。
(5)報(bào)文長(zhǎng)度。RIPv1、RIPv2中對(duì)報(bào)文的長(zhǎng)度均有限制,規(guī)定每個(gè)報(bào)文最多只能攜帶25個(gè)RTE。而RIPng對(duì)報(bào)文長(zhǎng)度、RTE的數(shù)目都不作規(guī)定,報(bào)文的長(zhǎng)度是由介質(zhì)的MTU決定的。RIPng對(duì)報(bào)文長(zhǎng)度的處理,提高了網(wǎng)絡(luò)對(duì)路由信息的傳輸效率。
(6)安全性考慮。RIPv1報(bào)文中并不包含驗(yàn)證信息,因此也是不安全的,任何通過(guò)UDP的520端口發(fā)送分組的主機(jī),都會(huì)被鄰機(jī)當(dāng)作一個(gè)路由器,從而很容易造成路由器欺騙。RIPv2設(shè)計(jì)了驗(yàn)證報(bào)文來(lái)增強(qiáng)安全性,進(jìn)行路由交換的路由器之間必須通過(guò)驗(yàn)證才能接收彼此的路由信息,但是RIPv2的安全性還是很不充分的。IPv6包含有很好的安全性策略,因此RIPng中不再單獨(dú)設(shè)計(jì)安全性驗(yàn)證報(bào)文,而是使用IPv6的安全性策略。
。7)報(bào)文的發(fā)送方式。RIPv1使用廣播來(lái)發(fā)送路由信息,不僅路由器會(huì)接收到分組,同一局域網(wǎng)內(nèi)的所有主機(jī)也會(huì)接收到分組,這樣做是不必要的,也是不安全的。因此RIPv2和RIPng既可以使用廣播也可以使用多播發(fā)送報(bào)文,這樣在支持多播的網(wǎng)絡(luò)中就可以使用多播來(lái)發(fā)送報(bào)文,大大降低了網(wǎng)絡(luò)中傳播的路由信息的數(shù)量。
5 存在的問(wèn)題及改進(jìn)方向
由于RIPng是從RIP改造而來(lái),因此RIPng中仍然存在很多問(wèn)題,所以RIPng的實(shí)現(xiàn)程序必須仔細(xì)地設(shè)計(jì),以減少對(duì)網(wǎng)絡(luò)效率帶來(lái)的影響。RIPng存在的問(wèn)題主要有:
(1)協(xié)議的最大工作直徑為15跳,因此限制了網(wǎng)絡(luò)的規(guī)模。
。2)存在無(wú)限計(jì)數(shù)及慢收斂問(wèn)題,可能產(chǎn)生路由環(huán)路,降低網(wǎng)絡(luò)效率。
。3)使用固定的跳數(shù)作為路由花費(fèi)的度量方式。由于跳數(shù)僅是對(duì)網(wǎng)絡(luò)的響應(yīng)能力和容量的粗略估計(jì),因此使用跳數(shù)有時(shí)并不能選出具有最小延遲或是最高帶寬的路由。
(4)路由器之間的同步問(wèn)題導(dǎo)致網(wǎng)絡(luò)的周期性擁塞。
針對(duì)上述存在的這些問(wèn)題,可以考慮從以下兩個(gè)方面加以解決:
。1)根據(jù)網(wǎng)絡(luò)的實(shí)際情況仔細(xì)設(shè)計(jì)無(wú)限值的大小。無(wú)限值設(shè)計(jì)得太大,則當(dāng)存在路由環(huán)路時(shí),路由穩(wěn)定的時(shí)間會(huì)增大,網(wǎng)絡(luò)的效率也會(huì)降低。但是無(wú)限值也不能設(shè)計(jì)得太小,如果設(shè)計(jì)得太小,則協(xié)議在實(shí)際應(yīng)用中就會(huì)變得毫無(wú)用處。因此RIPng比較適合于中等規(guī)模的網(wǎng)絡(luò),而且也比較適合于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)經(jīng)常發(fā)生變化的網(wǎng)絡(luò),這是因?yàn)槁酚杀淼母率窃隽窟M(jìn)行的,而且選路不需要進(jìn)行復(fù)雜的運(yùn)算。
。2)增大報(bào)文廣播定時(shí)器周期的隨機(jī)性。RIPng中定時(shí)器的隨機(jī)時(shí)間太短,一組路由器經(jīng)過(guò)多次報(bào)文交換后,它們的周期會(huì)逐漸相同,從而導(dǎo)致了這組路由器之間的同步。解決這個(gè)問(wèn)題的關(guān)鍵在于增加更新周期定時(shí)器中的隨機(jī)部分,擴(kuò)大不同路由器之間周期的差別,從而預(yù)防或中止路由器之間的同步現(xiàn)象。
對(duì)于RIPng中存在的其他一些問(wèn)題,也有很多解決方案,但是這些方案實(shí)現(xiàn)起來(lái)很困難,并且是以犧牲RIPng協(xié)議的簡(jiǎn)單性為代價(jià)的,因此實(shí)踐中應(yīng)做適當(dāng)?shù)臋?quán)衡。另外這些改進(jìn)措施目前并不是標(biāo)準(zhǔn)協(xié)議的一部分,因此并不是所有的路由器都會(huì)支持這些功能。
6RIPng的發(fā)展趨勢(shì)
RIPng是隨著IPv6的產(chǎn)生而產(chǎn)生的,因此RIPng的使用和推廣也取決于IPv6的應(yīng)用時(shí)間。由于市場(chǎng)的影響以及超網(wǎng)編址、CIDR技術(shù)的產(chǎn)生,大大推遲了IP地址耗盡的時(shí)間,因此IPv6迄今為止尚未得到廣泛的應(yīng)用。但是隨著未來(lái)因特網(wǎng)的進(jìn)一步發(fā)展,網(wǎng)絡(luò)業(yè)務(wù)量的不斷增加,IPv6的使用是不可避免的。因此包括RIPng在內(nèi)的下一代路由器的實(shí)現(xiàn)就已經(jīng)被提到議事日程了。盡管新的IGP如OSPF,要比RIP優(yōu)越得多,但是RIP在IPv4網(wǎng)絡(luò)仍然被廣泛使用,這是因?yàn)镽IP有其他IGP所不具備的優(yōu)點(diǎn)。在一個(gè)中等規(guī)模的網(wǎng)絡(luò)中,RIP非常容易配置,而且需要使用的帶寬要比OSPF少得多,網(wǎng)絡(luò)的維護(hù)和管理也相對(duì)簡(jiǎn)單。因此可以預(yù)見,未來(lái)的IPv6網(wǎng)絡(luò)中RIPng還將被廣泛使用。IETF已經(jīng)為RIPng制定了相關(guān)的標(biāo)準(zhǔn),隨著IPv6試驗(yàn)網(wǎng)的展開,RIPng也將在實(shí)踐中逐步完善。由于RIPng協(xié)議與RIP相比改動(dòng)不大,因此只要對(duì)現(xiàn)有設(shè)備進(jìn)行適當(dāng)改造就可以支持RIPng。目前國(guó)外已經(jīng)出現(xiàn)商用的支持RIPng路由器產(chǎn)品,距離IPv6路由器的大規(guī)模產(chǎn)業(yè)化只是一個(gè)時(shí)間問(wèn)題。
參 考 文 獻(xiàn)
[1] Malkin G . RIPng for IPv6, RFC 2080. http://www.ietf.org/rfc/rfc2080.txt,2003,03
[2] Malkin G . RIPng Protocol Applicability Statement,RFC 2081. http://www.ietf.org/rfc/rfc2081.txt,2003,03
[3] Huitema C . 陶文星譯 . 因特網(wǎng)路由技術(shù). 北京: 清華大學(xué)出版社, 1998,48-74
曲 軍,碩士研究生,主要研究方向?yàn)榈谌苿?dòng)通信。
李 彤,教授,博士,主要研究方向?yàn)樾畔⑻幚砗屯ㄐ啪W(wǎng)絡(luò)。
----《中國(guó)數(shù)據(jù)通信》