一种层次拓扑结构图上的基于内容中心网络的路由方法与流程

文档序号:12479747阅读:218来源:国知局

本发明涉及无线传感器网络技术领域,尤其涉及一种层次拓扑结构图上的基于内容中心网络的路由方法。



背景技术:

在现有的大规模无线传感器自主网络上的路由技术,主要有Zigbee,和RPL这两种主流的标准和协议。Zigbee能组成的网络虽然灵活,但是组网相对简单,而且协议过于复杂,很难达到轻量级的实现,因为此原因,Zigbee在小规模网络应用相对较多,而在大规模网络中鲜有踪迹。RPL是面向6LowPAN的路由组网协议,是目前收到广泛接受的物联网中的路由协议,其基本思想是通过构造以终端为根节点,构造树形结构。根节点拥有整个网络拓路结构。树形网络中的两个节点的访问依赖于根节点指导,在数据包中携带路由分发信息,以指导信息的转发。

RPL路由思想针对传感器网络中的数据收集特点,充分利用了终端的强大计算能力,是一种比较实用的路由方法。但是在下行路由,即消息从根节点到分支中的目的节点,路由信息必须携带在消息中,当目的节点离终端较远时,路由信息会很大,从而占据大量的协议负载空间,耗费大量能耗和计算资源,尤其在网络内容访问频繁,消息数目较多,网络规模较大时,该缺陷更为显著。

此外,RPL中的消息通信是基于6LowPAN协议,即IPv6在物联网中的延伸。该协议因为是继承IP网络的思路,相对与物联网的轻量级要求,该协议特别复杂,其实现占用大量的空间资源,其运行更是耗费大量计算资源,从而在低能耗上有较大的缺陷,这也是6LowPAN协议目前也只是在小规模网络,尤其是局限在家庭网络中应用较多的原因。此外,因为下行路由中,消息必须要携带路由消息,则更会给应用6LowPAN协议来携带路由消息的方法带来更多的负担和消耗。

例如,中国专利103607412A公开了一种基于树的内容中心网络多个兴趣包处理方法,具体步骤包括:(1)读取兴趣包内容名字:(2)建立内容名字树:(3)合并内容名字树中的单分支结点:(4)存储内容名字树中的结点:(5)发送压缩兴趣包:(6)解压缩压缩兴趣包。该技术方案主要解决现有技术在内容中心网络中发送多个兴趣包的情形下,网络资源利用率低,不适用于公共前缀较短或无公共前缀的情况,完全依赖代理服务器处理,导致网络传输效率低、网络负荷大的不足的问题,是可以在一定程度上,减轻网络的负荷。

再例如,中国专利103179037A公开了基于内容的数据中心网络的数据传输方法,其特征在于,是一种以内容数据网络为基础、以内容与位置混合式的路由策略、主机提供数据缓存的离线缓存策略、通过路由转发表自学习来保证以路径长短作为转发依据的转发策略的基于内容的数据中心网络Content-CentricDatacenter Network,简称CCDN的数据传输方法,该技术方案使用以NDN(Named Data Network)为基础的基于内容的路由和转发策略。考虑到数据中心交换机的有限存储资源和数据中心网络拓扑结构的特点,我们采用Hybrid Content and Location路由策略,只需要存储完整的PIT(Pending Interest Table)和部分FIB,保证了CCDN的组播特性和可扩展性。但是占用了大量的网络资源,在低能耗上有较大的缺陷。

因此,物联网中设备仍然受到能量和计算资源的约束限制,从而要求物联网中的技术解决方案必须具备轻量级、低能耗等要求。然而,进一步如何组织传感器网络,并将网络中感应到的数据高效的传送到基站是一个急需解决的基本问题。



技术实现要素:

为克服现有技术中存在的物联网中设备受到能量和计算资源的约束限制,且组织传感器网络,并将网络中感应到的数据高效的传送到基站的问题,本发明提供了一种在层次拓扑结构图上的基于内容中心网络的路由方法。

本发明采用的技术方案为:一种在层次拓扑结构图上的基于内容中心网络的路由方法,其创新点在于:包括以下步骤:

(1)在层次图上,建立汇聚点上的路由信息,每个所述汇聚点维护两条之内的节点可到达的路由信息,路由信息的建立主要运用“基于内容中心网络的层次拓扑组网方法”来建立。

(2)采用CCN协议中的兴趣和内容消息类型,以及PIT和FIB,实现网络中任意两节点之间的基于名字的路由转发。

进一步地,步骤(1)中的建立方法具体如下:

每个传感器节点都运行面向物联网的轻量级CCN组件。

建立过程分两个阶段:

第一阶段,应用CCN兴趣消息构建层次图。组网所需的消息均为兴趣消息类型存在。有三种消息:

