摘 要: 提出了無線傳感器網絡與Internet互聯通信技術的代理服務器系統結構。設計了具有網絡接口功能的代理網關節點。該節點作為無線傳感器網絡與Internet互聯通信的代理網關,實現了遠程訪問和獲取傳感器網絡監測的信息。給出了精簡化的TCP/IP互聯協議,以及代理網關主處理程序的軟件實現。
關鍵詞: 無線傳感器網絡;代理網關;Internet互聯;網絡接口;簡化的TCP/IP協議棧
無線傳感器網絡WSN(Wireless Sensor Networks)是由大量傳感器節點通過無線通信技術組成的自組織網絡。WSN具有成本低、功耗低、靈活性高、可擴展等優點[1],在民用和軍事領域都具有廣泛的應用前景。特別是WSN接入到Internet已成為全新的研究熱點。如果能夠將WSN與Internet互聯起來,則可以通過Internet遠程訪問和控制WSN,而且WSN也可以將信息傳輸給遠端感興趣的用戶,不僅實現了網絡遠程監控、診斷和系統升級的功能,而且也促進了用戶端共享更多的網絡信息資源。而這也將進一步促進WSN在環境監測、醫療監護、城市交通管理、倉儲管理、軍事偵察等領域的應用。
1 無線傳感器網絡與Internet的互聯方案分析
無線傳感器網絡具有以下特點:節點可供開發片上資源(如內存等)不多;部分應用情形下節點數量眾多;節點可以靜止也可以移動等。因此WSN與Internet的互聯技術較之一般的設備連接Internet技術有更多的難點。隨著技術的發展,提出了越來越多的方案,這些方案在不同的場合有不同的應用。綜合起來可以分為以下幾種。
(1)通過IPv6進行互聯
在某些應用中,無線傳感器網絡應用中所需的節點數量非常多,如果每一個節點都分配一個IP地址,則需要的IP地址數量眾多[2]。但實際應用中沒有足夠的IP資源可用。而IPv6是下一代網絡協議,具有地址資源豐富,可以自動配置IP地址等優點,可以滿足無線傳感器網絡節點對IP地址數量大的需求,所以在WSN互聯Internet技術中使用IPv6協議成為一個研究方向。但是由于Internet還是基于IPv4的TCP/IP協議,所以采用IPv6的WSN與Internet互聯需要進行地址轉換[3],并且目前使用IPv6的WSN還處于實驗網階段。
(2)通過GSM/CDMA網絡進行互聯
許多WSN網絡應用在偏遠區域,那里除了移動通信網絡設施外沒有其他的通信基礎設施,因此在這類區域中WSN互聯Internet必須借助于移動通信網。移動通信網覆蓋范圍廣,并且已過渡到3G CDMA網絡,都已經能夠連接到Internet。因此WSN通過移動通信網很容易連接到Internet。但通過移動通信網互聯,要求WSN節點有較強的無線射頻發射和接收功率,這將使WSN節點能耗大大增加,需要增加額外的射頻硬件或發射天線。且須支持無線通信接口的相關協議。
(3)代理服務器結構
由于傳感器節點片上資源太少,無法在傳感器上完整實施與Internet互聯的TCP/IP協議,因此在傳感器網絡與TCP/IP網絡之間設置一個代理服務器是比較常用的方法。使用代理服務器的WSN與Internet互聯網結構如圖1所示。
代理服務器結構的缺點是,如果代理服務器失效,則整個傳感器網絡都無法接入到Internet。為了避免發生這種情況,可以再使用一個備份代理網關。
(4)直接實施TCP/IP協議
在傳感器網絡節點上實施TCP/IP協議,并與Internet直接互聯是一種比較理想的方案。網絡結構如圖2所示。這種方案的優點是不需要通過代理網關就能夠實現與Internet無縫連接,減少傳輸時延。但是考慮到傳感器節點自身因素,這種方法大規模實施起來難度很大[5]。主要原因有:
①因為TCP/IP協議簇龐大,在傳感器無法直接使用TCP/IP協議,只能根據網絡互聯要求實施實現互聯功能的主要部分協議,這要求程序設計人開發出一套簡化的TCP/IP協議組件。
②部分傳感器網絡應用于離城市較遠的偏僻地區,這些地區沒有連接到Internet的基礎設施,因此即使傳感器網絡各節點實施了簡化的TCP/IP協議組件,仍沒有可連接的Internet接入點。
③對于數量眾多的WSN網絡,每個WSN節點都分配一個IP地址,則地址數量過于龐大,目前的IPv4無法滿足要求。
④TCP協議是根據有線網絡設計的,有線網絡極少出現網絡差錯,數據包的丟失主要是由于網絡發生擁塞。而無線網絡與有線網絡的最大不同是,無線網絡極易發生高比特率錯誤,即由于無線鏈路的原因可能導致數據包連續丟失,這種情況會使TCP協議無法工作。因此TCP協議直接應用于無線網絡,其效率極其低下。
由于上述原因,這種WSN網絡與Internet的直接互聯目前處于研究起步階段,諸多問題還有待解決。
2 本系統采用的方案及設計
比較分析上述各種WSN與Internet互聯的方案,考慮到傳感器的硬件特點,結合目前技術發展的成熟度,本項目采用代理服務器結構來連接Internet,如圖1所示。本結構的關鍵是代理服務器或網關完成的功能及系統設計。本系統中的代理網關主要完成兩個功能。一是在傳感器網絡和Internet之間起協議轉換作用。傳感器網絡中的節點并不直接和外部Internet的主機進行通信,所有節點和外部主機的通信都通過代理網關進行,同時外部主機想要查找某個傳感器節點上的數據時,也是首先連接到代理網關,由代理網關進行后續處理。代理網關的另一個功能是作為傳感器網絡的特殊節點, 它可以周期性地主動訪問并接收其他傳感器節點的數據信息,并將這些信息存儲起來。當外部客戶端想要獲得傳感器網絡中某個特定傳感器節點的數據信息時,可以立即從代理網關中存儲的信息中查找得到,從而加快獲得信息的響應時間。很明顯,WSN的內部各節點數據通信方法可以自由選擇,完全可以采用已經成熟的Ad-hoc網絡的各種路由技術。
代理網關節點設計如圖3所示。傳感器、無線收發器、單片機組成普通的WSN節點模塊(圖3的方框內部分)。AVR ATmegal128L單片機[6]是WSN節點的主控芯片,是節點數據通信的處理器。傳感器起數據采集作用,采集數據經A/D轉換連接到單片機。WSN節點之間的通信通過無線收發器nRF905進行。考慮到傳感器節點通信過程的數據處理量較大,所以外接一個存儲器來存儲或暫存自己采集的或需要轉發的其他節點傳輸過來的數據。WSN與Internet互聯的代理網關則是在普通的WSN節點模塊基礎上,增加CS8900A以太網絡控制器,可以連接到局域網,從而與Internet互聯。同時代理網關節點通過MAX232連接到計算機。由于代理網關的數據通信處理量比普通的WSN節點要大得多,所以可以再增加一個RAM存儲器。
3 互聯協議實現
TCP/IP協議簇是使Internet中的計算機能互聯通信的一組協議。這些協議協同工作,各自完成不同的功能,能夠為用戶提供多達幾十種網絡應用。在高級應用場合,操作系統中一般需要支持完整的TCP/IP協議簇,但在相對單一應用的場所,只需要實現某一種功能的工業應用領域,完整實現TCP/IP協議簇顯得沒有必要。首先是因為工業應用芯片沒有足夠多的硬件資源,其次是過多的不需要的功能會減慢系統響應速度。對于本項目的傳感器網絡與Internet的互聯,管理人員僅需要傳感器網絡節點監測到的相關數據,一般通過交互式Web服務器就可以得到,所以只需要應用層實現HTTP協議就可以了,其他應用層程序都可以舍棄不予實現。
目前國際上許多嵌入式產品供應商都根據嵌入式產品所實現功能的需要,在TCP/IP協議套件的基礎上進行簡化,根據具體的應用提供不同的協議模塊,保留基本的網絡通信功能,在可移植性方面做了各具特色的改進。本項目對TCP/IP協議的精簡參考了他們的做法[7],在協議程序代碼的實現過程中,主要考慮了以下兩點:
(1)精簡代碼。根據傳感器網絡互聯Internet的應用要求,盡量簡化TCP/IP協議簇,只實現基本的、必要的功能,使生成的二進制代碼盡量精簡,這樣做能夠顯著提高系統與傳感器網絡的交互能力,能夠適應傳感器節點上有限的內存空間以及芯片處理速度。如圖4所示,本系統實現的互聯協議如圖中的灰色方框中的協議所示,實現的是TCP/IP協議簇的一部分協議。
(2)強移植性。傳感器的類型和型號眾多。精簡后的協議程序應盡量能夠應用于不同類型的傳感器元件。如果精簡后的程序在一種類型的傳感器上運行良好,而在另一種類型的傳感上無法實現互聯,需要重新進行復雜的軟件開發工作,則大大增加開發的工作量。因此精簡后代碼的可移植性是非常重要的。這樣,在對傳感器節點進行升級或者更換時,除了與硬件直接相關的部分代碼需要重新開發外,不需要對整個互聯協議進行大的修改。
本項目精簡后的互聯協議組件稱為sip,意義為一個小型(small)TCP/IP協議組件。在本文第4節的代理網關主處理程序中出現的sip就是本系統開發的簡化互聯協議組件。
4 代理網關主處理程序
代理網關實際上相當于一個協議轉換程序。它能夠接收WSN網絡節點傳輸過來的數據信息,并將其按照TCP/IP協議的要求轉換成合適的數據格式。如果得到返回給WSN網絡節點的數據,則按照WSN的要求將其轉換成適合于傳感器節點傳輸的數據格式。代理網關的功能相對復雜,其硬件和軟件設計在前面兩節中已討論過,這里只給出代理網關的主處理程序。
主處理程序的主要功能是通過簡化的互聯協議,實現與傳感器節點、Ethernet網絡接口的數據交互。因此在主處理程序的開始部分,首先對定時器、串口接口、Ethernet接口初始化。硬件初始化成功以后,開始啟動簡化的TCP/IP互聯協議,接著對arp協議和應用程序進行初始化。初始化完成后,主處理程序將不停地進行查詢,如果接收到新的數據包則發送給eth_send()函數進行處理,如果沒有新數據包到達,則由sip_periodic()函數處理定時事件。主處理程序的部分程序代碼如下。
void main(void)
{init _timer (); //用戶自定義定時器初始化程序
init_serial (); //用戶自定義串口初始化程序
init_8900a(); //Enternet接口初始化,需用戶定義
sip_init(); //對簡化的互聯協議sip初始化
init_httpd (); //定義web應用程序
sip_arp_init();
while(1)
{sip_len=eth_reve;
if(sip_len==0) //無數據接收,開始定時輪詢
{for(i=0;i<SIP_CONNS;i++)
{sip_periodic(i);
if(sip_len>0)
{sip_arp_out();
eth_send();
}
}
}
else if(sip_len>0) //接收并處理數據
{sip_arp_ipin();
sip_len=sizeof(struct sip_eth_hdr);
sip_input();
if(sip_len>0)
{uip_arp_out();
eth_send();
}
}
}
簡化后的互聯協議棧的鏈路層部分由網絡控制器CS8900A完成,網絡層和傳輸層由單片機來處理。應用層則根據需要可以在單片機內完成,也可以由單片機轉給用戶或終端設備完成。除了WEB服務之外,盡管其他應用層服務像SMTP協議支持功能也可以根據需要編寫相應的代碼[8],但一般不需要添加額外太多的應用層服務。
本項目設計的無線傳感器網絡與Internet的互聯系統,在實際中得到了成功應用。筆者下一步工作重點是在系統中增加支持通過無線局域網互聯到Internet的功能,以使本系統能夠應用于那些通過無線局域網互聯到Internet的環境。
參考文獻
[1] 孫利民,李建中,陳渝,等.無線傳感器網絡[M].北京:清華大學出版社,2005,5.
[2] 王曉楠,唐振民,錢煥延.無線傳感器網絡與IPv6網絡的互聯通信[J].計算機工程,2009,35(24).
[3] 侯惠峰,劉湘雯,于宏毅,等.無線傳感器網絡與IPv6網絡的互聯方式研究[J].電信科學,2006,22(6).
[4] 鄭增威,吳朝暉,林懷忠,等.可靠傳感網聚類路由算法研究[J].浙江大學學報(工學版),2005,39(10).
[5] Comer DE.用TCP/IP進行網際互連(第一卷第五版)[M].北京:電子工業出版社,2007,5.
[6] 陳冬云.ATmega128單片機原理與開發指導[M].北京:機械工業出版社,2006,1.
[7] uIP協議棧研究網.http://www.sics.se/~adam/uip/index.php/Main_Page.
[8] 鄭靈翔.嵌入式系統設計與應用開發[M].北京:北京航空航天大學出版社,2006,7.