一种生态监测IPv6传感网负载均衡方法及系统与流程

文档序号:11157928阅读:311来源:国知局
一种生态监测IPv6传感网负载均衡方法及系统与制造工艺

本发明属于计算机网络的无线传感器网络领域,具体涉及到一种生态监测IPv6传感网负载均衡方法及系统。



背景技术:

生态监测是对生态环境的各个要素进行监测,可以利用物理、化学、生态学等不同的技术完成。在本文中,对生态环境监测使用的是无线传感器网络。

无线传感器网络经常应用在生态监测中。通常,一个传感器节点由三部分组成,一个传感子系统使用传感器获取生态环境各种要素的数据,一个处理子系统对数据进行处理和存储,一个通信子系统使用收发器(RF)把数据发送到网络中,另外每个传感器节点需要有电源供电。把各个传感器节点通过无线链接连接起来搭建成一个网络,持续不断地获取数据,这就是一个无线传感器网络。

传统的生态监测使用的无线传感器网络框架是把一个树状的有向无环结构,把数据的转发设置为沿树状结构上行或下行传输。这个框架在本质上是一种流量聚合模式,即在持续不断地获取传感器节点数据时,流量都聚集在进行数据收集的根节点处,网络负载不均衡,这个收集数据的根节点会成为整个网络框架的瓶颈。这样的框架显然不适用于大量获得传感器节点数据。

之后,有学者提出了一种平衡负载的方法。这种方法在根节点处部署多台设备完成数据的收集。这样的方法确实解决了在根节点流量过大的问题,但是导致了新的问题。随着传感器节点数目的增加,根节点处部署的收集数据设备越来越多,难以控制它们之间的访问。本发明将利用现有的任播技术和借鉴移动IP技术的思想解决上述问题。

任播是在IPv6中提出的一种新的技术,即发送方把数据发送给一组目的主机,这些目的主机共享一个任播地址,数据被这组主机中的任意一个且只有一个主机接收到。本发明提出的生态监测IPv6传感网负载均衡方法及系统中将使用到这种技术。

移动IP技术的基本实现原理是这样的:1)远程通信实体通过标准IP路由机制,向移动结点发出一个IP数据包;2)移动结点的归属代理截获该数据包,将该包的目标地址与自己移动绑定表中移动结点的归属地址比较,若与其中任一地址相同,继续下一步,否则丢弃;3)归属代理用封装机制将该数据包封装,采用隧道操作发给移动结点的转发地址;4)移动结点的拜访地代理收到该包后,去其包封装,采用空中信道发给移动结点;5)移动结点收到数据后,用标准IP路由机制与远程通信实体建立连接。

移动IP技术的基本思想是这样的:IP地址不仅是一个节点身份的标识,还表明其位置所在,所以移动节点使用这样的IP地址进行通信是不行的,因为位置移动会导致网络拓扑结构改变,自身的IP地址也改变了,发送给它的数据包的目的地址还是原来的目的地址,这样它就接收不到了。为此,移动IP技术使用了代理作为中介,提出两种代理,归属代理和拜访地代理。开始时,移动节点在归属代理上注册,当移动节点位置移动到归属代理管理的范围外,移动节点会向拜访地代理进行注册,获得一个移动IP地址,拜访地代理会通告其归属代理,移动节点移动到“这里”。当远程通信实体第一次与移动节点通信时,会把数据包发送到归属代理上,归属代理知道移动节点不在了,所以把数据包转发到对应的拜访地代理,拜访地代理再把数据包转发给移动节点,这样移动节点就接收到数据包。之后,移动节点就可以使用拜访地代理分发给它的移动IP地址与远程通信实体进行直接通信。这样移动IP技术就解决了数据包发送给移动节点的目的地址过时的问题。



技术实现要素:

本发明旨在解决传统无线传感器网络框架在生态监测中产生的流量聚合问题,本发明的目的在于提出一种生态监测IPv6传感网负载均衡方法及系统。本发明拟在传统无线传感器网络拓扑结构的根部部署多个数据收集器,借鉴移动IP技术的思想,使用代理节点来管理传感器节点与收集器节点之间的通信访问控制,为每个传感器节点发送数据前选择一个负载状况最好数据收集器,达到分摊根部收集器进行数据收集的负载,完成负载均衡的目的。

本发明的基本思想:将传统的无线传感器网络技术应用到对生态环境进行监测时,会导致在收集数据的根节点处流量过大的问题。对此采用在根节点处部署多台设备进行数据收集是可取,但接着又会导致根节点设备的控制访问问题。在移动IP技术中,移动IP技术使用代理完成远程通信实体与会移动的移动节点之间的通信。因为在移动网中,远程通信实体是固定的,移动节点是移动的,但IP地址不仅标识身份,还标识位置,因此需要使用代理来解决移动后数据的正常传输。而在生态环境监测网络中,传感器节点与收集数据节点也是两种类型不同的节点。传感器节点需要发送大量的数据,而收集数据节点需要接收大量的数据。如果对这个过程不加控制,大量的传感器节点和少量的收集数据节点必然会导致后者成为网络中瓶颈。如果在数据收集处部署过多设备进行数据收集,就会出现某种意义上与移动网络中很相似的问题,原来移动网络中的问题是目的IP地址过时,现在生态环境监测网络的问题是不知道应该如何设置目的IP地址。为此,可以模仿移动IP技术,使用代理作为一个中介,对收集数据的设备进行访问控制。但代理显然不能只有一个,必须使用多个代理,而多个代理可以共享一个任播地址,当传感器节点和收集数据节点使用代理时,把目的地址设置为任播地址,然后代理节点就可以接收它们的请求,为它们服务,而任播技术可以保证只有一个代理节点接收这样的请求。这样当传感器节点和收集数据节点使用代理时,就不必关心是谁在为它们提供服务,这样的做法非常方便。具体的控制方式就是,收集数据节点把自己的信息登记在代理上,当传感器节点要发送数据时,代理给它提供一个综合负载最小的收集数据节点的IP地址进行发送,这样就完成了负载的均衡,而且访问控制也清晰简单易用实现。基于这样的思想,提出了以下的技术方案。

本发明的技术方案为一种生态监测IPv6传感网负载均衡方法及系统。本发明把无线传感器网络中的节点分成三类:传感器节点(CN)、代理节点(agent)和收集器节点(collector)。整体网络结构如图1。

现在说明本发明技术方案的整体设计。首先,规定本生态环境监测网络使用的任播地址(注:任播地址也可以进行动态获取,但在一个或几个生态监测系统中使用人工规定可以提高效率,本发明使用人工规定的方式),代理节点进行初始化配置自身的任播地址。收集器节点使用任播向其中一个代理节点进行注册。代理节点获得向自己注册的收集器节点的信息(利用IPv6任播,每个启动的收集器节点只会在一个代理节点上注册,每个代理节点只收集向自己注册的收集器节点的信息),主要包括IP地址、负载情况、开关状态等。经过这个过程,收集器节点都完成了注册。当传感器节点需要发送数据时,使用任播向代理节点集群中的任意一个代理节点请求一个收集器节点,接收这个请求的代理节点将选择一个负载最小的可用的收集器节点并将它的IP地址返回给传感器节点,并记录两者之间的绑定。这样,传感器节点知道了收集器节点的地址信息,就可以向它传输数据。在传感器节点向收集器节点传输数据前,设置一个超时计时器,当计时器超时或传感器节点数据传输完成时,因为在之前代理节点返回收集器节点IP地址时,传感器节点就知道了该代理节点的IP地址,所以现在可以向为其分配收集器节点的代理通告通信结束,删除对应的绑定。设置超时计时器的目的在于避免传感器长时间占用收集器节点。这是本发明发明的生态监测IPv6传感网负载均衡方法及系统的基本构建过程。另外,当有一个新的代理节点加入网络时,只要手动配置相同的任播地址,就可以加入了网络,扩展非常方便;当有一个新的收集器节点加入网络时,因为知晓本网络代理节点集群统一使用的任播地址,通过任播技术,也可以方便向网络中的代理节点集群中的某一个代理节点(不需要关系具体是哪个代理节点进行服务)进行注册,并不会破坏原有的系统;当有一个新的传感器节点加入网络时,因为事先规定了本网络使用的任播地址,通过把目的地址设置成任播地址,马上就可以向代理节点集群请求获得一个收集器节点地址进行数据传输。因此,这个生态监测IPv6传感网负载均衡方法及系统有良好的可扩展性。

现在分别说明各个节点的具体功能及其实现。首先,本发明规定一个生态环境监测网络中统一使用的任播地址,然后下面进行分别说明。

