一种基于簇的网络路由通信方法转让专利

申请号 : CN201910295148.5

文献号 : CN110138658B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王晓喃殷旭东朱海霞

申请人 : 常熟理工学院

摘要 :

本发明提供了一种基于簇的网络路由通信方法,该方法应用于数据网络中,所述数据网络包括两个以上的节点,所述数据网络划分为两个以上的簇;节点分为新节点、簇首节点、成员节点以及关联节点;一个簇由一个簇首节点和两个以上的成员节点构成,没有加入簇的节点称为新节点;如果一个成员节点属于两个以上的簇,该成员节点称为关联节点;此实现方法可广泛用于物联网和车载网络,具有广泛的应用前景。例如,在车载网领域,可将基于簇的网络数据通信方法应用于路况检测,通过本发明提供的实现方法,车辆节点可以获取任意地点的路况从而有效避免道路拥塞。

权利要求 :

1.一种基于簇的网络路由通信方法,其特征在于,所述网络包括两个以上的节点,所述网络划分为两个以上的簇;节点分为新节点、簇首节点、成员节点以及关联节点;一个簇由一个簇首节点和两个以上的成员节点构成,没有加入簇的节点称为新节点;如果一个成员节点属于两个以上的簇,该成员节点称为关联节点;

每个节点具有唯一的坐标;一种类型的数据由一个数据名称唯一标识;一个消息由消息类型标识,消息名称分别为发布消息、邻居消息、启动消息、簇首节点消息、信标消息、创建消息、转发消息、请求消息以及响应消息,分别对应消息类型值为1、2、3、4、5、6、7、8和9;

网络启动后,所有节点均为新节点;每个节点保存一个最小坐标(xmin, ymin)和最大坐标(xmax, ymax);一个节点的最小坐标(xmin, ymin)和最大坐标(xmax, ymax)的初始值为该节点的坐标;

节点发送的发布消息包含消息类型、最小坐标域和最大坐标域;新节点NN1通过下述过程更新最小坐标(xmin, ymin)和最大坐标(xmax, ymax):步骤101:开始;

步骤102:新节点NN1发送一个发布消息,该发布消息的消息类型值为1,最小坐标和最大坐标分别为新节点NN1保存的最小坐标和最大坐标;

步骤103:其他新节点接收到该发布消息后,设置一个时钟,并判断自己的最小坐标和最大坐标是否等于该发布消息的最小坐标和最大坐标,如果是,则执行步骤112,否则执行步骤104;

步骤104:步骤103中接收到该发布消息的新节点判断发布消息中的最小坐标的横坐标是否小于自己的最小坐标的横坐标,如果是,执行步骤105,否则执行步骤106;

步骤105:接收到该发布消息的新节点将自己的最小坐标的横坐标更新为发布消息中的最小坐标的横坐标;

步骤106:接收到该发布消息的新节点判断自己的最小坐标的纵坐标是否大于发布消息中的最小坐标的纵坐标,如果是,执行步骤107,否则执行步骤108;

步骤107:接收到该发布消息的新节点将自己的最小坐标的纵坐标更新为发布消息中的最小坐标的纵坐标;

步骤108:接收到该发布消息的新节点判断自己的最大坐标的横坐标是否小于发布消息中的最大坐标的横坐标,如果是,执行步骤109,否则执行步骤110;

步骤109:接收到该发布消息的新节点将自己的最大坐标的横坐标更新为发布消息中的最大坐标的横坐标;

步骤110:接收到该发布消息的新节点判断自己的最大坐标的纵坐标是否小于发布消息中的最大坐标的纵坐标,如果是,执行步骤111,否则执行步骤112;

步骤111:接收到该发布消息的新节点将自己的最大坐标的纵坐标更新为发布消息中的最大坐标的纵坐标;该新节点发送一个发布消息,该发布消息的消息类型值为1,最小坐标和最大坐标分别为该新节点保存的最小坐标和最大坐标;

步骤112:如果新节点在时钟范围内没有接收到发布消息,则执行步骤113,否则执行步骤103;

步骤113:结束;

网络中任一个节点获取最小坐标(xmin, ymin)和最大坐标(xmax, ymax)后,利用公式(1)和公式(2)计算中间坐标(xmid, ymid);

xmid =(xmax+xmin)/2  (1)

ymid =(ymax+ymin)/2  (2);

坐标(x1,y1)和坐标(x2,y2)的优先级根据下述算法判定:

如果x1大于x2,则坐标(x1,y1)的优先级大于坐标(x2,y2);

如果x1小于x2,则坐标(x1,y1)的优先级小于坐标(x2,y2);

如果x1等于x2且y1大于y2,则坐标(x1,y1)的优先级大于坐标(x2,y2);

如果x1等于x2且y1小于y2,则坐标(x1,y1)的优先级小于坐标(x2,y2);

一个邻居消息包含消息类型和坐标;一个启动消息包含消息类型、坐标和距离域;一个簇首节点消息包含消息类型和坐标;每个新节点保存一个坐标参数CP1,参数CP1的值等于该节点的坐标;如果一个新节点的坐标与中间坐标的距离小于新节点的通信半径,新节点则执行下述操作:步骤201:开始;

步骤202:新节点发送一个邻居消息,该邻居消息的消息类型值为2,坐标等于该新节点的坐标,启动时钟TM1;时钟TM1到期后,该新节点查看所有接收到的邻居消息并设置时钟TM2;如果所有邻居消息的坐标与中间坐标的距离大于或者等于该新节点的坐标与中间坐标的距离,则执行步骤203,否则执行步骤204;

步骤203:新节点发送一个启动消息,该启动消息的消息类型值为3,坐标等于新节点的坐标,距离等于该新节点的坐标与中间坐标的距离;

步骤204:时钟TM2到期后,新节点查看所有接收到的启动消息,如果所接收到的所有启动消息的坐标域值都相等且等于该新节点的坐标参数CP1的值,则执行步骤208,否则执行步骤205;

步骤205:时钟TM2到期后,新节点查看所有接收到的启动消息,如果所接收到的所有启动消息的坐标域值都相等,则执行步骤206,否则执行步骤207;

步骤206:时钟TM2到期后,新节点查看所有接收到的启动消息,选择一个启动消息,该启动消息的坐标具有最高权限,将坐标参数CP1的值设置为该启动消息的坐标域值,发送该启动消息,设置时钟TM2,执行步骤204;

步骤207:时钟TM2到期后,新节点查看所有接收到的启动消息,选择一个启动消息,该启动消息的距离值最小,将坐标参数CP1的值设置为该启动消息的坐标域值,发送该启动消息,设置时钟TM2,执行步骤204;

步骤208:如果一个新节点坐标值等于自己坐标参数CP1,该新节点将自己标记为簇首节点,发送一个簇首节点消息,该簇首节点消息的消息类型值为4,坐标等于该新节点的坐标值;新节点接收到簇首节点消息后,将自己标记为成员节点并保存簇首节点消息中的坐标;

步骤209:结束。

2.根据权利要求1所述的一种基于簇的网络路由通信方法,其特征在于,每个节点保存一个邻居表,一个邻居表项包含坐标、名称集合、节点类型值和生命周期域;如果节点类型值为1,则表明该邻居表项标识的节点为关联节点;如果节点类型值为0,则表明该邻居表项标识的节点为成员节点;如果节点类型值为2,则表明该邻居表项标识的节点为簇首节点;

如果节点类型值为3,则表明该邻居表项标识的节点为新节点;

一个信标消息包含消息类型、节点类型、名称集合和坐标域;一个节点定期执行下述操作:步骤301:开始;

步骤302:节点发送信标消息,该信标消息的消息类型值为5,名称集合由该节点所能提供的数据的名称构成,坐标等于该节点的坐标;如果该节点为新节点,则节点类型值为3,如果该节点为成员节点,则节点类型值为0,如果该节点为关联节点,则节点类型值为1,如果该节点为簇首节点,则节点类型值为2;

