基于開(kāi)源路由技術(shù)的低功耗無(wú)線路由器研究
摘要:移動(dòng)終端通過(guò)基于IEEE 802.11協(xié)議的Wi-Fi無(wú)線通信技術(shù)與互聯(lián)網(wǎng)相連。本文深入研究了IEEE802.11協(xié)議,利用開(kāi)源路由技術(shù)對(duì)無(wú)線路由器刷入第三方開(kāi)源固件Open-WRT,并對(duì)該固件進(jìn)行相應(yīng)的協(xié)議修改來(lái)降低Wi-Fi功耗,并且將降低功耗后的無(wú)線路由器應(yīng)用于具體的智慧旅游項(xiàng)目。
關(guān)鍵詞:移動(dòng)互聯(lián)網(wǎng);Wi-Fi;無(wú)線路由器;開(kāi)源路由技術(shù)
引言
Wi-Fi無(wú)線接入技術(shù)基于IEEE802.11協(xié)議,是目前無(wú)線通信中最常用的無(wú)線接入技術(shù)。然而,Wi-Fi無(wú)線接入技術(shù)有一個(gè)致命弱點(diǎn)——功耗高。因此,如何降低Wi-Fi無(wú)線接入技術(shù)的功耗成為了急需解決的問(wèn)題。移動(dòng)終端通過(guò)無(wú)線路由器提供的Wi-Fi信號(hào)接入互聯(lián)網(wǎng)或者進(jìn)行定位服務(wù),然而由于Wi-Fi的高功耗使得無(wú)線路由器必須一直連接電源才能保持正常工作,這就嚴(yán)重限制了人們的使用范圍。我們希望在沒(méi)有電源接入的地方(比如古老景區(qū)、歷史遺跡)也可以使用無(wú)線路由器,為移動(dòng)終端提供服務(wù)。
1 IEEE802.11協(xié)議
IEEE802.11協(xié)議是由美國(guó)電氣與電子工程師學(xué)會(huì)(IEEE)開(kāi)發(fā)的一組無(wú)線傳輸協(xié)議。這些協(xié)議定義了無(wú)線站點(diǎn)(或接入點(diǎn))之間兩個(gè)或多個(gè)無(wú)線站點(diǎn)之間的通信的接口。該協(xié)議主要包含物理層和MAC層,主要工作在ISO協(xié)議的最低兩層上,本文主要研究該協(xié)議的MAC層。
IEEE802.11協(xié)議定義幀包含以下幾個(gè)部分:
◆MAC頭部。包含幀控制、持續(xù)時(shí)間、地址和排隊(duì)控制信息。
◆有效長(zhǎng)度的幀體。包含幀信息、幀類(lèi)型。
◆FCS。包含CRC校驗(yàn)的信息。
控制幀:主要用于協(xié)助數(shù)據(jù)幀的傳遞,所有控制幀都使用相同的Frame Control字段。
管理幀:負(fù)責(zé)在工作站和AP之間建立初始的通信,提供認(rèn)證和連接服務(wù),包括連接請(qǐng)求/響應(yīng)、輪詢(xún)請(qǐng)求/響應(yīng)、Beacon幀等。
Beacon幀:主要聲明網(wǎng)絡(luò)的存在。定期傳送的信標(biāo)可以讓移動(dòng)式工作站得知該網(wǎng)絡(luò)的存在,從而調(diào)整加入該網(wǎng)絡(luò)所必需的參數(shù)。在基礎(chǔ)結(jié)構(gòu)網(wǎng)絡(luò)中,接入點(diǎn)負(fù)責(zé)傳送Beacon幀。
由圖1的IEEE802.11協(xié)議幀結(jié)構(gòu)可以看出,如果僅僅保留IEEE802.11協(xié)議廣播Beacon幀功能的話,則只需發(fā)送很少的數(shù)據(jù),可以大大地降低功耗,而且我們還可以通過(guò)開(kāi)源路由技術(shù)修改IEEE802.11協(xié)議來(lái)達(dá)到降低功耗的目的。
2 開(kāi)源路由技術(shù)
圖2為T(mén)CP/IP與OSI參考模型的對(duì)應(yīng)關(guān)系,可以看出路由器是工作在OSI模型中的第3層,即網(wǎng)絡(luò)層。同時(shí)也是TCP/IP協(xié)議的第3層,即網(wǎng)際層。路由器利用網(wǎng)絡(luò)層定義的“邏輯”網(wǎng)絡(luò)地址(即IP地址)來(lái)區(qū)別不同的網(wǎng)絡(luò),實(shí)現(xiàn)網(wǎng)絡(luò)的百聯(lián)和隔離,保持各個(gè)網(wǎng)絡(luò)的獨(dú)立性。路由器不轉(zhuǎn)發(fā)廣播消息,而把廣播消息限制在各自的網(wǎng)絡(luò)內(nèi)部。發(fā)送到其他網(wǎng)絡(luò)的數(shù)據(jù)均被送到路由器,再由路由器轉(zhuǎn)發(fā)出去。
無(wú)線路由器是基于開(kāi)源的Linux操作系統(tǒng),然而商業(yè)路由器為了保護(hù)自己的技術(shù)是不會(huì)把固件源碼公開(kāi)的,因此不能由第三方軟件開(kāi)發(fā)者直接對(duì)其固件進(jìn)行開(kāi)發(fā)。自從Linksys釋放WRT54G/GS的源碼后,開(kāi)源軟件愛(ài)好者開(kāi)發(fā)出很多不同版本的固件,以增強(qiáng)原有的功能或者增加原來(lái)沒(méi)有的功能。下面是主流的無(wú)線路由的Linux發(fā)行版:
①Open-WRT。國(guó)內(nèi)最早興起刷固件行動(dòng)的人基本上都是將自己的設(shè)備刷新成Open-WRT,由此可見(jiàn)Open-WRT具有極大的影響力。該固件通過(guò)SSH加密協(xié)議來(lái)配置,與Cisco設(shè)備在很多指令和操作上類(lèi)似。
②DD-WRT。該固件是國(guó)內(nèi)外目前最為流行的固件之一,它是在Open-WRT固件的基礎(chǔ)上改進(jìn)后發(fā)布的,很多功能都是取自O(shè)pen-WRT。存應(yīng)用范同上DD-WRT支持極多的硬件平臺(tái),并且新版本的發(fā)布也很及時(shí)。
③Hyper-WRT。該固件是以穩(wěn)定著稱(chēng)的第三方同件,不過(guò)功能上要比前兩種稍遜一籌。從核心代碼上看,它是最接近Linksys官方固件的固件。對(duì)很多用戶來(lái)說(shuō),新功能、新應(yīng)用的出現(xiàn)是他們刷新同件的主要?jiǎng)恿?,如果只是要求單一的穩(wěn)定,那么直接使用官方默認(rèn)固件即可。
④Tomato。這是一款逐漸流行的固件,個(gè)頭比較小,實(shí)際使用起來(lái)非常穩(wěn)定,而且基于SVG的圖形化流量圖非常有特色。它是由Hyper-WRT研發(fā)團(tuán)隊(duì)中的一個(gè)組員開(kāi)發(fā)的。
本文選用的第三方固件是Open-WRT,之所以選擇Open-WRT是因?yàn)樗峭耆?strong>開(kāi)源的,方便編譯和配置,有對(duì)應(yīng)路由器所需要的固件,重新刷固件也很方便。
3 低功耗無(wú)線路由器的實(shí)際應(yīng)用
眾所周知,在古老歷史遺跡和古老景區(qū)內(nèi)是很難實(shí)現(xiàn)網(wǎng)絡(luò)接入的,主要原因是布線困難,因?yàn)椴季€會(huì)對(duì)歷史遺跡產(chǎn)生損害。這時(shí)候就需要離線的導(dǎo)游導(dǎo)覽系統(tǒng)來(lái)實(shí)現(xiàn)智慧景點(diǎn)的建設(shè)。本文研究的系統(tǒng)就是基于離線移動(dòng)互聯(lián)網(wǎng)沒(méi)備(Mobile Internet Device,MID)的導(dǎo)游導(dǎo)覽系統(tǒng)。在這個(gè)系統(tǒng)中,無(wú)線路由器所要實(shí)現(xiàn)的功能是以固定間隔發(fā)送廣播幀,游客在游玩的時(shí)候,MID會(huì)根據(jù)廣播幀的信號(hào)強(qiáng)度和SSID號(hào)來(lái)判斷游客所在的位置,同時(shí)自動(dòng)播放游客所到景點(diǎn)的視頻和語(yǔ)音介紹信息。
在這個(gè)系統(tǒng)中無(wú)線路由器只需要提供以同定間隔發(fā)送廣播幀的功能即可。由路由器的工作原理和IEEE802.11協(xié)議幀結(jié)構(gòu)可以看出,無(wú)線路由器的功耗主要在數(shù)據(jù)傳輸和實(shí)現(xiàn)其路由功能上面,而發(fā)送廣播幀的功耗很低。由此想到,如果將路由器的路由功能禁止并且不讓其傳輸數(shù)據(jù),只讓其以固定間隔發(fā)送廣播幀,那么將會(huì)大大降低功耗,而我們需要的這些功能是可以通過(guò)修改第三方固件Open-WRT實(shí)現(xiàn)的。
4 無(wú)線路由器和Open-wRT固件的選擇
經(jīng)調(diào)查研究各種路由器,最終選擇了中興公司的H118B路由器,使用的是BCM5354芯片,支持DD-WRT、Open-WRT等主流第三方固件,此款路由器的硬件配置是:8 MB Flash、32 MB ROM、BCM5354 CPU。
從Open-WRT官網(wǎng)上查得支持BCM5354芯片的固件是openwrt-brcm47xx-squashfs. trX。準(zhǔn)備好路由器和固件之后,就是將固件刷入路由器以覆蓋原來(lái)的固件,使用tftp方式進(jìn)行刷機(jī)。當(dāng)刷機(jī)成功后,用telnct登錄路由器會(huì)顯示結(jié)果。刷機(jī)成功界面如圖3所示。
刷機(jī)成功之后是鋰電池的準(zhǔn)備,選擇的是輸入電壓12.6 V、輸出電壓12 V、容量為5000 mAh的鋰電池進(jìn)行測(cè)試。
5 Open-WRT固件的修改和測(cè)試
5.1 Open-WRT固件配置的修改
首先,Open-WRT固件的SSID廣播是默認(rèn)隱藏的,需要修改其顯示為SSID。修改方式如下:
◆執(zhí)行vi/etc/config/wireless命令;
◆將option disabled 1改為option disabled 0;
◆修改過(guò)之后發(fā)現(xiàn)筆記本的無(wú)線網(wǎng)絡(luò)列表里面顯示的路由器的SSID名稱(chēng)為openwrt。
然后需要做的事情是禁止路由器的路由功能。修改方式如下:
◆輸入vi/etc/sysctl.conf命令;
◆將net.ipv4.ip_forward=1改為net.ipv4.ip_for ward=0。
最后需要做的就是改變路由器發(fā)送廣播幀的間隔時(shí)間,路由器的默認(rèn)發(fā)送廣播幀的間隔是100ms,而對(duì)于我們的導(dǎo)覽系統(tǒng)是不需要這么頻繁地發(fā)送廣播幀的。對(duì)于游客來(lái)說(shuō)在100ms之內(nèi)移動(dòng)的距離太短了,所以經(jīng)過(guò)研究最終決定將發(fā)送廣播幀的間隔改為2 s。在實(shí)際的游覽景區(qū)中游客行走的很慢,2 s的時(shí)間只能行走很短的距離,恰好符合系統(tǒng)的需求。通過(guò)給Open-WRT固件的無(wú)線配置文件加上控制幀,可以改變發(fā)送的間隔。
修改方式如下:
◆輸入vi/etc/config/wireless命令;
◆在配置文件中加入option beacon_int 2000,次命令行是將Beacon幀的發(fā)送間隔設(shè)置為2 s。
5.2 修改過(guò)程中的測(cè)試結(jié)果
測(cè)試過(guò)程共分為兩次:第一次是在刷入固件后不做任何修改的情況下測(cè)試無(wú)線路由器的使用時(shí)間,在12 V、5 000 mAh供電的情況下,路由器可以使用約8 h。第二次是禁止路由功能只發(fā)送廣播幀的情況下,經(jīng)測(cè)試路由器可以持續(xù)工作約42 h。
可以得出結(jié)論:在禁止路由功能并且默認(rèn)發(fā)送廣播幀的時(shí)間間隔為100 ms的情況下,路由器可以持續(xù)工作約42 h;在把路由器發(fā)送廣播幀的時(shí)間間隔改為2 s的情況下,路由器大約可以持續(xù)工作800h,固件修改過(guò)程中的無(wú)線路由器工作時(shí)間對(duì)比如圖4所示。
按照景區(qū)一天開(kāi)放時(shí)間為10 h計(jì)算,一塊電池可以給路由器供電80天,這樣基本達(dá)到了我們的要求,因?yàn)閮扇齻€(gè)月給路由器電池充一次電還是比較方便的。