传感器节点主要用于对生态环境进行监测并获取监测数据。当传感器节点需要发送数据时,使用任播向“最近”(注:最近的度量标准有多种)的代理节点请求一个收集器节点。获得一个收集器节点的IP地址后,设置一个超时计时器,把数据包发送到该收集器节点。计时器超时或数据发送完成后,向原代理节点通告绑定失效,终止与对应收集器节点的绑定。具体实现的算法如下:

CN PROC_1:

1)启动完成自身的配置;

2)记录该生态监测系统使用的任播地址(事先规定的本网络使用的任播地址);

3)当传感器节点需要发送数据时,使用任播向代理节点发送“CN请求通信报文”;

4)接收“通道信息报文”,获得收集器节点的IP地址;

5)设置超时计时器;

6)使用IPv6封装与收集器节点进行隧道通信,向收集器节点传输数据;

7)探测会话结束(数据传输完成)或超时;

8)向代理节点告示通信结束,绑定无效,发送“删除绑定报文”。

收集器节点主要用于收集传感器节点发送的监测数据,并通过有线连接传输到有线网中。收集器节点打开后,向代理节点进行注册,告知代理节点自身的IP地址和负载信息。收集器节点需要关闭前,向代理节点进行注销,告知代理节点应该删除对应的信息。收集器节点需要一直监听以便接收数据具体实现的算法如下:

collector PROC_2:

1)启动完成自身配置;

2)记录该生态检查系统使用的任播地址(事先规定的本网络使用的任播地址);

3)使用任播向代理节点进行注册,发送“collector注册报文”,发送自身的负载状况;

4)打开端口,准备接收数据;

5)当节点需要关闭前,向代理节点进行注销,发送“collector注销报文”;

6)关闭节点。

代理节点主要用于进行流量的负载均衡,均衡各个收集器节点的数据收集负载。代理节点主要的工作是接收各种报文并进行处理。当接收到“collector注册报文”时,登记收集器节点的IP地址、记录负载状况;当接收到“collector注销报文”时,删除对应的收集器节点信息;当接收到“CN删除绑定报文”时,删除对应的传感器节点与收集器节点之间的绑定;当接收到“CN请求通信报文”时,选择一个收集器节点,进行对应的传感器节点与收集器节点之间绑定,向传感器节点返回收集器节点信息。代理节点存储两张表,一张是收集器节点表,另一张是绑定记录表。收集器节点表用于记录在本代理节点进行注册的收集器节点信息,包括它的IP地址、负载状况、可用状态。绑定记录表用于记录当前进行通信的传感器节点和收集器节点的信息,包括传感器节点IP地址、收集器节点IP地址、通信状态。具体实现的算法如下:

agent PROC_3:

1)启动完成自身配置;

2)把该生态监测系统使用的任播地址配置为自身的任播地址(事先规定的本网络使用的任播地址);

3)打开端口,接收报文;

4)接收数据包;

5)获取源IP地址,获取报文类型;

6)匹配报文类型:

①collector注册报文,对该收集器节点进行注册:查询自身存储的收集器节点表,与源IP地址匹配,如果匹配成功,把表中对应的项的可用状态设置为可用,更新负载状况;如果匹配失败,向表中加入一个新的项,记录收集器节点IP地址、负载状况、可用状态为可用。

②collector注销报文,注销该收集器节点信息:查询自身存储的收集器节点表,与源IP地址匹配,把表中对应的项的可用状态设置为不可用。

③删除绑定报文,设置对应的绑定无效:查询自身存储的绑定记录表,匹配对应的表项,把对应的表项的通信状态设置成无效。

④CN请求通信报文,处理传感器节点的通信申请:在自身存储的收集器节点表中,根据负载状况,选择一个负载最低的收集器节点;在绑定记录表中登记这个绑定信息;向原传感器节点发送“通道信息报文”,告知传感器节点进行通信的收集器节点的IP地址。

本发明与现有技术相比,具有以下优点:

本发明解决了传统无线传感器网络应用于生态环境监测时产生的流量聚合问题,更好地进行负载均衡。在移动IP技术中,使用归属代理和拜访地代理把数据包发送给移动的节点,解决了移动性使移动节点IP地址过时的问题。本发明借鉴移动IP技术,使用代理节点解决收集器节点过多时传感器节点传输数据的目的IP地址选择的问题,实现了对收集器节点进行便捷的访问控制,而且,还可以在代理节点上运行各种负载均衡算法,完成收集器节点的流量负载均衡。同时,本发明的生态监测IPv6传感网负载均衡方法及系统有良好的可扩展性。

附图说明

图1本发明的整体网络结构示意图;

