CN106993321A - 一种基于簇的网络数据通信方法 - Google Patents
一种基于簇的网络数据通信方法 Download PDFInfo
- Publication number
- CN106993321A CN106993321A CN201710196605.6A CN201710196605A CN106993321A CN 106993321 A CN106993321 A CN 106993321A CN 201710196605 A CN201710196605 A CN 201710196605A CN 106993321 A CN106993321 A CN 106993321A
- Authority
- CN
- China
- Prior art keywords
- data
- cluster
- message
- address
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/02—Communication route or path selection, e.g. power-based or shortest path routing
- H04W40/04—Communication route or path selection, e.g. power-based or shortest path routing based on wireless node resources
- H04W40/10—Communication route or path selection, e.g. power-based or shortest path routing based on wireless node resources based on available power or energy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/02—Communication route or path selection, e.g. power-based or shortest path routing
- H04W40/12—Communication route or path selection, e.g. power-based or shortest path routing based on transmission quality or channel quality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/02—Communication route or path selection, e.g. power-based or shortest path routing
- H04W40/20—Communication route or path selection, e.g. power-based or shortest path routing based on geographic position or location
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/02—Communication route or path selection, e.g. power-based or shortest path routing
- H04W40/22—Communication route or path selection, e.g. power-based or shortest path routing using selective relaying for reaching a BTS [Base Transceiver Station] or an access point
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/24—Connectivity information management, e.g. connectivity discovery or connectivity update
- H04W40/244—Connectivity information management, e.g. connectivity discovery or connectivity update using a network of reference devices, e.g. beaconing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/24—Connectivity information management, e.g. connectivity discovery or connectivity update
- H04W40/248—Connectivity information update
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W84/00—Network topologies
- H04W84/18—Self-organising networks, e.g. ad-hoc networks or sensor networks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明提供了一种基于簇的网络数据通信方法,所述网络中包含三类节点:孤立节点、簇首节点及簇内节点;所述孤立节点为既没有标记为簇首节点也没有标记为簇内节点的节点;所述簇内节点包括共享节点与普通簇内节点,所述共享节点是两个以上簇的簇内节点,位于两个以上簇首节点的通信范围内,能够同时接收两个以上簇首节点的信标帧,并与两个以上簇首节点实现通信,具有路由转发功能;普通簇内节点只位于一个簇首节点的通信范围内,不执行路由转发操作;所述簇首节点用于实现路由转发功能。
Description
技术领域
本发明涉及一种数据通信方法,尤其涉及的是一种基于簇的网络数据通信方法。
背景技术
网络已经成为人类生活中不可缺少的一部分,它提供多种数据服务,因此降低数据通信延迟尤为重要。近年来,很多研究工作致力于网络的数据通信工作,以便使人们能够快速获取网络服务。随着移动网络技术的发展,网络的数据通信技术会进一步提高服务质量。
目前,网络的数据通信延迟和代价都比较大,降低了网络服务性能。因此,如何降低网络的数据通信的延迟和代价成为近年来研究的热点问题。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于簇的网络数据通信方法。
技术方案:本发明公开了一种基于簇的网络数据通信方法,其特征在于,所述网络中包含三类节点:孤立节点、簇首节点及簇内节点;所述孤立节点为既没有标记为簇首节点也没有标记为簇内节点的节点;
所述簇内节点包括共享节点与普通簇内节点,所述共享节点是两个以上簇的簇内节点,位于两个以上簇首节点的通信范围内,能够同时接收两个以上簇首节点的信标帧,并与两个以上簇首节点实现通信,具有路由转发功能;普通簇内节点只位于一个簇首节点的通信范围内,不执行路由转发操作;所述簇首节点用于实现路由转发功能;
一个簇包括一个簇首节点和一个以上的簇内节点,簇内节点在簇首节点的一跳范围内,所述网络由一个以上的簇组成;簇由簇ID唯一标识,簇ID的值为该簇簇首节点所在的地理坐标;
孤立节点、簇首节点及簇内节点具有一个节点ID,例如MAC地址,该节点ID具有网络唯一性,在生命周期中保持不变;
初始状态下,所有节点均设为孤立节点且具有唯一性的节点ID,每个节点保存一个邻居表,邻居表项包括三个域:节点ID,节点的能量以及生命周期;
网络中的节点由单播地址唯一标识,节点的单播地址包括三个部分:地理坐标域、节点类型域和节点ID域;节点类型域值如下所示:
节点类型 | 节点类型域值 |
孤立节点 | 0 |
簇首节点 | 1 |
簇内节点 | 2 |
网络中的节点在一跳范围内定期广播信标消息,消息源地址为节点的单播地址,消息负载为当前的能量;共享节点广播的信标消息还包括它所属簇的簇ID;节点通过接收邻居节点的信标消息来建立邻居表;
孤立节点收到任意一个邻居节点N发送的信标消息后,如果孤立节点的邻居表中没有节点ID值为节点N的节点ID值的表项,那么孤立节点创建一个邻居表项,该邻居表项的节点ID为节点N的节点ID,节点的能量值为信标负载中的能量值,生命周期设置为最大值,例如1s;否则,孤立节点用接收到的信标消息中的能量值更新该表项中的能量域值,同时将生命周期设置为最大值;
如果一个邻居表项的生命周期衰减为0,那么从邻居表中删除该邻居表项;
网络中的消息结构由四部分构成:目的地址、源地址、消息类型值和负载;
消息类型值如下所示:
消息类型 | 消息类型值 |
数据产生消息 | 1 |
数据产生响应消息 | 2 |
注册消息 | 3 |
数据请求消息 | 4 |
数据响应消息 | 5 |
请求数据产生消息 | 6 |
请求数据产生响应消息 | 7 |
加入簇请求消息 | 8 |
加入簇响应消息 | 9 |
加入簇确认消息 | 10 |
簇ID消息 | 11 |
孤立节点建立邻居表后,如果它的邻居节点包含簇首节点,则将节点ID值最小的邻居簇首节点作为自己的簇首节点,同时记录该簇的簇ID以及该簇首节点的节点ID;如果孤立节点满足条件1或者条件2时,则通过下述过程建立簇;
条件1:孤立节点的当前能量值大于其他邻居孤立节点的当前能量值;
条件2:孤立节点的当前能量值不小于其他邻居孤立节点的当前能量值,同时孤立节点的节点ID小于与孤立节点具有相同能量值的邻居节点的节点ID;
步骤101:开始;
步骤102:孤立节点在一跳范围内广播加入簇请求消息,簇请求消息源地址为孤立节点自己的单播地址,目的地址为广播地址,即地址的所有比特值均为1,消息类型为8,消息负载为孤立节点自己的能量值;
步骤103:在规定时间内,判断邻居孤立节点是否收到两个以上孤立节点发送的加入簇请求消息,如果是,进行步骤104,否则进行步骤105;
步骤104:对于每个接收到的加入簇请求消息,邻居孤立节点判断自己的能量值是否为不大于消息负载中的能量值,如果是,则返回一个加入簇响应消息,加入簇响应消息的目的地址为接收到的加入簇请求消息的源地址,源地址为邻居孤立节点自己的单播地址,消息类型为9,消息负载为空,否则,丢弃接收到的加入簇请求消息,进行步骤106;
步骤105:邻居孤立节点判断自己的能量值是否为不大于接收到的加入簇请求消息负载中的能量值,如果是,则返回一个加入簇响应消息,加入簇响应消息的目的地址为接收到的加入簇请求消息的源地址,源地址为邻居孤立节点自己的单播地址,消息类型为9,消息负载为空,否则,丢弃接收到的加入簇请求消息;
步骤106:在规定时间内,孤立节点判断收到的加入簇响应消息的数量是否等于或者大于其邻居表中邻居孤立节点的总数量,如果是,进行步骤107,否则进行步骤111;
步骤107:孤立节点向所有返回加入簇响应消息的邻居孤立节点发送一个加入簇确认消息,该加入簇确认消息的目的地址为邻居孤立节点的单播地址,源地址为孤立节点的单播地址,消息类型为10,负载为簇ID,即孤立节点的地理坐标,同时将自己标识为簇首节点;
步骤108:在规定时间内,如果邻居孤立节点收到加入簇确认消息,则执行步骤109,否则执行步骤111;
步骤109:邻居孤立节点将自己标识为簇内节点,同时记录加入簇确认消息中的簇ID以及簇首节点的节点ID;
步骤110:孤立节点成功建立簇并转变为簇首节点;
步骤111:结束;
重复执行步骤101~111,直到没有孤立节点为止;然后,簇首节点在网络内广播簇ID消息,该簇ID消息的负载为簇首节点所在簇的簇ID;簇首节点和簇内节点收到簇ID消息后,保存簇ID消息中的簇ID值,网络中所有簇的簇ID值保持不变;
如果一个簇首节点的能量值低于预先设定的阈值,例如低于原始能量的50%,或者离开簇ID所标识的位置,那么符合条件3和条件4的簇内节点转换为簇首节点,原来的簇首节点则变成簇内节点;
条件3:该簇内节点位于簇ID所标识的位置;
条件4:在所有簇ID所标识的位置中的簇内节点中,该簇内节点的当前能量值最大且大于簇首节点;
步骤103,106和108中,规定时间值设置为α·d·t;其中,α为调节系数,α≥1,d为网络的直径,t为两个邻居节点之间传输一条消息的延迟;当网络性能较差时,例如带宽较小,链路不稳定等,α取值,大一些,例如3,当网络性能较好时,α取值较小一些,例如1;
上述过程可以快速地建立簇从而实现正确通信。
本发明所述方法中,一种与地理位置相关的数据由一个地理坐标和数据ID唯一标识,地理坐标定义该数据产生的地理位置,数据ID定义一种类型的数据,例如某个地理坐标所确定的位置的空气质量;一种类型的数据划分为两个以上数据块,每个数据块由一个数据块ID唯一标识;
簇内节点通过名字地址获取数据,名字地址包括地理坐标、数据ID以及数据块ID集合;
簇内节点CM1的地理坐标为(x1,y1),节点ID为NID1,数据C1的数据ID为CID1,如果CM1需要产生地理位置为(x1,y1)的数据C1的数据块,所述数据块的数据块ID集合为S1,则执行下述过程:
步骤201:开始;
步骤202:簇内节点CM1构建一个名字地址、一个单播地址和一个数据产生消息;在名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为S1;在单播地址中,地理坐标为(x1,y1),节点类型为2,节点ID为NID1;在数据产生消息中,目的地址为名字地址,源地址为单播地址,消息类型为1,负载为空;簇内节点CM1发送该数据产生消息;
步骤203:位于地理坐标(x1,y1)的簇内节点收到该数据产生消息后,产生数据C1中的部分数据块,然后构建名字地址和数据产生响应消息;在名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为簇内节点自己产生的数据块的数据块ID集合;在数据产生响应消息中,目的地址为数据产生消息中的源地址,源地址为构建的名字地址,消息类型为2,负载为产生的数据块;然后簇内节点发送该数据产生响应消息;
步骤204:簇内节点CM1接收到所有的数据产生响应消息后,保存这些数据块;
步骤205:结束。
上述过程可以快速创建数据从而用户能够正确获取数据。
本发明所述方法中,每个簇首节点维护一个用于记录能够提供数据块的节点信息的索引表,一个索引表项包括五个域:地理坐标域、数据ID域、数据块ID集合域、单播地址域和生命周期域;
簇内节点M产生或者获取了地理坐标(x1,y1)的数据C1的部分数据块之后,该数据块的数据块ID集合为S,数据C1的数据ID为CID1,簇内节点执行下述注册操作:
步骤301:开始;
步骤302:如果簇内节点M为共享节点,那么对于簇内节点M所属的每个簇的簇首节点执行下述操作:创建一个注册消息,该注册消息的目的地址为簇首节点的单播地址,源地址为自己的单播地址,消息类型为3,负载为地理坐标(x1,y1),数据ID CID1和数据块ID集合S,发送该注册消息;如果簇内节点M为普通簇内节点,则创建一个注册消息,该注册消息的目的地址为簇内节点M所属簇的簇首节点的单播地址,源地址为簇内节点M自己的单播地址,消息类型为3,负载为地理坐标(x1,y1),数据ID CID1和数据块ID集合S,发送该注册消息;
步骤303:簇首节点收到簇内节点M发送的注册消息后,创建一个索引表项,该索引表项的地理坐标域值为地理坐标(x1,y1),数据ID域值为CID1,数据块ID集合为S,单播地址为注册消息的源地址,生命周期为最大生命周期值,例如300s;
步骤304:如果簇首节点在该索引表项的生命周期内接收到簇内节点M发送的信标帧,则用信标帧的源地址更新该表项的单播地址域,同时将该索引表项的生命周期设置为最大值,否则,删除该索引表项;
步骤305:结束。
上述过程可以确保用户正确获取数据。
本发明所述方法中,在簇内节点M3位于簇CL1时产生或者获取与地理坐标(x1,y1)相关的数据C1的部分数据块,该数据块的数据块ID集合为S3,数据C1的数据ID为CID1,簇CL1的簇首节点为CH1,簇CL2的簇首节点为CH2的条件下,如果簇内节点M3从簇CL1移动到簇CL2,则执行下述注册操作:
步骤401:开始;
步骤402:簇内节点M3创建一个注册消息,该注册消息的目的地址为簇首节点CH2的单播地址,源地址为自己的单播地址,消息类型为3,负载为地理坐标(x1,y1),数据IDCID1和数据块ID集合S3,发送该注册消息;
步骤403:簇首节点CH2收到簇内节点M3发送的注册消息后,创建一个索引表项,该索引表项的地理坐标域值为地理坐标(x1,y1),数据ID域值为CID1,数据块ID集合为S3,单播地址为注册消息的源地址,生命周期为最大生命周期值,例如300s;;
步骤404:如果簇首节点CH2在该索引表项的生命周期内接收到簇内节点M3发送的信标帧,则用信标帧的源地址更新该表项的单播地址域,同时将该索引表项的生命周期设置为最大值,否则,删除该索引表项;
步骤405:结束。
上述过程可以确保用户正确获取数据。
本发明所述方法中,在簇内节点CM1的地理坐标为(x1,y1),节点ID为NID1,簇内节点CM2的地理坐标为(x2,y2),节点ID为NID2,数据C1由数据ID CID1定义,簇CL1的簇首节点为CH1,簇内节点CM1和簇内节点CM2均属于簇CL1的条件下,如果簇内节点CM2要获取与地理位置(x1,y1)相关的数据C1的部分数据块,这些数据块的数据块ID集合为S2,则执行下述过程:
步骤501:开始;
步骤502:簇内节点CM2创建一个名字地址,一个单播地址和一个数据请求消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为S2;单播地址中,地理坐标为簇内节点CM2当前的地理坐标,节点类型为2,节点ID为NID2;数据请求消息中,目的地址为名字地址,源地址为单播地址,消息类型为4,负载为空;然后簇内节点CM2发送该数据请求消息,如果簇内节点接收到数据请求消息,则执行步骤503,否则执行步骤508;
步骤503:如果簇内节点能提供所请求的所有数据块,则执行步骤504,否则执行步骤505;
步骤504:簇内节点创建一个名字地址和一个数据响应消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为数据请求消息目的地址中的数据块ID集合;数据响应消息中,目的地址为数据请求消息的源地址,源地址为构建的名字地址,消息类型为5,负载为提供的数据块;然后簇内节点发送该数据响应消息,执行步骤521;
步骤505:如果簇内节点能提供所请求的部分数据块,则执行步骤506,否则执行步骤507;
步骤506:簇内节点创建一个名字地址和一个数据响应消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为所能提供的部分数据块的数据块ID集合;数据响应消息中,目的地址为数据请求消息的源地址,源地址为构建的名字地址,消息类型为5,负载为提供的数据块;然后簇内节点发送该数据响应消息,执行步骤521;
步骤507:簇内节点丢弃接收到的数据请求消息,执行步骤521;
步骤508:如果接收到数据请求消息的簇首节点为CH1,则执行步骤510,否则执行步骤509;
步骤509:簇首节点丢弃接收到的数据请求消息,执行步骤521;
步骤510:如果簇首节点CH1的索引表至少有一个表项满足条件5和条件6的索引表项,则执行步骤511,否则执行步骤512;
条件5:该索引表项的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为集合S2的超集;
条件6:该索引表项的单播地址域的地理坐标在簇内节点CM2的一跳范围内;
步骤511:簇首节点CH1丢弃该数据请求消息,执行步骤521;
步骤512:如果簇首节点CH1的索引表所有满足条件5的索引表项都满足条件7,则执行步骤513,否则执行步骤514;
条件7:该索引表项的单播地址域的地理坐标不在簇内节点CM2的一跳范围内;
步骤513:簇首节点CH1选取一个满足条件5的索引表项,创建一个数据请求消息,该数据请求消息的目的地址为该索引表项中的单播地址域值,源地址为接收到的数据请求消息中的源地址,消息类型为4,负载为接收到的数据请求消息中的目的地址,然后发送构建的数据请求消息;目的簇内节点收到数据请求消息后,创建一个数据响应消息,数据响应消息中,目的地址为数据请求消息的源地址,源地址为数据请求消息负载中的地址,消息类型为5,负载为提供的数据块,然后簇内节点发送该数据响应消息,簇首节点CH1首先接收到该数据响应消息,然后将该数据响应消息转发到簇内节点CM2,执行步骤521;
步骤514:判断簇首节点CH1的索引表中是否存在满足条件8和条件9的索引表项,如果是,则执行步骤515,否则执行步骤518;
条件8:该索引表项的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为集合S2的子集;
条件9:满足条件8的索引表项的数据块ID集合的并集是集合S2的超集;
步骤515:满足条件8和条件9的所有索引表项是否满足条件6,如果是,则执行步骤516,否则执行步骤517;
步骤516:簇首节点CH1丢弃该数据请求消息,执行步骤521;
步骤517:对于任一个满足对于满足条件8和条件9但是不满足条件6的索引表项,簇首节点CH1构建一个名字地址和数据请求消息,名字地址中的地址坐标为(x1,y1),数据ID为CID1,数据块ID集合为该索引表项的数据块ID集合,数据请求消息的目的地址为该索引表项中的单播地址,源地址为接收到的数据请求消息中的源地址,消息类型为4,负载为构建的名字地址,然后发送该数据请求消息;目标簇内节点收到数据请求消息后,创建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息的源地址,源地址为数据请求消息负载中的名字地址,消息类型为5,负载为提供的数据块,然后簇内节点发送该数据响应消息;簇首节点CH1首先接收到该数据响应消息,然后将该数据响应消息转发到簇内节点CM2,执行步骤521;
步骤518:判断簇首节点CH1的索引表中是否存在满足条件8和条件6的表项,如果是,则执行步骤519,否则执行步骤520;
步骤519:簇首节点CH1选择所有满足条件8和条件6的索引表项,用数据块ID集合S2减去这些表项的数据块ID集合的并集得到数据块ID集合S5;簇首节点CH1创建一个名字地址和一个请求数据产生消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为S5;请求数据产生消息的目的地址为簇内节点CM1的单播地址,源地址为簇首节点CH1的单播地址,消息类型为6,负载为构建的名字地址,然后发送该请求数据产生消息;簇内节点CM1收到请求数据产生消息后,执行步骤201~205创建消息负载中的名字地址定义的数据块,然后创建一个请求数据产生响应消息,该请求数据产生响应消息的目的地址为接收到的请求数据产生消息的源地址,源地址为请求数据产生消息负载的名字地址,消息类型为7,负载为产生的数据块;然后簇内节点发送该请求数据产生响应消息,簇首节点CH1接收到请求数据产生响应消息后,构建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息中的源地址,源地址为请求数据产生响应消息的源地址,消息类型为5,负载为请求数据产生响应消息的负载,然后簇首节点CH1发送该数据响应消息,执行步骤521;
步骤520:簇首节点CH1创建一个请求数据产生消息,请求数据产生消息的目的地址为簇内节点CM1的单播地址,源地址为簇首节点CH1的单播地址,消息类型为6,负载为数据请求消息的目的地址,然后发送该请求数据产生消息;簇内节点CM1收到请求数据产生消息后,执行步骤201~205产生消息负载中的名字地址定义的数据块,然后创建一个请求数据产生响应消息,该请求数据产生响应消息的目的地址为接收到的请求数据产生消息的源地址,源地址为请求数据产生消息负载的名字地址,消息类型为7,负载为产生的数据块,然后簇内节点发送该请求数据产生响应消息;簇首节点CH1接收到请求数据产生响应消息后,构建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息中的源地址,源地址为请求数据产生响应消息的源地址,消息类型为5,负载为请求数据产生响应消息的负载,然后簇首节点CH1发送该数据响应消息;
步骤521:簇内节点CM2收到所有的数据响应消息后,保存数据块,然后执行步骤301~305进行注册操作;
步骤522:结束。
用户通过上述过程能够快速正确地获取所需数据。
本发明所述方法中,簇首节点维护一个聚合表,聚合表项包括名字地址域和单播地址域;
在簇内节点CM1的地理坐标为(x1,y1),节点ID为NID1,簇内节点CM2的地理坐标为(x2,y2),节点ID为NID2,数据C1由数据ID CID1定义,簇CL1的簇首节点为CH1,簇内节点CM1属于簇CL1,簇内节点CM2属于簇CL2的条件下,如果簇内节点CM2要获取与地理位置(x1,y1)相关的数据C1的部分数据块,这些数据块的数据块ID集合为S2,则执行下述过程:
步骤601:开始;
步骤602:簇内节点CM2创建一个名字地址,一个单播地址和一个数据请求消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为S2;单播地址中,地理坐标为簇内节点CM2当前的地理坐标,节点类型为2,节点ID为NID2;数据请求消息中,负载为构建名字地址,源地址为构建的单播地址,消息类型为4;如果簇内节点CM2为普通簇内节点,则数据请求消息的目的地址为簇首节点CH2的单播地址,否则,目的地址为簇内节点CM2所属的所有簇首节点中距离(x1,y1)距离最近的簇首节点的单播地址;簇内节点CM2发送数据请求消息;
步骤603:簇首节点收到数据请求消息后,查看聚合表,判断是否存在符合条件10的表项,是则执行步骤604,否则执行步骤605;
条件10:该聚合表项的名字地址的坐标域值为(x1,y1),数据ID为CID1,数据块ID集合为数据请求消息负载中的名字地址的数据块ID集合的超集;
步骤604:簇首节点创建一个聚合表项,该聚合表项的名字地址域值为数据请求消息负载中的名字地址,单播地址为数据请求消息的源地址,执行步骤615;
步骤605:簇首节点创建一个聚合表项,该聚合表项的名字地址域值为数据请求消息负载中的名字地址,单播地址为数据请求消息的源地址,然后判断是否有满足条件11的索引表项,如果是,则执行步骤606,否则执行步骤607;
条件11:该索引表项的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为数据请求消息负载中的名字地址的数据块ID集合的超集;
步骤606:簇首节点构建一个数据请求消息,数据请求消息的目的地址为该索引表项中的单播地址,源地址为簇首节点的单播地址,消息类型为4,负载为接收到的数据请求消息的负载,然后发送该数据请求消息;目标簇内节点收到数据请求消息后,创建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息的源地址,源地址为数据请求消息负载中的名字地址,消息类型为5,负载为提供的数据块,然后簇内节点发送该数据响应消息,簇首节点接收到该数据响应消息后,执行步骤615;
步骤607:簇首节点的索引表中是否存在满足条件12的索引表项,如果是,则执行步骤608,否则执行步骤612;
条件12:该索引表项的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为数据请求消息负载中的名字地址的数据块ID集合的子集;
步骤608:对于任一个满足条件12的索引表项,簇首节点构建一个名字地址和数据请求消息,名字地址中的地址坐标为(x1,y1),数据ID为CID1,数据块ID集合为该表项的数据块ID集合与接收到的数据请求消息中负载中的名字地址的数据块ID集合的交集,数据请求消息的目的地址为该表项中的单播地址,源地址为簇首节点的单播地址,消息类型为4,负载为构建的名字地址,然后发送该数据请求消息;
步骤609:目标簇内节点收到数据请求消息后,创建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息的源地址,源地址为数据请求消息负载中的名字地址,消息类型为5,负载为提供的数据块,簇内节点发送该数据响应消息;
步骤610:簇首节点判断满足条件12的所有索引表项的数据块ID集合的并集是否为接收到的数据请求消息中负载中的名字地址的数据块ID集合的超集,如果是,执行步骤615,否则执行步骤611;
步骤611:簇首节点构建一个名字地址,名字地址中的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为接收到的数据请求消息中负载中的名字地址的数据块ID集合减去满足条件12的所有索引表项的数据块ID集合的并集;然后簇首节点在本簇内选择满足条件13的共享节点并构建一个数据请求消息,该数据请求消息的目的地址为共享节点的单播地址,源地址为簇首节点的单播地址,消息类型为4,负载为构建的名字地址,然后发送该数据请求消息;目标共享节点收到数据请求消息后,从自己所属的簇中选择距离地理坐标(x1,y1)最近的簇ID,将数据请求消息的目的地址更新为该簇的簇首节点的单播地址,发送该数据请求消息,执行步骤603;
条件13:在簇首节点所在簇的所有共享节点中,该共享节点所属簇的簇ID距离地理坐标(x1,y1)最近;
步骤612:判断簇首节点是否为簇首节点CH1,如果是,执行步骤614,否则执行步骤613;
步骤613:簇首节点在本簇内选择满足条件13的共享节点并构建一个数据请求消息,该数据请求消息的目的地址为共享节点的单播地址,源地址为簇首节点的单播地址,消息类型为4,负载为接收到的数据请求消息负载中的名字地址,然后发送该数据请求消息;目标共享节点收到数据请求消息后,从自己所属的簇中选择距离地理坐标(x1,y1)最近的簇ID,将数据请求消息的目的地址更新为该簇簇首节点的单播地址,发送该数据请求消息,执行步骤603;
步骤614:簇首节点CH1创建一个请求数据产生消息,请求数据产生消息的目的地址为簇内节点CM1的单播地址,源地址为簇首节点CH1的单播地址,消息类型为6,负载为数据请求消息负载的名字地址,然后发送该请求数据产生消息;簇内节点CM1收到请求数据产生消息后,执行步骤201~205产生消息负载中的名字地址定义的数据块,然后创建一个请求数据产生响应消息,该请求数据产生响应消息的目的地址为接收到的请求数据产生消息的源地址,源地址为请求数据产生消息负载的名字地址,消息类型为7,负载为产生的数据块,然后发送该请求数据产生响应消息,簇首节点CH1接收到请求数据产生响应消息后,构建一个数据响应消息,该数据响应消息的目的地址为空,源地址为请求数据产生响应消息的源地址,消息类型为5,负载为请求数据产生响应消息的负载;
步骤615:如果簇内节点CM2收到数据响应消息,执行步骤617,否则执行步骤616;
步骤616:对于每个符合条件14的聚合表项,簇首节点从该聚合表项的名字地址的数据块ID集合中减去接收到的数据响应消息源地址的数据块ID集合,然后构建一个数据响应消息;该数据响应消息的源地址为接收到的数据响应消息中的源地址,目的地址为该表项的单播地址,消息类型为5,负载为源地址为接收到的数据响应消息中的负载;发送该数据响应消息,如果该聚合表项的名字地址的数据块ID集合为空,则删除该聚合表项;最后,执行步骤615;
条件14:该聚合表项的名字地址的坐标域值为(x1,y1),数据ID为CID1,数据块ID集合为数据响应消息源地址的数据块ID集合的超集;
步骤617:簇内节点CM2保存数据响应消息中的数据块,簇内节点CM2获取了所有的数据响应消息后,执行步骤301~305进行注册操作;
步骤618:结束。
用户通过上述过程能够快速正确地获取所需数据。
有益效果:本发明提供了一种基于簇的网络数据通信方法,此实现方法可广泛用于物联网和车载网络,具有广泛的应用前景。例如,在车载网领域,可将基于簇的网络数据通信方法应用于路况检测,通过本发明提供的实现方法,车辆节点可以获取任意地点的路况从而有效避免道路拥塞。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为本发明所述的簇建立流程示意图。
图2为本发明所述的数据产生流程示意图。
图3为本发明所述的数据注册流程示意图。
图4为本发明所述的簇内节点移动流程示意图。
图5为本发明所述的获取本地数据流程示意图。
图6为本发明所述的获取远程流程示意图。
具体实施方式:
本发明提供了一种基于簇的网络数据通信方法,此实现方法可广泛用于物联网和车载网络,具有广泛的应用前景。例如,在车载网领域,可将基于簇的网络数据通信方法应用于路况检测,通过本发明提供的实现方法,车辆节点可以获取任意地点的路况从而有效避免道路拥塞。
图1为本发明所述的簇建立流程示意图。所述网络中包含三类节点:孤立节点、簇首节点及簇内节点;所述孤立节点为既没有标记为簇首节点也没有标记为簇内节点的节点;
所述簇内节点包括共享节点与普通簇内节点,所述共享节点是两个以上簇的簇内节点,位于两个以上簇首节点的通信范围内,能够同时接收两个以上簇首节点的信标帧,并与两个以上簇首节点实现通信,具有路由转发功能;普通簇内节点只位于一个簇首节点的通信范围内,不执行路由转发操作;所述簇首节点用于实现路由转发功能;
一个簇包括一个簇首节点和一个以上的簇内节点,簇内节点在簇首节点的一跳范围内,所述网络由一个以上的簇组成;簇由簇ID唯一标识,簇ID的值为该簇簇首节点所在的地理坐标;
孤立节点、簇首节点及簇内节点具有一个节点ID,例如MAC地址,该节点ID具有网络唯一性,在生命周期中保持不变;
初始状态下,所有节点均设为孤立节点且具有唯一性的节点ID,每个节点保存一个邻居表,邻居表项包括三个域:节点ID,节点的能量以及生命周期;
网络中的节点由单播地址唯一标识,节点的单播地址包括三个部分:地理坐标域、节点类型域和节点ID域;节点类型域值如下所示:
节点类型 | 节点类型域值 |
孤立节点 | 0 |
簇首节点 | 1 |
簇内节点 | 2 |
网络中的节点在一跳范围内定期广播信标消息,消息源地址为节点的单播地址,消息负载为当前的能量;共享节点广播的信标消息还包括它所属簇的簇ID;节点通过接收邻居节点的信标消息来建立邻居表;
孤立节点收到任意一个邻居节点N发送的信标消息后,如果孤立节点的邻居表中没有节点ID值为节点N的节点ID值的表项,那么孤立节点创建一个邻居表项,该邻居表项的节点ID为节点N的节点ID,节点的能量值为信标负载中的能量值,生命周期设置为最大值,例如1s;否则,孤立节点用接收到的信标消息中的能量值更新该表项中的能量域值,同时将生命周期设置为最大值;
如果一个邻居表项的生命周期衰减为0,那么从邻居表中删除该邻居表项;
网络中的消息结构由四部分构成:目的地址、源地址、消息类型值和负载;
消息类型值如下所示:
消息类型 | 消息类型值 |
数据产生消息 | 1 |
数据产生响应消息 | 2 |
注册消息 | 3 |
数据请求消息 | 4 |
数据响应消息 | 5 |
请求数据产生消息 | 6 |
请求数据产生响应消息 | 7 |
加入簇请求消息 | 8 |
加入簇响应消息 | 9 |
加入簇确认消息 | 10 |
簇ID消息 | 11 |
孤立节点建立邻居表后,如果它的邻居节点包含簇首节点,则将节点ID值最小的邻居簇首节点作为自己的簇首节点,同时记录该簇的簇ID以及该簇首节点的节点ID;如果孤立节点满足条件1或者条件2时,则通过下述过程建立簇;
条件1:孤立节点的当前能量值大于其他邻居孤立节点的当前能量值;
条件2:孤立节点的当前能量值不小于其他邻居孤立节点的当前能量值,同时孤立节点的节点ID小于与孤立节点具有相同能量值的邻居节点的节点ID;
步骤101:开始;
步骤102:孤立节点在一跳范围内广播加入簇请求消息,簇请求消息源地址为孤立节点自己的单播地址,目的地址为广播地址,即地址的所有比特值均为1,消息类型为8,消息负载为孤立节点自己的能量值;
步骤103:在规定时间内,判断邻居孤立节点是否收到两个以上孤立节点发送的加入簇请求消息,如果是,进行步骤104,否则进行步骤105;
步骤104:对于每个接收到的加入簇请求消息,邻居孤立节点判断自己的能量值是否为不大于消息负载中的能量值,如果是,则返回一个加入簇响应消息,加入簇响应消息的目的地址为接收到的加入簇请求消息的源地址,源地址为邻居孤立节点自己的单播地址,消息类型为9,消息负载为空,否则,丢弃接收到的加入簇请求消息,进行步骤106;
步骤105:邻居孤立节点判断自己的能量值是否为不大于接收到的加入簇请求消息负载中的能量值,如果是,则返回一个加入簇响应消息,加入簇响应消息的目的地址为接收到的加入簇请求消息的源地址,源地址为邻居孤立节点自己的单播地址,消息类型为9,消息负载为空,否则,丢弃接收到的加入簇请求消息;
步骤106:在规定时间内,孤立节点判断收到的加入簇响应消息的数量是否等于或者大于其邻居表中邻居孤立节点的总数量,如果是,进行步骤107,否则进行步骤111;
步骤107:孤立节点向所有返回加入簇响应消息的邻居孤立节点发送一个加入簇确认消息,该加入簇确认消息的目的地址为邻居孤立节点的单播地址,源地址为孤立节点的单播地址,消息类型为10,负载为簇ID,即孤立节点的地理坐标,同时将自己标识为簇首节点;
步骤108:在规定时间内,如果邻居孤立节点收到加入簇确认消息,则执行步骤109,否则执行步骤111;
步骤109:邻居孤立节点将自己标识为簇内节点,同时记录加入簇确认消息中的簇ID以及簇首节点的节点ID;
步骤110:孤立节点成功建立簇并转变为簇首节点;
步骤111:结束;
重复执行步骤101~111,直到没有孤立节点为止;然后,簇首节点在网络内广播簇ID消息,该簇ID消息的负载为簇首节点所在簇的簇ID;簇首节点和簇内节点收到簇ID消息后,保存簇ID消息中的簇ID值,网络中所有簇的簇ID值保持不变;
如果一个簇首节点的能量值低于预先设定的阈值,例如低于原始能量的50%,或者离开簇ID所标识的位置,那么符合条件3和条件4的簇内节点转换为簇首节点,原来的簇首节点则变成簇内节点;
条件3:该簇内节点位于簇ID所标识的位置;
条件4:在所有簇ID所标识的位置中的簇内节点中,该簇内节点的当前能量值最大且大于簇首节点;
步骤103,106和108中,规定时间值设置为α·d·t;其中,α为调节系数,α≥1,d为网络的直径,t为两个邻居节点之间传输一条消息的延迟;当网络性能较差时,例如带宽较小,链路不稳定等,α取值,大一些,例如3,当网络性能较好时,α取值较小一些,例如1;
上述过程可以快速地建立簇从而实现正确通信。
图2为本发明所述的数据产生流程示意图。一种与地理位置相关的数据由一个地理坐标和数据ID唯一标识,地理坐标定义该数据产生的地理位置,数据ID定义一种类型的数据,例如某个地理坐标所确定的位置的空气质量;一种类型的数据划分为两个以上数据块,每个数据块由一个数据块ID唯一标识;
簇内节点通过名字地址获取数据,名字地址包括地理坐标、数据ID以及数据块ID集合;
簇内节点CM1的地理坐标为(x1,y1),节点ID为NID1,数据C1的数据ID为CID1,如果CM1需要产生地理位置为(x1,y1)的数据C1的数据块,所述数据块的数据块ID集合为S1,则执行下述过程:
步骤201:开始;
步骤202:簇内节点CM1构建一个名字地址、一个单播地址和一个数据产生消息;在名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为S1;在单播地址中,地理坐标为(x1,y1),节点类型为2,节点ID为NID1;在数据产生消息中,目的地址为名字地址,源地址为单播地址,消息类型为1,负载为空;簇内节点CM1发送该数据产生消息;
步骤203:位于地理坐标(x1,y1)的簇内节点收到该数据产生消息后,产生数据C1中的部分数据块,然后构建名字地址和数据产生响应消息;在名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为簇内节点自己产生的数据块的数据块ID集合;在数据产生响应消息中,目的地址为数据产生消息中的源地址,源地址为构建的名字地址,消息类型为2,负载为产生的数据块;然后簇内节点发送该数据产生响应消息;
步骤204:簇内节点CM1接收到所有的数据产生响应消息后,保存这些数据块;
步骤205:结束。
上述过程可以快速创建数据从而用户能够正确获取数据。
图3为本发明所述的数据注册流程示意图。每个簇首节点维护一个用于记录能够提供数据块的节点信息的索引表,一个索引表项包括五个域:地理坐标域、数据ID域、数据块ID集合域、单播地址域和生命周期域;
簇内节点M产生或者获取了地理坐标(x1,y1)的数据C1的部分数据块之后,该数据块的数据块ID集合为S,数据C1的数据ID为CID1,簇内节点执行下述注册操作:
步骤301:开始;
步骤302:如果簇内节点M为共享节点,那么对于簇内节点M所属的每个簇的簇首节点执行下述操作:创建一个注册消息,该注册消息的目的地址为簇首节点的单播地址,源地址为自己的单播地址,消息类型为3,负载为地理坐标(x1,y1),数据ID CID1和数据块ID集合S,发送该注册消息;如果簇内节点M为普通簇内节点,则创建一个注册消息,该注册消息的目的地址为簇内节点M所属簇的簇首节点的单播地址,源地址为簇内节点M自己的单播地址,消息类型为3,负载为地理坐标(x1,y1),数据ID CID1和数据块ID集合S,发送该注册消息;
步骤303:簇首节点收到簇内节点M发送的注册消息后,创建一个索引表项,该索引表项的地理坐标域值为地理坐标(x1,y1),数据ID域值为CID1,数据块ID集合为S,单播地址为注册消息的源地址,生命周期为最大生命周期值,例如300s;
步骤304:如果簇首节点在该索引表项的生命周期内接收到簇内节点M发送的信标帧,则用信标帧的源地址更新该表项的单播地址域,同时将该索引表项的生命周期设置为最大值,否则,删除该索引表项;
步骤305:结束。
上述过程可以确保用户正确获取数据。
图4为本发明所述的簇内节点移动流程示意图。在簇内节点M3位于簇CL1时产生或者获取与地理坐标(x1,y1)相关的数据C1的部分数据块,该数据块的数据块ID集合为S3,数据C1的数据ID为CID1,簇CL1的簇首节点为CH1,簇CL2的簇首节点为CH2的条件下,如果簇内节点M3从簇CL1移动到簇CL2,则执行下述注册操作:
步骤401:开始;
步骤402:簇内节点M3创建一个注册消息,该注册消息的目的地址为簇首节点CH2的单播地址,源地址为自己的单播地址,消息类型为3,负载为地理坐标(x1,y1),数据IDCID1和数据块ID集合S3,发送该注册消息;
步骤403:簇首节点CH2收到簇内节点M3发送的注册消息后,创建一个索引表项,该索引表项的地理坐标域值为地理坐标(x1,y1),数据ID域值为CID1,数据块ID集合为S3,单播地址为注册消息的源地址,生命周期为最大生命周期值,例如300s;;
步骤404:如果簇首节点CH2在该索引表项的生命周期内接收到簇内节点M3发送的信标帧,则用信标帧的源地址更新该表项的单播地址域,同时将该索引表项的生命周期设置为最大值,否则,删除该索引表项;
步骤405:结束。
上述过程可以确保用户正确获取数据。
图5为本发明所述的获取本地数据流程示意图。在簇内节点CM1的地理坐标为(x1,y1),节点ID为NID1,簇内节点CM2的地理坐标为(x2,y2),节点ID为NID2,数据C1由数据IDCID1定义,簇CL1的簇首节点为CH1,簇内节点CM1和簇内节点CM2均属于簇CL1的条件下,如果簇内节点CM2要获取与地理位置(x1,y1)相关的数据C1的部分数据块,这些数据块的数据块ID集合为S2,则执行下述过程:
步骤501:开始;
步骤502:簇内节点CM2创建一个名字地址,一个单播地址和一个数据请求消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为S2;单播地址中,地理坐标为簇内节点CM2当前的地理坐标,节点类型为2,节点ID为NID2;数据请求消息中,目的地址为名字地址,源地址为单播地址,消息类型为4,负载为空;然后簇内节点CM2发送该数据请求消息,如果簇内节点接收到数据请求消息,则执行步骤503,否则执行步骤508;
步骤503:如果簇内节点能提供所请求的所有数据块,则执行步骤504,否则执行步骤505;
步骤504:簇内节点创建一个名字地址和一个数据响应消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为数据请求消息目的地址中的数据块ID集合;数据响应消息中,目的地址为数据请求消息的源地址,源地址为构建的名字地址,消息类型为5,负载为提供的数据块;然后簇内节点发送该数据响应消息,执行步骤521;
步骤505:如果簇内节点能提供所请求的部分数据块,则执行步骤506,否则执行步骤507;
步骤506:簇内节点创建一个名字地址和一个数据响应消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为所能提供的部分数据块的数据块ID集合;数据响应消息中,目的地址为数据请求消息的源地址,源地址为构建的名字地址,消息类型为5,负载为提供的数据块;然后簇内节点发送该数据响应消息,执行步骤521;
步骤507:簇内节点丢弃接收到的数据请求消息,执行步骤521;
步骤508:如果接收到数据请求消息的簇首节点为CH1,则执行步骤510,否则执行步骤509;
步骤509:簇首节点丢弃接收到的数据请求消息,执行步骤521;
步骤510:如果簇首节点CH1的索引表至少有一个表项满足条件5和条件6的索引表项,则执行步骤511,否则执行步骤512;
条件5:该索引表项的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为集合S2的超集;
条件6:该索引表项的单播地址域的地理坐标在簇内节点CM2的一跳范围内;
步骤511:簇首节点CH1丢弃该数据请求消息,执行步骤521;
步骤512:如果簇首节点CH1的索引表所有满足条件5的索引表项都满足条件7,则执行步骤513,否则执行步骤514;
条件7:该索引表项的单播地址域的地理坐标不在簇内节点CM2的一跳范围内;
步骤513:簇首节点CH1选取一个满足条件5的索引表项,创建一个数据请求消息,该数据请求消息的目的地址为该索引表项中的单播地址域值,源地址为接收到的数据请求消息中的源地址,消息类型为4,负载为接收到的数据请求消息中的目的地址,然后发送构建的数据请求消息;目的簇内节点收到数据请求消息后,创建一个数据响应消息,数据响应消息中,目的地址为数据请求消息的源地址,源地址为数据请求消息负载中的地址,消息类型为5,负载为提供的数据块,然后簇内节点发送该数据响应消息,簇首节点CH1首先接收到该数据响应消息,然后将该数据响应消息转发到簇内节点CM2,执行步骤521;
步骤514:判断簇首节点CH1的索引表中是否存在满足条件8和条件9的索引表项,如果是,则执行步骤515,否则执行步骤518;
条件8:该索引表项的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为集合S2的子集;
条件9:满足条件8的索引表项的数据块ID集合的并集是集合S2的超集;
步骤515:满足条件8和条件9的所有索引表项是否满足条件6,如果是,则执行步骤516,否则执行步骤517;
步骤516:簇首节点CH1丢弃该数据请求消息,执行步骤521;
步骤517:对于任一个满足对于满足条件8和条件9但是不满足条件6的索引表项,簇首节点CH1构建一个名字地址和数据请求消息,名字地址中的地址坐标为(x1,y1),数据ID为CID1,数据块ID集合为该索引表项的数据块ID集合,数据请求消息的目的地址为该索引表项中的单播地址,源地址为接收到的数据请求消息中的源地址,消息类型为4,负载为构建的名字地址,然后发送该数据请求消息;目标簇内节点收到数据请求消息后,创建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息的源地址,源地址为数据请求消息负载中的名字地址,消息类型为5,负载为提供的数据块,然后簇内节点发送该数据响应消息;簇首节点CH1首先接收到该数据响应消息,然后将该数据响应消息转发到簇内节点CM2,执行步骤521;
步骤518:判断簇首节点CH1的索引表中是否存在满足条件8和条件6的表项,如果是,则执行步骤519,否则执行步骤520;
步骤519:簇首节点CH1选择所有满足条件8和条件6的索引表项,用数据块ID集合S2减去这些表项的数据块ID集合的并集得到数据块ID集合S5;簇首节点CH1创建一个名字地址和一个请求数据产生消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为S5;请求数据产生消息的目的地址为簇内节点CM1的单播地址,源地址为簇首节点CH1的单播地址,消息类型为6,负载为构建的名字地址,然后发送该请求数据产生消息;簇内节点CM1收到请求数据产生消息后,执行步骤201~205创建消息负载中的名字地址定义的数据块,然后创建一个请求数据产生响应消息,该请求数据产生响应消息的目的地址为接收到的请求数据产生消息的源地址,源地址为请求数据产生消息负载的名字地址,消息类型为7,负载为产生的数据块;然后簇内节点发送该请求数据产生响应消息,簇首节点CH1接收到请求数据产生响应消息后,构建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息中的源地址,源地址为请求数据产生响应消息的源地址,消息类型为5,负载为请求数据产生响应消息的负载,然后簇首节点CH1发送该数据响应消息,执行步骤521;
步骤520:簇首节点CH1创建一个请求数据产生消息,请求数据产生消息的目的地址为簇内节点CM1的单播地址,源地址为簇首节点CH1的单播地址,消息类型为6,负载为数据请求消息的目的地址,然后发送该请求数据产生消息;簇内节点CM1收到请求数据产生消息后,执行步骤201~205产生消息负载中的名字地址定义的数据块,然后创建一个请求数据产生响应消息,该请求数据产生响应消息的目的地址为接收到的请求数据产生消息的源地址,源地址为请求数据产生消息负载的名字地址,消息类型为7,负载为产生的数据块,然后簇内节点发送该请求数据产生响应消息;簇首节点CH1接收到请求数据产生响应消息后,构建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息中的源地址,源地址为请求数据产生响应消息的源地址,消息类型为5,负载为请求数据产生响应消息的负载,然后簇首节点CH1发送该数据响应消息;
步骤521:簇内节点CM2收到所有的数据响应消息后,保存数据块,然后执行步骤301~305进行注册操作;
步骤522:结束。
用户通过上述过程能够快速正确地获取所需数据。
图6为本发明所述的获取远程流程示意图。簇首节点维护一个聚合表,聚合表项包括名字地址域和单播地址域;
在簇内节点CM1的地理坐标为(x1,y1),节点ID为NID1,簇内节点CM2的地理坐标为(x2,y2),节点ID为NID2,数据C1由数据ID CID1定义,簇CL1的簇首节点为CH1,簇内节点CM1属于簇CL1,簇内节点CM2属于簇CL2的条件下,如果簇内节点CM2要获取与地理位置(x1,y1)相关的数据C1的部分数据块,这些数据块的数据块ID集合为S2,则执行下述过程:
步骤601:开始;
步骤602:簇内节点CM2创建一个名字地址,一个单播地址和一个数据请求消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为S2;单播地址中,地理坐标为簇内节点CM2当前的地理坐标,节点类型为2,节点ID为NID2;数据请求消息中,负载为构建名字地址,源地址为构建的单播地址,消息类型为4;如果簇内节点CM2为普通簇内节点,则数据请求消息的目的地址为簇首节点CH2的单播地址,否则,目的地址为簇内节点CM2所属的所有簇首节点中距离(x1,y1)距离最近的簇首节点的单播地址;簇内节点CM2发送数据请求消息;
步骤603:簇首节点收到数据请求消息后,查看聚合表,判断是否存在符合条件10的表项,是则执行步骤604,否则执行步骤605;
条件10:该聚合表项的名字地址的坐标域值为(x1,y1),数据ID为CID1,数据块ID集合为数据请求消息负载中的名字地址的数据块ID集合的超集;
步骤604:簇首节点创建一个聚合表项,该聚合表项的名字地址域值为数据请求消息负载中的名字地址,单播地址为数据请求消息的源地址,执行步骤615;
步骤605:簇首节点创建一个聚合表项,该聚合表项的名字地址域值为数据请求消息负载中的名字地址,单播地址为数据请求消息的源地址,然后判断是否有满足条件11的索引表项,如果是,则执行步骤606,否则执行步骤607;
条件11:该索引表项的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为数据请求消息负载中的名字地址的数据块ID集合的超集;
步骤606:簇首节点构建一个数据请求消息,数据请求消息的目的地址为该索引表项中的单播地址,源地址为簇首节点的单播地址,消息类型为4,负载为接收到的数据请求消息的负载,然后发送该数据请求消息;目标簇内节点收到数据请求消息后,创建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息的源地址,源地址为数据请求消息负载中的名字地址,消息类型为5,负载为提供的数据块,然后簇内节点发送该数据响应消息,簇首节点接收到该数据响应消息后,执行步骤615;
步骤607:簇首节点的索引表中是否存在满足条件12的索引表项,如果是,则执行步骤608,否则执行步骤612;
条件12:该索引表项的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为数据请求消息负载中的名字地址的数据块ID集合的子集;
步骤608:对于任一个满足条件12的索引表项,簇首节点构建一个名字地址和数据请求消息,名字地址中的地址坐标为(x1,y1),数据ID为CID1,数据块ID集合为该表项的数据块ID集合与接收到的数据请求消息中负载中的名字地址的数据块ID集合的交集,数据请求消息的目的地址为该表项中的单播地址,源地址为簇首节点的单播地址,消息类型为4,负载为构建的名字地址,然后发送该数据请求消息;
步骤609:目标簇内节点收到数据请求消息后,创建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息的源地址,源地址为数据请求消息负载中的名字地址,消息类型为5,负载为提供的数据块,簇内节点发送该数据响应消息;
步骤610:簇首节点判断满足条件12的所有索引表项的数据块ID集合的并集是否为接收到的数据请求消息中负载中的名字地址的数据块ID集合的超集,如果是,执行步骤615,否则执行步骤611;
步骤611:簇首节点构建一个名字地址,名字地址中的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为接收到的数据请求消息中负载中的名字地址的数据块ID集合减去满足条件12的所有索引表项的数据块ID集合的并集;然后簇首节点在本簇内选择满足条件13的共享节点并构建一个数据请求消息,该数据请求消息的目的地址为共享节点的单播地址,源地址为簇首节点的单播地址,消息类型为4,负载为构建的名字地址,然后发送该数据请求消息;目标共享节点收到数据请求消息后,从自己所属的簇中选择距离地理坐标(x1,y1)最近的簇ID,将数据请求消息的目的地址更新为该簇的簇首节点的单播地址,发送该数据请求消息,执行步骤603;
条件13:在簇首节点所在簇的所有共享节点中,该共享节点所属簇的簇ID距离地理坐标(x1,y1)最近;
步骤612:判断簇首节点是否为簇首节点CH1,如果是,执行步骤614,否则执行步骤613;
步骤613:簇首节点在本簇内选择满足条件13的共享节点并构建一个数据请求消息,该数据请求消息的目的地址为共享节点的单播地址,源地址为簇首节点的单播地址,消息类型为4,负载为接收到的数据请求消息负载中的名字地址,然后发送该数据请求消息;目标共享节点收到数据请求消息后,从自己所属的簇中选择距离地理坐标(x1,y1)最近的簇ID,将数据请求消息的目的地址更新为该簇簇首节点的单播地址,发送该数据请求消息,执行步骤603;
步骤614:簇首节点CH1创建一个请求数据产生消息,请求数据产生消息的目的地址为簇内节点CM1的单播地址,源地址为簇首节点CH1的单播地址,消息类型为6,负载为数据请求消息负载的名字地址,然后发送该请求数据产生消息;簇内节点CM1收到请求数据产生消息后,执行步骤201~205产生消息负载中的名字地址定义的数据块,然后创建一个请求数据产生响应消息,该请求数据产生响应消息的目的地址为接收到的请求数据产生消息的源地址,源地址为请求数据产生消息负载的名字地址,消息类型为7,负载为产生的数据块,然后发送该请求数据产生响应消息,簇首节点CH1接收到请求数据产生响应消息后,构建一个数据响应消息,该数据响应消息的目的地址为空,源地址为请求数据产生响应消息的源地址,消息类型为5,负载为请求数据产生响应消息的负载;
步骤615:如果簇内节点CM2收到数据响应消息,执行步骤617,否则执行步骤616;
步骤616:对于每个符合条件14的聚合表项,簇首节点从该聚合表项的名字地址的数据块ID集合中减去接收到的数据响应消息源地址的数据块ID集合,然后构建一个数据响应消息;该数据响应消息的源地址为接收到的数据响应消息中的源地址,目的地址为该表项的单播地址,消息类型为5,负载为源地址为接收到的数据响应消息中的负载;发送该数据响应消息,如果该聚合表项的名字地址的数据块ID集合为空,则删除该聚合表项;最后,执行步骤615;
条件14:该聚合表项的名字地址的坐标域值为(x1,y1),数据ID为CID1,数据块ID集合为数据响应消息源地址的数据块ID集合的超集;
步骤617:簇内节点CM2保存数据响应消息中的数据块,簇内节点CM2获取了所有的数据响应消息后,执行步骤301~305进行注册操作;
步骤618:结束。
用户通过上述过程能够快速正确地获取所需数据。
实施例1
基于表1的仿真参数,本实施例模拟了本发明中的基于簇的网络数据通信方法,性能分析如下:随着提供数据的节点数量的增加,这些节点的分布面积更广泛,因此获取服务数据的延迟和代价都随之下降。节点获取服务数据的平均延迟为60ms,平均代价为6。
表1仿真参数
本发明提供了一种基于簇的网络数据通信方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。
Claims (6)
1.一种基于簇的网络数据通信方法,其特征在于,所述网络中包含三类节点:孤立节点、簇首节点及簇内节点;所述孤立节点为既没有标记为簇首节点也没有标记为簇内节点的节点;
所述簇内节点包括共享节点与普通簇内节点,所述共享节点是两个以上簇的簇内节点,位于两个以上簇首节点的通信范围内,能够同时接收两个以上簇首节点的信标帧,并与两个以上簇首节点实现通信,具有路由转发功能;普通簇内节点只位于一个簇首节点的通信范围内,不执行路由转发操作;所述簇首节点用于实现路由转发功能;
一个簇包括一个簇首节点和一个以上的簇内节点,簇内节点在簇首节点的一跳范围内,所述网络由一个以上的簇组成;簇由簇ID唯一标识,簇ID的值为该簇簇首节点所在的地理坐标;
孤立节点、簇首节点及簇内节点具有一个节点ID,该节点ID具有网络唯一性,在生命周期中保持不变;
初始状态下,所有节点均设为孤立节点且具有唯一性的节点ID,每个节点保存一个邻居表,邻居表项包括三个域:节点ID,节点的能量以及生命周期;
网络中的节点由单播地址唯一标识,节点的单播地址包括三个部分:地理坐标域、节点类型域和节点ID域;节点类型域值如下所示:
网络中的节点在一跳范围内定期广播信标消息,消息源地址为节点的单播地址,消息负载为当前的能量;共享节点广播的信标消息还包括它所属簇的簇ID;节点通过接收邻居节点的信标消息来建立邻居表;
孤立节点收到任意一个邻居节点N发送的信标消息后,如果孤立节点的邻居表中没有节点ID值为节点N的节点ID值的表项,那么孤立节点创建一个邻居表项,该邻居表项的节点ID为节点N的节点ID,节点的能量值为信标负载中的能量值,生命周期设置为最大值;否则,孤立节点用接收到的信标消息中的能量值更新该表项中的能量域值,同时将生命周期设置为最大值;
如果一个邻居表项的生命周期衰减为0,那么从邻居表中删除该邻居表项;
网络中的消息结构由四部分构成:目的地址、源地址、消息类型值和负载;
消息类型值如下所示:
孤立节点建立邻居表后,如果它的邻居节点包含簇首节点,则将节点ID值最小的邻居簇首节点作为自己的簇首节点,同时记录该簇的簇ID以及该簇首节点的节点ID;如果孤立节点满足条件1或者条件2时,则通过下述过程建立簇;
条件1:孤立节点的当前能量值大于其他邻居孤立节点的当前能量值;
条件2:孤立节点的当前能量值不小于其他邻居孤立节点的当前能量值,同时孤立节点的节点ID小于与孤立节点具有相同能量值的邻居节点的节点ID;
步骤101:开始;
步骤102:孤立节点在一跳范围内广播加入簇请求消息,簇请求消息源地址为孤立节点自己的单播地址,目的地址为广播地址,即地址的所有比特值均为1,消息类型为8,消息负载为孤立节点自己的能量值;
步骤103:在规定时间内,判断邻居孤立节点是否收到两个以上孤立节点发送的加入簇请求消息,如果是,进行步骤104,否则进行步骤105;
步骤104:对于每个接收到的加入簇请求消息,邻居孤立节点判断自己的能量值是否为不大于消息负载中的能量值,如果是,则返回一个加入簇响应消息,加入簇响应消息的目的地址为接收到的加入簇请求消息的源地址,源地址为邻居孤立节点自己的单播地址,消息类型为9,消息负载为空,否则,丢弃接收到的加入簇请求消息,进行步骤106;
步骤105:邻居孤立节点判断自己的能量值是否为不大于接收到的加入簇请求消息负载中的能量值,如果是,则返回一个加入簇响应消息,加入簇响应消息的目的地址为接收到的加入簇请求消息的源地址,源地址为邻居孤立节点自己的单播地址,消息类型为9,消息负载为空,否则,丢弃接收到的加入簇请求消息;
步骤106:在规定时间内,孤立节点判断收到的加入簇响应消息的数量是否等于或者大于其邻居表中邻居孤立节点的总数量,如果是,进行步骤107,否则进行步骤111;
步骤107:孤立节点向所有返回加入簇响应消息的邻居孤立节点发送一个加入簇确认消息,该加入簇确认消息的目的地址为邻居孤立节点的单播地址,源地址为孤立节点的单播地址,消息类型为10,负载为簇ID,即孤立节点的地理坐标,同时将自己标识为簇首节点;
步骤108:在规定时间内,如果邻居孤立节点收到加入簇确认消息,则执行步骤109,否则执行步骤111;
步骤109:邻居孤立节点将自己标识为簇内节点,同时记录加入簇确认消息中的簇ID以及簇首节点的节点ID;
步骤110:孤立节点成功建立簇并转变为簇首节点;
步骤111:结束;
重复执行步骤101~111,直到没有孤立节点为止;然后,簇首节点在网络内广播簇ID消息,该簇ID消息的负载为簇首节点所在簇的簇ID;簇首节点和簇内节点收到簇ID消息后,保存簇ID消息中的簇ID值,网络中所有簇的簇ID值保持不变;
如果一个簇首节点的能量值低于预先设定的阈值,或者离开簇ID所标识的位置,那么符合条件3和条件4的簇内节点转换为簇首节点,原来的簇首节点则变成簇内节点;
条件3:该簇内节点位于簇ID所标识的位置;
条件4:在所有簇ID所标识的位置中的簇内节点中,该簇内节点的当前能量值最大且大于簇首节点;
步骤103,106和108中,规定时间值设置为α·d·t;其中,α为调节系数,α≥1,d为网络的直径,t为两个邻居节点之间传输一条消息的延迟。
2.根据权利要求1所述的一种基于簇的网络数据通信方法,其特征在于,一种与地理位置相关的数据由一个地理坐标和数据ID唯一标识,地理坐标定义该数据产生的地理位置,数据ID定义一种类型的数据;一种类型的数据划分为两个以上数据块,每个数据块由一个数据块ID唯一标识;
簇内节点通过名字地址获取数据,名字地址包括地理坐标、数据ID以及数据块ID集合;
簇内节点CM1的地理坐标为(x1,y1),节点ID为NID1,数据C1的数据ID为CID1,如果CM1需要产生地理位置为(x1,y1)的数据C1的数据块,所述数据块的数据块ID集合为S1,则执行下述过程:
步骤201:开始;
步骤202:簇内节点CM1构建一个名字地址、一个单播地址和一个数据产生消息;在名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为S1;在单播地址中,地理坐标为(x1,y1),节点类型为2,节点ID为NID1;在数据产生消息中,目的地址为名字地址,源地址为单播地址,消息类型为1,负载为空;簇内节点CM1发送该数据产生消息;
步骤203:位于地理坐标(x1,y1)的簇内节点收到该数据产生消息后,产生数据C1中的部分数据块,然后构建名字地址和数据产生响应消息;在名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为簇内节点自己产生的数据块的数据块ID集合;在数据产生响应消息中,目的地址为数据产生消息中的源地址,源地址为构建的名字地址,消息类型为2,负载为产生的数据块;然后簇内节点发送该数据产生响应消息;
步骤204:簇内节点CM1接收到所有的数据产生响应消息后,保存这些数据块;
步骤205:结束。
3.根据权利要求2所述的一种基于簇的网络数据通信方法,其特征在于,
每个簇首节点维护一个用于记录能够提供数据块的节点信息的索引表,一个索引表项包括五个域:地理坐标域、数据ID域、数据块ID集合域、单播地址域和生命周期域;
簇内节点M产生或者获取了地理坐标(x1,y1)的数据C1的部分数据块之后,该数据块的数据块ID集合为S,数据C1的数据ID为CID1,簇内节点执行下述注册操作:
步骤301:开始;
步骤302:如果簇内节点M为共享节点,那么对于簇内节点M所属的每个簇的簇首节点执行下述操作:创建一个注册消息,该注册消息的目的地址为簇首节点的单播地址,源地址为自己的单播地址,消息类型为3,负载为地理坐标(x1,y1),数据ID CID1和数据块ID集合S,发送该注册消息;如果簇内节点M为普通簇内节点,则创建一个注册消息,该注册消息的目的地址为簇内节点M所属簇的簇首节点的单播地址,源地址为簇内节点M自己的单播地址,消息类型为3,负载为地理坐标(x1,y1),数据ID CID1和数据块ID集合S,发送该注册消息;
步骤303:簇首节点收到簇内节点M发送的注册消息后,创建一个索引表项,该索引表项的地理坐标域值为地理坐标(x1,y1),数据ID域值为CID1,数据块ID集合为S,单播地址为注册消息的源地址,生命周期为最大生命周期值;
步骤304:如果簇首节点在该索引表项的生命周期内接收到簇内节点M发送的信标帧,则用信标帧的源地址更新该表项的单播地址域,同时将该索引表项的生命周期设置为最大值,否则,删除该索引表项;
步骤305:结束。
4.根据权利要求3所述的一种基于簇的网络数据通信方法,其特征在于,
在簇内节点M3位于簇CL1时产生或者获取与地理坐标(x1,y1)相关的数据C1的部分数据块,该数据块的数据块ID集合为S3,数据C1的数据ID为CID1,簇CL1的簇首节点为CH1,簇CL2的簇首节点为CH2的条件下,如果簇内节点M3从簇CL1移动到簇CL2,则执行下述注册操作:
步骤401:开始;
步骤402:簇内节点M3创建一个注册消息,该注册消息的目的地址为簇首节点CH2的单播地址,源地址为自己的单播地址,消息类型为3,负载为地理坐标(x1,y1),数据ID CID1和数据块ID集合S3,发送该注册消息;
步骤403:簇首节点CH2收到簇内节点M3发送的注册消息后,创建一个索引表项,该索引表项的地理坐标域值为地理坐标(x1,y1),数据ID域值为CID1,数据块ID集合为S3,单播地址为注册消息的源地址,生命周期为最大生命周期值;
步骤404:如果簇首节点CH2在该索引表项的生命周期内接收到簇内节点M3发送的信标帧,则用信标帧的源地址更新该表项的单播地址域,同时将该索引表项的生命周期设置为最大值,否则,删除该索引表项;
步骤405:结束。
5.根据权利要求4所述的一种基于簇的网络数据通信方法,其特征在于,在簇内节点CM1的地理坐标为(x1,y1),节点ID为NID1,簇内节点CM2的地理坐标为(x2,y2),节点ID为NID2,数据C1由数据ID CID1定义,簇CL1的簇首节点为CH1,簇内节点CM1和簇内节点CM2均属于簇CL1的条件下,如果簇内节点CM2要获取与地理位置(x1,y1)相关的数据C1的部分数据块,这些数据块的数据块ID集合为S2,则执行下述过程:
步骤501:开始;
步骤502:簇内节点CM2创建一个名字地址,一个单播地址和一个数据请求消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为S2;单播地址中,地理坐标为簇内节点CM2当前的地理坐标,节点类型为2,节点ID为NID2;数据请求消息中,目的地址为名字地址,源地址为单播地址,消息类型为4,负载为空;然后簇内节点CM2发送该数据请求消息,如果簇内节点接收到数据请求消息,则执行步骤503,否则执行步骤508;
步骤503:如果簇内节点能提供所请求的所有数据块,则执行步骤504,否则执行步骤505;
步骤504:簇内节点创建一个名字地址和一个数据响应消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为数据请求消息目的地址中的数据块ID集合;数据响应消息中,目的地址为数据请求消息的源地址,源地址为构建的名字地址,消息类型为5,负载为提供的数据块;然后簇内节点发送该数据响应消息,执行步骤521;
步骤505:如果簇内节点能提供所请求的部分数据块,则执行步骤506,否则执行步骤507;
步骤506:簇内节点创建一个名字地址和一个数据响应消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为所能提供的部分数据块的数据块ID集合;数据响应消息中,目的地址为数据请求消息的源地址,源地址为构建的名字地址,消息类型为5,负载为提供的数据块;然后簇内节点发送该数据响应消息,执行步骤521;
步骤507:簇内节点丢弃接收到的数据请求消息,执行步骤521;
步骤508:如果接收到数据请求消息的簇首节点为CH1,则执行步骤510,否则执行步骤509;
步骤509:簇首节点丢弃接收到的数据请求消息,执行步骤521;
步骤510:如果簇首节点CH1的索引表至少有一个表项满足条件5和条件6的索引表项,则执行步骤511,否则执行步骤512;
条件5:该索引表项的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为集合S2的超集;
条件6:该索引表项的单播地址域的地理坐标在簇内节点CM2的一跳范围内;
步骤511:簇首节点CH1丢弃该数据请求消息,执行步骤521;
步骤512:如果簇首节点CH1的索引表所有满足条件5的索引表项都满足条件7,则执行步骤513,否则执行步骤514;
条件7:该索引表项的单播地址域的地理坐标不在簇内节点CM2的一跳范围内;
步骤513:簇首节点CH1选取一个满足条件5的索引表项,创建一个数据请求消息,该数据请求消息的目的地址为该索引表项中的单播地址域值,源地址为接收到的数据请求消息中的源地址,消息类型为4,负载为接收到的数据请求消息中的目的地址,然后发送构建的数据请求消息;目的簇内节点收到数据请求消息后,创建一个数据响应消息,数据响应消息中,目的地址为数据请求消息的源地址,源地址为数据请求消息负载中的地址,消息类型为5,负载为提供的数据块,然后簇内节点发送该数据响应消息,簇首节点CH1首先接收到该数据响应消息,然后将该数据响应消息转发到簇内节点CM2,执行步骤521;
步骤514:判断簇首节点CH1的索引表中是否存在满足条件8和条件9的索引表项,如果是,则执行步骤515,否则执行步骤518;
条件8:该索引表项的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为集合S2的子集;
条件9:满足条件8的索引表项的数据块ID集合的并集是集合S2的超集;
步骤515:满足条件8和条件9的所有索引表项是否满足条件6,如果是,则执行步骤516,否则执行步骤517;
步骤516:簇首节点CH1丢弃该数据请求消息,执行步骤521;
步骤517:对于任一个满足对于满足条件8和条件9但是不满足条件6的索引表项,簇首节点CH1构建一个名字地址和数据请求消息,名字地址中的地址坐标为(x1,y1),数据ID为CID1,数据块ID集合为该索引表项的数据块ID集合,数据请求消息的目的地址为该索引表项中的单播地址,源地址为接收到的数据请求消息中的源地址,消息类型为4,负载为构建的名字地址,然后发送该数据请求消息;目标簇内节点收到数据请求消息后,创建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息的源地址,源地址为数据请求消息负载中的名字地址,消息类型为5,负载为提供的数据块,然后簇内节点发送该数据响应消息;簇首节点CH1首先接收到该数据响应消息,然后将该数据响应消息转发到簇内节点CM2,执行步骤521;
步骤518:判断簇首节点CH1的索引表中是否存在满足条件8和条件6的表项,如果是,则执行步骤519,否则执行步骤520;
步骤519:簇首节点CH1选择所有满足条件8和条件6的索引表项,用数据块ID集合S2减去这些表项的数据块ID集合的并集得到数据块ID集合S5;簇首节点CH1创建一个名字地址和一个请求数据产生消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为S5;请求数据产生消息的目的地址为簇内节点CM1的单播地址,源地址为簇首节点CH1的单播地址,消息类型为6,负载为构建的名字地址,然后发送该请求数据产生消息;簇内节点CM1收到请求数据产生消息后,执行步骤201~205创建消息负载中的名字地址定义的数据块,然后创建一个请求数据产生响应消息,该请求数据产生响应消息的目的地址为接收到的请求数据产生消息的源地址,源地址为请求数据产生消息负载的名字地址,消息类型为7,负载为产生的数据块;然后簇内节点发送该请求数据产生响应消息,簇首节点CH1接收到请求数据产生响应消息后,构建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息中的源地址,源地址为请求数据产生响应消息的源地址,消息类型为5,负载为请求数据产生响应消息的负载,然后簇首节点CH1发送该数据响应消息,执行步骤521;
步骤520:簇首节点CH1创建一个请求数据产生消息,请求数据产生消息的目的地址为簇内节点CM1的单播地址,源地址为簇首节点CH1的单播地址,消息类型为6,负载为数据请求消息的目的地址,然后发送该请求数据产生消息;簇内节点CM1收到请求数据产生消息后,执行步骤201~205产生消息负载中的名字地址定义的数据块,然后创建一个请求数据产生响应消息,该请求数据产生响应消息的目的地址为接收到的请求数据产生消息的源地址,源地址为请求数据产生消息负载的名字地址,消息类型为7,负载为产生的数据块,然后簇内节点发送该请求数据产生响应消息;簇首节点CH1接收到请求数据产生响应消息后,构建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息中的源地址,源地址为请求数据产生响应消息的源地址,消息类型为5,负载为请求数据产生响应消息的负载,然后簇首节点CH1发送该数据响应消息;
步骤521:簇内节点CM2收到所有的数据响应消息后,保存数据块,然后执行步骤301~305进行注册操作;
步骤522:结束。
6.根据权利要求5所述的一种基于簇的网络数据通信方法,其特征在于,簇首节点维护一个聚合表,聚合表项包括名字地址域和单播地址域;
在簇内节点CM1的地理坐标为(x1,y1),节点ID为NID1,簇内节点CM2的地理坐标为(x2,y2),节点ID为NID2,数据C1由数据ID CID1定义,簇CL1的簇首节点为CH1,簇内节点CM1属于簇CL1,簇内节点CM2属于簇CL2的条件下,如果簇内节点CM2要获取与地理位置(x1,y1)相关的数据C1的部分数据块,这些数据块的数据块ID集合为S2,则执行下述过程:
步骤601:开始;
步骤602:簇内节点CM2创建一个名字地址,一个单播地址和一个数据请求消息;名字地址中,地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为S2;单播地址中,地理坐标为簇内节点CM2当前的地理坐标,节点类型为2,节点ID为NID2;数据请求消息中,负载为构建名字地址,源地址为构建的单播地址,消息类型为4;如果簇内节点CM2为普通簇内节点,则数据请求消息的目的地址为簇首节点CH2的单播地址,否则,目的地址为簇内节点CM2所属的所有簇首节点中距离(x1,y1)距离最近的簇首节点的单播地址;簇内节点CM2发送数据请求消息;
步骤603:簇首节点收到数据请求消息后,查看聚合表,判断是否存在符合条件10的表项,是则执行步骤604,否则执行步骤605;
条件10:该聚合表项的名字地址的坐标域值为(x1,y1),数据ID为CID1,数据块ID集合为数据请求消息负载中的名字地址的数据块ID集合的超集;
步骤604:簇首节点创建一个聚合表项,该聚合表项的名字地址域值为数据请求消息负载中的名字地址,单播地址为数据请求消息的源地址,执行步骤615;
步骤605:簇首节点创建一个聚合表项,该聚合表项的名字地址域值为数据请求消息负载中的名字地址,单播地址为数据请求消息的源地址,然后判断是否有满足条件11的索引表项,如果是,则执行步骤606,否则执行步骤607;
条件11:该索引表项的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为数据请求消息负载中的名字地址的数据块ID集合的超集;
步骤606:簇首节点构建一个数据请求消息,数据请求消息的目的地址为该索引表项中的单播地址,源地址为簇首节点的单播地址,消息类型为4,负载为接收到的数据请求消息的负载,然后发送该数据请求消息;目标簇内节点收到数据请求消息后,创建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息的源地址,源地址为数据请求消息负载中的名字地址,消息类型为5,负载为提供的数据块,然后簇内节点发送该数据响应消息,簇首节点接收到该数据响应消息后,执行步骤615;
步骤607:簇首节点的索引表中是否存在满足条件12的索引表项,如果是,则执行步骤608,否则执行步骤612;
条件12:该索引表项的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为数据请求消息负载中的名字地址的数据块ID集合的子集;
步骤608:对于任一个满足条件12的索引表项,簇首节点构建一个名字地址和数据请求消息,名字地址中的地址坐标为(x1,y1),数据ID为CID1,数据块ID集合为该表项的数据块ID集合与接收到的数据请求消息中负载中的名字地址的数据块ID集合的交集,数据请求消息的目的地址为该表项中的单播地址,源地址为簇首节点的单播地址,消息类型为4,负载为构建的名字地址,然后发送该数据请求消息;
步骤609:目标簇内节点收到数据请求消息后,创建一个数据响应消息,该数据响应消息的目的地址为接收到的数据请求消息的源地址,源地址为数据请求消息负载中的名字地址,消息类型为5,负载为提供的数据块,簇内节点发送该数据响应消息;
步骤610:簇首节点判断满足条件12的所有索引表项的数据块ID集合的并集是否为接收到的数据请求消息中负载中的名字地址的数据块ID集合的超集,如果是,执行步骤615,否则执行步骤611;
步骤611:簇首节点构建一个名字地址,名字地址中的地理坐标为(x1,y1),数据ID为CID1,数据块ID集合为接收到的数据请求消息中负载中的名字地址的数据块ID集合减去满足条件12的所有索引表项的数据块ID集合的并集;然后簇首节点在本簇内选择满足条件13的共享节点并构建一个数据请求消息,该数据请求消息的目的地址为共享节点的单播地址,源地址为簇首节点的单播地址,消息类型为4,负载为构建的名字地址,然后发送该数据请求消息;目标共享节点收到数据请求消息后,从自己所属的簇中选择距离地理坐标(x1,y1)最近的簇ID,将数据请求消息的目的地址更新为该簇的簇首节点的单播地址,发送该数据请求消息,执行步骤603;
条件13:在簇首节点所在簇的所有共享节点中,该共享节点所属簇的簇ID距离地理坐标(x1,y1)最近;
步骤612:判断簇首节点是否为簇首节点CH1,如果是,执行步骤614,否则执行步骤613;
步骤613:簇首节点在本簇内选择满足条件13的共享节点并构建一个数据请求消息,该数据请求消息的目的地址为共享节点的单播地址,源地址为簇首节点的单播地址,消息类型为4,负载为接收到的数据请求消息负载中的名字地址,然后发送该数据请求消息;目标共享节点收到数据请求消息后,从自己所属的簇中选择距离地理坐标(x1,y1)最近的簇ID,将数据请求消息的目的地址更新为该簇簇首节点的单播地址,发送该数据请求消息,执行步骤603;
步骤614:簇首节点CH1创建一个请求数据产生消息,请求数据产生消息的目的地址为簇内节点CM1的单播地址,源地址为簇首节点CH1的单播地址,消息类型为6,负载为数据请求消息负载的名字地址,然后发送该请求数据产生消息;簇内节点CM1收到请求数据产生消息后,执行步骤201~205产生消息负载中的名字地址定义的数据块,然后创建一个请求数据产生响应消息,该请求数据产生响应消息的目的地址为接收到的请求数据产生消息的源地址,源地址为请求数据产生消息负载的名字地址,消息类型为7,负载为产生的数据块,然后发送该请求数据产生响应消息,簇首节点CH1接收到请求数据产生响应消息后,构建一个数据响应消息,该数据响应消息的目的地址为空,源地址为请求数据产生响应消息的源地址,消息类型为5,负载为请求数据产生响应消息的负载;
步骤615:如果簇内节点CM2收到数据响应消息,执行步骤617,否则执行步骤616;
步骤616:对于每个符合条件14的聚合表项,簇首节点从该聚合表项的名字地址的数据块ID集合中减去接收到的数据响应消息源地址的数据块ID集合,然后构建一个数据响应消息;该数据响应消息的源地址为接收到的数据响应消息中的源地址,目的地址为该表项的单播地址,消息类型为5,负载为源地址为接收到的数据响应消息中的负载;发送该数据响应消息,如果该聚合表项的名字地址的数据块ID集合为空,则删除该聚合表项;最后,执行步骤615;
条件14:该聚合表项的名字地址的坐标域值为(x1,y1),数据ID为CID1,数据块ID集合为数据响应消息源地址的数据块ID集合的超集;
步骤617:簇内节点CM2保存数据响应消息中的数据块,簇内节点CM2获取了所有的数据响应消息后,执行步骤301~305进行注册操作;
步骤618:结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710196605.6A CN106993321B (zh) | 2017-03-29 | 2017-03-29 | 一种基于簇的网络数据通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710196605.6A CN106993321B (zh) | 2017-03-29 | 2017-03-29 | 一种基于簇的网络数据通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106993321A true CN106993321A (zh) | 2017-07-28 |
CN106993321B CN106993321B (zh) | 2020-03-24 |
Family
ID=59412042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710196605.6A Active CN106993321B (zh) | 2017-03-29 | 2017-03-29 | 一种基于簇的网络数据通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106993321B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109005567A (zh) * | 2018-09-14 | 2018-12-14 | 常熟理工学院 | 一种基于簇的移动网络实现方法 |
CN109041158A (zh) * | 2018-06-30 | 2018-12-18 | 沈阳师范大学 | 一种基于数据聚合的层次路由协议的无线传感器神经网络智能控制方法及系统 |
CN109257789A (zh) * | 2018-09-14 | 2019-01-22 | 常熟理工学院 | 一种基于多跳簇的车载网数据通信方法 |
CN109327820A (zh) * | 2018-10-24 | 2019-02-12 | 常熟理工学院 | 一种基于车载云的网络资源查询和分配方法 |
CN110138658A (zh) * | 2019-04-12 | 2019-08-16 | 常熟理工学院 | 一种基于簇的网络路由通信方法 |
CN112491827A (zh) * | 2020-11-13 | 2021-03-12 | 常熟理工学院 | 一种基于簇的物联网数据访问系统的实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101877820A (zh) * | 2009-09-07 | 2010-11-03 | 广州市香港科大霍英东研究院 | 无线网基于动态分簇算法的多个无设备物体追踪方法 |
CN102158983A (zh) * | 2011-05-04 | 2011-08-17 | 常熟理工学院 | 一种构建6LoWPAN无线传感器网络的实现方法 |
CN103634870A (zh) * | 2013-12-10 | 2014-03-12 | 辽宁工业大学 | 无线医疗传感器网络动态分簇方法 |
-
2017
- 2017-03-29 CN CN201710196605.6A patent/CN106993321B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101877820A (zh) * | 2009-09-07 | 2010-11-03 | 广州市香港科大霍英东研究院 | 无线网基于动态分簇算法的多个无设备物体追踪方法 |
CN102158983A (zh) * | 2011-05-04 | 2011-08-17 | 常熟理工学院 | 一种构建6LoWPAN无线传感器网络的实现方法 |
CN103634870A (zh) * | 2013-12-10 | 2014-03-12 | 辽宁工业大学 | 无线医疗传感器网络动态分簇方法 |
Non-Patent Citations (1)
Title |
---|
王晓喃等: "无线传感器网络IPv6地址自动配置方案的研究与设计", 《铁道学报》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109041158A (zh) * | 2018-06-30 | 2018-12-18 | 沈阳师范大学 | 一种基于数据聚合的层次路由协议的无线传感器神经网络智能控制方法及系统 |
CN109005567A (zh) * | 2018-09-14 | 2018-12-14 | 常熟理工学院 | 一种基于簇的移动网络实现方法 |
CN109257789A (zh) * | 2018-09-14 | 2019-01-22 | 常熟理工学院 | 一种基于多跳簇的车载网数据通信方法 |
CN109005567B (zh) * | 2018-09-14 | 2020-04-17 | 常熟理工学院 | 一种基于簇的移动网络实现方法 |
CN109327820A (zh) * | 2018-10-24 | 2019-02-12 | 常熟理工学院 | 一种基于车载云的网络资源查询和分配方法 |
CN109327820B (zh) * | 2018-10-24 | 2021-06-22 | 常熟理工学院 | 一种基于车载云的网络资源查询和分配方法 |
CN110138658A (zh) * | 2019-04-12 | 2019-08-16 | 常熟理工学院 | 一种基于簇的网络路由通信方法 |
CN110138658B (zh) * | 2019-04-12 | 2021-01-29 | 常熟理工学院 | 一种基于簇的网络路由通信方法 |
CN112491827A (zh) * | 2020-11-13 | 2021-03-12 | 常熟理工学院 | 一种基于簇的物联网数据访问系统的实现方法 |
CN112491827B (zh) * | 2020-11-13 | 2021-09-21 | 常熟理工学院 | 一种基于簇的物联网数据访问系统的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106993321B (zh) | 2020-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106993321A (zh) | 一种基于簇的网络数据通信方法 | |
CN106792978B (zh) | 一种基于云的智能车联网数据通信方法 | |
CN106973105A (zh) | 一种基于定位信息的车载云数据通信方法 | |
CN109257789B (zh) | 一种基于多跳簇的车载网数据通信方法 | |
US8427938B2 (en) | Virtual local area network server redundancy and failover to enable seamless mobility in the mobility domain | |
CN105246118B (zh) | 一种基于定位信息的无线网络通信实现方法 | |
CN107071010A (zh) | 一种基于车载云的网络数据通信方法 | |
CN105119828B (zh) | 一种快速的无线网络路由实现方法 | |
CN106507428A (zh) | 一种未来移动网络的数据通信方法 | |
CN108616904A (zh) | 一种无线频点管理方法及系统 | |
CN110138663A (zh) | 一种以数据为中心的新一代网络实现方法 | |
CN106973017A (zh) | 一种快速的网络数据通信方法 | |
CN109246785A (zh) | 一种未来移动网络的实现方法 | |
CN109005567A (zh) | 一种基于簇的移动网络实现方法 | |
CN110138658A (zh) | 一种基于簇的网络路由通信方法 | |
CN112105072A (zh) | 物联网通信系统及其构建方法 | |
CN107508927A (zh) | 一种基于云的未来车联网数据通信方法 | |
CN107979645A (zh) | 一种物联网实现方法 | |
CN109089241A (zh) | 一种车载网的数据通信实现方法 | |
CN106604350A (zh) | 一种在配用电无线自组织网中建立树形路由的方法 | |
CN110401911B (zh) | 一种基于命名数据网络的车载云实现方法 | |
CN107786946A (zh) | 一种集群业务数据处理方法及集群基站 | |
CN110233889A (zh) | 一种基于缓存机制的网络数据通信实现方法 | |
CN104244230B (zh) | 下一代无线网络的组播通信实现方法 | |
CN110139304B (zh) | 基于孤立度和非mpr节点的mpr集合选择方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |