關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > Ad hoc路由協議實現研究

        Ad hoc路由協議實現研究

        作者: 時間:2009-09-24 來源:網絡 收藏

        在類Unix操作系統中,路由功能一般包括2部分。一部分駐留在操作系統內核中,用以基于表驅動的進程,根據路由表信息,設定正確的地址,將數據分組發往對應的網絡接口,這部分稱為“分組轉發功能模塊”;另一部分實現的邏輯計算,通過與其他主機交換信息計算出到其他節點的正確路由,實現真正的尋找路由和維護路由功能,這部分稱為“分組尋址功能模塊”。分組轉發路由模塊在內核中基于一個內核路由表來工作,每次發送數據分組都要查詢內核路由表,取得對應的下一跳鄰居節點的地址和對應的網絡接口。內核路由表一般由分組尋路功能模塊操作維護。在查找內核路由表時根據路由表項轉發。如果找不到匹配的路由表項,則按缺省路由發送,一般將網關作為缺省路由的下一跳節點。如果缺省路由不存在則操作系統將直接丟棄數據分組。分組尋路模塊功能負責尋路,它和其他節點交換信息,采用一定的路由算法計算和維護內核路南表。分組尋路功能模塊既可在內核實現,也可在用戶空間實現,Linux系統自帶的分組尋路模塊在內核中。分組轉發功能和分組尋路功能分開后,可在分組轉發功能模塊不變的情況下,通過修改分組尋路功能模塊用其他代替現有的
        4.3 Netfilter/iptables網絡分組的處理
        Netfilter是嵌入在內核IP協議棧的一系列調用入口,設置在數據報處理的路徑上。Netfilter為每種網絡協議定義一套鉤子函數(IPv4定義5個子函數),這些鉤子函數在數據分組流過協議棧的幾個關鍵點時被調用。在這幾個關鍵點上,協議把網絡數據分組、鉤子函數及鉤子函數標號作為參數調用 Netfilter框架。內核的任何模塊可對每種協議的一個或多個鉤子進行注冊。當某個數據報被傳送至Netfilter框架時,內核能夠檢測是否有模塊對該協議和鉤子進行注冊。若已注冊則調用該模塊注冊時使用的回調函數,這些模塊就有機會檢查、修改或丟棄該分組及指示Netfilter將該數據分組傳入用戶空間的隊列。排隊的數據分組被傳遞至用戶空間,在用戶空間異步進行處理。
        一個用戶空間進程能夠檢查數據分組、修改數據分組,甚至還可重新將該數據分組通過離開內核的同一個鉤子函數重新注入內核中。
        綜上所述,由于Linux的Netfilter/iptables功能強大,并且與內核結合完美,因此受到廣泛關注并應用于 路由協議的實現。
        4.4 基本問題的解決
        Linux體系結構下,在處理無路由分組和更新路由緩存時具有較好的解決途徑。
        通過使用一個本地隧道設備Universal TUN/TAP作為這些地址‘接口’過濾無路由分組。再將這些分組緩存在一張由目的地IP地址為索引的Hash隊列。
        當路由發現完成成功后,使用新發現的路由,內核中的這些分組被恰當地路由出去,從而較好處理了沒有路由分組。為每個路南表條目在內核外面維護一個時間戳來更新路由緩存。
        設計一個route_check的簡單核心模塊維護該表,每個路由出去的分組都將經該模塊,還可查看分組頭并更新對應的時間戳。

        本文引用地址:http://www.104case.com/article/202642.htm

        5 結束語
        由于Linux操作系統,通過分析當前操作系統的網絡模塊,列出實現 路由協議所面臨的問題并提出了一種可行的解決方案。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 普兰县| 遂宁市| 乾安县| 罗甸县| 蕲春县| 阳城县| 滕州市| 略阳县| 营口市| 公安县| 汽车| 浮山县| 盐边县| 伽师县| 峨山| 涿州市| 台湾省| 博客| 朝阳市| 清徐县| 赞皇县| 商都县| 集贤县| 陇西县| 都江堰市| 班玛县| 仁化县| 灵寿县| 贵州省| 满洲里市| 大安市| 来凤县| 富蕴县| 文昌市| 清河县| 金山区| 饶平县| 名山县| 永清县| 四子王旗| 大冶市|