图2传感器节点算法流程图;

图3收集器节点算法图;

图4代理节点算法图。

具体实施方式

为使本发明的目的、优点以及技术方案更加清楚明白,以下通过具体实施,并结合附图,对本发明进一步详细说明。

具体实施采用contiki操作系统,移植到CC2530下。图1从整体上描述了该方案实施的总体架构,具体实施包括下面四个部分的内容。

一、本发明的传感网络传输中使用的报文结构

首先,在描述具体实现前,先说明本发明的传感网络中传输使用的各种报文的结构,是针对本发明具体设计的。这是一个具体实现的例子,以下进行逐一的详细说明。

1)collector注册报文

collector注册报文是收集器节点启动完成后,通过任播发送到代理节点的报文,目的是向代理节点进行注册。报文结构体中只有一个属性报文类型,并规定报文类型为0x01的报文为“collector注册报文”。具体如下:

collector注销报文是收集器节点要主动关闭前,通过单播发送到代理节点的报文,目的是向代理节点进行注销。报文结构体中只有一个属性报文类型,并规定报文类型为0x02的报文为“collector注销报文”。具体如下

typedef struct{

uint8_t type;//报文类型0x02

}collector_unregister_t;

3)删除绑定报文

删除绑定报文是传感器节点在计时器超时或数据传输完成后,通过单播发送到代理节点的报文,目的是通告代理节点,告知传感器节点与收集器节点的通信已经失效,应该更新收集器节点的负载状况。报文结构体中有三个属性,分别是报文类型、传感器IP地址和收集器IP地址,并规定报文类型为0x03的报文为“删除绑定报文”。另外两个属性是因为代理节点需要这两个属性来与自身的绑定记录表进行匹配,设置绑定失效。其实由于发送方是传感器节点,可以省略传感器IP地址这个属性,但依然要设置这个属性是因为便于以后扩展,以后可能收集器节点也要发送删除绑定报文,并且这样在表示上显得结构更加清晰明了。具体如下:

4)CN请求通信报文

CN请求通信报文是传感器节点在需要发送数据前,通过任播发送到代理节点的报文,目的是请求分配一个接收数据的收集器节点,获取收集器节点的IP地址。报文结构体中有两个属性,分别是报文类型和历史连接的收集器节点IP地址,并规定报文类型为0x11的报文为“CN请求通信报文”。使用一个历史连接的收集器节点IP地址的属性,如果该收集器节点依然可用且负载状况良好,则继续向其传输数据。这样做的目的是因为之前传输的数据和现在要传输的数据可能有一定的连续性,能用同一个收集器接收这样便于进行处理。具体如下:

5)通道信息报文

通道信息报文是代理节点选择一个负载状况最好的收集器节点后,通过单播发送到传感器节点的报文,目的是对传感器节点发来的“CN请求通信报文”进行应答,返回一个收集器节点的信息。报文结构体中有两个属性,分别是报文类型和收集器节点IP地址,并规定报文类型为0x12的报文为“通道信息报文”。之所以要使用一个收集器节点IP地址的属性,是因为要向传感器节点返回一个收集器节点的信息。具体如下:

6)通道数据报文

通道数据报文是传感器节点通过单播发送到收集器节点的报文,目的是进行数据的传输。报文结构体中有两个属性,分别是报文类型和需要传输的数据,并规定报文类型为0x13的报文为“通道数据报文”。其实在实际应用中也可以不使用报文类型,甚至不使用一个专门的数据结构,直接发送数据,只要使用另一个端口进行数据接收,就不会与上述的报文发送冲突。这样设置可以使得结构更加清晰。具体如下:

二、传感器节点实现

传感器节点是部署在生态环境监测系统中监测数据使用的节点,主要用于数据的获取。下面结合附图2详细地说明传感器节点具体实现的算法流程。

1)在contiki中要运行的程序需要写在线程中,所以,第一步需要设置一个线程。然后,开启这个线程,具体如下:

PROCESS(sensor_node_process,”sensor node process”);//声明一个线程

AUTOSTART_PROCESS(&sensor_node_process);//把线程加入线程池

PROCESS_BEGIN();//开启线程

2)等待一段时间,让传感器节点完成其它设置,包括自身IP地址的设置。具体操作是设置一个计时器,然后等到它超时。

etimer_set(&et,CLOCK_CONF_SECOND*3);

PROCESS_WAIT_EVENT_UNTIL(ev==PROCESS_EVENT_TIMER);

