Ad hoc路由協(xié)議實(shí)現(xiàn)研究
(3)轉(zhuǎn)發(fā)與路由混合有些Ad hoc路南協(xié)議轉(zhuǎn)發(fā)和路由功能沒(méi)有明顯界線,如DSR。該協(xié)議要求每個(gè)分組(不只是路由控制分組)必需攜帶一個(gè)特殊的DSR頭以供用戶空間中的DSR守護(hù)進(jìn)程處理。該路由和轉(zhuǎn)發(fā)功能結(jié)合的方式與現(xiàn)代操作系統(tǒng)內(nèi)部的路由體系結(jié)構(gòu)不相適應(yīng),且很難高效應(yīng)用。將整個(gè)路由協(xié)議放入內(nèi)核,或把核心路由表分離出來(lái)而將轉(zhuǎn)發(fā)功能放入用戶空間。而有些情況,違反該分離原則,獲得一些優(yōu)化以減少路由開銷。
(4)新的路由模型有些路由協(xié)議采用非傳統(tǒng)的路由模式(如源路由、基于流的轉(zhuǎn)發(fā)路由等)。這些路由模式與當(dāng)前的IP路由體系結(jié)構(gòu)相背離,并且對(duì)系統(tǒng)設(shè)計(jì)提出挑戰(zhàn)。在源路由方式下,一個(gè)分組要經(jīng)過(guò)的全部路徑由源節(jié)點(diǎn)決定,并且將這些路由信息編碼在分組頭部。而傳統(tǒng)IP路由轉(zhuǎn)發(fā)功能是逐跳的,并且由本地路由表驅(qū)動(dòng)。在基于流的轉(zhuǎn)發(fā)方式下每個(gè)分組都有一個(gè)流ID,網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都有一個(gè)流表,轉(zhuǎn)發(fā)的過(guò)程是根據(jù)流ID查找流表,而路由的過(guò)程是在每個(gè)節(jié)點(diǎn)建立流表。
大多數(shù)通用操作系統(tǒng)不能靈活支持新的路由模型,因此這些路由協(xié)議的實(shí)現(xiàn)既要修改內(nèi)核;IP棧又要使用內(nèi)核擴(kuò)展機(jī)制避開IP棧。
(5)跨層交互無(wú)線信道為跨層交互作用提供許多機(jī)會(huì)。在某些路由算法中,路由協(xié)議的設(shè)計(jì)要使用物理層和鏈路層參數(shù),如信號(hào)強(qiáng)度、鏈路狀態(tài)等。概念上應(yīng)放棄跨層交互,因?yàn)殡m然跨層設(shè)計(jì)會(huì)提供最優(yōu)化,但不加選擇的訪問(wèn)所有底層參數(shù)會(huì)嚴(yán)重?fù)p害網(wǎng)絡(luò)體系結(jié)構(gòu)。許多路由協(xié)議使用其他層路由協(xié)議信息以提高性能,例如每個(gè)相鄰節(jié)點(diǎn)的鏈路質(zhì)量信息是某些路由算法所需的。盡管可得到這些信息,但跨越不同的硬件和操作系統(tǒng)時(shí)沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),需通過(guò)標(biāo)準(zhǔn)方式以便獲得低層信息,這對(duì)開發(fā)路由協(xié)議非常重要。本文引用地址:http://cafeforensic.com/article/202642.htm
3 新的體系結(jié)構(gòu)
首先提出一種通用方法以在通用操作系統(tǒng)中支持按需路由協(xié)議,并提出下面機(jī)制以增強(qiáng)當(dāng)前分組轉(zhuǎn)發(fā)功能。在內(nèi)核路由表的每個(gè)條目增加一個(gè)標(biāo)志表明該條目是否為按需路由條目,從而當(dāng)路由不可達(dá)時(shí),內(nèi)核將分組排隊(duì)緩存而不是直接丟棄。一個(gè)路由若具有空的下一條或接口則將緩存以等待路由發(fā)現(xiàn)。同時(shí)路由表無(wú)需包括所可能目的地,使用基于子網(wǎng)標(biāo)志的路由和默認(rèn)路由可到達(dá)同樣的目的。將一種稱為按需路由組件 (ODRC)的新組件加入內(nèi)核分組轉(zhuǎn)發(fā)功能以實(shí)現(xiàn)按需路由功能。當(dāng)內(nèi)核收到一個(gè)分組并發(fā)現(xiàn)沒(méi)有向應(yīng)的路由時(shí),它首先通知用戶空間的路由守護(hù)進(jìn)程對(duì)該分組的目的地發(fā)出路由請(qǐng)求,然后將該分組緩存等待守護(hù)進(jìn)程返回路由發(fā)現(xiàn)狀態(tài)。如果該過(guò)程成功完成,則填充相應(yīng)路由表?xiàng)l目,緩存的分組重新插入轉(zhuǎn)發(fā)隊(duì)列。為解決路由緩存問(wèn)題,必須在每個(gè)路由條目上加入時(shí)間戳,記錄該條目最后被使用時(shí)間。時(shí)間戳用于刪除一個(gè)未使用的過(guò)期路由。
4 Linux下的一種實(shí)現(xiàn)
4.1 Linux系統(tǒng)網(wǎng)絡(luò)協(xié)議棧體系結(jié)構(gòu)
Linux網(wǎng)絡(luò)系統(tǒng)有硬件,數(shù)據(jù)鏈路層、IP層、INET Socket層、BSD Socket層和應(yīng)用層5部分。其中在Linux內(nèi)核中分組包括前4部分。圖1為L(zhǎng)inux系統(tǒng)基于TCP/IP的網(wǎng)絡(luò)體系結(jié)構(gòu)。
4.2 Linux系統(tǒng)網(wǎng)絡(luò)堆棧的IP層
Linux路由系統(tǒng)中主要保存3種路由相關(guān)的數(shù)據(jù):(1)在物理上與本機(jī)相連接的主機(jī)地址信息表,即鄰居節(jié)點(diǎn)表。鄰居節(jié)點(diǎn)表用neigh_table{} 數(shù)據(jù)結(jié)構(gòu)表示,以neighbour{}數(shù)據(jù)結(jié)構(gòu)為節(jié)點(diǎn);(2)在網(wǎng)絡(luò)訪問(wèn)中判斷一個(gè)網(wǎng)絡(luò)地址的數(shù)據(jù)表,是轉(zhuǎn)發(fā)信息庫(kù)FIB,用來(lái)保存路由規(guī)則,用 fib_table{)數(shù)據(jù)結(jié)構(gòu)鏈表來(lái)表示;(3)最近使用過(guò)的路由緩存表,稱為路由緩存表,用rtable{}數(shù)據(jù)結(jié)構(gòu)鏈表表示。
評(píng)論