步骤303:邻居节点接收到该信标消息后查看邻居表;如果存在一个邻居表项,该邻居表项的坐标等于该信标消息中的坐标,则将该邻居表项的名称集合和类型值更新为该信标消息的名称集合和节点类型值,将生命周期设置为最大值;否则该邻居节点创建一个邻居表项,该邻居表项的坐标等于该信标消息中的坐标,名称集合和节点类型值分别等于该信标消息的名称集合和节点类型值,生命周期设置为最大值;

步骤304:结束。

3.根据权利要求2所述的一种基于簇的网络路由通信方法,其特征在于,如果节点A1和节点A2的纵坐标相同且节点A1的横坐标小于节点A2的横坐标,则节点A1和节点A2的角度为

0度,节点A2和节点A1的角度为180度;如果节点A1和节点A2的横坐标相同且节点A1的纵坐标小于节点A2的纵坐标,则节点A1和节点A2的角度为90度,节点A2和节点A1的角度为270度;创建消息由消息类型、类型、角度和坐标构成;

节点执行下述操作构建簇:

步骤401:开始;

步骤402:节点变成簇首节点后,从邻居表中选择所有符合条件1的邻居表项,从符合条件1的邻居表项中选择一个与簇首节点距离最远的邻居表项,发送一个创建消息,该创建消息的消息类型值为6,节点类型值为2,坐标等于该邻居表项的坐标,角度值等于0;该节点从邻居表中选择所有符合条件2的邻居表项,从符合条件2的邻居表项中选择一个与簇首节点距离最远的邻居表项,发送一个创建消息,该创建消息的消息类型值为6,节点类型值为2,坐标等于该邻居表项的坐标,角度值等于90;该节点从邻居表中选择所有符合条件3的邻居表项,从符合条件3的邻居表项中选择一个与簇首节点距离最远的邻居表项,发送一个创建消息,该创建消息的消息类型值为6,节点类型值为2,坐标等于该邻居表项的坐标,角度值等于180;该节点从邻居表中选择所有符合条件4的邻居表项,从符合条件4的邻居表项中选择一个与簇首节点距离最远的邻居表项,发送一个创建消息,该创建消息的消息类型值为

6,节点类型值为2,坐标等于该邻居表项的坐标,角度值等于270;

条件1:簇首节点与该邻居表项的坐标所标识的节点的角度为0度;

条件2:簇首节点与该邻居表项的坐标所标识的节点的角度为90度;

条件3:簇首节点与该邻居表项的坐标所标识的节点的角度为180度;

条件4:簇首节点与该邻居表项的坐标所标识的节点的角度为270度;

步骤403:节点接收到创建消息后,如果消息中的节点类型值为2且坐标等于该节点的坐标,则执行步骤404,否则执行步骤406;

步骤404:接收到创建消息的节点查看邻居表,如果所有邻居表项的节点类型值均不等于3,则执行步骤408,否则执行步骤405;

步骤405:接收到创建消息的节点选择所有符合条件5的邻居表项,从符合条件5的邻居表项中选择一个邻居表项,该邻居表项的坐标与该节点的坐标距离最大,接收到创建消息的节点发送一个创建消息,该创建消息的消息类型值为6,节点类型值为1,坐标等于该邻居表项的坐标,角度值等于接收到的创建消息中的角度,执行步骤403;

条件5:该邻居表项的节点类型值等于3,该节点与该邻居表项的坐标所标识的节点的角度等于该创建消息的角度;

步骤406:节点接收到创建消息后,如果消息中的节点类型值为1且坐标等于该节点的坐标,则执行步骤407,否则执行步骤408;

步骤407:接收到创建消息的节点将自己标记为簇首节点,发送一个簇首节点消息,该簇首节点消息的消息类型值为4,坐标等于该簇首节点的坐标值;新节点接收到簇首节点消息后,将自己标记为成员节点并保存簇首节点消息中的坐标;执行步骤402;

步骤408:结束;

如果一个成员节点能够接收到两个以上的簇首节点的信标消息,则将自己标记为关联节点。

4.根据权利要求3所述的一种基于簇的网络路由通信方法,其特征在于,簇首节点和关联节点保存一个转发表,一个转发表项包含坐标、节点类型、名称和生命周期域;转发消息包含消息类型、节点类型、名称、源坐标和目的坐标;簇首节点CH1选择所有类型值为0的邻居表项,针对每个选中的邻居表项E1,簇首节点CH1定期执行下述操作:步骤501:开始;

步骤502:针对邻居表项E1中名称集合中的每个名称NA1,簇首节点CH1判断是否存在一个转发表项,该转发表项的名称等于NA1,坐标等于邻居表项E1的坐标且生命周期大于阈值TH1,如果存在,则执行步骤519,否则执行步骤503;

步骤503:簇首节点CH1判断是否存在一个转发表项,该转发表项的名称等于NA1且坐标等于邻居表项E1的坐标,如果存在,则执行步骤504,否则执行步骤505;

步骤504:簇首节点CH1选择一个转发表项,该转发表项的名称等于NA1且坐标等于邻居表项E1的坐标,将该转发表项的生命周期设置为最大值,执行步骤506;

步骤505:簇首节点CH1创建一个转发表项,该转发表项的名称等于NA1,节点类型值为

0,坐标等于邻居表项E1的坐标,生命周期设置为最大值;

步骤506:簇首节点CH1选择所有节点类型值等于1的邻居表项,针对每个选中的邻居表项E2,簇首节点CH1发送一个转发消息,该转发消息的消息类型值为7,节点类型值为2,名称为NA1,源坐标等于簇首节点CH1的坐标,目的坐标等于邻居表项E2的坐标;

步骤507:节点接收到转发消息,如果节点的坐标等于该转发消息的目的坐标,则执行步骤508,否则执行步骤519;

步骤508:接收到转发消息的节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该转发消息的名称,坐标等于该转发消息的源坐标且生命周期大于阈值TH1,则执行步骤519,否则执行步骤509;

步骤509:接收到转发消息的节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该转发消息的名称且坐标等于该转发消息的源坐标,则执行步骤510,否则执行步骤511;

步骤510:接收到转发消息的节点查看转发表,选择一个转发表项,该转发表项的名称等于该转发消息的名称且坐标等于该转发消息的源坐标,将该转发表项的生命周期设置为最大值,执行步骤512;

步骤511:接收到转发消息的节点创建一个转发表项,该转发表项的名称等于该转发消息的名称,坐标等于该转发消息的源坐标,节点类型值等于该转发消息的节点类型值,生命周期设置为最大值;

步骤512:接收到转发消息的节点选择所有节点类型值为2的邻居表项,针对每个选中的邻居表项E3,该节点将该转发消息的源坐标更新为自己的坐标,目的坐标更新为邻居表项E3的坐标,节点类型值设置为1,发送该转发消息;

步骤513:节点接收到转发消息,如果节点的坐标等于该转发消息的目的坐标,则执行步骤514,否则执行步骤519;

步骤514:接收到转发消息的节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该转发消息的名称,坐标等于该转发消息的源坐标且生命周期大于阈值TH1,则执行步骤519,否则执行步骤515;

步骤515:接收到转发消息的节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该转发消息的名称且坐标等于该转发消息的源坐标,则执行步骤516,否则执行步骤517;

步骤516:接收到转发消息的节点查看转发表,选择一个转发表项,该转发表项的名称等于该转发消息的名称且坐标等于该转发消息的源坐标,将该转发表项的生命周期设置为最大值,执行步骤518;

步骤517:接收到转发消息的节点创建一个转发表项,该转发表项的名称等于该转发消息的名称,坐标等于该转发消息的源坐标,节点类型值等于该转发消息的节点类型值,生命周期设置为最大值;

步骤518:接收到转发消息的节点选择所有节点类型值为1的邻居表项,针对每个选中的邻居表项E4,该节点将该转发消息的源坐标更新为自己的坐标,目的坐标更新为邻居表项E4的坐标,节点类型值设置为2,发送该转发消息,执行步骤507;

步骤519:结束。

5.根据权利要求4所述的一种基于簇的网络路由通信方法,其特征在于,簇首节点和关联节点保存一个汇聚表,一个汇聚表项包含名称域和坐标域;

