隨著社會信息化進程和互聯網的飛迅發展,對無線環境下提供數據服務的需求變得更加迫切。傳統的無線移動網絡通常以固定的基礎設施為支撐,無法滿足人們對日益增長的通信業務的要求,一種新型的無線網絡——AdHoc網絡應運而生。Ad Hoc網絡又稱移動自組網、多跳網絡,具備細網靈活、快捷,不受有線網絡的影響等特點,可廣泛應用於軍事和救援等無法或不便預先鋪設網絡設施的場合。此外,Ad Hoc網絡朝著網絡互連的方向發展,Internet的接入是其中一項主要內容。
Ad Hoc無線網絡具有自身的特殊性,在組建實際使用的無線工作網絡時,必須充分考慮網絡的應用規模和擴展性,以及應用的可靠程度及實時性要求,選擇合適的網絡拓撲結構。目前Ad Hoc無線網絡正朝著大規模方向發展,逐漸呈現分級化的趨勢,以兩級式的網絡為代表。在兩級式網絡中,拓撲如圖1所示 。網絡分為骨干網、子網兩級。子網級中,每個子網都可以構成獨立的Ad Hoc網絡,可采用不同的路由協議。骨干網由多協議路由器節點和普通節點構成,其中,普通節點主要完成骨干網中的數據和控制信息的分發;而多協議路由器除了具備普通節點的功能外還要負責實現對子網的管理、控制和數據交互,是骨干網的核心設備。
多協議路由器的功能
協議路由器作為骨干網的一個節點,運行一定的Ad Hoc網絡路由協議,實現骨干網絡由尋址的功能。
在分級式Ad Hoc網絡中,多協議路由器通過和子網網關進行交互實現對子網的管理。子網內的通信類似於一般的Ad Hoc網絡;而子網間的通信需要通過子網網關節點和骨干網節點進行中轉,可分為兩種情況—同一路由器下同構/異構子網間的通信以及不同路由器下同構/異構子網間的通信。為了實現子網間的有效通信,路由器需要完成多種協議之間的相互轉換。
Internet接入的需求使得分級式Ad Hoc網絡必須存在一個接入點AP(Access Point)。考慮到網絡環境,這個功能需要由多協議路由器實現。
綜上所述,多協議路由器主要實現骨干網路由尋址、協議轉換、Internet接入的AP三大功能。
多協議路由器的設計
一般情況下,Ad Hoc網中的路由器為車載式或背負式,所以多協議路由器必須有高集成度和移動性。考慮到以上因素,我們選用了現在最為流行的嵌入式系統設計方法,多協議路由器的硬件平台的微處理器采用Motorola公司的ColdFire嵌入式處理器MCF5272,選擇uClinux作為平台的操作系統。這樣不僅可以縮短研發周期,而且為軟硬件的設計、調試帶來極大的方便。
多協議路由器硬件設計如圖2中的虛線框圖所示。路由器的硬件結構分為兩部分:一部分為核心模式(MCF5272)部分,由微控制器模塊和存儲器模塊(包括SDRAM和Flash)組成;另一部分為通信接口模塊部分,由異步串行控制和收發模塊、以太網控制和收發模塊及通用串行總線USB(Universal Serial Bus)接口模塊組成。
核心模塊部分,微處理器模塊主要負責處理數據。存儲器模塊分為兩部分:一部分為Flash(由兩片Flash構成,共4MB),作為程序存儲器,用於存儲操作系統內核、各種路由協議和路由表常量;另一部分為SDRAM,作為數據存儲器,用作操作系統和各種路由程序的運行空間。
通信接口模塊中,異步串行控制和收發模塊用於與多個骨干網節點無線連接的同時,連接多個子網網關PRU(即分組無線控制單元)。以太網控制和收發模塊可以實現Internet接入功能。USB接口模塊用作連接網絡設備控制終端,以及實現路由器對USB設備(如USB標准的移動硬盤,用來存儲重要的路由信息)的存儲控制。
多協議路由器的實現
硬件平台的建立
使用嵌入式系統,必須為硬件平台選擇一個適合的微處理器,而選擇適用於路由器的微控制器MCU一般要考慮以下幾個方面:處理速度、總線寬度、集成度以及性價比。綜合考慮了上述幾個方面,我們最終選用Motorola ColdFire 5272(以下簡稱MCF5272)為主控CPU。MCF5272是Motorola推出的一款高集成度的32位ColdFire微處理器,有很強的通信處理能力和較高的性能價格比,很適合用於中小型網絡的控制設備。
MCF5272采用ColdFire V2可變長RISC處理器核心和DigitalDNA技術,在66MHz時鐘下能達到63Dhrystone2.1MIPS的優良處理能力。其內部SIM單元(System Integrated Module)集成了豐富的通用模塊,如10/100Mbps快速以太網控制器、USB1.1接口等,並且能夠與常用外圍設備(如SDRAM、ISDN收發器)實現無縫連接。
MCF5272內部集成了4KB的SDRAM(靜態RAM)、片外擴展的Flash(閃爍存儲器)和SDRAM(同步動態RAM)。
MCF5272集成了豐富的外圍設備及其接口,主要包括2個通用異步串口收發模塊,1個自適應快速以太網媒體接入控制器模塊,1個USB控制器(作為從設備)模塊。按照圖2所示的路由器設計,需要在MCF5272的基礎上進行一定的擴展。多協議路由器需要連接多個子網和骨干網節點,而MCF5272只集成了2個UART控制器,因此在異步串行擴展和收發模塊中利用ST 16C554擴展了4個UART控制器,從而保證某個多協議路由器在與其它2個骨干網節點相連的同時,可以與4個子網相連。在USB接口模塊中,使用MCF5272集成的USB控制器(從設備)作為網絡管理控制終端,另外擴展了1個主USB控制器實現路由器對USB設備的存儲控制。利用MCF5272集成的快速以太網媒體接入控制器,擴展一個外部適配器(收發器)後可以實現接入以太網的功能。
經以上步驟,我們得到了多協議路由器的硬件平台。
操作系統uClinux
由於硬件的限制,嵌入式系統通常只具有極稀少的硬件資源,如主頻較低的CPU、較小的內存等。Linux是一種很受歡迎的類Unix操作系統。它免費並開放源代碼,在個人計算機、服務器領域應用廣泛。更重要的是,Linux采用模塊化設計,實際應用中可以定制,因此Linux也適用於嵌入式領域。
MCF5272是一種沒有MMU的微處理器,故我們選擇了專為嵌入式NOMMU微處理器定制的操作系統uCLinux、uClinux正是Linux的一個嵌入式版本,其內核的二進制映像文件可以做到小於512KB。UClinux支持多任務,支持多種文件系統,具有完備的TCP/IP協議棧,並支持多種網絡協議,可滿足Ad Hoc網絡節點接入Internet的需要。另外,uClinux可移植性很強,用戶通過重新配置、編譯內核,能很方便地將其移植到多種處理器計算平台。
嵌入式Linux移植技術是從事嵌入Linux開發的一項關鍵技術,要求開發人員對Linux內核有相當程度的理解,具備修改內核的能力。下面簡單介紹uClinux的移植過程。
(1)精簡內核
精簡內核構造內核的常用命令包括:make config、dep、clean、mrproper、zImage、bzImage、modules、modules_install。可使用這些命令把所有可以去掉的選項都去掉,盡可能地精簡內核。
(2)修改硬件相關代碼
作為源泉代碼公開的操作系統,uClinux源碼可以從www.uClinux.org獲得。系統啟動過程中,需要添加三個文件:crt0_rom.s、sysinit.c和rom.ld。crt0_rom.s可以由crt0_ram.s修改得到,它提供一個ROM矢量表以供CPU上電時讀取,初始化CPU寄存器,設置程序堆棧,並最終跳轉到uClinux內核。Sysinit.c針對實際情況做必要的修改,主要就實際占用的片選資源CS0~CS7、SDRAM控制寄存器SDCR、SDTR作一些修改以適應硬件平台。rom.ld文件用於計算ROMFS文件系統的二進制映像romfs.img在ROM中的實際存放地址。
(3)修改啟動腳本
在uClinux完成內核初始化之後,由init(void *)內核調用/bin/init,然後執行/etc/re腳本的命令。可以利用這個腳本完成系統上電後的自動配置,或運行用戶程序。
(4)內核配置與編譯
需要建立一個交叉編譯環境來完成內核和應用程序的編譯,生成ROMFS文件系統,並最終形成一個固化文件。www.uClinux.org也提供這樣一個工具包。正確安裝後,就可以進行編譯了。首先進入源代碼目錄uClinuxdist,執行make xconfig,在彈出的對話框中選擇“Target Platform Selection”,然後進行相應配置。配置完畢後,在源代碼目錄執行“make dep”以及“make”,就得到了所要的二進制內核映像image.bin,可以直接下載到硬件平台運行。
路由器軟件
移植成功後的uClinux操作系統只向用戶提供了一個最基本的系統平台,針對實際應用還必須編寫用戶所必需的驅動程序和應用軟件。MCF5272集成了2個UART控制器、1個從USB控制器和1個以太網控制器。我們又擴展了1個主USB控制器和4個UART控制器,為這些設備編寫相應的驅動程序,並且在uClinux和驅動程序的基礎上,實現路由器軟件(包括路由模塊、協議轉換模塊和無線網絡節點浏覽Internet代理模塊)。
在路由模塊中,可根據具體的情況選擇適當的路由協議進行加載。根據實際情況,在骨干網中采用按需路由協議AODV。其基本實現思想是:當骨干網某一路由請求節點有分組發送並發現沒有到達目的節點的有效路由時,它將啟動路由建立過程,即組建一個路由尋找分組RREQ(Route Request Message)並在網絡中泛洪尋址。路由表中有到目的節點有效路由,並組建一個路由響應分組RREP(Route Reply Message)並反向回播給路由請求節點建立路由,否則繼續泛洪RREQ分組。如果路由請求節點再收到RREP分組,說明網絡中已經建立到目的節點的路由,可以直接發送數據分組,否則可能繼續發起下一次路由建立過程,也可以對數據丟棄處理。這裡值得注意的是,每一個節點在接收RREQ的時候會反向建立到路由發起節點的路由(反向建鏈過程),以使得RREP可以沿此路徑返回源節點;同時,每個節點在接收RREP的時候會正在向建立到目的節點的路由(正向建鏈過程)以使得分組可以沿此路徑將分組傳輸給目的節點。在上述尋找路由的過程中,RREQ和RREP中均包含路由信息和節點的序號標識,以用來進行路由更新及避免路由閉環。
結語近年來,嵌入式系統與Linux系統的有機結合,已廣泛應用於網絡通信、工業控制、機頂盒 、PDA等諸多領域。本文提出了一種基於嵌入式Linux平台的多協議路由器的設計方案,目前該設計方案已經實現。實踐證明,此多協議路由器易於實現、性能穩定、運行效率較高,可應用於分級式Ad Hoc網絡 。