3)设置本生态监测系统通信使用的任播地址,因为之后和代理节点通信需要使用任播。

uip_ip6addr(ipaddr,0xfe80,0x0000,0x0000,0x0000,0x0001,0x0001,0x0001,0x0001);

4)打开一个发送端口,用于发送报文和数据;绑定一个监听端口,用于接收报文。

node_conn=udp_new(&ipaddr,UIP_HTONS(3000),NULL);

udp_bind(node_conn,UIP_HTONS(3000));

5)现在线程进行阻塞,一直到需要发送数据为止。

6)需要发送数据,通过任播向代理节点发送“CN请求通信报文”,向代理节点请求一个可用的负载最低的收集器节点信息。

uip_udp_packet_send(node_conn,node_init_message,sizeof(sensor_node_init_t));//发送报文

7)接收“通道信息报文”,获得收集器节点的IP地址。

8)设置超时计时器,向收集器节点进行数据传输。发送数据需要设置间隔,每当隔间时间超时,就监测是否还有数据要发送,如果已经发送完成,就把数据传输标识send_over设置成1表示数据已经传输完成。

9)当超时计时器超时或数据传输已经完成时,向代理节点发送“删除绑定报文”,这样就完成了一次完整的通信过程,然后再回到步骤5)等待下一次的数据传输。

if(etimer_expired(&tm)||send_over==1){

send_delete_bind();}

三、收集器节点实现

部署在生态监测系统中的收集器节点主要用于收集由传感器节点捕获的数据,并进行处理,然后通过有线链路传输到互联网中。下面结合附图3详细地说明收集器节点具体实现的算法流程。

1)在收集器节点的程序中,同样需要先创建一个线程,并打开这个线程。等待一段时间,让节点完成自身的各项配置。设置通信使用的任播地址。打开一个发送端口,用于发送报文;打开一个监听端口,用于接收数据。

2)通过任播向代理节点发送“collector注册报文”,加入到生态监测网中,并通告自身的IP地址和负载状况。首先声明一个collector注册报文,然后把报文类型设置成0x01,最后使用报文。

collector_register_t*register_message;

register_message->type=0x01;//collector注册报文

uip_udp_packet_send(client_conn,register_message,

sizeof(collector_register_t));//发送报文

3)收集器节点已经完成加入到生态监测网络的全部工作,现在开始阻塞线程,等待接收传感器节点传输的数据。

4)接收数据,对数据进行处理并保存,以便发送到互联网中。

5)加入节点需要关闭,向代理节点发送“collector注销报文”,再关闭节点;否则,回到步骤3)继续等待数据接收。

四、代理节点实现

本发明创造性地提出在生态监测传感网中加入代理节点的概念,是本发明的生态监测IPv6传感网负载均衡方法及系统中非常重要的一部分。代理节点主要用于完成对收集器节点的访问控制。下面结合附图4详细地说明代理节点具体实现的算法流程。

1)在代理节点的程序中,同样需要先创建一个线程,并打开这个线程。等待一段时间,让节点完成自身的各项配置。在代理节点中不需要设置通信使用的任播地址,而是要把该任播地址设置为自身的任播地址。然后,打开一个发送端口,用于发送报文;打开一个监听端口,用于接收数据。

set_anycast_addresses(ipaddr);//设置自身任播地址

2)到此,代理节点的初始化工作已经完成,可以阻塞线程,等待接收报文。

3)接收报文,匹配报文的类型。如果是collector注册报文,就对该收集器节点信息进行注册,如果收集器节点表中已经有该节点信息,就把可用状态设置为可用,更新负载状况,否则,在收集器节点表中加入该收集器节点的IP地址、负载状况、可用状态等信息。如果是collector注销报文,就在收集器节点表中把对应的收集器的节点可用状态设置为不可用,完成收集器节点的注销。如果是删除绑定报文,就在绑定记录表中把对应的绑定项设置为无效,并重新计算该收集器节点的负载状况。如果是CN请求通信报文,就在收集器节点表中查看报文中的历史连接收集器节点是否负载最低,是就设置为选择的收集器节点,否则就选择一个负载最低的收集器节点;在绑定记录表中记录这对绑定,如果表中已经有对应的绑定,把状态设置为有效,否则向表中加入新的项,记录这对绑定;更新收集器节点表中该收集器节点的负载状况;向传感器节点发送“通道信息报文”,告知收集器节点的IP地址,通告可以进行数据传输。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1