Linux 系統(tǒng)上 AODV 協(xié)議實(shí)現(xiàn)的分析.doc_第1頁(yè)
Linux 系統(tǒng)上 AODV 協(xié)議實(shí)現(xiàn)的分析.doc_第2頁(yè)
Linux 系統(tǒng)上 AODV 協(xié)議實(shí)現(xiàn)的分析.doc_第3頁(yè)
Linux 系統(tǒng)上 AODV 協(xié)議實(shí)現(xiàn)的分析.doc_第4頁(yè)
Linux 系統(tǒng)上 AODV 協(xié)議實(shí)現(xiàn)的分析.doc_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

精品論文linux 系統(tǒng)上 aodv 協(xié)議實(shí)現(xiàn)的分析齊朝霞 北京郵電大學(xué)信息與通信工程學(xué)院,北京 (100876) e-mail:摘 要:無(wú)線ad hoc 網(wǎng)絡(luò)是一種不需要基礎(chǔ)設(shè)施的自組織和自管理網(wǎng)絡(luò),網(wǎng)絡(luò)中所有 的節(jié)點(diǎn)同時(shí)具有終端和路由器的功能。因此無(wú)線自組網(wǎng)是的一個(gè)重要研究領(lǐng)域就是路由技 術(shù)。為了適應(yīng)各種不同的應(yīng)用場(chǎng)合,研究人員設(shè)計(jì)了許多的路由協(xié)議。其中,aodv(ad hoc on-demand distance vector)路由協(xié)議是ietf (internet engineering task force)的manet工作 組(mobi1e ad hoc networks working group)推薦的無(wú)線自組網(wǎng)路由協(xié)議之一。本文論述如何 在linux操作系統(tǒng)上實(shí)現(xiàn)aodv路由協(xié)議。首先,本文介紹了aodv路由協(xié)議的工作原理,它簡(jiǎn) 單、實(shí)用而且性能優(yōu)越。然后介紹了linux系統(tǒng)的網(wǎng)絡(luò)框架,在其分析上提出aodv路由實(shí)現(xiàn) 方案。最后,對(duì)實(shí)現(xiàn)方案中的難點(diǎn)進(jìn)行逐條分析。實(shí)現(xiàn)方案分成三個(gè)部分:一部分是與操作 系統(tǒng)的功能接口,第二部分是記錄每條路由最后使用時(shí)間的內(nèi)核模塊代碼,第三部分是 aodv邏輯算法的實(shí)現(xiàn)。關(guān)鍵詞:aodv無(wú)線自組織網(wǎng)絡(luò)路由linux中圖分類號(hào):tn911.引 言無(wú)線 ad hoc 網(wǎng)絡(luò)是一種不需要基礎(chǔ)設(shè)施的自組織和自管理網(wǎng)絡(luò),網(wǎng)絡(luò)中所有的節(jié)點(diǎn)同 時(shí)具有終端和路由器的功能。由于無(wú)線自組網(wǎng)的拓?fù)浣Y(jié)構(gòu)動(dòng)態(tài)變化,如何在移動(dòng)中保持通信 成為一個(gè)重要的研究方向?,F(xiàn)階段已經(jīng)提出許多的路由算法,各個(gè)路由算法有各自的優(yōu)缺點(diǎn), 適合于不同的場(chǎng)合1。利用無(wú)線自組網(wǎng)的技術(shù),可以擴(kuò)大無(wú)線局域網(wǎng)的使用范圍。同時(shí),可 以利用基于無(wú)線局域網(wǎng)的設(shè)備,很方便的驗(yàn)證無(wú)線自組網(wǎng)的一些技術(shù)。aodv(ad hoc on-demand distance vector)路由協(xié)議是 ietf 的 manet(mobile ad hoc networks)工作組推薦的無(wú)線自組網(wǎng)路由協(xié)議之一。本文在 ieee802.11b 或 ieee802.11g 協(xié)議 的基礎(chǔ)上,利用無(wú)線局域網(wǎng)設(shè)備,對(duì)在 linux 操作系統(tǒng)上實(shí)現(xiàn) aodv 路由算法進(jìn)行了分析。2.aodv 路由協(xié)議介紹aodv 路由協(xié)議是一種按需路由協(xié)議。當(dāng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)發(fā)生變化時(shí),它能快速收斂, 具有斷路的自我修復(fù)功能。計(jì)算量小,存儲(chǔ)資源消耗小,對(duì)網(wǎng)絡(luò)帶寬占用小。通過(guò)使用目的 節(jié)點(diǎn)序列號(hào),協(xié)議實(shí)現(xiàn)了無(wú)環(huán)路由,并且避免了無(wú)窮計(jì)數(shù)的問(wèn)題,并且很容易編程實(shí)現(xiàn)。為 了避免單向鏈路引起的錯(cuò)誤操作,協(xié)議引入了一個(gè)黑名單,把和自己是單向鏈路的鄰居節(jié)點(diǎn) 放入黑名單中。aodv 使用了分布式的、基于路由表的路由方式,所以建立路由表后,在路由中的每 個(gè)節(jié)點(diǎn)都要執(zhí)行路由維持、管理路由表的任務(wù)。本文的重點(diǎn)是在 linux 實(shí)現(xiàn)上的內(nèi)核方面, 下面主要介紹 aodv 所需要 ip 底層相關(guān)的內(nèi)容。節(jié)點(diǎn)的路由中除了存儲(chǔ)源和目的節(jié)點(diǎn)的序列號(hào)外,還存儲(chǔ)了其他有用的信息,這些信息 成為有關(guān)路由項(xiàng)的軟狀態(tài)2。與反向路由相關(guān)的是路由請(qǐng)求定時(shí)器,這些定時(shí)器的目的是清 除一定時(shí)間內(nèi)沒(méi)有使用的反向路由項(xiàng)。定時(shí)器的設(shè)置依賴于自組網(wǎng)的規(guī)模大小,與路由表相 聯(lián)系的另外一個(gè)重要的參數(shù)是路由緩存時(shí)間,即在超過(guò)這個(gè)時(shí)間之后,對(duì)應(yīng)的路由表就變?yōu)? 7 -無(wú)效。所以每一個(gè)路由的最后使用時(shí)間都要保存,這是 aodv 路由表維護(hù)的重要依據(jù),而這個(gè)使用時(shí)間需要 linux 內(nèi)核來(lái)提供。3.linux 操作系統(tǒng)路由轉(zhuǎn)發(fā)功能linux 網(wǎng)絡(luò)系統(tǒng)基本可以分為硬件層/數(shù)據(jù)鏈路層、ip 層、inet socket 層、bsd socket層和應(yīng)用層五個(gè)部分3。下圖說(shuō)明了 linux 基于 tcp/ip 協(xié)議的網(wǎng)絡(luò)系統(tǒng)體系結(jié)構(gòu)。圖 1 基于 tcp/ip 協(xié)議的 linux 網(wǎng)絡(luò)系統(tǒng)體系結(jié)構(gòu)其中,inet socket 層比 ip 協(xié)議層次高,實(shí)現(xiàn)對(duì) ip 分組排序、控制網(wǎng)絡(luò)系統(tǒng)效率等功能。 從 inet socket 層到 ip 層,主要是路由過(guò)程,發(fā)送時(shí)根據(jù)發(fā)送的目標(biāo)地址確定需要使用的 網(wǎng)絡(luò)設(shè)備接口和下一跳的主機(jī)地址;接收數(shù)據(jù)的時(shí)候需要在 ip 據(jù)分組是要發(fā)送給上一層協(xié)議 還是需要做一個(gè) ip 轉(zhuǎn)發(fā),將數(shù)據(jù)傳遞給下一臺(tái)機(jī)器 ip 層到硬件層,也就是到網(wǎng)絡(luò)接口設(shè)備 驅(qū)動(dòng)程序,由驅(qū)動(dòng)程序負(fù)責(zé)將數(shù)據(jù)發(fā)送出去。在 linux 的路由功能子系統(tǒng)中,主要保存了三種與路由相關(guān)的數(shù)據(jù)。第一種是在物理上 和本機(jī)相連接的主機(jī)地址信息表,第二種是保存了在網(wǎng)絡(luò)訪問(wèn)中判斷一個(gè)網(wǎng)絡(luò)地址應(yīng)該走什 么路由的數(shù)據(jù)表,第三種是保存最新使用過(guò)的路由信息的緩存信息數(shù)據(jù)表。分組轉(zhuǎn)發(fā)功能模 塊在內(nèi)核中基于一個(gè)內(nèi)核路由表來(lái)工作,每次發(fā)送一個(gè)數(shù)據(jù)分組,都要向內(nèi)核路由表查詢, 取得對(duì)應(yīng)的下一跳鄰居節(jié)點(diǎn)的地址和對(duì)應(yīng)的網(wǎng)絡(luò)接口。linux 系統(tǒng)自帶的分組尋路模塊是在內(nèi)核中的。這樣將分組轉(zhuǎn)發(fā)功能和分組尋路功能分 開以后,可以在分組轉(zhuǎn)發(fā)功能模塊保持不變的情況下,通過(guò)修改分組尋路功能模塊,而用其它路由協(xié)議來(lái)替代現(xiàn)有的路由協(xié)議。4.linux 上 aodv 協(xié)議實(shí)現(xiàn)方案4.1 實(shí)現(xiàn)框架在本文對(duì) aodv 路由協(xié)議實(shí)現(xiàn)的方案中,將盡可能的利用 linux 操作系統(tǒng)現(xiàn)有路由機(jī) 制。實(shí)現(xiàn)方案不改變 linux 操作系統(tǒng)的分組轉(zhuǎn)發(fā)功能模塊,而是利用它的分組轉(zhuǎn)發(fā)功能模塊 的實(shí)現(xiàn)機(jī)制,巧妙的用我們自己的分組尋路功能模塊來(lái)替換 linux 操作系統(tǒng)現(xiàn)有的分組尋路 功能模塊。方案的基本實(shí)現(xiàn)思路是:用 netfilter 上的鉤子函數(shù)時(shí)刻監(jiān)測(cè)需要發(fā)送的數(shù)據(jù)報(bào),一 旦沒(méi)有路由,就用 netlink 來(lái)通知用戶態(tài)發(fā)起 aodv 路由查詢4。考慮到程序的移植性和擴(kuò) 展的方便性。擬在用戶空間實(shí)現(xiàn) aodv 的尋路功能。aodv 路由協(xié)議實(shí)現(xiàn)的方案,按邏輯功能上可以分成三個(gè)主要部分:第一部分是接口 部分,第二部分是 aodv 路由算法部分,第三部分是內(nèi)核模塊部分。其中,前兩部分是在 用戶空間實(shí)現(xiàn)的,第三部分是內(nèi)核空間實(shí)現(xiàn)的。具體結(jié)構(gòu)如圖 2 所示。第一部分:接口部分圖 2 linux 上 aodv 協(xié)議實(shí)現(xiàn)框架接口部分的主要功能是利用 linux 系統(tǒng)提供的應(yīng)用程序接口,為實(shí)現(xiàn) aodv 路由協(xié)議 提供所需要的各種信息和服務(wù)。我們借助用戶分組數(shù)據(jù)的發(fā)送過(guò)程,來(lái)分析這部分的功能。 在實(shí)現(xiàn)方案里,我們使用 netfilter 功能框架,實(shí)現(xiàn)數(shù)據(jù)包過(guò)濾和處理。其框架如圖 3 所 示:圖 3 netfilter 功能框架當(dāng)用戶分組到達(dá)的時(shí)候,在 nf_ip_pre_routing 函數(shù)處,肯定是原先就存在路由, 只需要順著內(nèi)核路由表的內(nèi)容接著發(fā)送就好,這時(shí)候只可能出現(xiàn)原先存在的路由斷開,以至 于找不到路由,緩存數(shù)據(jù)分組,這時(shí)候就發(fā)起 local-repair 的請(qǐng)求。在 nf_ip_local_out 函數(shù)處,是檢測(cè)每一個(gè)由本機(jī)發(fā)出去的數(shù)據(jù)包,這時(shí)候如果沒(méi)有路由,緩存數(shù)據(jù)分組,然后 就由原節(jié)點(diǎn)即本機(jī)發(fā)起路由查找程序。第二部分:aodv 路由算法 從第一部分提取出用戶分組數(shù)據(jù)分組的目的節(jié)點(diǎn)址,就可以有足夠的信息來(lái)進(jìn)行 aodv路由查找了。這部分涉及到 rreq 的廣播,rrep, rerr 幀的處理等等。這部分的功能就是 實(shí)現(xiàn) aodv 路由協(xié)議,基本上不涉及和 linux 的交互性問(wèn)題。aodv 各種數(shù)據(jù)幀的接收和發(fā)送可以利用普通的 udp 套接口實(shí)現(xiàn)就可以,根據(jù) aodv 協(xié)議,套接口使用的是 udp 協(xié)議在 654 端口進(jìn)行收發(fā)。每當(dāng)收發(fā)一個(gè)幀,都需要對(duì)相應(yīng)的 數(shù)據(jù)結(jié)構(gòu)進(jìn)行更新。在各種數(shù)據(jù)結(jié)構(gòu)中,最重要的一個(gè)時(shí)間隊(duì)列。各種 aodv 事件的管理 用了一個(gè)時(shí)間隊(duì)列,每個(gè)事件發(fā)生的時(shí)候,都需要更新這個(gè)隊(duì)列5。這個(gè)隊(duì)列記錄了這個(gè)事 件的超時(shí)時(shí)間。插入時(shí)間隊(duì)列的時(shí)候,根據(jù)要求發(fā)生時(shí)間在前的事件插在隊(duì)列的前面。然后 根據(jù)這個(gè)事件隊(duì)列,建立一個(gè)計(jì)時(shí)器,用事件隊(duì)列最前頭的這個(gè)事件的時(shí)間來(lái)更新這個(gè)計(jì)時(shí) 器。這樣,每當(dāng)?shù)搅祟A(yù)期的超時(shí)時(shí)間,計(jì)時(shí)器將觸發(fā)中斷,這樣,調(diào)用相應(yīng)的程序進(jìn)行處理。 第三部分:時(shí)間的提取無(wú)線自組網(wǎng)的拓?fù)浣Y(jié)構(gòu)因?yàn)槭莿?dòng)態(tài)變化的,所以它的路由協(xié)議都有一個(gè)時(shí)間要求,每一 條路徑都有一個(gè)有效時(shí)間,如果超過(guò)這個(gè)時(shí)間路徑?jīng)]有更新,就需要將這條路由標(biāo)記為不可 用。aodv 路由協(xié)議也一樣。它要求記錄每條路徑的最后使用時(shí)間,如果空閑時(shí)間超過(guò)一 定的時(shí)間,就需要將這條路由標(biāo)記為不可用。為了實(shí)現(xiàn)這個(gè)功能,程序利用了 linux 內(nèi)核 2.4 以上版本的掛鉤(hook)功能。程序就 是利用這個(gè)特征,通過(guò)在 post routehook 上注冊(cè)一個(gè)函數(shù),每次檢查出去的數(shù)據(jù)分組, 根據(jù)地址信息記下每條路由的最后使用時(shí)間。記錄下的每條路徑的最后使用時(shí)間,調(diào)用 netlink 套接口發(fā)送時(shí)間數(shù)據(jù)到用戶態(tài),創(chuàng)建時(shí) 間列表保存路由的最后使用時(shí)間。當(dāng)需要的時(shí)候可以隨時(shí)查詢。這個(gè)部分是相對(duì)獨(dú)立的一部分,在內(nèi)核空間利用加載模塊技術(shù)實(shí)現(xiàn).4.2 aodv 協(xié)議實(shí)現(xiàn)的難點(diǎn)及其解決方法4.2.1 發(fā)起路由查找過(guò)程傳統(tǒng)的有線網(wǎng)絡(luò)能夠很好的適合前面闡述的 linux 系統(tǒng)的路由實(shí)現(xiàn)方案。實(shí)際上,主動(dòng)的無(wú)線自組網(wǎng)路由協(xié)議也能跟 linux 系統(tǒng)自身的路由方案很好的適應(yīng)。然而,按需的無(wú)線自組網(wǎng)路由協(xié)議卻無(wú)法用上述框架實(shí)現(xiàn)。因?yàn)樵趥鹘y(tǒng)的分組轉(zhuǎn)發(fā)功能模塊中,當(dāng)數(shù)據(jù)分組在找 不到相匹配的路由表項(xiàng)的時(shí)候,操作系統(tǒng)將簡(jiǎn)單的把這個(gè)數(shù)據(jù)分組拋棄。這個(gè)特點(diǎn)給我們實(shí) 現(xiàn) aodv 協(xié)議帶來(lái)了困難,因?yàn)?aodv 是按需路由協(xié)議,在找不到路由表項(xiàng)的時(shí)候,不能 將數(shù)據(jù)分組拋棄,而應(yīng)該發(fā)起路由查找過(guò)程,尋找到目的節(jié)點(diǎn)的路由。在實(shí)現(xiàn)中,我們充分利用 linux 系統(tǒng)現(xiàn)有的功能,不修改其分組轉(zhuǎn)發(fā)功能模塊,而僅僅 改變它的分組尋路功能模塊,用 aodv 路由協(xié)議的邏輯算法替換現(xiàn)有的分組尋路功能模塊。 路由協(xié)議的分組尋路功能模塊既可以在內(nèi)核中實(shí)現(xiàn),也可以在用戶空間實(shí)現(xiàn),在用戶空間尋 找到正確的路由以后,再將路由傳遞到內(nèi)核中,供分組轉(zhuǎn)發(fā)功能模塊使用。在內(nèi)核中實(shí)現(xiàn)和 在用戶空間實(shí)現(xiàn),各有自己的優(yōu)缺點(diǎn)。在內(nèi)核中實(shí)現(xiàn)的優(yōu)點(diǎn)在于能夠以更快的速度工作,因 為它不需要在內(nèi)核層和用戶層之間交換數(shù)據(jù)。同時(shí),在內(nèi)核中實(shí)現(xiàn)可以用更方便的方法操作 數(shù)據(jù)分組的 ip 頭部域,使得可以根據(jù)協(xié)議的內(nèi)容方便的修改 ip 頭部信息。然而,在內(nèi)核實(shí) 現(xiàn)的缺點(diǎn)也很明顯,它增加了內(nèi)核態(tài)的資源占用,降低了整個(gè)系統(tǒng)核心的性能。同時(shí),在內(nèi) 核中實(shí)現(xiàn)調(diào)試相對(duì)困難,開發(fā)周期要長(zhǎng),且在移植性兼容性上不如在用戶層開發(fā)的程序。綜 合考慮后,我們采用在用戶空間實(shí)現(xiàn)分組尋路模塊。在實(shí)現(xiàn)中,在 nf_ip_local_out5掛上鉤子函數(shù),檢測(cè)每一個(gè)出去的數(shù)據(jù)包,如果沒(méi)有 路由,就緩存這個(gè)數(shù)據(jù)分組,提取出目的節(jié)點(diǎn)址,用 netlink 發(fā)起 aodv 路由查找過(guò)程。如 果 aodv 成功查找出到目的節(jié)點(diǎn)的路由,則將這條路由插入到內(nèi)核路由表中,然后將緩存 的數(shù)據(jù)分組發(fā)送。如果沒(méi)有找出路徑,就將緩存的數(shù)據(jù)分組釋放,通知源節(jié)點(diǎn)出錯(cuò)。4.2.2 記錄每條路由的最后使用時(shí)間 無(wú)線自組網(wǎng)的按需路由協(xié)議通常自己保存有一個(gè)路由表,這個(gè)路由表的每一項(xiàng)都有一個(gè)定時(shí)器與之相關(guān)聯(lián)。當(dāng)定時(shí)器到期以后,意味著路由表項(xiàng)過(guò)期了,則應(yīng)該將這個(gè)路由表項(xiàng)刪除或者標(biāo)記為過(guò)期不可用。aodv 路由協(xié)議需要記錄每條路徑的最后使用時(shí)間,而問(wèn)題是, 系統(tǒng)自身并沒(méi)有提供每條路徑的最后使用時(shí)間給用戶。這個(gè)信息必須自己提取。為了提取每條路由的最后使用時(shí)間,post route_hook 上注冊(cè)一個(gè)函數(shù)。每次檢查 出去的數(shù)據(jù)分組,根據(jù)地址信息就可以記下每條路由的最后使用時(shí)間,從而提供 aodv 路 由協(xié)議所需要的每條路由最后使用時(shí)間。4.2.3 對(duì)路由表和網(wǎng)絡(luò)接口的操作在實(shí)現(xiàn)方案中,我們將不修改 linux 自身的分組路由轉(zhuǎn)發(fā)功能。因此我們需要做的是: 根據(jù)分組尋路模塊計(jì)算的路由結(jié)果,修改 linux 內(nèi)核中的路由表。在實(shí)現(xiàn)方案中,我們將有 兩個(gè)路由表,一個(gè)是內(nèi)核的 linux 自帶的我們稱為內(nèi)核路由表:另外一個(gè)是自己在用戶層自 己建立的,我們稱為 aodv 路由表。內(nèi)核路由表,是 linux 自身的分組路由轉(zhuǎn)發(fā)模塊工作的基礎(chǔ),我們沒(méi)有對(duì)其表項(xiàng)結(jié)構(gòu)進(jìn) 行任何修改,以保持通用性和可移植性。aodv 路由表結(jié)構(gòu)是根據(jù) aodv 協(xié)議構(gòu)造的,記 錄了每條路由的目的序列號(hào)、到目的節(jié)點(diǎn)的跳數(shù)等信息,分組路由尋路模塊需要利用這些信 息,來(lái)進(jìn)行正確的路由查找。程序?qū)τ脩魧拥穆酚杀矶x了各種操作函數(shù),因?yàn)榉纸M路由尋 路模塊和 aodv 路由表都是在用戶空間實(shí)現(xiàn)的,它們之間可以很方便的進(jìn)行信息交互。對(duì) 內(nèi)核路由表則不一樣,它們之間涉及內(nèi)核和用戶空間之間的交互,不能直接交換信息。程序 利用 linux 的 netlink 來(lái)操作 linux 內(nèi)核路由表。4.2.4 信息的發(fā)送和接收在 aodv 路由協(xié)議的實(shí)現(xiàn)過(guò)程中,需要進(jìn)行多種數(shù)據(jù)分組的發(fā)送和接收。一種是從應(yīng) 用程序來(lái)的用戶分組的接收、緩存和轉(zhuǎn)發(fā);一種是 aodv 協(xié)議幀的單播發(fā)送和接收:還有一種 是 aodv 協(xié)議幀的廣播發(fā)送和接收。從應(yīng)用程序發(fā)出的用戶分組,在經(jīng)過(guò)路由表的時(shí)候,按缺省的路由發(fā)送到了 tun 設(shè)備, 這是一個(gè) tun 文件套接口,程序可以使用各種流操作函數(shù),從這個(gè)虛擬的設(shè)備中接收數(shù)據(jù)。 接收的用 戶分組數(shù)據(jù)存儲(chǔ)在一個(gè)散列(hash)表中。在實(shí)現(xiàn)中,利用用戶分組數(shù)據(jù)的目的節(jié)點(diǎn) 作為關(guān)鍵字,將正在進(jìn)行路由查找過(guò)程的用戶分組數(shù)據(jù)緩存在一個(gè)散列表中。當(dāng)路由查找過(guò)程完成的時(shí)候,需要根據(jù)路由查找的結(jié)果,對(duì)緩存在本機(jī)的用戶分組數(shù)據(jù) 進(jìn)行處理。如果成功尋找到目的節(jié)點(diǎn)的路由,則修改內(nèi)核路由表以后,用 linux 的原始套接 口(raw socket)將緩存的用戶分組重新發(fā)送出去。在 aodv 協(xié)議的實(shí)現(xiàn)過(guò)程中,程序需要在兩個(gè)套接口上偵聽(tīng)數(shù)據(jù)幀的到達(dá),一個(gè)是 tun套接口,這個(gè)套接口到達(dá)的是來(lái)自應(yīng)用程序用戶分組;另外一個(gè)是在 654 端口上的 udp 套接 口,這個(gè)套接口是接收和發(fā)送 aodv 協(xié)議幀。處理這種套接口復(fù)用的問(wèn)題,程序不可能采 用不停循環(huán)掃描的辦法來(lái)在這兩個(gè)套接口上偵聽(tīng),因?yàn)檫@種 cpu 的開銷太大了。而應(yīng)該讓 程序平時(shí)阻塞在套接口輸入上,等待數(shù)據(jù)的到達(dá),在等待過(guò)程中將 cpu 讓出。當(dāng)有輸入到 達(dá),則離開阻塞狀態(tài),調(diào)用對(duì)應(yīng)套接口的接收處理進(jìn)程。處理這種多套接口復(fù)用的問(wèn)題,通常有兩種方法。一種是使用線程,另一種就是使用 select5系統(tǒng)調(diào)用。在 linux 系統(tǒng)中,從移植性、編程和維護(hù)的難易度、以及性能上考慮, 使用 select 都具有一定的優(yōu)勢(shì)。所以,我們采用 select 來(lái)實(shí)現(xiàn)。select 函數(shù)允許進(jìn)程指示內(nèi) 核等待多個(gè)事件中的任何一個(gè)發(fā)生,并僅在一個(gè)或者多個(gè)事件發(fā)生或經(jīng)過(guò)指定的時(shí)間后才將 進(jìn)程喚醒。這個(gè)函數(shù)通知內(nèi)核我們對(duì)哪些描述字的哪些事件感興趣,以及等待多長(zhǎng)的時(shí)間。 當(dāng)感興趣的描述字上發(fā)生感興趣的事件后,將進(jìn)程喚醒。這里的描述字不僅僅局限在套接口, 任何描述字都可以。5.結(jié)論本文介紹了應(yīng)用于無(wú)線自組織網(wǎng)絡(luò)的 aodv 路由協(xié)議的工作原理,以及 linux 系統(tǒng)的網(wǎng) 絡(luò)框架,在其分析基礎(chǔ)上提出了 aodv 路由實(shí)現(xiàn)方案。最后,對(duì)實(shí)現(xiàn)方案中的難點(diǎn)進(jìn)行了逐條 分析,驗(yàn)證了基于無(wú)線局域網(wǎng)設(shè)備,在 linux 系統(tǒng)上實(shí)現(xiàn) aodv 路由算法的可行性。參考文獻(xiàn)1ietf manet working groupad hoc on-demand distance vector (aodv) routing draft-ietf-manet-aodv-08.txt eb/ol /html/draft-ietf-manet-aodv-08,2001.32鄭相全著無(wú)線自組網(wǎng)技術(shù)實(shí)用教程m,北京:清華大學(xué)出版社,2004.63毛德操,胡希明著linux 內(nèi)核源代碼情景分析m,浙江:浙江大學(xué)出版社,2001.5 4(美) jonathan corbet, alessandro rubini, greg kroah-hartman linux 設(shè)備驅(qū)動(dòng)程序(第三版)m. 魏 永明,耿岳,鐘書毅譯北京:中國(guó)電力出版社,2006.15(美) w.richard stevens, bill fenner, andrew m. rudoff unix 網(wǎng)絡(luò)編程(第三版)m.楊繼張譯北 京:清華大學(xué)出版社,2006.1the analysis of implementing aodv routing protocal on linux osqi zhaoxiaschool of information and communication engineering, beijing university of posts andtelecommunications, beijing (100876)abstractthe wireless ad hoc network is a network that is self-organizing, self-management, and doesnt need any basic equipment, every node in the network works as a terminal and a router. so routing is a very important searching field in wireless self-organizing network. in order to adapt various occasions, people has designed many routing protocols and aodv (ad hoc on-demand distance vector) is one of these. the manet wg (mobi1e ad hoc network

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論