第一种是发现消息,该消息会携带自身节点的层次,层次值作为名字组件放置于该消息名字之后。如,该消息以“/ccn/discovery/“命名,则“/ccn/discovery/层次值/”为新的消息的名字;

第二种是确认消息,有唯一的命名,如,“/ccn/confirm/”, 确认消息中名字最后两个名字组件分别为节点的父亲节点ID和节点ID, 如包含v节点和v节点的父亲节点的名字“/ccn/confirm/Parent(v)/v”。

第三种是撤销消息,用于通知撤销之前的父子关系。以名字命名这种消息,如“/ccn/revoke” 携带某个节点和该节点的父亲节点信息,如“/ccn/revoke/v的父亲节点ID/节点v”。

上述消息的端节点默认层次为0, 其他所有节点层次默认为无穷大。从终端节点开始,设置该终端节点层次为0, 然后向它的邻居节点广播发现消息。

对于每个传感器节点,部署的CCN组件执行以下消息驱动操作:

a.v节点收到从u发来的发现消息:解析该兴趣包中名字最后的名字组件,提取出消息源的层次值level(u)。

如果level(u)=无穷大&(and)level(u)+ 1 < level(v), //即第一次更新层次;

设置level(v)= level(u)+ 1;设置v的父亲节点为u,即Parent(v)= u;

发回给u确认消息,消息中包含v节点的父亲节点u。

如果level(u)!=无穷大 & level(u)+ 1 < level(v), //非第一次更新层次;

发回给Parent(v)撤销消息,消息中包含Parent(v)和v节点信息。

设置level(v)= level(u)+ 1;设置v的父亲节点为u,即Parent(v)= u;

发回给u确认消息,消息名字中包含Parent(v)和v节点。

b.v节点收到u发来的确认消息:解析该兴趣包中名字最后的名字组件,提取出消息源的节点的父亲值。

如果确认消息名字信息中包含的父亲节点值=节点v,则设置节点u为v的子节点,即Children(v)=u;

转发该确认消息给v的父亲节点。

c.v节点收到u发来的撤销消息:解析该兴趣包中名字最后的名字组件,提取出消息源的节点的父亲值。

如果该撤销消息名字信息中包含的父亲节点值=节点v,则撤销之前关于u节点的父亲值设置。

转发该确认消息给v的父亲节点。

第二阶段,构建层次邻居信息,设置汇聚点。第一阶段会得到树形层次图,在第一阶段基础上,从叶子节点开始构建层次信息,设置汇聚点。

该阶段组网所需的消息均为兴趣消息类型存在。定义一种完成兴趣信息(简称完成消息),该信息名字为“/ccn/complete/level(u)/u/parent(u)”,并且名字字段最后包含节点的层次信息、节点ID和节点的父亲节点。

从叶子节点(层次图上没有子女的节点)开始,发送完成信息给父亲节点。节点收到完成信息做以下消息驱动动作。

节点执行以下消息驱动:

v节点收到来自u完成消息后:解析该兴趣包中的名字组件,提取出消息源的层次值level(s),节点s,节点s的父亲节点Parent(s),

发送给Parent(v)完成消息。//发送关于自己的路由信息;

如果v节点的层次level(v)% 2 != 0: //如果该节点不是属于每隔2层的节点;

则转来自u的完成消息到v的父亲节点Parent(v) //转发下级发来的路由信息;

如果v节点的层次level(v)% 2 = 0: //如果该节点是属于每隔2层的节点,且如果0<level(s)-level(v)<= 2,把节点s和其Parent(s)信息放入路由表。

在此基础上,所述节点包括根节点A和根节点之外的任意节点v。

在此基础上,所述根节点R发兴趣消息,兴趣消息以名字来表示这次访问,传输过程中将路由信息添作为名字组件接在已有名字之后。

在此基础上,所述对于除根节点R之外的任意节点v,收到路由消息后作出相应的消息驱动动作。

在此基础上,所述作出相应的消息驱动动作包括:

节点v收到兴趣消息:CCN组件解析该兴趣消息,提取消息名字和路由信息,CCN组件自动添加该兴趣消息到PIT表中,并建立对应的FIB表;

节点v收到内容消息:CCN组件解析该内容消息,根据FIB表,转发该内容信息。

在此基础上,若所述兴趣消息或内容消息的目的地是节点v,则准备对应的内容消息,并根据PIT表中所指兴趣消息的源节点ID, 发送内容消息;若该兴趣消息或内容消息目的地是不是节点v,则转发给其他节点。

在此基础上,所述兴趣消息或内容消息目的地是不是节点v,若该消息没有携带路由信息,则转发该消息给v的父亲节点;若该消息携带路由信息,查看节点存储的路由信息,转发到对应的下一级节点。

在此基础上,所述根节点R,收到消息后作出相应的消息驱动反应,具体如下:

