RIP協(xié)議的信號(hào)處理與原理
在路由方面,最為基礎(chǔ)知識(shí),我們需要對(duì)其協(xié)議進(jìn)行了解。這里我們主要講解的則是RIP協(xié)議的基礎(chǔ)內(nèi)容。那么就讓我們看看RIP協(xié)議的運(yùn)行過程就是路由器軟件對(duì)消息輸入和輸出處理過程,其輸入和輸出處理大致如下所描述:
(一)輸入處理:主要是指路由器協(xié)議軟件對(duì)在520號(hào)UDP端口收到的數(shù)據(jù)報(bào)進(jìn)行的處理.對(duì)于輸入處理,首先必須先作一定格式檢查,檢查通過后,再分別對(duì)幾種輸入消息做相應(yīng)的處理.
請(qǐng)求報(bào)文:路由器在開始運(yùn)行時(shí),為了從鄰機(jī)處獲取路由表的初始值,通常會(huì)發(fā)一個(gè)請(qǐng)求.報(bào)文的Command字段為(request).對(duì)所有或部分路由表的請(qǐng)求,一般以廣播形式從520號(hào)UDP端口發(fā)送.實(shí)際中,這種請(qǐng)求有兩種格式:請(qǐng)求獲取路由表的全部和請(qǐng)求獲取路由表的某些特定路由項(xiàng).
路由軟件先逐個(gè)路由項(xiàng)地處理請(qǐng)求,如果沒有任何路由項(xiàng),也就沒有響應(yīng);如果請(qǐng)求中恰好只有一個(gè)路由項(xiàng),并且address family identifier為0,metric為16,則表示需要接收方發(fā)送所有路由表的請(qǐng)求;除此之外,則是要求部分路由,處理很簡單,沿著請(qǐng)求路由項(xiàng)表一個(gè)一個(gè)看,對(duì)于每個(gè)路由項(xiàng),在主機(jī)路由數(shù)據(jù)庫中查找,如果找到,則將該路由的metric值填入數(shù)據(jù)報(bào)的metric字段,如果沒有,則向其中填16.一旦所有路由項(xiàng)均已處理,將command字段設(shè)為響應(yīng)(response),并將該數(shù)據(jù)報(bào)發(fā)回其來自的端口.
注意,根據(jù)請(qǐng)求是否關(guān)于指定的一批目的地,還是關(guān)于整個(gè)路由表,處理有所不同.如果關(guān)于整個(gè)路由表,輸出作普通的處理即可,包括水平分割和子網(wǎng)隱藏,因此來自路由表的某些路由項(xiàng)將被隱藏;如果是指定路由項(xiàng),則將查找結(jié)果返回,不作水平分割,如果需要還要返回子網(wǎng)信息.
2.響應(yīng)報(bào)文:因?yàn)橹付ú樵儭⒙酚尚薷牡仍蚨盏巾憫?yīng).
不論收到什么樣的響應(yīng),RIP協(xié)議處理程序就開始更新它的路由表.路由表的每一項(xiàng)至少都要包括如下內(nèi)容:
·目的站點(diǎn)的地址;
·通往目的站點(diǎn)的量度值;
·"下一個(gè)路由器"的地址;
·"最近更新過"的標(biāo)志;
·幾個(gè)定時(shí)器.
因?yàn)樘幚眄憫?yīng)可能修改主機(jī)路由表,所以必須作嚴(yán)格的有效性檢查.對(duì)于RIP Veon1數(shù)據(jù)報(bào),對(duì)must be zero 域必須進(jìn)行查零處理,對(duì)RIP Version2 數(shù)據(jù)報(bào)則可忽略.數(shù)據(jù)報(bào)驗(yàn)證有效后,還要對(duì)其路由項(xiàng)逐個(gè)進(jìn)行驗(yàn)證.全部通過后,我們?cè)O(shè)置metric = MIN ( metric + cost , 16 ),16代表無限長,然后檢查是否已有路由到達(dá)該地址,如果沒有,則加入路由表,但是如果metric是無限長,則不要將其加入路由表;如果現(xiàn)有路由不比新加的路由差,我們也不將其加入路由表.對(duì)此,需要執(zhí)行以下動(dòng)作:
·根據(jù)收到的數(shù)據(jù)報(bào)設(shè)置目的地和metric
·根據(jù)數(shù)據(jù)報(bào)的來源主機(jī)設(shè)置路由器
·為該路由設(shè)置超時(shí)值,如果垃圾回收定時(shí)器正在運(yùn)行,將其停止
·設(shè)置路由改變標(biāo)志,給輸出進(jìn)程發(fā)信號(hào),觸發(fā)一次修改
如果現(xiàn)存一個(gè)路由,首先比較路由器,如果來自同一路由器,對(duì)超時(shí)值重新進(jìn)行初始化,然后比較metric.如果數(shù)據(jù)報(bào)來自與現(xiàn)存路由同樣的路由器且新的metric值與舊的不同,或者新的比舊的低,進(jìn)行如下動(dòng)作:
·將新的metric填入,并將該路由器設(shè)置為數(shù)據(jù)報(bào)的來源
·為此路由初始化超時(shí)值
·設(shè)置路由改變標(biāo)志,給輸出進(jìn)程發(fā)信號(hào),觸發(fā)一次修改
·如果新metric是16,啟動(dòng)刪除進(jìn)程(只是在metric剛剛被設(shè)為16時(shí)啟動(dòng))
·如果新的metric值與舊的相等,除了重新初始化超時(shí)值外什么也不干
(二)輸出處理:用于產(chǎn)生包含全部或部分路由表的響應(yīng)信息的處理,可能由于輸入進(jìn)程發(fā)現(xiàn)請(qǐng)求或路由修改而觸發(fā).
先看后兩種情況下如何選擇目的地址.如果一個(gè)響應(yīng)要發(fā)送給所有目的地,則響應(yīng)信息發(fā)送給每個(gè)點(diǎn)到點(diǎn)連接的網(wǎng)絡(luò)的對(duì)端,而且響應(yīng)在支持廣播的網(wǎng)絡(luò)上進(jìn)行廣播.但是如果網(wǎng)絡(luò)不支持廣播,或者在沉默的路由器,就有必要指定一張實(shí)際的臨近主機(jī)和路由器表,顯式地向每一個(gè)發(fā)送數(shù)據(jù)報(bào).觸發(fā)的修改因?yàn)閮蓚€(gè)方面需要處理:
第一, RIP協(xié)議觸發(fā)的修改在容量有限或有許多路由器的網(wǎng)絡(luò)上可能導(dǎo)致格外大的負(fù)載,因此協(xié)議要求實(shí)現(xiàn)方在限制觸發(fā)式修改出現(xiàn)的頻率上采取一定的措施,觸發(fā)式修改發(fā)送后,需要隨機(jī)地將一個(gè)定時(shí)器設(shè)置成1到5秒,如果在定時(shí)器超時(shí)前發(fā)生其它修改,需要到定時(shí)器超時(shí)才觸發(fā)其中之一,然后定時(shí)器再隨機(jī)地設(shè)置成1到5秒,觸發(fā)式修改可能被一般修改所禁止;
第二, RIP協(xié)議觸發(fā)式修改可能不必包括整個(gè)路由表,原則上說,只有改變過的路由才需要包括,作為觸發(fā)式修改一部分的信息至少包括設(shè)置了路由修改標(biāo)志的路由,也可以包括附加路由和全部路由.如果完整的修改需要多個(gè)數(shù)據(jù)報(bào),則發(fā)送全部路由極有可能被打斷;而觸發(fā)式修改處理時(shí),需要產(chǎn)生每個(gè)直連網(wǎng)絡(luò)的信息.產(chǎn)生觸發(fā)式修改或一般修改時(shí),都需要進(jìn)行水平分割操作.
如果產(chǎn)生輸出的同時(shí)也允許輸入處理,則必須建立相應(yīng)的互斥機(jī)制,產(chǎn)生觸發(fā)式修改信息時(shí),路由改變標(biāo)志不得因處理輸入而改變.觸發(fā)式修改與其它修改的唯一不同之處在于:可能會(huì)忽略某些改變過的路由,今后推出的其它機(jī)制恐怕要適應(yīng)觸發(fā)式修改.