请求消息包含消息类型、名称、源坐标和目的坐标;响应消息包含消息类型、名称、坐标和负载;数据DA1由名称NA1标识,成员节点CM2的簇首节点为CH2,通过下述过程获取数据DA1:步骤601:开始;

步骤602:成员节点CM2发送一个请求消息,该请求消息的消息类型值为8,名称为NA1,源坐标为成员节点CM2的坐标,目的坐标为簇首节点CH2的坐标;

步骤603:目的节点接收到请求消息,目的节点的坐标等于请求消息的目的坐标;如果目的节点为成员节点,则执行步骤608,否则执行步骤604;

步骤604:目的簇首节点或者关联节点接收到请求消息后查看聚合表,如果存在一个聚合表项,该聚合表项的名称等于该请求消息的名称,坐标等于该请求消息的源坐标,则执行步骤609,否则执行步骤605;

步骤605:接收到请求消息的目的簇首节点或者关联节点查看聚合表,如果存在一个聚合表项,该聚合表项的名称等于该请求消息的名称,则执行步骤606,否则执行步骤607;

步骤606:接收到请求消息的目的簇首节点或者关联节点创建一个聚合表项,该聚合表项的名称等于该请求消息的名称,坐标等于该请求消息的源坐标,执行步骤609;

步骤607:接收到请求消息的目的簇首节点或者关联节点创建一个聚合表项,该聚合表项的名称等于该请求消息的名称,坐标等于该请求消息的源坐标;目的簇首节点或者关联节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该请求消息的名称且消息类型等于0,则将该请求消息的源坐标更新为该簇首节点或者关联节点的坐标,目的坐标更新为该转发表项的坐标,发送该请求消息;否则目的簇首节点或者关联节点选择一个转发表项,该转发表项的名称等于该请求消息的名称,则将该请求消息的源坐标更新为该簇首节点或者关联节点的坐标,目的坐标更新为该转发表项的坐标,发送该请求消息,执行步骤603;

步骤608:目的节点接收到请求消息后,发送一个响应消息,该响应消息的消息类型值为9,名称等于该请求消息的名称,坐标等于该请求消息的源坐标,负载为该请求消息名称定义的数据;

步骤609:目的节点接收到响应消息,如果目的节点为成员节点,则执行步骤611,否则执行步骤610;

步骤610:目的簇首节点或者关联节点接收到响应消息后,选择所有名称域值等于该响应消息名称的汇聚表项,针对每个选中的汇聚表项,目的簇首节点或者关联节点将响应消息的坐标更新为该汇聚表项的坐标,发送响应消息,删除该汇聚表项,执行步骤609;

步骤611:目的节点接收到该响应消息,保存该响应消息中的数据;

步骤612:结束。

说明书 :

一种基于簇的网络路由通信方法

技术领域

[0001] 本发明涉及一种通信方法,尤其涉及的是一种基于簇的网络路由通信方法。

背景技术

[0002] 网络已经成为人类生活中不可缺少的一部分,它提供多种数据服务,因此降低数据通信延迟尤为重要。近年来,很多研究工作致力于网络的数据通信工作,以便使人们能够快速获取网络服务。随着移动网络技术的发展,网络的数据通信技术会进一步提高服务质量。
[0003] 目前,网络的数据通信延迟和代价都比较大,降低了网络服务性能。因此,如何降低网络的数据通信的延迟和代价成为近年来研究的热点问题。

发明内容

