背景技术
无线传感器监控网络是无线传感器网络与监测控制技术相结合的产物。它由部署在监测区域内部或附近的大量廉价的传感器节点通过自组织方式构成的网络,具有低成本、低能耗、灵活性高、可扩展等优点,其可以广泛地应用于国防军事、环境监测和预报、农业监测控制、智能家居等众多领域,受到越来越多的关注。
IPv6是下一代互联网的核心协议,具有地址资源丰富、地址自动配置、支持实时业务、安全性高、移动性好等优点。将IPv6与无线传感器监控网络结合构建的IPv6无线传感器监控网络,可以满足目前无线传感器监控网络在地址、安全及移动性等方面的需求,符合未来无线传感器监控网络的发展方向,已成为其研究热点之一。
在选定了无线传感器网络相关通信协议,并将这些硬件设备组建为网络之后,需要对无线传感器网络采集的数据进行分析,因此需要后台数据系统的支持。对于传感器网络后台服务器系统应具备以下特点:
1)稳定性:传感器网络收集周围世界的数据,是一项长期的工程,如何使得传感器网络不出错的运行下去,这是服务器系统的核心问题。
2)自愈性:在网络断开之后,如何进行自我愈合,在网络长时间没有数据产生时,如何确定网络是否已经断开,从而进行不同的操作是需要服务器系统解决的难点问题。
3)并发性:当大量传感信息数据同时到达服务器系统时,服务器可以利用多线程技术同时处理多个信息包的请求,并发性成为服务器系统的一项重要指标。
目前,在无线传感器网络领域出现了一些相关的工具:
1.Mote-view
Crossbow公司开发的Mote-view软件是无线传感器网络与用户之间的一个接口,为用户提供了一系列的工具用以简化部署及检测,并且使得连接数据库、分析、图形显示传感数据变得非常容易。它支持Crossbow的所有传感器集成数据采集板等,使用时连接数据库和无线传感器网络。在连接上之后,选择无线传感器网络所运行的应用程序,即可对无线传感器网络进行检测。
2.Tiny Viz
Tiny Viz是TOSSIM的可视化工具,能够附加到一个正在运行的仿真程序中,采用Java实现。能够对仿真中的部分信息进行配置。Tiny Viz引擎使用事件驱动模型,这使得Tiny OS事件驱动的程序执行方式与事件驱动的图形用户界面之间有一个简单的对应。
3.EmStar
EmStar是一个基于Linux的软件框架,它有多种运行环境,从纯粹的仿真到实际部署,EmStar的模型能够使用标准接口灵活的实现相互连接,他们之间的连接可以是数据流,状态更新或者配置命令。
4.SNA
Draintree Network公司的Sensor Network Analyzer(SNA)是对传统的网络协议分析的扩展,他是一个强大的虚拟网络分析器,包括网络拓扑结构、路由及绑定应用、链路质量及设备状态等的可视化。另外,SNA提供大量物理分布网络中的多节点捕获分析以及系统性能测量分析。
但是,以上各种传感器网络后台服务器系统都无法应用于IPv6无线传感器网络。
发明内容
本发明的目的在于,提供一种基于IPv6的无线传感器网络服务器系统。本发明主要涉及服务器处理并转发基于IPv6无线传感器网络的数据。本发明针对客户端对传感器网络数据信息的需求以及对传感器网络的有效控制,提供了一种服务器数据处理系统,有效地解决了用户需求,使得用户可以通过服务器对传感器网络进行有效监控。
发明内容概要如下:无线传感器监控网络由部署在监测区域的不同类型传感器节点构成,通过不同的传感器节点,实时地采集处理特定区域的传感信息,并发送到特定的网关,再经它将数据传送到CDMA网络中,最终由Internet网络把数据传输到服务器。服务器接收数据,供用户使用,同时用户做出控制判断,控制信息通过相反的流程传到相应节点。管理员通过访问服务器完成对整个无线传感器监控网络的有效管理(传感器网络和服务器系统整体架构如图1)。
根据传感器网络系统对通信的可靠性要求不高,同时CDMA网络是按照流量记费的方式,在无线传感器网络采用面向无连接的套接字,采用UDP协议;在IPv4Internet网络上传输时,要求可靠性较高,因此采用面向连接的套接字,同时,利用TCP的“保活”字段,可以过一段时间发送一个保持连接的包,保证连接不断,增加了系统的稳定性。因此需要把无线传感器网络的IPv6数据包封装成CDMA格式数据的数据包,再通过CDMA网络传输到公网上,利用CDMA网络与Internet网络的接口,实现CDMA网络数据包与Internet网络数据包的无缝转换。最后在服务器端接收的是Internet网络数据格式的信息包(见附图2)。
本发明针对采用UDP和IPv6格式封装,通过CDMA封装TCP和IPv4报头后,再传到服务器端进行处理的传感器网络数据。特点是传感器数据经过两次封装网络层,IPv6报头作为IPv4和TCP封装的上层数据传给服务器,服务器需要两次通过协议栈去掉包头,把真实数据交给上层处理。本发明最大的特点就是数据包两次通过协议栈,需要数据在服务器高层和底层间进行通信。服务器系统处理过程可以看作封装在IPv4Internet网络中的IPv6数据包的隧道机制,但又与传统的隧道机制有明显区别,主要体现在IPv6数据包是作为IPv4协议栈应用层数据传输,通过封装在IPv4中的IPv6数据包的接收和发送,完成该服务器系统的处理。
根据本发明的发明目的,本发明提供一种基于IPv6的无线传感器网络服务器系统,所述基于IPv6的无线传感器网络包括至少一个传感器节点、CDMA网络、IPv4网络、服务器、IPv6网络,
所述服务器包括用户空间单元和内核空间单元,其中,
所述用户空间单元包括:
初始化模块,用于在用户空间单元接收数据包时,初始化监听模块、转发模块和接收模块;
监听模块,用于创建面向连接的IPv4套接字,接收来自IPv4网络的传感器节点数据;
转发模块,用于负责数据在用户空间单元与内核空间单元的通信;
接收模块,用于建立面向无连接的IPv6套接字,监听UDP端口;
发送模块,用于供用户产生控制传感器节点的命令包以及构造在所述传感器网络中能被传感器节点识别的数据包,并将所述命令包或所述数据包传送到内核空间单元;
数据库模块,用于存储所述传感器节点的地址信息、路由信息、传感数据以及用于终端用户管理的用户信息;
所述内核空间单元包括:
Netfilter模块:用于实现包过滤、状态检测、网络地址转换和包标记;
内核接收线程模块:用于在内核空间负责接收处理用户空间发送的数据。
根据本发明的系统,所述监听模块绑定IP地址和端口,再监听等待客户端的TCP连接请求,当监听到客户端有TCP连接请求时,与客户的TCP端口进行连接。
根据本发明的系统,所述转发模块包括第一线程单元和第二线程单元,其中
第一线程单元,用于将接收的数据包发送到内核空间单元;
第二线程单元,用于接收内核空间单元传递的命令包,并将命令包传送到IPv4网络。
根据本发明的系统,所述接收模块去掉IPv6报头,接收UDP目的端口与传感器节点UDP端口一致的数据包,并将接收到的数据包存储到数据库模块。
根据本发明的系统,用户通过点击网页使得所述发送模块产生控制传感器节点的命令包。
根据本发明的系统,所述数据库模块采用MySQL数据库。
根据本发明的系统,服务器系统利用所述Netfilter模块接收到IPv4数据包,通过Netlink套接字,将IPv6数据包传送到内核空间单元,在内核空间单元的接收缓冲区,构造虚拟的网卡接收过程;以及IPv6命令包在进行路由处理之前,由所述Netfilter模块捕获到该命令包,再通过Netlink套接字将该命令包传送到用户空间单元。
为了进一步说明本发明的原理及特性,以下结合附图和具体实施方式对本发明进行详细说明。
具体实施方式
下面结合附图详细描述本发明的具体实施方式。
图1是按照本发明实施的传感器网络和服务器系统整体结构示意图。图1中整个服务器系统采用分层体系结构。分层的体系结构能使系统的功能实现透明化,各个层不需要了解其他层的具体工作,只需根据层间接口所提供的服务,独立完成自己的功能。这种设计使服务器系统具有很强的灵活性和可扩展性。
如图1所示,在农业基地中设置了由多个传感器(也称为传感器节点)组成的无线传感器网络。优选地,这些传感器是温度传感器,也称为温度传感器节点,用于监测农业基地内部各处的温度,并将采集到的数据传递给连接无线传感器网络与CDMA网络的网关。该网关用于将传感器网络封装的数据包格式转换为CDMA网络数据包格式,或者将CDMA网络数据包格式转换为传感器网络封装的数据包格式。
如图1所示,CDMA网络将网关接收到的数据经过现有的IPv4 Internet网络传输到服务器。这些数据经过服务器的处理后,通过IPv6协议栈传输给用户或者管理员,供其进行处理。经由用户或管理员判断处理之后,将控制信息通过反向的流程传回到相应的传感器。
本领域的技术人员应当知晓,上述传感器包括但不限于温度传感器,比如可以是任意合适类型的传感器,如湿度传感器、光照强度传感器等等。
图2是按照本发明实施的CDMA数据包格式、IPv4数据包格式的示意图。
如图2所示,CDMA数据包格式包括四个部分,从前到后的顺序是:CDMA报头、IPv6报头、UDP报头、传感数据。其中CDMA报头是要通过CDMA网络传输的数据包必须封装的包头;IPv6报头是传感器网络采用的网络层封装格式,40字节的包头,其中16字节的IP地址可以提供传感器网络节点无限的地址空间;传输层采用UDP协议,其报头为8字节,UDP协议更适用于传感器网络;传感数据是传感器节点采集到的原始数据,属于应用层数据,是用户所关注的内容。
如图2所示,按照本发明一个实施方式,IPv4数据包格式包括五个部分,从前到后的顺序是:IPv4报头、TCP报头、IPv6报头、UDP报头、传感数据。要把CDMA网络中的数据转到现有IPv4 Internet网络中传输需要将CDMA包头去掉,并换上IPv4报头和TCP报头,也就是说将传感器网络传出的数据(包括IPv6报头、UDP报头和传感数据)整体当作现有IPv4 Internet网络的应用层数据进行传输。
如图2所示,按照本发明一个实施方式,CDMA数据包格式中的CDMA报头转换为IPv4数据包格式中的IPv4报头。这种转换方式是通过运营商的现有技术实现的。通过图2所示的数据包格式相互转换,即可实现CDMA网络数据包与IPv4Internet网络数据包的无缝转换。
图3是按照本发明一个实施方式的服务器系统内部结构示意图。按照本发明一个实施方式,服务器系统被分成内核空间和用户空间两个大的部分。
如图3所示,用户空间至少包括初始化模块、监听模块、转发模块、接收模块、发送模块和数据库模块;内核空间至少包括Netfilter模块和内核接收线程模块。下面对各个模块功能进行说明:
1.初始化模块:用于在用户空间接收数据包时,创建其它模块,其他模块包括监听模块、转发模块和接收模块,使这些模块完成初始化。
2.监听模块:用于创建面向连接的IPv4套接字,用于接收来自IPv4 Internet网络的传感器节点数据。通过建立socket套接字,将IP地址和端口绑定,再监听等待客户端的TCP连接请求。当监听到客户端有TCP连接请求时,进行TCP三路握手,与客户的TCP端口进行连接。
3.转发模块:由两个线程单元组成,用于负责数据在用户空间与内核空间的通信。第一线程单元负责将IPv4套接字接收过来的用户空间的数据包通过Netlink套接字发送到内核空间,以供内核空间接收线程处理。第二线程单元负责接收内核空间通过Netlink套接字传递的命令包,并将命令包通过原来的IPv4套接字传送到IPv4 Internet网络。
1)第一线程单元,用于从用户空间到内核空间的数据转换过程:当传感数据经过已经建立的面向连接的IPv4套接字,通过IPv4协议栈,去掉了IPv4报头,传到用户空间。用户空间接收到该数据包(数据包格式见图4),它是一个完整的IPv6数据包,其中,传感数据作为IPv6数据包应用层数据。用户空间创建Netlink套接字,在创建和绑定成功后,将接收到的数据包放到转发模块的数据区中,添加Netlink首部,再通过sendmsg()函数,封装MSGhdr首部,最终将数据包发送到内核空间,由内核空间的接收线程处理(发送到内核空间的数据包格式如图5所示)。
图4是按照本发明一个实施方式的监听模块接收到的数据包格式示意图。
如图4所示,监听模块接收到的数据包格式包括三个部分,就是完整的传感器网络数据包(包括IPv6报头、UDP报头和传感数据)。
图5是按照本发明一个实施方式的发送到内核空间的数据包格式示意图。如图5所示,发送到内核空间的数据包格式包括5个部分,前两个报头是数据包通过转发模块添加的Netlink首部和MSGhdr首部,后面是完整的传感器网络数据包(包括IPv6报头、UDP报头和传感数据)。
2)第二线程单元,用于从内核空间到用户空间的数据转换过程:第二线程用于接收内核空间的IPv6命令包,是发送数据包的逆过程。接收内核空间的IPv6命令包时,通过Netlink套接字,利用recvmsg()函数进行接收,并将该命令包通过原来已经建立的IPv4套接字,传递到IPv4 Internet网络上。
4.接收模块:用于建立面向无连接的IPv6套接字,监听UDP端口。通过IPv6协议栈去掉IPv6报头,接收到的UDP目的端口与传感器节点使用的UDP端口一致的数据包被本模块接收,并将接收到的数据包存储到数据库模块。
5.发送模块:远端用户通过点击网页产生了控制传感器节点的命令包,经过IPv6和UDP协议栈添加IPv6和UDP报头,构造一个在传感器网络中可以被节点识别的数据包,传送到内核空间,由内核空间的Netfilter模块进行接收。一种适用于本专利的实施方式是,当用户需要向某个节点发送控制命令时,可以远程登录到服务器系统,在网页中(网页界面如图9所示)输入该节点号和控制命令类型,点击发送命令,即可触发发送模块,构造IPv6的命令包(IPv6的命令包格式如图6所示)。其中,应用层为构造的命令帧。在图6中的IPv6和UDP头部,目的地址和目的端口为远端传感器节点的地址和端口。这样,通过IPv6协议栈,由内核空间的Netfilter模块接收,并最终发送到用户空间。通过已经建立好的IPv4套接字,命令帧被传送到远端传感器节点,完成命令帧发送的过程。
6.数据库模块:数据库模块是服务器系统的基础。设计数据库和建立数据库层是利用Web数据库进行应用程序开发的首要步骤。优选地,按照本发明一个实施方式,在服务器系统中的数据库模块采用MySQL数据库。首先,MySQL是开放源代码的软件,同时,它相对其它大型数据库而言,在速度方面很有优势。而且,大多数Web数据库应用程序的典型特征是:检索比数据更新更加常见,并且小而简单的更新是修改的通用操作。服务器系统的数据库模块中包含了IPv6无线传感器网络节点的地址信息、路由信息、传感数据,以及用于终端用户管理的用户信息。通过MySQL提供的API接口函数,可以方便的在用户端对数据库进行操作。
本领域的技术人员应当知晓,数据库模块基于Web的数据库,因此包括但不限于采用MySQL数据库,其他任何合适的基于Web的数据库均可用于本发明。
7.Netfilter模块:Netfilter是Linux内核中的一个包过滤框架,它在这个框架上实现了包过滤、状态检测、网络地址转换和包标记等多种功能,因为它设计的开放性,可以很容易地利用它提供接口,在内核的数据链路层、网络层,实现自己的功能模块(一个IPv6数据包按照如图7所示的过程通过Netfilter模块)。
图7中具有用于处理IPv6数据包的5个子单元,分别是:NF_IP_LOCAL_IN子单元、NF_IP_LOCAL_OUT子单元、NF_IP_PRE_ROUTING子单元、NF_IP_POST_ROUTING子单元、NF_IP_FORWARD子单元。数据经过五个单元的流程如下:数据报从左边进入系统,进行IP校验以后,数据报经过第一个NF_IP_PRE_ROUTING子单元进行处理;然后就进入路由代码(ROUTE),其决定该数据包是需要转发还是发给本机的;若该数据包是发给本机的,则该数据经过NF_IP_LOCAL_IN子单元处理以后然后传递给上层协议;若该数据包应该被转发,则它被NF_IP_FORWARD子单元处理;经过转发的数据报经过最后一个NF_IP_POST_ROUTING子单元处理以后,再传输到网络上。本地产生的数据经过NF_IP_LOCAL_OUT子单元处理以后,进行路由选择处理,然后经过NF_IP_POST_ROUTING子单元处理以后发送到网络上。
五个子单元的作用分别是:
1)NF_IP_PRE_ROUTING子单元:传入的数据包被处理之前经过这个子单元,进行的是一些与类型、长度、版本有关的检查。经过这个子单元处理之后,数据包进入ROUTE路由,进行查路由表的工作,并判断该数据包是发给本地机器还是进行转发。在这个子单元主要是对数据包作报头检测处理,以捕获异常情况。
2)NF_IP_LOCAL_IN子单元:将目的地址是本地的数据包交给本地服务器。
3)NF_IP_FORWARD子单元:目的地非本地主机的数据包都要经过这个子单元,可以利用这个子单元对应的FORWARD规则链表来对数据包进行规则匹配的筛选。
4)NF_IP_LOCAL_OUT子单元:本地主机发出的数据包经过这个子单元,用于构建发送数据包,进行错误检测和多播相关的处理。
5)NF_IP_POST_ROUTING子单元:所有数据报,包括源地址为本地主机和非本地主机的,在通过网络设备离开本地主机之前,都要经过这个子单元进行数据包处理。
按照本发明一个实施方式,在服务器系统中,IPv6数据包经过Netfilter模块用到两个子单元实现两个过程:
1)NF_IP_LOCAL_IN子单元:服务器系统接收到的IPv4数据包,通过Netlink套接字,将IPv6数据包传送到内核空间,在内核空间的接收缓冲区,构造虚拟的网卡接收过程,此时,可以利用NF_IP_LOCAL_IN子单元进行接收调试,以确定IPv6协议栈是否能够接收IPv6数据包。
2)NF_IP_LOCAL_OUT子单元:由用户点击网页产生的IPv6命令包,通过IPv6协议栈,进入到内核空间,在IPv6命令包通过NF_IP_LOCAL_OUT子单元后,在进行路由处理之前,由Netfilter模块捕获到该命令包,再通过Netlink套接字将该命令包传送到用户空间。
8.内核接收线程模块:用于在内核空间负责接收处理用户空间发送的数据。使用API函数创建一个内核套接字,同时,注册一个回调函数,用于处理从用户空间接收到的并由Netlink套接字传送到内核空间的IPv6数据包,通过网卡接收,触发IPv6接收队列,在用户空间通过已经建立的IPv6套接字进行接收。
按照本发明一个实施方式,服务器系统的具体工作流程如下(分为接收过程和发送过程):
接收过程:
步骤1:用户空间的初始化模块对监听模块、转发模块、接收模块进行初始化;
步骤2:初始化后的监听模块开始对IPv4 Internet网络中来自传感器网络的数据包进行监听;
步骤3:IPv4 Internet网络上的数据包经由以太网,通过IPv4套接字进入TCP,在此去掉数据包在IPv4 Internet网络中传输所必须的报头部分,经过INET套接字、BSD套接字的处理后,到达用户空间的监听模块;
步骤4:监听模块接收传感器网络数据,然后将数据传送到转发模块;
步骤5:转发模块将接收到传感器网络数据进行封装报头处理,然后将处理后的数据传送到内核空间的Netlink套接字;
步骤6:内核接收线程模块将接收到的传感器数据解掉Netlink报头,并送到IPv6协议栈底部,去掉传感器网络数据的协议报头;
步骤7:接收模块接收到去掉IPv6和UDP报头的数据包,这时剩下的数据只是传感器节点采集到的数据,通过判断是哪个节点传来的数据(根据IPv6地址)以及是什么数据(温度值、光强值、路由信息等),存储到相应的数据库,完成传感器数据接收过程。
发送过程:
步骤1:用户选择要控制的节点和相应的命令参数,发送命令包(比如点击图9中的“控制”按钮);
步骤2:命令包经过UDP和IPv6协议栈封装成为传感器网络节点可以识别的数据结构,在协议栈底部通过NF_IP_LOCAL_OUT子单元将包装好的数据包放到Netfilter模块中;
步骤3:Netlink套接字将Netfilter模块中的数据包进行封装处理,然后将处理后的数据包传送到用户空间的转发模块;
步骤4:转发模块将接收到数据包传送到内核空间的TCP和IPv4协议栈;
步骤5:经过TCP和IPv4协议栈,包装好的数据可以在IPv4 Internet网络中传输,经过网卡构造底层协议后发送到传感器网络;
按照本发明一个实施方式,接收传感器节点发来的数据,从Internet网络传来的数据包经过服务器内核IPv4和TCP协议栈,到达用户空间,再经过转发模块回到内核网络层,经过IPv6和UDP协议栈,再次回到用户空间,写入数据库,经过服务器端网页对数据库中数据的进一步处理,对应每一节点产生它所传来数据的数据图(如图8所示)。
图8是按照本发明一个实施方式的服务器系统接收传感器节点数据生成的数据图。图8是温度趋势图,横轴表示时间,单位是分钟;纵轴表示温度,单位是摄氏度。从图8可以看出,服务器接收到了传感器节点感知到的温度,并按节点感知温度的时间制作了一张温度变化图,准确的再现了单个节点的温度变化趋势。
图9是按照本发明一个实施方式的服务器系统发送命令的网页示意图。
如图9所示,该网页上方出现命令,表示可以选择待发送命令的类型和参数。左侧的“命令类型”单选按钮包括:开始、停止、休眠;参数包括:T、L(T代表温度节点,L代表光强节点)。下拉菜单“1MIN”表示休眠时间设置为1分钟。地址框中输入的是节点的IPv6地址,表示要控制的节点。点击“控制”按钮,则进行命令包的发送。点击“显示”按钮,则显示该节点的温度变化趋势图。
当发送命令时,在服务器端网页(见图9)上选择所选命令和参数,以及要发给的节点地址,点击“控制”按钮,即可发送命令。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些具体实施方式仅是举例说明,本领域的技术人员在不脱离本发明的原理和实质的情况下,可以对上述方法和系统的细节进行各种省略、替换和改变。例如,合并上述方法步骤,从而按照实质相同的方法执行实质相同的功能以实现实质相同的结果则属于本发明的范围。因此,本发明的范围仅由所附权利要求书限定。