①收到兴趣消息:解析该兴趣消息,CCN组件解析该兴趣消息,得到目的节点,并提取消息名字;根据整体路由信息,确定到目的节点的路由信息,并添加到该消息的已有名字后面,并转发该兴趣消息到对应的分支;

收到内容消息:根节点R收到内容消息则直接根据目的节点信息,转发该内容消息到对应的分支。

在此基础上,所述步骤①中添加的路由信息只包含途径的骨干节点ID。

与现有技术相比,本发明的有益效果是:

(1)本发明提出一种在层次拓扑结构图上的基于内容中心网络的路由方法,采用部分节点分担路由信息的方法,将这个路由所需的信息平坦到部分节点上,然后消息包中只需提供这些分担路由信息的节点即可,从而可以大量降低消息中携带的路由信息,达到高效路由的目的。而且消息通信采用面向物联网的CCN(内容中心网络)协议,该协议以内容为中心,采用名字来命名内容,且可以实现基于名字的路由,这些优势不仅大大缩减协议占用空间,而且网络中的服务以及对应的数据可以通过名字来识别,扩展,及其方便灵活, 这些都使得CCN更适合物联网这种面向内容的网络。

(2)本发明在层次拓扑结构图上的基于内容中心网络的路由方法,可以缩减使用路由信息的路由方法和技术。应用面向物联网的CCN协议,借助CCN中基于名字的路由特点,以名字命名路由服务,并提出在服务名字中添加必备的路由信息的方法,压缩消息所需空间;此外,利用层次图部分节点来分担路由信息,进一步缩减了消息中所需携带的路由信息,从而大大减少了消息空间,实现层次树形结构上的低功耗的高效路由。

附图说明

图1是本发明在层次拓扑结构图上的基于内容中心网络的路由方法流程示意图。

具体实施方式

以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本发明披露了一种在层次拓扑结构图上的基于内容中心网络的路由方法,采用部分节点分担路由信息的方法,将这个路由所需的信息平坦到部分节点上,然后消息包中只需提供这些分担路由信息的节点即可,从而可以大量降低消息中携带的路由信息,达到高效路由的目的。而且消息通信采用面向物联网的CCN(内容中心网络)协议,该协议以内容为中心,采用名字来命名内容,且可以实现基于名字的路由,这些优势不仅大大缩减协议占用空间,而且网络中的服务以及对应的数据可以通过名字来识别,扩展,及其方便灵活, 这些都使得CCN更适合物联网这种面向内容的网络。

具体的,本实施方式包括以下步骤:

(1)在层次图上,建立汇聚点上的路由信息,每个汇聚点维护两条之内的节点可到达的路由信息,每个传感器节点都运行面向物联网的轻量级CCN组件。

建立过程分两个阶段:

一、第一阶段,应用CCN兴趣消息构建层次图。组网所需的消息均为兴趣消息类型存在。如下所示,可以分为有三种消息:

第一种是发现消息,该消息会携带自身节点的层次,层次值作为名字组件放置于该消息名字之后。如,该消息以“/ccn/discovery/“命名,则“/ccn/discovery/层次值/”为新的消息的名字。

第二种是确认消息,有唯一的命名,如,“/ccn/confirm/”, 确认消息中名字最后两个名字组件分别为节点的父亲节点ID和节点ID, 如包含v节点和v节点的父亲节点的名字“/ccn/confirm/Parent(v)/v”。

第三种是撤销消息,用于通知撤销之前的父子关系。以名字命名这种消息,如“/ccn/revoke” 携带某个节点和该节点的父亲节点信息,如“/ccn/revoke/v的父亲节点ID/节点v”。

上述消息的端节点默认层次为0, 其他所有节点层次默认为无穷大。从终端节点开始,设置该终端节点层次为0, 然后向它的邻居节点广播发现消息。

对于每个传感器节点,部署的CCN组件执行以下消息驱动操作:

a.v节点收到从u发来的发现消息:解析该兴趣包中名字最后的名字组件,提取出消息源的层次值level(u)。

如果level(u)=无穷大&(and)level(u)+ 1 < level(v), //即第一次更新层次;

设置level(v)= level(u)+ 1;设置v的父亲节点为u,即Parent(v)= u;

发回给u确认消息,消息中包含v节点的父亲节点u。

如果level(u)!=无穷大&(&表示为“and”)level(u)+ 1 < level(v), //非第一次更新层次;

发回给Parent(v)撤销消息,消息中包含Parent(v)和v节点信息。

设置level(v)= level(u)+ 1;设置v的父亲节点为u,即Parent(v)= u;

发回给u确认消息,消息名字中包含Parent(v)和v节点。

b.v节点收到u发来的确认消息:解析该兴趣包中名字最后的名字组件,提取出消息源的节点的父亲值。

如果确认消息名字信息中包含的父亲节点值=节点v,则设置节点u为v的子节点,即Children(v)=u;

转发该确认消息给v的父亲节点。

c.v节点收到u发来的撤销消息:解析该兴趣包中名字最后的名字组件,提取出消息源的节点的父亲值。

如果该撤销消息名字信息中包含的父亲节点值=节点v,则撤销之前关于u节点的父亲值设置。

转发该确认消息给v的父亲节点。

二、第二阶段,构建层次邻居信息,设置汇聚点。第一阶段会得到树形层次图,在第一阶段基础上,从叶子节点开始构建层次信息,设置汇聚点。

该阶段组网所需的消息均为兴趣消息类型存在。定义一种完成兴趣信息(简称完成消息),该信息名字为“/ccn/complete/level(u)/u/parent(u)”,并且名字字段最后包含节点的层次信息、节点ID和节点的父亲节点。

从叶子节点(层次图上没有子女的节点)开始,发送完成信息给父亲节点。父亲节点收到完成信息做以下消息驱动动作。

具体,父亲节点执行以下消息驱动:

v节点收到来自u完成消息后:解析该兴趣包中的名字组件,提取出消息源的层次值level(s),节点s,节点s的父亲节点Parent(s),

发送给Parent(v)完成消息。//发送关于自己的路由信息;

如果v节点的层次level(v)% 2 != 0: //如果该节点不是属于每隔2层的节点;

则转来自u的完成消息到v的父亲节点Parent(v) //转发下级发来的路由信息;

如果v节点的层次level(v)% 2 = 0: //如果该节点是属于每隔2层的节点,且如果0<level(s)-level(v)<= 2,把节点s和其Parent(s)信息放入路由表。

(2)采用CCN协议中的兴趣和内容消息类型,以及PIT(Pending Interest Table)和 FIB(Forwarding Information Table),实现网络中任意两节点之间的基于名字的路由转发。

例如,节点A作为访问发起节点,首先发兴趣消息,兴趣消息以名字来表示这次访问,如“/ccn/access/”,该命名可统一规范命名。传输过程中可以将路由信息添作为名字组件接在已有名字之后,如“/ccn/access/13/7”,其中“13/7”为添加的路由信息。

1)对于任意节点v(除根节点之外),收到消息后做相应的消息驱动动作:

节点v收到兴趣消息:CCN组件解析该兴趣消息,提取消息名字和路由信息(如果有的话),(CCN组件会自动添加该兴趣消息到PIT表中,并建立对应的FIB表)。

其中,A.若该消息目的地是节点v,则准备对应的内容消息,并根据PIT表中所指兴趣消息的源节点ID, 发送内容消息。

B.若该消息目的地是不是节点v,则分为下面两种情况:

A1.若该消息没有携带路由信息,则转发该消息给v的父亲节点。

A2.若该消息携带路由信息,查看节点存储的路由信息,转发到对应的下一级节点。

节点v收到内容消息:CCN组件解析该内容消息,根据FIB表,转发该内容信息。

2)对于根节点R,收到消息做一下消息驱动动作:

收到兴趣消息:解析该兴趣消息,CCN组件解析该兴趣消息,得到目的节点,并提取消息名字。根据整体路由信息,确定到目的节点的路由信息,并添加到该消息的已有名字后面。注意,此处添加的路由信息只需要包含途径的骨干节点ID。转发该兴趣消息到对应的分支。

收到内容消息:根节点R收到内容消息则直接根据目的节点信息,转发该内容消息到对应的分支。

上述本实施方式的路由方法,可以缩减使用路由信息。应用面向物联网的CCN协议,借助CCN中基于名字的路由特点,以名字命名路由服务,并提出在服务名字中添加必备的路由信息的方法,压缩消息所需空间;此外,利用层次图部分节点来分担路由信息,进一步缩减了消息中所需携带的路由信息,从而大大减少了消息空间,实现层次树形结构上的低功耗的高效路由。

在本发明的以下实施方式中,假定层拓扑结构图已经应用“基于内容中心网络的层次拓扑组网方法”建立在层次树形图,当节点A需要访问节点B时,节点A发送兴趣消息,该消息被传递到根节点R。在传递过程中,该兴趣消息的名字被记录在PIT(Pending Interest Table)表中,该表记录未满足的兴趣消息(即还没有收到对应内容返回的兴趣消息)以及该消息的源节点ID。根节点R根据目的节点B,确定所需路由信息,并在消息中添加路由信息。在此路由消息的指引下,消息可顺利达到目的地节点B。节点B可以返回节点A所需要的数据,用CCN(内容中心网络)中的内容消息来承载,该内容消息根据PIT表即知道返回路线,无需任何路由信息。

上述说明示出并描述了本发明的优选实施例,如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

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