[0004] 发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于簇的网络路由通信方法。
[0005] 技术方案:本发明公开了一种基于簇的网络路由通信方法,所述网络包括两个以上的节点,所述网络划分为两个以上的簇;节点分为新节点、簇首节点、成员节点以及关联节点;一个簇由一个簇首节点和两个以上的成员节点构成,没有加入簇的节点称为新节点;如果一个成员节点属于两个以上的簇,该成员节点称为关联节点;
[0006] 每个节点具有唯一的坐标;一种类型的数据由一个数据名称唯一标识;一个消息由消息类型标识,如下所示:
[0007] 消息类型值 消息名称1 发布消息
2 邻居消息
3 启动消息
4 簇首节点消息
5 信标消息
6 创建消息
7 转发消息
8 请求消息
9 响应消息
[0008] 网络启动后,所有节点均为新节点;每个节点保存一个最小坐标(xmin,ymin)和最大坐标(xmax,ymax);一个节点的最小坐标(xmin,ymin)和最大坐标(xmax,ymax)的初始值为该节点的坐标;最小坐标和最大坐标初始值相同,执行步骤101-113后,最大坐标不同于最小坐标;最小坐标的横坐标保存的是网络中所有节点横坐标中最小的横坐标,最小坐标的纵坐标保存的是网络中所有节点纵坐标中最小的纵坐标;
[0009] 最大坐标的横坐标保存的是网络中所有节点横坐标中最大的横坐标,最大坐标的纵坐标保存的是网络中所有节点纵坐标中最大的纵坐标;
[0010] 节点发送的发布消息包含消息类型、最小坐标域和最大坐标域;最小坐标域和最大坐标域是发布消息中的两个组成部分,初始值为源节点的最小坐标和最大坐标,执行101-113之后,发布消息中的最小坐标的横坐标保存的是网络中所有节点横坐标中最小的横坐标,最小坐标的纵坐标保存的是网络中所有节点纵坐标中最小的纵坐标;
[0011] 发布消息中的最大坐标的横坐标保存的是网络中所有节点横坐标中最大的横坐标,最大坐标的纵坐标保存的是网络中所有节点纵坐标中最大的纵坐标;
[0012] 新节点NN1通过下述过程更新最小坐标(xmin,ymin)和最大坐标(xmax,ymax):
[0013] 步骤101:开始;
[0014] 步骤102:新节点NN1发送一个发布消息,该发布消息的消息类型值为1,最小坐标和最大坐标分别为新节点NN1保存的最小坐标和最大坐标;
[0015] 步骤103:其他新节点接收到该发布消息后,设置一个时钟,并判断自己的最小坐标和最大坐标是否等于该发布消息的最小坐标和最大坐标,如果是,则执行步骤112,否则执行步骤104;
[0016] 步骤104:步骤103中接收到该发布消息的新节点判断发布消息中的最小坐标的横坐标是否小于自己的最小坐标的横坐标,如果是,执行步骤105,否则执行步骤106;
[0017] 步骤105:接收到该发布消息的新节点将自己的最小坐标的横坐标更新为发布消息中的最小坐标的横坐标;
[0018] 步骤106:接收到该发布消息的新节点判断自己的最小坐标的纵坐标是否大于发布消息中的最小坐标的纵坐标,如果是,执行步骤107,否则执行步骤108;
[0019] 步骤107:接收到该发布消息的新节点将自己的最小坐标的纵坐标更新为发布消息中的最小坐标的纵坐标;
[0020] 步骤108:接收到该发布消息的新节点判断自己的最大坐标的横坐标是否小于发布消息中的最大坐标的横坐标,如果是,执行步骤109,否则执行步骤110;
[0021] 步骤109:接收到该发布消息的新节点将自己的最大坐标的横坐标更新为发布消息中的最大坐标的横坐标;
[0022] 步骤110:接收到该发布消息的新节点判断自己的最大坐标的纵坐标是否小于发布消息中的最大坐标的纵坐标,如果是,执行步骤111,否则执行步骤112;
[0023] 步骤111:接收到该发布消息的新节点将自己的最大坐标的纵坐标更新为发布消息中的最大坐标的纵坐标;该新节点发送一个发布消息,该发布消息的消息类型值为1,最小坐标和最大坐标分别为该新节点保存的最小坐标和最大坐标;
[0024] 步骤112:如果新节点在时钟范围内没有接收到发布消息,则执行步骤113,否则执行步骤103;时钟可以设置为1s;
[0025] 步骤113:结束;
[0026] 网络中任一个节点获取最小坐标(xmin,ymin)和最大坐标(xmax,ymax)后,利用公式(1)和公式(2)计算中间坐标(xmid,ymid);
[0027] xmid=(xmax+xmin)/2    (1)
[0028] ymid=(ymax+ymin)/2    (2)。
[0029] 节点通过上述过程能够获取网络中的最小坐标和最大坐标从而计算中间坐标以找出距离中间坐标最近的簇首节点,并开始构建基于簇的网络,这样可以大幅度降低构建网络的代价和延迟,并增加网络的稳定性。
[0030] 本发明所述方法中,坐标(x1,y1)和坐标(x2,y2)的优先级根据下述算法判定:
[0031] 如果x1大于x2,则坐标(x1,y1)的优先级大于坐标(x2,y2);
[0032] 如果x1小于x2,则坐标(x1,y1)的优先级小于坐标(x2,y2);
[0033] 如果x1等于x2且y1大于y2,则坐标(x1,y1)的优先级大于坐标(x2,y2);
[0034] 如果x1等于x2且y1小于y2,则坐标(x1,y1)的优先级小于坐标(x2,y2);
[0035] 一个邻居消息包含消息类型和坐标;一个启动消息包含消息类型、坐标和距离域;一个簇首节点消息包含消息类型和坐标;每个新节点保存一个坐标参数CP1,参数CP1的值等于该节点的坐标;如果一个新节点的坐标与中间坐标的距离小于新节点的通信半径,新节点则执行下述操作:
[0036] 步骤201:开始;
[0037] 步骤202:新节点发送一个邻居消息,该邻居消息的消息类型值为2,坐标等于该新节点的坐标,启动时钟TM1;时钟TM1到期后,该新节点查看所有接收到的邻居消息并设置时钟TM2;如果所有邻居消息的坐标与中间坐标的距离大于或者等于该新节点的坐标与中间坐标的距离,则执行步骤203,否则执行步骤204;
[0038] 步骤203:新节点发送一个启动消息,该启动消息的消息类型值为3,坐标等于新节点的坐标,距离等于该新节点的坐标与中间坐标的距离;
[0039] 步骤204:时钟TM2到期后,新节点查看所有接收到的启动消息,如果所接收到的所有启动消息的坐标域值都相等且等于该新节点的坐标参数CP1的值,则执行步骤208,否则执行步骤205;
[0040] 步骤205:时钟TM2到期后,新节点查看所有接收到的启动消息,如果所接收到的所有启动消息的坐标域值都相等,则执行步骤206,否则执行步骤207;
[0041] 步骤206:时钟TM2到期后,新节点查看所有接收到的启动消息,选择一个启动消息,该启动消息的坐标具有最高权限,将坐标参数CP1的值设置为该启动消息的坐标域值,发送该启动消息,设置时钟TM2,执行步骤204;
[0042] 步骤207:时钟TM2到期后,新节点查看所有接收到的启动消息,选择一个启动消息,该启动消息的距离值最小,将坐标参数CP1的值设置为该启动消息的坐标域值,发送该启动消息,设置时钟TM2,执行步骤204;
[0043] 步骤208:如果一个新节点坐标值等于自己坐标参数CP1,该新节点将自己标记为簇首节点,发送一个簇首节点消息,该簇首节点消息的消息类型值为4,坐标等于该新节点的坐标值;新节点接收到簇首节点消息后,将自己标记为成员节点并保存簇首节点消息中的坐标;
[0044] 步骤209:结束。
[0045] 上述过程将距离中间坐标最近的新节点选举为第一个簇首节点,并由第一个簇首节点发起网络构建操作,由于第一个簇首节点距离中间节点最近,因此大幅度降低了构建网络的代价和延迟,同时,上述过程通过坐标的优先级来确保了第一个簇首节点的唯一性,因此确保了网络构建的正确执行并增加了网络稳定性。
[0046] 本发明所述方法中,每个节点保存一个邻居表,一个邻居表项包含坐标、名称集合、节点类型值和生命周期域;如果节点类型值为1,则表明该邻居表项标识的节点为关联节点;如果节点类型值为0,则表明该邻居表项标识的节点为成员节点;如果节点类型值为2,则表明该邻居表项标识的节点为簇首节点;如果节点类型值为3,则表明该邻居表项标识的节点为新节点;
[0047] 一个信标消息包含消息类型、节点类型、名称集合和坐标域;一个节点定期执行下述操作:
[0048] 步骤301:开始;
[0049] 步骤302:节点发送信标消息,该信标消息的消息类型值为5,名称集合由该节点所能提供的数据的名称构成,坐标等于该节点的坐标;如果该节点为新节点,则节点类型值为3,如果该节点为成员节点,则节点类型值为0,如果该节点为关联节点,则节点类型值为1,如果该节点为簇首节点,则节点类型值为2;
[0050] 步骤303:邻居节点接收到该信标消息后查看邻居表;如果存在一个邻居表项,该邻居表项的坐标等于该信标消息中的坐标,则将该邻居表项的名称集合和类型值更新为该信标消息的名称集合和节点类型值,将生命周期设置为最大值;否则该邻居节点创建一个邻居表项,该邻居表项的坐标等于该信标消息中的坐标,名称集合和节点类型值分别等于该信标消息的名称集合和节点类型值,生命周期设置为最大值;
[0051] 步骤304:结束。
[0052] 节点通过上述过程能够建立邻居表从而记录邻居节点的坐标和类型等信息,该节点通过邻居表项中的名称集合能够获取邻居节点能够提供的数据信息,从而实现快速的数据通信,同时上述过程通过生命周期来确保每个邻居表项的实时性和有效性,从而确保数据通信的正确性和提高数据通信的成功率。
[0053] 本发明所述方法中,如果节点A1和节点A2的纵坐标相同且节点A1的横坐标小于节点A2的横坐标,则节点A1和节点A2的角度为0度,节点A2和节点A1的角度为180度;如果节点A1和节点A2的横坐标相同且节点A1的纵坐标小于节点A2的纵坐标,则节点A1和节点A2的角度为90度,节点A2和节点A1的角度为270度;创建消息由消息类型、类型、角度和坐标构成;
[0054] 节点执行下述操作构建簇:
[0055] 步骤401:开始;
[0056] 步骤402:节点变成簇首节点后,从邻居表中选择所有符合条件1的邻居表项,从符合条件1的邻居表项中选择一个与簇首节点距离最远的邻居表项,发送一个创建消息,该创建消息的消息类型值为6,节点类型值为2,坐标等于该邻居表项的坐标,角度值等于0;该节点从邻居表中选择所有符合条件2的邻居表项,从符合条件2的邻居表项中选择一个与簇首节点距离最远的邻居表项,发送一个创建消息,该创建消息的消息类型值为6,节点类型值为2,坐标等于该邻居表项的坐标,角度值等于90;该节点从邻居表中选择所有符合条件3的邻居表项,从符合条件3的邻居表项中选择一个与簇首节点距离最远的邻居表项,发送一个创建消息,该创建消息的消息类型值为6,节点类型值为2,坐标等于该邻居表项的坐标,角度值等于180;该节点从邻居表中选择所有符合条件4的邻居表项,从符合条件4的邻居表项中选择一个与簇首节点距离最远的邻居表项,发送一个创建消息,该创建消息的消息类型值为6,节点类型值为2,坐标等于该邻居表项的坐标,角度值等于270;
[0057] 条件1:簇首节点与该邻居表项的坐标所标识的节点的角度为0度;
[0058] 条件2:簇首节点与该邻居表项的坐标所标识的节点的角度为90度;
[0059] 条件3:簇首节点与该邻居表项的坐标所标识的节点的角度为180度;
[0060] 条件4:簇首节点与该邻居表项的坐标所标识的节点的角度为270度;
[0061] 步骤403:节点接收到创建消息后,如果消息中的节点类型值为2且坐标等于该节点的坐标,则执行步骤404,否则执行步骤406;
[0062] 步骤404:接收到创建消息的节点查看邻居表,如果所有邻居表项的节点类型值均不等于3,则执行步骤408,否则执行步骤405;
[0063] 步骤405:接收到创建消息的节点选择所有符合条件5的邻居表项,从符合条件5的邻居表项中选择一个邻居表项,该邻居表项的坐标与该节点的坐标距离最大,接收到创建消息的节点发送一个创建消息,该创建消息的消息类型值为6,节点类型值为1,坐标等于该邻居表项的坐标,角度值等于接收到的创建消息中的角度,执行步骤403;
[0064] 条件5:该邻居表项的节点类型值等于3,该节点与该邻居表项的坐标所标识的节点的角度等于该创建消息的角度;
[0065] 步骤406:节点接收到创建消息后,如果消息中的节点类型值为1且坐标等于该节点的坐标,则执行步骤407,否则执行步骤408;
[0066] 步骤407:接收到创建消息的节点将自己标记为簇首节点,发送一个簇首节点消息,该簇首节点消息的消息类型值为4,坐标等于该簇首节点的坐标值;新节点接收到簇首节点消息后,将自己标记为成员节点并保存簇首节点消息中的坐标;执行步骤402;
[0067] 步骤408:结束;
[0068] 如果一个成员节点能够接收到两个以上的簇首节点的信标消息,则将自己标记为关联节点。
[0069] 上述过程能够快速构建基于簇的网络,将网络划分为两个以上的簇,由于上述过程大幅度降低了簇首节点的数量,因此降低了数据通信的延迟和代价,同时,上述过程也降低了关联节点的数量,因此进一步降低了数据通信的延迟和代价。
[0070] 本发明所述方法中,簇首节点和关联节点保存一个转发表,一个转发表项包含坐标、节点类型、名称和生命周期域;转发消息包含消息类型、节点类型、名称、源坐标和目的坐标;簇首节点CH1选择所有类型值为0的邻居表项,针对每个选中的邻居表项E1,簇首节点CH1定期执行下述操作:
[0071] 步骤501:开始;
[0072] 步骤502:针对邻居表项E1中名称集合中的每个名称NA1,簇首节点CH1判断是否存在一个转发表项,该转发表项的名称等于NA1,坐标等于邻居表项E1的坐标且生命周期大于阈值TH1,如果存在,则执行步骤519,否则执行步骤503;
[0073] 步骤503:簇首节点CH1判断是否存在一个转发表项,该转发表项的名称等于NA1且坐标等于邻居表项E1的坐标,如果存在,则执行步骤504,否则执行步骤505;
[0074] 步骤504:簇首节点CH1选择一个转发表项,该转发表项的名称等于NA1且坐标等于邻居表项E1的坐标,将该转发表项的生命周期设置为最大值,执行步骤506;
[0075] 步骤505:簇首节点CH1创建一个转发表项,该转发表项的名称等于NA1,节点类型值为0,坐标等于邻居表项E1的坐标,生命周期设置为最大值;
[0076] 步骤506:簇首节点CH1选择所有节点类型值等于1的邻居表项,针对每个选中的邻居表项E2,簇首节点CH1发送一个转发消息,该转发消息的消息类型值为7,节点类型值为2,名称为NA1,源坐标等于簇首节点CH1的坐标,目的坐标等于邻居表项E2的坐标;
[0077] 步骤507:节点接收到转发消息,如果节点的坐标等于该转发消息的目的坐标,则执行步骤508,否则执行步骤519;
[0078] 步骤508:接收到转发消息的节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该转发消息的名称,坐标等于该转发消息的源坐标且生命周期大于阈值TH1,则执行步骤519,否则执行步骤509;
[0079] 步骤509:接收到转发消息的节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该转发消息的名称且坐标等于该转发消息的源坐标,则执行步骤510,否则执行步骤511;
[0080] 步骤510:接收到转发消息的节点查看转发表,选择一个转发表项,该转发表项的名称等于该转发消息的名称且坐标等于该转发消息的源坐标,将该转发表项的生命周期设置为最大值,执行步骤512;
[0081] 步骤511:接收到转发消息的节点创建一个转发表项,该转发表项的名称等于该转发消息的名称,坐标等于该转发消息的源坐标,节点类型值等于该转发消息的节点类型值,生命周期设置为最大值;
[0082] 步骤512:接收到转发消息的节点选择所有节点类型值为2的邻居表项,针对每个选中的邻居表项E3,该节点将该转发消息的源坐标更新为自己的坐标,目的坐标更新为邻居表项E3的坐标,节点类型值设置为1,发送该转发消息;
[0083] 步骤513:节点接收到转发消息,如果节点的坐标等于该转发消息的目的坐标,则执行步骤514,否则执行步骤519;
[0084] 步骤514:接收到转发消息的节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该转发消息的名称,坐标等于该转发消息的源坐标且生命周期大于阈值TH1,则执行步骤519,否则执行步骤515;
[0085] 步骤515:接收到转发消息的节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该转发消息的名称且坐标等于该转发消息的源坐标,则执行步骤516,否则执行步骤517;
[0086] 步骤516:接收到转发消息的节点查看转发表,选择一个转发表项,该转发表项的名称等于该转发消息的名称且坐标等于该转发消息的源坐标,将该转发表项的生命周期设置为最大值,执行步骤518;
[0087] 步骤517:接收到转发消息的节点创建一个转发表项,该转发表项的名称等于该转发消息的名称,坐标等于该转发消息的源坐标,节点类型值等于该转发消息的节点类型值,生命周期设置为最大值;
[0088] 步骤518:接收到转发消息的节点选择所有节点类型值为1的邻居表项,针对每个选中的邻居表项E4,该节点将该转发消息的源坐标更新为自己的坐标,目的坐标更新为邻居表项E4的坐标,节点类型值设置为2,发送该转发消息,执行步骤507;
[0089] 步骤519:结束。
[0090] 上述过程能够在簇首节点和关联节点建立转发表,从而实现数据通信;转发表通过生命周期来控制转发表项的有效性,从而确保数据通信能够正确执行,降低数据通信延迟和代价。
[0091] 本发明所述方法中,簇首节点和关联节点保存一个汇聚表,一个汇聚表项包含名称域和坐标域;
[0092] 请求消息包含消息类型、名称、源坐标和目的坐标;响应消息包含消息类型、名称、坐标和负载;数据DA1由名称NA1标识,成员节点CM2的簇首节点为CH2,通过下述过程获取数据DA1:
[0093] 步骤601:开始;
[0094] 步骤602:成员节点CM2发送一个请求消息,该请求消息的消息类型值为8,名称为NA1,源坐标为成员节点CM2的坐标,目的坐标为簇首节点CH2的坐标;
[0095] 步骤603:目的节点接收到请求消息,目的节点的坐标等于请求消息的目的坐标;如果目的节点为成员节点,则执行步骤608,否则执行步骤604;
[0096] 步骤604:目的簇首节点或者关联节点接收到请求消息后查看聚合表,如果存在一个聚合表项,该聚合表项的名称等于该请求消息的名称,坐标等于该请求消息的源坐标,则执行步骤609,否则执行步骤605;
[0097] 步骤605:接收到请求消息的目的簇首节点或者关联节点查看聚合表,如果存在一个聚合表项,该聚合表项的名称等于该请求消息的名称,则执行步骤606,否则执行步骤607;
[0098] 步骤606:接收到请求消息的目的簇首节点或者关联节点创建一个聚合表项,该聚合表项的名称等于该请求消息的名称,坐标等于该请求消息的源坐标,执行步骤609;
[0099] 步骤607:接收到请求消息的目的簇首节点或者关联节点创建一个聚合表项,该聚合表项的名称等于该请求消息的名称,坐标等于该请求消息的源坐标;目的簇首节点或者关联节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该请求消息的名称且消息类型等于0,则将该请求消息的源坐标更新为该簇首节点或者关联节点的坐标,目的坐标更新为该转发表项的坐标,发送该请求消息;否则目的簇首节点或者关联节点选择一个转发表项,该转发表项的名称等于该请求消息的名称,则将该请求消息的源坐标更新为该簇首节点或者关联节点的坐标,目的坐标更新为该转发表项的坐标,发送该请求消息,执行步骤603;
[0100] 步骤608:目的节点接收到请求消息后,发送一个响应消息,该响应消息的消息类型值为9,名称等于该请求消息的名称,坐标等于该请求消息的源坐标,负载为该请求消息名称定义的数据;
[0101] 步骤609:目的节点接收到响应消息,如果目的节点为成员节点,则执行步骤611,否则执行步骤610;
[0102] 步骤610:目的簇首节点或者关联节点接收到响应消息后,选择所有名称域值等于该响应消息名称的汇聚表项,针对每个选中的汇聚表项,目的簇首节点或者关联节点将响应消息的坐标更新为该汇聚表项的坐标,发送响应消息,删除该汇聚表项,执行步骤609;
[0103] 步骤611:目的节点接收到该响应消息,保存该响应消息中的数据;
[0104] 步骤612:结束。
[0105] 节点通过上述过程能够快速获取所需数据,由于上述过程汇聚表实现响应消息的路由,无需路由建立过程,因此大幅度降低了数据通信延迟和代价,同时两个以上的节点采用汇聚表能够通过一次通信过程获取数据,从而进一步降低了数据通信延迟和代价。
[0106] 有益效果:本发明提供了一种基于簇的网络路由通信方法,此实现方法可广泛用于物联网和车载网络,具有广泛的应用前景。例如,在车载网领域,可将基于簇的网络数据通信方法应用于路况检测,通过本发明提供的实现方法,车辆节点可以获取任意地点的路况从而有效避免道路拥塞。

