CN115002120B - 一种基于数据同步的集群网络中主节点的确定方法 - Google Patents

一种基于数据同步的集群网络中主节点的确定方法 Download PDF

Info

Publication number
CN115002120B
CN115002120B CN202210921949.XA CN202210921949A CN115002120B CN 115002120 B CN115002120 B CN 115002120B CN 202210921949 A CN202210921949 A CN 202210921949A CN 115002120 B CN115002120 B CN 115002120B
Authority
CN
China
Prior art keywords
node
message
nodes
key
timestamp
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.)
Active
Application number
CN202210921949.XA
Other languages
English (en)
Other versions
CN115002120A (zh
Inventor
王克飞
徐超
汤堃
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Puhuizhizao Technology Co ltd
Original Assignee
Puhuizhizao Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Puhuizhizao Technology Co ltd filed Critical Puhuizhizao Technology Co ltd
Priority to CN202210921949.XA priority Critical patent/CN115002120B/zh
Publication of CN115002120A publication Critical patent/CN115002120A/zh
Application granted granted Critical
Publication of CN115002120B publication Critical patent/CN115002120B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/46Cluster building
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Abstract

一种基于数据同步的集群网络中主节点的确定方法,属于集群组网控制技术领域,步骤S1,每个节点评估自身的节点属性,并将每个节点属性乘以该节点属性对应的权重系数,生成该节点的权重值Wi;步骤S2,对所有节点进行分群形成集群并确定每个集群中唯一的主节点;步骤S3,主节点离线后的重新确定。本方案,大大减少主节点确定流程所需的消息数量,可以处理共识问题并降低主节点重新确定的频率。

Description

一种基于数据同步的集群网络中主节点的确定方法
技术领域
本发明属于集群组网控制技术领域,具体为一种基于数据同步的集群网络中主节点的确定方法。
背景技术
在自组网中,每个节点可以在没有集中式结构的帮助下与其他节点自由通信,同时,每个节点可以自由的进出网络,这将导致网络拓扑结构的变化。在待回复的消息超时后,则将未回复的节点排除在网络之外,此时,需要更新路由信息,以方便节点选择正确的路由信息用以传递消息。然而,更新路由信息,则将消耗网络流量并增加节点负担。此时,可以在节点之间建立集群的结构,将一组节点作为块状结构,形成集群。网络集群化是为计算机服务器或网络设备提供高可用性和增强性能的方式。集群网络中主节点,负责传送节点之间的消息和维护路由信息。由于主节点需要处理和消化大量的信息,需要保持主节点的处理能力以及信息传输能力,因此,如何确定主节点,非常重要。
传统的主节点的确定方法,都是基于节点ID进行识别,但是,并未阐明节点ID的获取方式。例如公开号为CN101471885A的中国发明专利,公开了一种具有状态同步的集群的虚拟组播路由,在该方案中,集群系统包括局域网/广域网、目的设备、源设备、组播路由器以及组播集群,组播集群包括集群成员和集群主设备,集群的一个成员可静态或动态地指定集群主设备。该方案并未阐明集群主设备的确定方式,并且,其假设集群网络中,消息的发送没有产生延迟,而实际会有延迟,这将导致共识问题,另外频繁的改动集群主设备,还将导致网络的不稳定。
发明内容
针对上述情况,为克服现有技术的缺陷,本发明提供一种基于数据同步的集群网络中主节点的确定方法。
为实现上述目的,本发明提供如下技术方案:
一种基于数据同步的集群网络中主节点的确定方法,包括以下步骤:
步骤S1,每个节点评估自身的节点属性,并将每个节点属性乘以该节点属性对应的权重系数,生成该节点的权重值Wi
步骤S2,对所有节点进行分群形成集群并确定每个集群中唯一的主节点;
步骤S3,主节点离线后的重新确定,包括:
步骤S301,任意节点,发现集群主节点离线后,成为源节点,并向其传输范围内的邻居节点发送带有源节点权重值的提案消息;
步骤S302,收到提案消息的邻居节点,首先验证当前的主节点是否在线:当主节点不在线,则执行步骤S303;否则,邻居节点回复源节点停止提案流程;
步骤S303,邻居节点,对于收到的第一个提案消息,将该提案消息的发送者认定为该邻居节点的父节点;然后将提案消息发送给除父节点之外的传输范围内的所有邻居节点;
步骤S304,重复步骤S303建立树状的节点传送结构,提案消息被传送到所有节点;
步骤S305,收到提案消息的节点,比较自身的节点权重值和提案消息中的源节点权重值的大小:如果提案消息中的源节点权重值不小于自身的节点权重值,则收到提案消息的节点向其父节点发送Reply_ok消息;否则发送含有的自身节点权重值的Reply_deny消息;
步骤S306,如果源节点有收到Reply_deny消息,进行检索并找出最大权重值以及该最大权重值所在节点,向最大权重值所在节点发送授权消息;否则,最大权重值所在节点为源节点;
步骤S307,最大权重值所在节点,向其传输范围内的邻居节点发送终局提案消息;
步骤S308,如果最大权重值所在节点收到的Reply_ok消息的总数大于集群中节点总数的一半,则宣布自己为主节点,向集群中的所有其它节点发送协调消息。
节点属性,包括节点度Di、剩余电池电量Pi、信号强度Si;
权重值Wi=w1Di+w2Pi+w3Si;w1+w2+w3=1;其中,w1是节点度权重系数,w2是剩余电池电量权重系数,w3是信号强度权重系数;
节点度Di是节点在其传输范围内的邻居节点连接数之和,即:
Figure 111111DEST_PATH_IMAGE001
;其中,N(i)表示一组节点的集群,其包含有节点i;i’表示集群N(i)中除了节点i之外的一个节点;dist(i,i’)表示节点i和节点i’之间的距离;txrange表示节点i的传输范围;
剩余电池电量Pi = EnergyRatioL × MAX_Range;其中,EnergyRatio为节点的剩余电量,以百分比表示;L为惩罚系数;MAX_Range为节点的最大电量;L与EnergyRatio的关联公式如下:
Figure 434776DEST_PATH_IMAGE002
信号强度Si,是节点的邻居报告的信号强度值相加的和,即:
Figure 948934DEST_PATH_IMAGE003
;其中,RSSI(i,i’)表示节点i和节点i’之间的信号强度指示值。
步骤S2,包括:
步骤S201,所有节点都会持续收到邻居节点所发出的 beacon封包,beacon封包的格式为:
beacon{NID||LNID||Seed||FlagEnergy||Energy||Wi||Timestamp};
其中,NID表示发送封包的节点的ID编号,且ID编号唯一不可重复;LNID表示发送封包的节点所在集群的主节点ID编号,如果发送该beacon封包的节点当前处于未分群的状态,则LNID为0;Seed表示一布林值,若 Seed 为 1 代表发送该beacon封包的节点评估自己有能力担任主节点,并推举自己成为主节点的候选者,若 Seed 为0 则代表发送该beacon封包的节点并未做出推举自己的动作,必须参加之后的主节点的确定流程;FlagEnergy 为一布林值,若为 1,代表发送该beacon封包的节点拥有持续电源供应,若为 0,则代表电源有线;Energy 代表发送该beacon封包的节点的剩余能源量;Wi表示发送该beacon封包的节点的权重值,预设值为 0;Timestamp为发出beacon封包的时间戳记;
步骤S202,令Seed为1的节点为潜在主节点;潜在主节点周围的邻居节点收到Seed为1的beacon封包后,发送 JOIN 封包表示加入该潜在主节点所开创的集群的意愿,JOIN封包格式如下:
JOIN{NID||LNID||session_key(Nonce||Timestamp||KeyWPA)||HMACsession_key(NID||KeyWPA||Secret||Timestamp)||Timestamp};
Nonce 为随机值;KeyWPA 为注册过程中得到的网络密匙;HMACsession_key表示消息验证码;Nonce、KeyWPA、Timestamp和HMACsession_key均通过邻居节点和潜在主节点共有的会话密钥加密后附在 JOIN封包中;
若某一节点收到多于一个 Seed 值为 1 的beacon封包后,该节点将选择信号强度较强者发送 JOIN 封包;
步骤S203,潜在主节点使用邻居节点和潜在主节点共有的会话密钥取得被加密的Nonce值,然后向该邻居节点发送GRANT封包以代表同意邻居节点的加入;GRANT 封包格式如下:
GRANT{LNID||session_keyi,SeedLeader(Nonce||Timestamp)||Timestamp};
Nonce和Timestamp均被邻居节点和潜在主节点共有的会话密钥session_key加密;
同样握有会话密钥session_key的邻居节点收到后解开取得 Nonce,若与当初发送的值一样,代表此潜在主节点为合法节点,邻居节点更改自身的LNID为潜在主节点的ID编号,宣告已加入某一具有主节点的集群。
步骤S2,还包括:
步骤S204,若两个潜在主节点彼此在通讯范围之内,两个潜在主节点互相朝对方发送CONFLICT封包;否则,进行下一步骤;
CONFLICT封包格式如下:
CONFLICT{NID||Wi||HMACsession_key(NID||Di||Timestamp)||Timestamp};
HMACsession_key是哈希运算消息认证码;将NID、Wi、Timestamp用发送方与接收方共有的Diffie-Hellman密钥作 HMAC杂凑;
当双方收到 CONFLICT封包后,比对封包中的权重值Wi和自己的权重值Wi,若自己的权重值Wi较高,则发出KEEP 封包表示欲保持潜在主节点的地位,若权重值Wi相同则以ID较小者维持潜在主节点地位;KEEP 封包格式如下:
KEEP(NID|| HMACsession_key(NID|| Timestamp)||Timestamp);
将NID、Timestamp用发送方与接收方共有的Diffie-Hellman密钥作HMAC杂凑;
若在CONFLICT封包的比较程序结果出来之前,已经先有普通节点加入权重值Wi较小的潜在主节点,则在CONFLICT封包的比较程序中落败的潜在主节点必须发送CANCEL封包告知已加入的节点,令其回复到未分群状态,CANCEL封包格式如下:
CANCEL(NID|| HMACsession_key(NID|| Timestamp)||Timestamp);
将NID、Timestamp用发送方与接收方共有的Diffie-Hellman密钥作HMAC杂凑。
步骤S2,还包括:
步骤S205,若某一集群中的节点,同时被其他集群中的节点所记录或者感应,则该节点为网关节点;网关节点,将发送GW封包给邻近集群中的主节点;GW封包格式如下:
GW(NID||LNID||HMACsession_key(NID||LNID||Timestamp)||Timestamp);
LNID 代表该节点所能感应到其它集群的主节点集合;将NID、LNID 用发送方与接收方共有的Diffie-Hellman密钥作HMAC杂凑;
步骤S206,重复执行步骤S201~步骤S205,直到所有节点成为集群的主节点或者成员节点,此时,所有节点的beacon封包中LNID 均不为0,分群程序结束。
步骤S302中,收到提案消息的邻居节点,向当前的主节点发送CHECK_EXIST消息,验证当前的主节点是否离线;该邻居节点在规定时间内收到主节点回复的CHECK_EXIST_ACK消息,则表示当前的主节点在线,该邻居节点向源节点发送PROPOSAL_STOP消息,源节点停止提案流程。
步骤S303中,如果邻居节点,收到不同源节点发送的提案消息,或者源节点,收到其它源节点发送的提案消息,则表明,同一时间段有两个以上源节点发送了提案消息,此时,邻居节点或源节点比较源节点权重值的大小,并向权重值小的源节点发送反馈消息,权重值小的源节点收到反馈消息之后停止提案流程。
步骤S307中,收到终局提案消息的节点,向其父节点发送Reply_ok消息;收到Reply_ok消息或Reply_deny消息的父节点将该消息传送给更上一级的父节点,直到Reply_ok消息或Reply_deny消息最终传送至最大权重值所在节点。
与现有技术相比,本发明的有益效果是:
1.确定了集群的组网方式,以及主节点的确认方式,大大减少主节点确定流程所需的消息数量。
2. 本方案,每个步骤只需要在容许时间间隔内完成即可,只有一个提案被选中,保证系统的鲁棒性,且消息传递的时间可以延长,可以保持了数据和状态的同步性。
3.借鉴了Paxos概念,可以处理共识问题并降低主节点重新确定的频率。
4.权重值可以根据实际情况调整,以适应不同规模的网络的主节点的确定流程。
附图说明
图1是集群中主节点的重新确定的示例图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
Paxos模型是第一个能够保证正确性且容错的共识算法模型。只要存在节点故障,就不可能存在一个可终止的共识算法。因此Paxos也做出了一定的牺牲:Paxos牺牲了一定的活性从而保证了系统的安全性,只要有半数以上的节点恢复至同步状态之后,就可以推进共识,完成终止。
在Paxos模型中进程一共有三种角色,分别是:提案者(Proposers)、接受者(Acceptors)、学习者(Learners)。存在一个或者多个节点同时想要竞选成为提案者,而每一轮共识最终只会选出一个提案者进行最终提案值的选择。
Paxos模型一共分为两个阶段,分别是:
1,提案阶段:
在这个阶段内,提案者会向接受者发送准备请求,准备请求中带有一个决策值n。决策值n通常为节点ID或者序列号。
2,接受阶段:
提案者收集其他接受者的投票。最终,提案者会宣布选定的最终决策值。如果能够达成一个最终决策的话,该决策值会被传递到对此感兴趣的学习者。
因此,Paxos是一个保证了公平性的算法,即所有节点都可以竞选成为提案者(Proposers),没有哪个节点拥有特殊的权利。
公开号为CN103916419A的中国发明专利,公开了一种paxos实例更新方法,关于Paxos模型的具体内容,可以参考该专利文本。传统的Paxos模型,存在高流量、高操作的问题,实务中,执行效率低,难以实现。
一种基于数据同步的集群网络中主节点的确定方法,包括以下步骤:
步骤S1,计算每个节点的权重值Wi:每个节点评估自身的节点属性,并将每个节点属性乘以该节点属性对应的权重系数,生成该节点的权重值Wi
传统的主节点的确定方法,都是基于节点ID进行识别,但是,节点ID是随机分配的,并没有意义。因此,本方案,通过评估节点的属性(例如节点度、剩余电池电量、传输功率)并生成对应的权重值,并根据权重值进行排名,选取权重值最大的节点作为集群的主节点。
节点属性,包括节点度、剩余电池电量、信号强度。
节点度,为节点与其所在集群中所有其它节点之间的连接数之和。节点度越高,则表示该节点在其所在集群中的关系越多,对该集群具有更多的影响力。
对于节点i,其节点度Di是在其传输范围内的邻居节点连接数之和,即:
Figure 140881DEST_PATH_IMAGE001
其中,N(i)表示一组节点的集群,其包含有节点i;i’表示集群N(i)中除了节点i之外的一个节点;dist(i,i’)表示节点i和节点i’之间的距离;txrange表示节点i的传输范围。
剩余电池电量Pi,对于移动节点而言,剩余电池电量直接影响了该节点的在线时长。主节点,应当具有较长的持续在线时长。剩余电池电量Pi的设置,使得本方案适用于移动网络。对于非移动网络(插电使用),则可以将剩余电池电量权重系数设置为0。
Pi = EnergyRatioL × MAX_Range;
其中,EnergyRatio为节点的剩余电量,简化成以百分比表示,百分比越高,代表节点的剩余电量越充足;L为惩罚系数;MAX_Range为节点的最大电量;L与EnergyRatio的关联公式如下:
Figure 689674DEST_PATH_IMAGE002
惩罚系数的设置,使得电力匮乏的节点,其加权分数会逊于剩余电力充足的节点,降低电力匮乏的节点成为主节点的机率。
信号强度Si,节点i的传输功率值,由其邻居报告的信号强度值相加的和,信号强度值采用接收的信号强度指示(RSSI)表示,即:
Figure 433508DEST_PATH_IMAGE003
其中,RSSI(i,i’)表示节点i和节点i’之间的信号强度指示值。
权重值Wi,节点的每项属性乘以该属性对应的权重系数,生成该节点的权重值Wi。
Wi=w1Di+w2Pi+w3Si;w1+w2+w3=1;
其中,w1是节点度权重系数,w2是剩余电池电量权重系数,w3是信号强度权重系数。
步骤S2,对所有节点进行分群形成集群并确定每个集群中唯一的主节点,包括:
步骤S201,所有节点都会持续收到邻居节点所发出的 beacon封包,beacon封包的格式为:
beacon{NID||LNID||Seed|| FlagEnergy ||Energy || Wi||Timestamp};
其中NID表示发送该beacon封包的节点的ID编号,且ID编号唯一不可重复;LNID表示发送该beacon封包的节点所在集群的主节点ID编号,如果发送该beacon封包的节点当前处于未分群的状态,则LNID为0;Seed表示一布林值,若 Seed 为 1 代表发送该beacon封包的节点评估自己有能力担任主节点,并推举自己成为主节点的候选者,若 Seed 为0 则代表发送该beacon封包的节点并未做出推举自己的动作,必须参加之后的主节点的确定流程,至于该节点评估自己有能力担任主节点,可由其制造商在产品出场前设定、或由使用者自行设定;FlagEnergy 为一布林值,若为 1,代表发送该beacon封包的节点拥有持续电源供应(如插座),若为 0,则代表电源有线;Energy 代表发送该beacon封包的节点的剩余能源量;Wi表示发送该beacon封包的节点的权重值,预设值为 0;Timestamp为发出beacon封包的时间戳记。
步骤S202,令Seed为1的节点为潜在主节点;潜在主节点周围的邻居节点收到Seed为1的beacon封包后,发送 JOIN 封包表示加入该潜在主节点所开创的集群的意愿,JOIN封包格式如下:
JOIN{NID||LNID||session_key(Nonce||Timestamp||KeyWPA)||HMACsession_key(NID||KeyWPA||Secret||Timestamp)||Timestamp};
JOIN封包格式中,NID代表发出JOIN封包节点的ID编号;LNID代表欲加入的潜在主节点的ID编号;Nonce为随机值;而Timestamp为JOIN封包发送时的时间戳记;KeyWPA 为注册过程中得到的网络密匙(WPA Presharedkey);HMACsession_key表示消息验证码;Nonce、KeyWPA、Timestamp和HMACsession_key均通过邻居节点和潜在主节点共有的会话密钥加密后附在 JOIN封包中。
若某一节点收到多于一个Seed值为1的beacon封包后,该节点将选择信号强度较强者发送JOIN封包。
步骤S203,潜在主节点收到邻居节点的 JOIN封包后,使用邻居节点和潜在主节点共有的会话密钥取得被加密的Nonce值,然后向该邻居节点发送GRANT封包以代表同意邻居节点的加入;GRANT 封包格式如下:
GRANT{LNID||session_keyi,SeedLeader(Nonce||Timestamp)||Timestamp};
LNID代表潜在主节点的ID编号;Nonce为前次从邻居节点的JOIN 封包取得的随机值;Timestamp为发送GRANT 封包时的时间戳记;Nonce和Timestamp均被邻居节点和潜在主节点共有的会话密钥session_key加密。
只有同样握有会话密钥session_key的邻居节点收到后可解开,解开之后取得Nonce,若与当初发送的值一样,代表此潜在主节点为合法节点,邻居节点更改自身的LNID为潜在主节点的 ID编号,宣告已加入某一具有主节点的集群。
步骤S204,若两个潜在主节点彼此在通讯范围之内,则必须有一方必须放弃潜在主节点身份,成为普通节点;否则,进行步骤S205。
此时,两个潜在主节点互相朝对方发送CONFLICT封包,CONFLICT封包格式如下:
CONFLICT{NID||Wi||HMACsession_key(NID||Di||Timestamp)||Timestamp};
NID为发送 CONFLICT封包的节点的ID编号;Wi为发送节点的权重值;Timestamp为时间戳记;HMACsession_key是哈希运算消息认证码;将NID、Wi、Timestamp用发送方与接收方共有的Diffie-Hellman密钥作HMAC杂凑。
当双方收到CONFLICT封包后,比对封包中的权重值Wi和自己的权重值Wi,若自己的权重值Wi较高,则发出KEEP 封包表示欲保持潜在主节点的地位,若权重值Wi相同则以ID较小者维持潜在主节点地位;KEEP 封包格式如下:
KEEP(NID|| HMACsession_key(NID|| Timestamp)||Timestamp);
NID 为发送KEEP封包的节点 ID编号;Timestamp 为时间戳记;HMACsession_key是哈希运算消息认证码;将NID、Timestamp用发送方与接收方共有的Diffie-Hellman密钥作HMAC杂凑。
若在CONFLICT封包的比较程序结果出来之前,已经先有普通节点加入权重值Wi较小的潜在主节点,则在CONFLICT封包的比较程序中落败的潜在主节点必须发送CANCEL封包告知已加入的节点,令其回复到未分群状态,CANCEL封包格式如下:
CANCEL(NID|| HMACsession_key(NID|| Timestamp)||Timestamp);
NID 为发送CANCEL封包的节点 ID编号;Timestamp为时间戳记;HMACsession_key是哈希运算消息认证码;将NID、Timestamp用发送方(权重值Wi较小的潜在主节点)与接收方(先加入的节点)共有的Diffie-Hellman密钥作HMAC杂凑。
步骤S205,若某一集群中的节点,同时被其他集群中的节点所记录或者感应,则该节点为网关节点;网关节点,将发送GW封包给邻近集群中的主节点;GW封包格式如下:
GW(NID||LNID|| HMACsession_key(NID||LNID||Timestamp)||Timestamp);
NID 为发送GW封包的节点ID编号;LNID 代表该节点所能感应到其它集群的主节点集合;Timestamp 为时间戳记;HMACsession_key是哈希运算消息认证码;将NID、LNID 用发送方与接收方共有的Diffie-Hellman密钥作HMAC杂凑。
步骤S206,重复执行步骤S201~步骤S205,陆续有节点成为集群的主节点或者成员节点,每当有节点加入群集,意味着剩余的邻近未分群节点可从持续接收的beacon封包察觉;比对未分群节点和其他节点的权重值Wi,直到所有节点成为集群的主节点或者成员节点,此时,所有节点的beacon封包中LNID 均不为0,分群程序结束。
步骤S3,主节点离线后的重新确定。
步骤S301,提案流程:任意节点,发现集群主节点离线后,成为源节点;源节点向其传输范围内的邻居节点发送带有源节点权重值的提案(Proposal)消息,然后等待其它节点的回复。
步骤S302,收到提案消息的邻居节点,首先验证当前的主节点是否在线:当主节点不在线,则执行步骤S303;否则,邻居节点回复源节点停止提案流程。
具体的,收到提案消息的邻居节点,向当前的主节点发送CHECK_EXIST消息,验证当前的主节点是否离线。该邻居节点在规定时间内收到主节点回复的CHECK_EXIST_ACK消息,则表示当前的主节点在线,该邻居节点向源节点发送PROPOSAL_STOP消息,源节点停止提案流程。
步骤S303,邻居节点,对于收到的第一个提案消息,将该提案消息的发送者认定为该邻居节点的父节点;然后将提案消息发送给除父节点之外的传输范围内的所有邻居节点;
如果邻居节点,收到不同源节点发送的提案消息,或者源节点,收到其它源节点发送的提案消息,则表明,同一时间段有两个以上源节点发送了提案消息,此时,邻居节点或源节点比较源节点权重值的大小,并向权重值小的源节点发送反馈消息,权重值小的源节点收到反馈消息之后停止提案流程。
步骤S304,重复步骤S303建立树状的节点传送结构,提案消息被传送到所有节点。
步骤S305,收到提案消息的节点,比较自身的节点权重值和提案消息中的源节点权重值的大小:如果提案消息中的源节点权重值不小于自身的节点权重值,则收到提案消息的节点向其父节点发送Reply_ok消息;否则收到提案消息的节点向其父节点发送含有的自身节点权重值的Reply_deny消息;收到Reply_ok消息或Reply_deny消息的父节点将该消息传送给更上一级的父节点,直到Reply_ok消息或Reply_deny消息最终传送至源节点。
步骤S306,源节点收到Reply_ok消息或Reply_deny消息后,如果源节点有收到Reply_deny消息,则对所有的Reply_deny消息,进行检索并找出最大权重值以及该最大权重值所在节点,然后通过步骤S304建立的树状的节点传送结构,向最大权重值所在节点发送授权(Grant)消息;否则,最大权重值所在节点为源节点。
步骤S307,最大权重值所在节点,向其传输范围内的邻居节点发送终局提案消息;然后执行并重复步骤S303,建立终局的树状的节点传送结构,终局提案消息被传送到所有节点;收到终局提案消息的节点,向其父节点发送Reply_ok消息;收到Reply_ok消息或Reply_deny消息的父节点将该消息传送给更上一级的父节点,直到Reply_ok消息或Reply_deny消息最终传送至最大权重值所在节点。
步骤S308,如果最大权重值所在节点收到的Reply_ok消息的总数大于集群中节点总数的一半,则宣布自己为主节点,通过终局的树状的节点传送结构,向集群中的所有其它节点发送协调(Coordinator)消息。
对本方案进行性能分析:
数据同步的分析:在本方案中,每个节点的执行速度不同,甚至会在任何时候崩溃、重启。因为有可能在提案选择后失效,因此想要选中一个提案,提案中的信息必须是持久化的信息,最终只有一个提案被选中,保证系统的鲁棒性,且消息传递的时间可以延长,可以重复或丢失,但不会被破坏,因此,本方案允许消息的延迟,没有共识问题和拜占庭问题。
重送攻击的安全性:重送攻击,是指攻击者将网络上合法的封包侧录下来,而后将侧录的封包传输至系统,进行欺骗与扰乱行为。本方案文的封包格式,都会在加密内容或HMAC 内容中加上 Timestamp,即使乱封包被加以侧录,恶意者进行重送攻击时往往已过了封包时效期限,收到重送封包之节点自然会将该封包丢弃,而不予其发生作用。
身份伪造的安全性:假使身份伪造者扮演架空的节点身份并持续发送 beacon封包,打算成为非法的潜在主节点,但周遭的节点可利用Nonce值验证邻居身份的合法性。
稳定性分析:分群过程中,参考了主节点的剩余电量,如果选出来的 主节点的剩余电量较高,群集长时间维持的可能性将大大提高,对于分群的稳定性有明显的正面影响。
网关节点的统计:集群和集群间沟通的桥梁即为网关节点,虽然 网关节点所负担的责任并不会比主节点来的大,但若网关节点因电能耗尽而无法正常执行,网关节点所属的集群和外界(其他集群)的联系就会减弱。当集群中所有的网关节点均离线,该集群将被孤立,集群内即使主节点正常运行,集群内的成员节点依旧无法正常发挥通讯功能;因此,在集群中若有较高比例的网关节点,将可对网络运作有正面的影响。本方案,加强了网关节点与外界(其他集群)的联系,有助于提早发现网关节点的比例的下降。
图1是集群中主节点的重新确定的示例图。
图1中,a框表示,节点2发现节点6已经离线。b框表示,节点 2 向集群中的其它节点发送带有其权重值的提案(Proposal)消息。c框表示,收到提案消息的邻居节点,首先验证当前的主节点是否在线。d框表示,权重较高的节点(节点3、节点4和节点5)向节点2发送REPLY_DENY消息,而权重较低的节点向节点2发送REPLY_OK消息。e框表示,源节点向最大权重值所在节点(节点5)发送授权(Grant)消息。f框表示,最大权重值所在节点,向其传输范围内的邻居节点发送终局提案消息。g框表示,最大权重值所在节点(节点5)收到Reply_ok消息。h框表示,最大权重值所在节点(节点5)向集群中的所有其它节点发送协调(Coordinator)消息。
Ns-3是一个用于互联网系统的离散事件网络模拟器。通过Ns-3模拟本方案的运行环境:随机放置多个节点;所有节点都将遵循WLEA的协议,确保每个集群始终有一个主节点存在。
当网络规模较小时,剩余的电池电量更重要,因为节点会倾向于找到可以持续更长时间的主节点。主节点持续在线的时间越长,重新提案和发送的提案消息就越少。但是随着网络规模的增长和消息传输数量的增加,主节点容易宕机,从而会发生更多的主节点的重新确定流程。当网络规模更大时,信号强度会受到影响,因为当潜在主节点具有更强的信号强度时,它可能一次处理更多的节点。更强的信号和更好的节点处理使消息传递更容易,从而降低冗余。
可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。

Claims (5)

1.一种基于数据同步的集群网络中主节点的确定方法,其特征在于,包括以下步骤:
步骤S1,每个节点评估自身的节点属性,并将每个节点属性乘以该节点属性对应的权重系数,生成该节点的权重值Wi
步骤S2,对所有节点进行分群形成集群并确定每个集群中唯一的主节点;包括:
步骤S201,所有节点都会持续收到邻居节点所发出的 beacon封包,beacon封包的格式为:
beacon{NID||LNID||Seed||FlagEnergy||Energy||Wi||Timestamp};
其中,NID表示发送封包的节点的ID编号,且ID编号唯一不可重复;LNID表示发送封包的节点所在集群的主节点ID编号,如果发送该beacon封包的节点当前处于未分群的状态,则LNID为0;Seed表示一布林值,若 Seed 为 1 代表发送该beacon封包的节点评估自己有能力担任主节点,并推举自己成为主节点的候选者,若 Seed 为0 则代表发送该beacon封包的节点并未做出推举自己的动作,必须参加之后的主节点的确定流程;FlagEnergy 为一布林值,若为 1,代表发送该beacon封包的节点拥有持续电源供应,若为 0,则代表电源有线;Energy代表发送该beacon封包的节点的剩余能源量;Wi表示发送该beacon封包的节点的权重值,预设值为 0;Timestamp为发出beacon封包的时间戳记;
步骤S202,令Seed为1的节点为潜在主节点;潜在主节点周围的邻居节点收到Seed为1的beacon封包后,发送JOIN封包表示加入该潜在主节点所开创的集群的意愿,JOIN 封包格式如下:
JOIN{NID||LNID||session_key(Nonce||Timestamp||KeyWPA)||HMACsession_key(NID||KeyWPA||Secret||Timestamp)||Timestamp};
Nonce 为随机值;KeyWPA为注册过程中得到的网络密匙;HMACsession_key表示消息验证码;Nonce、KeyWPA、Timestamp和HMACsession_key均通过邻居节点和潜在主节点共有的会话密钥加密后附在 JOIN封包中;
若某一节点收到多于一个 Seed 值为 1 的beacon封包后,该节点将选择信号强度较强者发送 JOIN 封包;
步骤S203,潜在主节点使用邻居节点和潜在主节点共有的会话密钥取得被加密的Nonce值,然后向该邻居节点发送GRANT封包以代表同意邻居节点的加入;GRANT 封包格式如下:
GRANT{LNID||session_keyi,SeedLeader(Nonce||Timestamp)||Timestamp};
Nonce和Timestamp均被邻居节点和潜在主节点共有的会话密钥session_key加密;
同样握有会话密钥session_key的邻居节点收到后解开取得 Nonce,若Nonce与当初发送的值一样,代表此潜在主节点为合法节点,邻居节点更改自身的LNID为潜在主节点的ID编号,宣告已加入某一具有主节点的集群;
步骤S204,若两个潜在主节点彼此在通讯范围之内,两个潜在主节点互相朝对方发送CONFLICT封包;否则,进行下一步骤;
CONFLICT封包格式如下:
CONFLICT{NID||Wi||HMACsession_key(NID||Di||Timestamp)||Timestamp};
HMACsession_key是哈希运算消息认证码;将NID、Wi、Timestamp用发送方与接收方共有的Diffie-Hellman密钥作 HMAC杂凑;
当双方收到 CONFLICT封包后,比对封包中的权重值Wi和自己的权重值Wi,若自己的权重值Wi较高,则发出KEEP 封包表示欲保持潜在主节点的地位,若权重值Wi相同则以ID较小者维持潜在主节点地位;KEEP 封包格式如下:
KEEP(NID|| HMACsession_key(NID|| Timestamp)||Timestamp);
将NID、Timestamp用发送方与接收方共有的Diffie-Hellman密钥作HMAC杂凑;
若在CONFLICT封包的比较程序结果出来之前,已经先有普通节点加入权重值Wi较小的潜在主节点,则在CONFLICT封包的比较程序中落败的潜在主节点必须发送CANCEL封包告知已加入的节点,令其恢复到未分群状态,CANCEL封包格式如下:
CANCEL(NID|| HMACsession_key(NID|| Timestamp)||Timestamp);
将NID、Timestamp用发送方与接收方共有的Diffie-Hellman密钥作HMAC杂凑;
步骤S205,若某一集群中的节点,同时被其他集群中的节点所记录或者感应,则该节点为网关节点;网关节点,将发送GW封包给邻近集群中的主节点;GW封包格式如下:
GW(NID||LNID||HMACsession_key(NID||LNID||Timestamp)||Timestamp);
LNID 代表该节点所能感应到其它集群的主节点集合;将NID、LNID 用发送方与接收方共有的Diffie-Hellman密钥作HMAC杂凑;
步骤S206,重复执行步骤S201~步骤S205,直到所有节点成为集群的主节点或者成员节点,此时,所有节点的beacon封包中LNID 均不为0,分群程序结束;
步骤S3,主节点离线后的重新确定,包括:
步骤S301,任意节点,发现集群主节点离线后,成为源节点,并向其传输范围内的邻居节点发送带有源节点权重值的提案消息;
步骤S302,收到提案消息的邻居节点,首先验证当前的主节点是否在线:当主节点不在线,则执行步骤S303;否则,邻居节点回复源节点停止提案流程;
步骤S303,邻居节点,对于收到的第一个提案消息,将该提案消息的发送者认定为该邻居节点的父节点;然后将提案消息发送给除父节点之外的传输范围内的所有邻居节点;
步骤S304,重复步骤S303建立树状的节点传送结构,提案消息被传送到所有节点;
步骤S305,收到提案消息的节点,比较自身的节点权重值和提案消息中的源节点权重值的大小:如果提案消息中的源节点权重值不小于自身的节点权重值,则收到提案消息的节点向其父节点发送Reply_ok消息;否则发送含有的自身节点权重值的Reply_deny消息;
步骤S306,如果源节点有收到Reply_deny消息,进行检索并找出最大权重值以及该最大权重值所在节点,向最大权重值所在节点发送授权消息;否则,最大权重值所在节点为源节点;
步骤S307,最大权重值所在节点,向其传输范围内的邻居节点发送终局提案消息;
步骤S308,如果最大权重值所在节点收到的Reply_ok消息的总数大于集群中节点总数的一半,则宣布自己为主节点,向集群中的所有其它节点发送协调消息。
2.根据权利要求1所述的一种基于数据同步的集群网络中主节点的确定方法,其特征在于,节点属性,包括节点度Di、剩余电池电量Pi、信号强度Si
权重值Wi=w1Di+w2Pi+w3Si;w1+w2+w3=1;其中,w1是节点度权重系数,w2是剩余电池电量权重系数,w3是信号强度权重系数;
节点度Di是节点在其传输范围内的邻居节点连接数之和,即:
Figure DEST_PATH_IMAGE002
;其中,N(i)表示一组节点的集群,其包含有节点i;i’表示集群N(i)中除了节点i之外的一个节点;dist(i,i’)表示节点i和节点i’之间的距离;txrange表示节点i的传输范围;
剩余电池电量Pi = EnergyRatioL × MAX_Range;其中,EnergyRatio为节点的剩余电量,以百分比表示;L为惩罚系数;MAX_Range为节点的最大电量;L与EnergyRatio的关联公式如下:
Figure DEST_PATH_IMAGE004
信号强度Si,是节点的邻居报告的信号强度值相加的和,即:
Figure DEST_PATH_IMAGE006
;其中,RSSI(i,i’)表示节点i和节点i’之间的信号强度指示值。
3.根据权利要求2所述的一种基于数据同步的集群网络中主节点的确定方法,其特征在于,步骤S302中,收到提案消息的邻居节点,向当前的主节点发送CHECK_EXIST消息,验证当前的主节点是否离线;该邻居节点在规定时间内收到主节点回复的CHECK_EXIST_ACK消息,则表示当前的主节点在线,该邻居节点向源节点发送PROPOSAL_STOP消息,源节点停止提案流程。
4.根据权利要求2所述的一种基于数据同步的集群网络中主节点的确定方法,其特征在于,步骤S303中,如果邻居节点,收到不同源节点发送的提案消息,或者源节点,收到其它源节点发送的提案消息,则表明,同一时间段有两个以上源节点发送了提案消息,此时,邻居节点或源节点比较源节点权重值的大小,并向权重值小的源节点发送反馈消息,权重值小的源节点收到反馈消息之后停止提案流程。
5.根据权利要求2所述的一种基于数据同步的集群网络中主节点的确定方法,其特征在于,步骤S307中,收到终局提案消息的节点,向其父节点发送Reply_ok消息;收到Reply_ok消息或Reply_deny消息的父节点将该消息传送给更上一级的父节点,直到Reply_ok消息或Reply_deny消息最终传送至最大权重值所在节点。
CN202210921949.XA 2022-08-02 2022-08-02 一种基于数据同步的集群网络中主节点的确定方法 Active CN115002120B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210921949.XA CN115002120B (zh) 2022-08-02 2022-08-02 一种基于数据同步的集群网络中主节点的确定方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210921949.XA CN115002120B (zh) 2022-08-02 2022-08-02 一种基于数据同步的集群网络中主节点的确定方法

Publications (2)

Publication Number Publication Date
CN115002120A CN115002120A (zh) 2022-09-02
CN115002120B true CN115002120B (zh) 2022-10-25

Family

ID=83021990

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210921949.XA Active CN115002120B (zh) 2022-08-02 2022-08-02 一种基于数据同步的集群网络中主节点的确定方法

Country Status (1)

Country Link
CN (1) CN115002120B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106559263A (zh) * 2016-11-17 2017-04-05 杭州沃趣科技股份有限公司 一种改进的分布式一致性算法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2898230A1 (fr) * 2006-03-03 2007-09-07 France Telecom Procede d'organisation de noeuds d'un reseau en groupements de noeuds, programme d'ordinateur pour la mise en oeuvre d'un tel procede, et dispositif de communication formant noeud d'un reseau de noeuds
CN100568843C (zh) * 2006-07-20 2009-12-09 北京航空航天大学 稳定节能分群方法
US8169856B2 (en) * 2008-10-24 2012-05-01 Oracle International Corporation Time synchronization in cluster systems
CN103118084B (zh) * 2013-01-21 2016-08-17 浪潮(北京)电子信息产业有限公司 一种主节点的选举方法及节点
CN108134706B (zh) * 2018-01-02 2020-08-18 中国工商银行股份有限公司 区块链多活高可用系统、计算机设备以及方法
US10747673B2 (en) * 2018-08-02 2020-08-18 Alibaba Group Holding Limited System and method for facilitating cluster-level cache and memory space
CN111371744B (zh) * 2020-02-21 2022-06-03 重庆邮电大学 一种基于分布式密钥的拜占庭容错共识方法
CN111865968A (zh) * 2020-07-16 2020-10-30 南京工业大学 一种实用于区块链的优化拜占庭容错算法
CN114422513B (zh) * 2022-01-19 2024-02-27 贵州数创控股(集团)有限公司 一种基于Raft-PBFT的区块链共识方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106559263A (zh) * 2016-11-17 2017-04-05 杭州沃趣科技股份有限公司 一种改进的分布式一致性算法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种改进的主从节点选举算法用于实现集群负载均衡;任乐乐等;《中国计量学院学报》;20150915(第03期);全文 *

Also Published As

Publication number Publication date
CN115002120A (zh) 2022-09-02

Similar Documents

Publication Publication Date Title
Parno et al. Secure sensor network routing: A clean-slate approach
Yu et al. Game theoretic analysis of cooperation stimulation and security in autonomous mobile ad hoc networks
Ferdous et al. Trust-based cluster head selection algorithm for mobile ad hoc networks
CN112636989B (zh) 一种联邦学习通信方法及装置
CN102131193A (zh) 无线传感器网与计算机网融合网络的安全路由方法
CN112217683B (zh) 跨异构链数据可达性处理方法、系统、介质、设备、终端
JP2007509405A (ja) ピアツーピアリレーネットワークにおけるアイランドの復旧
CN113014635A (zh) 区块链系统的节点类型划分方法、装置及区块链系统
Abbas et al. Deterring whitewashing attacks in reputation based schemes for mobile ad hoc networks
Anita et al. Black hole attack prevention in multicast routing protocols for mobile ad hoc networks using certificate chaining
Kambourakis et al. Efficient certification path discovery for MANET
Al-Karaki et al. Stimulating node cooperation in mobile ad hoc networks
CN115002120B (zh) 一种基于数据同步的集群网络中主节点的确定方法
Rachedi et al. Trust and mobility-based clustering algorithm for secure mobile ad hoc networks
Baseri et al. ‘Survey of different techniques for detecting selfish nodes in MANETs
Qabajeh et al. A more secure and scalable routing protocol for mobile ad hoc networks
Hod Cooperative and Reliable Packet-Forwarding on top of AODV
Vilela et al. A feedback reputation mechanism to secure the optimized link state routing protocol
Seredynski et al. Direct reciprocity-based cooperation in mobile ad hoc networks
Wang et al. Securing cluster formation and cluster head elections in wireless sensor networks
Anker et al. Cooperative and reliable packet-forwarding on top of AODV
Anita et al. A self-cooperative trust scheme against black hole attacks in vehicular ad hoc networks
Kalaiarasi et al. Performance analysis of contention window Cheating misbehaviors in mobile ad hoc networks
Sorribes et al. A spontaneous wireless ad hoc trusted neighbor network creation protocol
Vijayakumar et al. Node cooperation and message authentication in trusted mobile ad hoc networks

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