附图说明

[0107] 下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0108] 图1为本发明所述的初始化流程示意图。
[0109] 图2为本发明所述的建立簇首节点流程示意图。
[0110] 图3为本发明所述的更新邻居表流程示意图。
[0111] 图4为本发明所述的创建簇流程示意图。
[0112] 图5为本发明所述的创建转发表流程示意图。
[0113] 图6为本发明所述的数据通信流程示意图。具体实施方式:
[0114] 本发明提供了一种基于簇的网络路由通信方法,此实现方法可广泛用于物联网和车载网络,具有广泛的应用前景。例如,在车载网领域,可将基于簇的网络数据通信方法应用于路况检测,通过本发明提供的实现方法,车辆节点可以获取任意地点的路况从而有效避免道路拥塞。
[0115] 图1为本发明所述的初始化流程示意图。所述网络包括两个以上的节点,所述网络划分为两个以上的簇;节点分为新节点、簇首节点、成员节点以及关联节点;一个簇由一个簇首节点和两个以上的成员节点构成,没有加入簇的节点称为新节点;如果一个成员节点属于两个以上的簇,该成员节点称为关联节点;
[0116] 每个节点具有唯一的坐标;一种类型的数据由一个数据名称唯一标识;一个消息由消息类型标识,如下所示:
[0117]消息类型值 消息名称
1 发布消息
2 邻居消息
3 启动消息
4 簇首节点消息
5 信标消息
6 创建消息
7 转发消息
8 请求消息
9 响应消息
[0118] 网络启动后,所有节点均为新节点;每个节点保存一个最小坐标(xmin,ymin)和最大坐标(xmax,ymax);一个节点的最小坐标(xmin,ymin)和最大坐标(xmax,ymax)的初始值为该节点的坐标;最小坐标和最大坐标初始值相同,执行步骤101-113后,最大坐标不同于最小坐标;最小坐标的横坐标保存的是网络中所有节点横坐标中最小的横坐标,最小坐标的纵坐标保存的是网络中所有节点纵坐标中最小的纵坐标;
[0119] 最大坐标的横坐标保存的是网络中所有节点横坐标中最大的横坐标,最大坐标的纵坐标保存的是网络中所有节点纵坐标中最大的纵坐标;
[0120] 节点发送的发布消息包含消息类型、最小坐标域和最大坐标域;最小坐标域和最大坐标域是发布消息中的两个组成部分,初始值为源节点的最小坐标和最大坐标,执行101-113之后,发布消息中的最小坐标的横坐标保存的是网络中所有节点横坐标中最小的横坐标,最小坐标的纵坐标保存的是网络中所有节点纵坐标中最小的纵坐标;
[0121] 发布消息中的最大坐标的横坐标保存的是网络中所有节点横坐标中最大的横坐标,最大坐标的纵坐标保存的是网络中所有节点纵坐标中最大的纵坐标;
[0122] 新节点NN1通过下述过程更新最小坐标(xmin,ymin)和最大坐标(xmax,ymax):
[0123] 步骤101:开始;
[0124] 步骤102:新节点NN1发送一个发布消息,该发布消息的消息类型值为1,最小坐标和最大坐标分别为新节点NN1保存的最小坐标和最大坐标;
[0125] 步骤103:其他新节点接收到该发布消息后,设置一个时钟,并判断自己的最小坐标和最大坐标是否等于该发布消息的最小坐标和最大坐标,如果是,则执行步骤112,否则执行步骤104;
[0126] 步骤104:步骤103中接收到该发布消息的新节点判断发布消息中的最小坐标的横坐标是否小于自己的最小坐标的横坐标,如果是,执行步骤105,否则执行步骤106;
[0127] 步骤105:接收到该发布消息的新节点将自己的最小坐标的横坐标更新为发布消息中的最小坐标的横坐标;
[0128] 步骤106:接收到该发布消息的新节点判断自己的最小坐标的纵坐标是否大于发布消息中的最小坐标的纵坐标,如果是,执行步骤107,否则执行步骤108;
[0129] 步骤107:接收到该发布消息的新节点将自己的最小坐标的纵坐标更新为发布消息中的最小坐标的纵坐标;
[0130] 步骤108:接收到该发布消息的新节点判断自己的最大坐标的横坐标是否小于发布消息中的最大坐标的横坐标,如果是,执行步骤109,否则执行步骤110;
[0131] 步骤109:接收到该发布消息的新节点将自己的最大坐标的横坐标更新为发布消息中的最大坐标的横坐标;
[0132] 步骤110:接收到该发布消息的新节点判断自己的最大坐标的纵坐标是否小于发布消息中的最大坐标的纵坐标,如果是,执行步骤111,否则执行步骤112;
[0133] 步骤111:接收到该发布消息的新节点将自己的最大坐标的纵坐标更新为发布消息中的最大坐标的纵坐标;该新节点发送一个发布消息,该发布消息的消息类型值为1,最小坐标和最大坐标分别为该新节点保存的最小坐标和最大坐标;
[0134] 步骤112:如果新节点在时钟范围内没有接收到发布消息,则执行步骤113,否则执行步骤103;时钟可以设置为1s;
[0135] 步骤113:结束;
[0136] 网络中任一个节点获取最小坐标(xmin,ymin)和最大坐标(xmax,ymax)后,利用公式(1)和公式(2)计算中间坐标(xmid,ymid);
[0137] xmid=(xmax+xmin)/2(1)
[0138] ymid=(ymax+ymin)/2(2)。
[0139] 节点通过上述过程能够获取网络中的最小坐标和最大坐标从而计算中间坐标以找出距离中间坐标最近的簇首节点,并开始构建基于簇的网络,这样可以大幅度降低构建网络的代价和延迟,并增加网络的稳定性。
[0140] 图2为本发明所述的建立簇首节点流程示意图。坐标(x1,y1)和坐标(x2,y2)的优先级根据下述算法判定:
[0141] 如果x1大于x2,则坐标(x1,y1)的优先级大于坐标(x2,y2);
[0142] 如果x1小于x2,则坐标(x1,y1)的优先级小于坐标(x2,y2);
[0143] 如果x1等于x2且y1大于y2,则坐标(x1,y1)的优先级大于坐标(x2,y2);
[0144] 如果x1等于x2且y1小于y2,则坐标(x1,y1)的优先级小于坐标(x2,y2);
[0145] 一个邻居消息包含消息类型和坐标;一个启动消息包含消息类型、坐标和距离域;一个簇首节点消息包含消息类型和坐标;每个新节点保存一个坐标参数CP1,参数CP1的值等于该节点的坐标;如果一个新节点的坐标与中间坐标的距离小于新节点的通信半径,新节点则执行下述操作:
[0146] 步骤201:开始;
[0147] 步骤202:新节点发送一个邻居消息,该邻居消息的消息类型值为2,坐标等于该新节点的坐标,启动时钟TM1;时钟TM1到期后,该新节点查看所有接收到的邻居消息并设置时钟TM2;如果所有邻居消息的坐标与中间坐标的距离大于或者等于该新节点的坐标与中间坐标的距离,则执行步骤203,否则执行步骤204;
[0148] 步骤203:新节点发送一个启动消息,该启动消息的消息类型值为3,坐标等于新节点的坐标,距离等于该新节点的坐标与中间坐标的距离;
[0149] 步骤204:时钟TM2到期后,新节点查看所有接收到的启动消息,如果所接收到的所有启动消息的坐标域值都相等且等于该新节点的坐标参数CP1的值,则执行步骤208,否则执行步骤205;
[0150] 步骤205:时钟TM2到期后,新节点查看所有接收到的启动消息,如果所接收到的所有启动消息的坐标域值都相等,则执行步骤206,否则执行步骤207;
[0151] 步骤206:时钟TM2到期后,新节点查看所有接收到的启动消息,选择一个启动消息,该启动消息的坐标具有最高权限,将坐标参数CP1的值设置为该启动消息的坐标域值,发送该启动消息,设置时钟TM2,执行步骤204;
[0152] 步骤207:时钟TM2到期后,新节点查看所有接收到的启动消息,选择一个启动消息,该启动消息的距离值最小,将坐标参数CP1的值设置为该启动消息的坐标域值,发送该启动消息,设置时钟TM2,执行步骤204;
[0153] 步骤208:如果一个新节点坐标值等于自己坐标参数CP1,该新节点将自己标记为簇首节点,发送一个簇首节点消息,该簇首节点消息的消息类型值为4,坐标等于该新节点的坐标值;新节点接收到簇首节点消息后,将自己标记为成员节点并保存簇首节点消息中的坐标;
[0154] 步骤209:结束。
[0155] 上述过程将距离中间坐标最近的新节点选举为第一个簇首节点,并由第一个簇首节点发起网络构建操作,由于第一个簇首节点距离中间节点最近,因此大幅度降低了构建网络的代价和延迟,同时,上述过程通过坐标的优先级来确保了第一个簇首节点的唯一性,因此确保了网络构建的正确执行并增加了网络稳定性。
[0156] 图3为本发明所述的更新邻居表流程示意图。每个节点保存一个邻居表,一个邻居表项包含坐标、名称集合、节点类型值和生命周期域;如果节点类型值为1,则表明该邻居表项标识的节点为关联节点;如果节点类型值为0,则表明该邻居表项标识的节点为成员节点;如果节点类型值为2,则表明该邻居表项标识的节点为簇首节点;如果节点类型值为3,则表明该邻居表项标识的节点为新节点;
[0157] 一个信标消息包含消息类型、节点类型、名称集合和坐标域;一个节点定期执行下述操作:
[0158] 步骤301:开始;
[0159] 步骤302:节点发送信标消息,该信标消息的消息类型值为5,名称集合由该节点所能提供的数据的名称构成,坐标等于该节点的坐标;如果该节点为新节点,则节点类型值为3,如果该节点为成员节点,则节点类型值为0,如果该节点为关联节点,则节点类型值为1,如果该节点为簇首节点,则节点类型值为2;
[0160] 步骤303:邻居节点接收到该信标消息后查看邻居表;如果存在一个邻居表项,该邻居表项的坐标等于该信标消息中的坐标,则将该邻居表项的名称集合和类型值更新为该信标消息的名称集合和节点类型值,将生命周期设置为最大值;否则该邻居节点创建一个邻居表项,该邻居表项的坐标等于该信标消息中的坐标,名称集合和节点类型值分别等于该信标消息的名称集合和节点类型值,生命周期设置为最大值;
[0161] 步骤304:结束。
[0162] 节点通过上述过程能够建立邻居表从而记录邻居节点的坐标和类型等信息,该节点通过邻居表项中的名称集合能够获取邻居节点能够提供的数据信息,从而实现快速的数据通信,同时上述过程通过生命周期来确保每个邻居表项的实时性和有效性,从而确保数据通信的正确性和提高数据通信的成功率。
[0163] 图4为本发明所述的创建簇流程示意图。如果节点A1和节点A2的纵坐标相同且节点A1的横坐标小于节点A2的横坐标,则节点A1和节点A2的角度为0度,节点A2和节点A1的角度为180度;如果节点A1和节点A2的横坐标相同且节点A1的纵坐标小于节点A2的纵坐标,则节点A1和节点A2的角度为90度,节点A2和节点A1的角度为270度;创建消息由消息类型、类型、角度和坐标构成;
[0164] 节点执行下述操作构建簇:
[0165] 步骤401:开始;
[0166] 步骤402:节点变成簇首节点后,从邻居表中选择所有符合条件1的邻居表项,从符合条件1的邻居表项中选择一个与簇首节点距离最远的邻居表项,发送一个创建消息,该创建消息的消息类型值为6,节点类型值为2,坐标等于该邻居表项的坐标,角度值等于0;该节点从邻居表中选择所有符合条件2的邻居表项,从符合条件2的邻居表项中选择一个与簇首节点距离最远的邻居表项,发送一个创建消息,该创建消息的消息类型值为6,节点类型值为2,坐标等于该邻居表项的坐标,角度值等于90;该节点从邻居表中选择所有符合条件3的邻居表项,从符合条件3的邻居表项中选择一个与簇首节点距离最远的邻居表项,发送一个创建消息,该创建消息的消息类型值为6,节点类型值为2,坐标等于该邻居表项的坐标,角度值等于180;该节点从邻居表中选择所有符合条件4的邻居表项,从符合条件4的邻居表项中选择一个与簇首节点距离最远的邻居表项,发送一个创建消息,该创建消息的消息类型值为6,节点类型值为2,坐标等于该邻居表项的坐标,角度值等于270;
[0167] 条件1:簇首节点与该邻居表项的坐标所标识的节点的角度为0度;
[0168] 条件2:簇首节点与该邻居表项的坐标所标识的节点的角度为90度;
[0169] 条件3:簇首节点与该邻居表项的坐标所标识的节点的角度为180度;
[0170] 条件4:簇首节点与该邻居表项的坐标所标识的节点的角度为270度;
[0171] 步骤403:节点接收到创建消息后,如果消息中的节点类型值为2且坐标等于该节点的坐标,则执行步骤404,否则执行步骤406;
[0172] 步骤404:接收到创建消息的节点查看邻居表,如果所有邻居表项的节点类型值均不等于3,则执行步骤408,否则执行步骤405;
[0173] 步骤405:接收到创建消息的节点选择所有符合条件5的邻居表项,从符合条件5的邻居表项中选择一个邻居表项,该邻居表项的坐标与该节点的坐标距离最大,接收到创建消息的节点发送一个创建消息,该创建消息的消息类型值为6,节点类型值为1,坐标等于该邻居表项的坐标,角度值等于接收到的创建消息中的角度,执行步骤403;
[0174] 条件5:该邻居表项的节点类型值等于3,该节点与该邻居表项的坐标所标识的节点的角度等于该创建消息的角度;
[0175] 步骤406:节点接收到创建消息后,如果消息中的节点类型值为1且坐标等于该节点的坐标,则执行步骤407,否则执行步骤408;
[0176] 步骤407:接收到创建消息的节点将自己标记为簇首节点,发送一个簇首节点消息,该簇首节点消息的消息类型值为4,坐标等于该簇首节点的坐标值;新节点接收到簇首节点消息后,将自己标记为成员节点并保存簇首节点消息中的坐标;执行步骤402;
[0177] 步骤408:结束;
[0178] 如果一个成员节点能够接收到两个以上的簇首节点的信标消息,则将自己标记为关联节点。
[0179] 上述过程能够快速构建基于簇的网络,将网络划分为两个以上的簇,由于上述过程大幅度降低了簇首节点的数量,因此降低了数据通信的延迟和代价,同时,上述过程也降低了关联节点的数量,因此进一步降低了数据通信的延迟和代价。
[0180] 图5为本发明所述的创建转发表流程示意图。簇首节点和关联节点保存一个转发表,一个转发表项包含坐标、节点类型、名称和生命周期域;转发消息包含消息类型、节点类型、名称、源坐标和目的坐标;簇首节点CH1选择所有类型值为0的邻居表项,针对每个选中的邻居表项E1,簇首节点CH1定期执行下述操作:
[0181] 步骤501:开始;
[0182] 步骤502:针对邻居表项E1中名称集合中的每个名称NA1,簇首节点CH1判断是否存在一个转发表项,该转发表项的名称等于NA1,坐标等于邻居表项E1的坐标且生命周期大于阈值TH1,如果存在,则执行步骤519,否则执行步骤503;
[0183] 步骤503:簇首节点CH1判断是否存在一个转发表项,该转发表项的名称等于NA1且坐标等于邻居表项E1的坐标,如果存在,则执行步骤504,否则执行步骤505;
[0184] 步骤504:簇首节点CH1选择一个转发表项,该转发表项的名称等于NA1且坐标等于邻居表项E1的坐标,将该转发表项的生命周期设置为最大值,执行步骤506;
[0185] 步骤505:簇首节点CH1创建一个转发表项,该转发表项的名称等于NA1,节点类型值为0,坐标等于邻居表项E1的坐标,生命周期设置为最大值;
[0186] 步骤506:簇首节点CH1选择所有节点类型值等于1的邻居表项,针对每个选中的邻居表项E2,簇首节点CH1发送一个转发消息,该转发消息的消息类型值为7,节点类型值为2,名称为NA1,源坐标等于簇首节点CH1的坐标,目的坐标等于邻居表项E2的坐标;
[0187] 步骤507:节点接收到转发消息,如果节点的坐标等于该转发消息的目的坐标,则执行步骤508,否则执行步骤519;
[0188] 步骤508:接收到转发消息的节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该转发消息的名称,坐标等于该转发消息的源坐标且生命周期大于阈值TH1,则执行步骤519,否则执行步骤509;
[0189] 步骤509:接收到转发消息的节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该转发消息的名称且坐标等于该转发消息的源坐标,则执行步骤510,否则执行步骤511;
[0190] 步骤510:接收到转发消息的节点查看转发表,选择一个转发表项,该转发表项的名称等于该转发消息的名称且坐标等于该转发消息的源坐标,将该转发表项的生命周期设置为最大值,执行步骤512;
[0191] 步骤511:接收到转发消息的节点创建一个转发表项,该转发表项的名称等于该转发消息的名称,坐标等于该转发消息的源坐标,节点类型值等于该转发消息的节点类型值,生命周期设置为最大值;
[0192] 步骤512:接收到转发消息的节点选择所有节点类型值为2的邻居表项,针对每个选中的邻居表项E3,该节点将该转发消息的源坐标更新为自己的坐标,目的坐标更新为邻居表项E3的坐标,节点类型值设置为1,发送该转发消息;
[0193] 步骤513:节点接收到转发消息,如果节点的坐标等于该转发消息的目的坐标,则执行步骤514,否则执行步骤519;
[0194] 步骤514:接收到转发消息的节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该转发消息的名称,坐标等于该转发消息的源坐标且生命周期大于阈值TH1,则执行步骤519,否则执行步骤515;
[0195] 步骤515:接收到转发消息的节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该转发消息的名称且坐标等于该转发消息的源坐标,则执行步骤516,否则执行步骤517;
[0196] 步骤516:接收到转发消息的节点查看转发表,选择一个转发表项,该转发表项的名称等于该转发消息的名称且坐标等于该转发消息的源坐标,将该转发表项的生命周期设置为最大值,执行步骤518;
[0197] 步骤517:接收到转发消息的节点创建一个转发表项,该转发表项的名称等于该转发消息的名称,坐标等于该转发消息的源坐标,节点类型值等于该转发消息的节点类型值,生命周期设置为最大值;
[0198] 步骤518:接收到转发消息的节点选择所有节点类型值为1的邻居表项,针对每个选中的邻居表项E4,该节点将该转发消息的源坐标更新为自己的坐标,目的坐标更新为邻居表项E4的坐标,节点类型值设置为2,发送该转发消息,执行步骤507;
[0199] 步骤519:结束。
[0200] 上述过程能够在簇首节点和关联节点建立转发表,从而实现数据通信;转发表通过生命周期来控制转发表项的有效性,从而确保数据通信能够正确执行,降低数据通信延迟和代价。
[0201] 图6为本发明所述的数据通信流程示意图。簇首节点和关联节点保存一个汇聚表,一个汇聚表项包含名称域和坐标域;
[0202] 请求消息包含消息类型、名称、源坐标和目的坐标;响应消息包含消息类型、名称、坐标和负载;数据DA1由名称NA1标识,成员节点CM2的簇首节点为CH2,通过下述过程获取数据DA1:
[0203] 步骤601:开始;
[0204] 步骤602:成员节点CM2发送一个请求消息,该请求消息的消息类型值为8,名称为NA1,源坐标为成员节点CM2的坐标,目的坐标为簇首节点CH2的坐标;
[0205] 步骤603:目的节点接收到请求消息,目的节点的坐标等于请求消息的目的坐标;如果目的节点为成员节点,则执行步骤608,否则执行步骤604;
[0206] 步骤604:目的簇首节点或者关联节点接收到请求消息后查看聚合表,如果存在一个聚合表项,该聚合表项的名称等于该请求消息的名称,坐标等于该请求消息的源坐标,则执行步骤609,否则执行步骤605;
[0207] 步骤605:接收到请求消息的目的簇首节点或者关联节点查看聚合表,如果存在一个聚合表项,该聚合表项的名称等于该请求消息的名称,则执行步骤606,否则执行步骤607;
[0208] 步骤606:接收到请求消息的目的簇首节点或者关联节点创建一个聚合表项,该聚合表项的名称等于该请求消息的名称,坐标等于该请求消息的源坐标,执行步骤609;
[0209] 步骤607:接收到请求消息的目的簇首节点或者关联节点创建一个聚合表项,该聚合表项的名称等于该请求消息的名称,坐标等于该请求消息的源坐标;目的簇首节点或者关联节点查看转发表,如果存在一个转发表项,该转发表项的名称等于该请求消息的名称且消息类型等于0,则将该请求消息的源坐标更新为该簇首节点或者关联节点的坐标,目的坐标更新为该转发表项的坐标,发送该请求消息;否则目的簇首节点或者关联节点选择一个转发表项,该转发表项的名称等于该请求消息的名称,则将该请求消息的源坐标更新为该簇首节点或者关联节点的坐标,目的坐标更新为该转发表项的坐标,发送该请求消息,执行步骤603;
[0210] 步骤608:目的节点接收到请求消息后,发送一个响应消息,该响应消息的消息类型值为9,名称等于该请求消息的名称,坐标等于该请求消息的源坐标,负载为该请求消息名称定义的数据;
[0211] 步骤609:目的节点接收到响应消息,如果目的节点为成员节点,则执行步骤611,否则执行步骤610;
[0212] 步骤610:目的簇首节点或者关联节点接收到响应消息后,选择所有名称域值等于该响应消息名称的汇聚表项,针对每个选中的汇聚表项,目的簇首节点或者关联节点将响应消息的坐标更新为该汇聚表项的坐标,发送响应消息,删除该汇聚表项,执行步骤609;
[0213] 步骤611:目的节点接收到该响应消息,保存该响应消息中的数据;
[0214] 步骤612:结束。
[0215] 节点通过上述过程能够快速获取所需数据,由于上述过程汇聚表实现响应消息的路由,无需路由建立过程,因此大幅度降低了数据通信延迟和代价,同时两个以上的节点采用汇聚表能够通过一次通信过程获取数据,从而进一步降低了数据通信延迟和代价。
[0216] 实施例1
[0217] 基于表1的仿真参数,本实施例模拟了本发明中的基于簇的网络数据通信方法,性能分析如下:随着提供数据的节点数量的增加,这些节点的分布面积更广泛,因此获取服务数据的成功率随之增加。节点获取服务数据的平均成功率为99.2%。
[0218] 表1仿真参数
[0219]
[0220] 本发明提供了一种基于簇的网络路由通信方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。