撰于 阅读 107

Raft论文研读 Ⅳ

{mtitle title="论文研读"/}

{dotted startColor="#ff6c6c" endColor="#1989fa"/}

1 论文一:《VSSB-Raft:A Secure and Efficient Zero Trust Consensus Algorithm for Blockchain

{dotted startColor="#ff6c6c" endColor="#1989fa"/}

{collapse}
{collapse-item label=" 1.1 文章来源 "}

地址:谷歌学术

引用:[1]Siben Tian, Fenhua Bai, Tao Shen, Chi Zhang, and Gong Bei. VSSB-Raft:A Secure and Efficient Zero Trust Consensus Algorithm for Blockchain[J]. ACM Trans. Sen. Netw. 2023.

期刊:ACM Trans. Sen. Netw.(中科院3区,JCR:Q2)

作者:Tian Siben; Bai Fenhua; Shen Tao; Zhang Chi; Bei Gong

日期:2023

image-20231003104726262

{/collapse-item}
{collapse-item label=" 1.2 文章主要创新点 "}
①改善Raft共识算法投票机制

解决的问题

To solve the problems of vote forgery and malicious election of candidate nodes in the Raft consensus algorithm.

解决Raft共识算法中选票伪造和候选节点恶意选择的问题。

解决方案

增加Zero Trust与Raft结合。

使用了四个算法:

  • 数字签名算法:确认消息发送者身份。
  • SM2签名算法:允许在节点发送消息时对消息进行签名,以实现数据正确性和身份正确性的验证,满足零信任认证的需要。
  • Secret Sharing算法:确保候选节点获得的选票是真实有效的,保证了选举的公平性和可信性。
  • NDN算法:重新定义节点如何在Raft共识算法中通信,从而提高节点之间的数据传输质量。

解决选票伪造问题:通过椭圆曲线签名为每次选举生成选举签名,然后使用秘密共享技术将选举签名拆分为每个节点的投票消息。候选节点通过从追随者节点收集选票并恢复选举签名来赢得选举。该方法隐藏了产生选举签名的选举消息,增加了选票伪造的难度,并在选举过程中引入监督节点对候选人恢复的选举签名进行验证,保证了候选人的诚实性,并通过秘密共享的门限值使算法具有拜占庭容错性。

②降低共识延迟

解决的问题

为了消除选举过程中由于安全认证而引起的共识延迟,提出了一种有效的节点间通信方式。

解决方案

利用数据命名网络来重新定义节点间的通信。具体地,每个节点将最初在IP网络上定义的路由改变为NDN上的感兴趣的路由,并将该感兴趣的路由发布到NDN转发守护进程(NFD)。这允许以有效的方式发送消息,而不管节点是处于选举过程还是日志同步过程。

③引入监督节点

解决的问题

为了实现VSSB-Raft的零信任,消除选举过程中节点间隐形的信任关系。

解决方案

VSSB-Raft引入了监督节点,由监督节点为共识节点生成子秘密选票,并对选举结果进行验证。

  • 监督节点在接收到候选节点发起的投票请求后,首先通过选举消息生成过程为本次选举生成选举消息。
  • 之后,根据SM2椭圆曲线签名方法,通过私有选举密钥生成选举签名。然后秘密共享算法将选举签名分成n个子秘密1,2,...,n,n是共识节点的数量。它将子秘密分发给相应的共识节点以供后续投票。
  • 最后,监督者还生成子秘密承诺签名值1、2、...,对于候选节点,n是子秘密的数目。当候选节点收集到足够的子秘密来恢复选举签名时,监督者将验证其置换的结果。该验证过程使用SM2算法,并且验证的结果是否,其中是候选人的恢复的选举签名。监管者将基于验证结果确定候选者是否可以成为领导者节点,并广播结果。

{/collapse-item}
{collapse-item label=" 1.3 启发和总结 "}

本文引入了大量的安全算法,通过这些安全算法来保证VSSB-Raft实现零信任。我是不是也需要某个算法来保证我的信誉机制呢???找到某一个加权算法添加到选票上!!!
{/collapse-item}
{/collapse}

{dotted startColor="#ff6c6c" endColor="#1989fa"/}

2 论文二:《Multi‐strategy‐based leader election mechanism for the Raft algorithm

{dotted startColor="#ff6c6c" endColor="#1989fa"/}

{collapse}
{collapse-item label=" 2.1 文章来源 "}

地址:谷歌学术

引用:[1]Du, Z., Qu, Z., Fu, Y., Huang, M., & Liu, L. (2023). Multi‐strategy‐based leader election mechanism for the Raft algorithm. Concurrency and Computation: Practice and Experience, 35(22).

期刊:Concurrency and Computation(JCR:Q3)

作者:Du Zhiqiang; Qu Zhi; Fu Yanfang; Huang Muhong; Liu Liangxin

日期:2023

{/collapse-item}
{collapse-item label=" 2.2 文章主要创新点 "}

①创新点一:更改领导者选举机制

解决的问题:领导者性能问题

解决方案:增加了反投票策略,可以根据服务器的状态信息,如吞吐量、共识延迟、服务器间延迟变化等,主动发起主动触发选举投票,即可以对状态信息不满足预设指标的leader进行降级,及时终止性能下降的leader服务器对系统的影响,能够保证系统的性能和安全性。

②创新点二:更改超时等待机制

解决的问题:领导者选举问题

解决方案:评估跟随者的状态并计算相应的优先级,如吞吐量、共识延迟、服务器间延迟变化、需要转发的写请求数等。利用这些信息分别计算优先级,然后根据优先级分配不同的随机选举超时时长,提高高性能服务器成为集群领导者的概率。

基于服务器优先级的选举超时机制将服务器的优先级分为三个级别,分别用1、2和3表示。为不同优先级的服务器分配不同级别的随机选举超时时间。在本研究中,Raft算法推荐的150- 300 ms选举超时分为三个级别:优先级为1的服务器的150-200ms选举超时,优先级为2的服务器的200-250ms选举超时,以及优先级为3的服务器的250-300ms选举超时。高优先级的服务器有更高的概率成为追随者,因为它们的随机持续时间更短。

{/collapse-item}
{collapse-item label=" 2.3 启发 "}

{hide}

可以发现,这篇文章的创新点和我的创新点有一定的相似度,区别:

①我是根据信誉值来进行更改超时等待时间的。本文作者是根据服务器的性能进行更改超时等待时间的。由于我的信誉值有一大半的占比来自于共识次数,于是我的想法安全性方面要比作者的好。

②本文没有考虑拜占庭节点,只是考虑到领导者的性能。而我的创新点是考虑到了拜占庭节点的问题,增加共识标识位,通过共识标识位来让其它节点投反对票。而本文是根据领导者的性能来进行反投票策略。

借鉴地方:

①本文的图比较丰富:

例如:

image-20231017150151315

image-20231017150221930

image-20231017150251527

image-20231017150234553

我可以在说我的创新点的时候也加上这些图,更加清晰易懂。

②公式证明

这里是我最最最缺少的部分:本文参考原Raft算法的时间分析方法,其累积分布函数(CDF)定义了Ms在特定时刻不大于t的概率。

image-20231017150548551

image-20231017150625414

使用了这些公式证明了,优先级超时机制的设计不仅可以减少领导者的选举时间,而且可以保证领导者的性能总是最优的。

{/hide}

{/collapse-item}
{/collapse}

{dotted startColor="#ff6c6c" endColor="#1989fa"/}

3 论文三:《RBFT:基于Raft集群的拜占庭容错共识机制

{dotted startColor="#ff6c6c" endColor="#1989fa"/}

{collapse}
{collapse-item label=" 3.1 文章来源 "}

地址:知网

引用:[1]黄冬艳,李浪,陈斌等.RBFT:基于Raft集群的拜占庭容错共识机制[J].通信学报,2021,42(03):209-219.

期刊:通信学报(北大核心)

作者:黄冬艳,李浪,陈斌

基金项目:

日期:2021

{/collapse-item}
{collapse-item label=" 3.2 文章主要创新点 "}

①分组共识

解决的问题

针对现有联盟链共识机制因可拓展性不足,无法在支持大规模网络的同时满足低时延、高吞吐量和安全性的问题。

解决方案

首先对网络节点进行分组,组内采用改进的 Raft 机制进行共识,然后由每个组内选出的领导者组成网络委员会,网络委员会内部采用 PBFT 机制进行共识。RBFT 同时引入监督节点,解决 Raft 共识不能对抗拜占庭恶意行为的问题,从而保证共识机制的安全性。

image-20231009160048526

分组策略:

根据 RBFT算法的两级共识机制,PBFT 共识需要满足分组数k ≥ 4,每个组内的 Raft 共识需要满足节点数m ≥ 3。引入一致性 Hash 算法[26]的设计思想,利用一致性Hash 算法平衡、分散、单调的特点,提出一种适用于 RBFT 的节点分组算法。

1) InitHashRing (k) //根据分组数 k初始化 Hash环,确定每个分组 ID 的位置
2) 为监督节点分组
for i = 0:1:r
计算 Hash(nodeID + ip + randomStr),根据结果
将节点映射到 Hash 环上
clockwiseSearch ( ) //根据监督节点位置顺时针查找分组 ID,将监督节点映射到对应的不同分组中
end for
3) 为普通节点分组
计算 Hash(nodeID + ip + randomStr),根据结果
映射到环上
clockwiseSearch ( )
4) 合理性验证
根据组内节点数 3m≥ 及每个组内至少含一个
监督节点的条件,确定分组是否合理,若是,转至
步骤 5);若否,转至步骤 2)
5) 分组完毕

image-20231009160432004

image-20231010102310286

{/collapse-item}
{collapse-item label=" 3.3 启发 "}

{hide}

在上一组会内容中提到:

以下是一些常见的分区算法:

  1. 哈希分区:根据节点的标识或键值进行哈希计算,将结果映射到不同的分区中。这种方法保证了均匀的数据分布和负载平衡。
  2. 范围分区:根据节点标识或键值的范围将数据划分到不同的分区中。例如,可以根据节点的IP地址范围或者键值的大小范围来进行分区。
  3. 一致性哈希:通过哈希函数将节点和数据映射到一个环状空间上,每个节点在环上占据一个位置。数据根据其哈希值在环上找到离其最近的节点作为所属分区的负责节点。这种方法在节点动态加入或离开时可以有效减少数据迁移。
  4. 拓扑感知分区:该算法考虑到节点之间的网络拓扑结构,并尽可能将在物理位置上相邻的节点放在同一分区中。这有助于减少网络延迟和提高系统性能。
  5. 副本分区:将数据复制到多个节点,以提高系统的可用性和容错性。可以采用主从复制、多主复制或者基于一致性机制的复制方法,并结合其他分区算法来确定数据在哪些节点上进行复制。

本文采用的就是第三种方法,采用一致性哈希来进行分区。前两种分区方式在本文的综述中都有提及:

image-20231010103244608

第四种方法:拓扑感知分区是一种将网络分割成多个区域的方法,每个区域内的节点可以相互通信,而不同区域的节点之间通信受到限制。实现拓扑感知分区需要以下步骤:

  1. 构建拓扑图:首先,需要收集网络中所有节点的拓扑信息,包括节点之间的连接关系、链路带宽、延迟等。这些信息可以通过网络监测工具或者协议(如SNMP、OpenFlow等)获取。
  2. 划分区域:根据网络的特性和需求,将拓扑图中的节点划分为多个区域。可以采用不同的算法来完成区域划分,例如基于最小生成树的划分算法、基于贪心算法的划分算法等。
  3. 配置路由策略:在每个区域内部配置适当的路由策略,以确保区域内节点之间的通信正常。可以使用静态路由表或动态路由协议(如OSPF、BGP等)来实现区域内的路由。
  4. 限制跨区域通信:为了限制不同区域之间的通信,可以在网络设备(如交换机、路由器)上配置访问控制列表(ACL)或虚拟局域网(VLAN)等功能,以过滤或隔离跨区域的数据流。
  5. 监测和管理:建立监测系统来实时监测网络中各个区域的状态和性能。同时,还需要有一套管理机制,可以对拓扑感知分区进行灵活的调整和管理。

通过查看这个步骤发现,感觉这个有点难实现。就想着更改一下文献[24]提出的方案,也是根据自身IP地址、网络延迟进行分区,分区中的组长由信誉值确定出来。

{/hide}

{/collapse-item}
{/collapse}

{dotted startColor="#ff6c6c" endColor="#1989fa"/}

4 论文四:《Raft-PLUS: Improving Raft by Multi-Policy Based Leader Election with Unprejudiced Sorting

{dotted startColor="#ff6c6c" endColor="#1989fa"/}

{collapse}
{collapse-item label=" 4.1 文章来源 "}

地址:谷歌学术(通过基于多政策的无偏见排序的领导人选举来改善Raft)

引用:[1]Jinjie Xu, Wei Wang, Yu Zeng, Zhiwei Yan, & Hongtao Li. (2022). Raft-PLUS: Improving Raft by Multi-Policy Based Leader Election with Unprejudiced Sorting. Symmetry, 14(1122), 1122.

期刊:Symmetry(JCR:Q2,中科院4区)

作者:Xu Jinjie; Wang Wei; Zeng Yu; Yan Zhiwei; Li Hongtao

日期:2022

{/collapse-item}
{collapse-item label=" 4.2 文章主要创新点 "}

①采取多种选举策略选择领导人

解决的问题:采用策略投票代替Raft算法中的先到先得的方法。

解决方案

每个Follower将在一段时间内收集Candidate RequestVote RPC,并将这些请求添加到投票请求池中。这个阶段称为投票收集阶段,从收到的第一个RequestVote RPC开始,结束由计时器和投票请求池中的请求数量控制。计时器设置一个固定值,该值应大于0且小于follower选举超时的最大值和最小值之差。当超时或投票请求池中的请求数超过集群数的1/3时,进入投票阶段。在投票阶段,关注者根据配置的投票策略从投票请求池中选择最佳候选人,并将投票发送给候选人。

image-20231011100621073

制定了四项选举政策:

  • 基于网络测量的选举策略:该策略类似于基于网络测量的反对策略。测量从追随者到候选者的网络延迟和抖动,作为投票的基础。为了最大限度地减少网络测量的时间成本,Follower在收到来自投票者的投票请求时立即开始测量网络性能-Follower投票给具有最佳网络性能的候选者。
  • 基于处理能力的选举政策:此策略类似于基于处理能力的反对策略,其根据候选人的处理能力对候选人进行排序,并投票给具有最佳处理能力的候选人。
  • 选举政策是以领导人当选的次数为依据的:根据领导人当选的次数,该策略投票给当选次数较多的候选人,以确保领导人的稳定性。如果多个候选人当选的次数相同,则投票将给予首先发送请求的候选人。
  • 基于收到的客户端请求数量的选择策略:处于任何状态的服务器都可以接收客户端请求。如果Follower收到客户端请求,它会将请求转发给Leader。Leader处理请求并将结果发送给客户端。此策略基于服务器收到的客户端请求数作为投票的基础。关注者将投票给在上一个任期内收到最多客户请求的候选人。

②增加反对机制

解决的问题:解决Leader节点与其他节点之间的不对称状态。

解决方案:增加反对机制并根据选举中的不同策略进行无偏排序,主动触发新一轮领导人选举。

制定了三项反对政策:

  • 基于网络测量的对抗策略:从跟随者到领导者的延迟和抖动的网络性能是基于投票来测量的。当网络质量低于阈值时(例如,延迟大于100 ms或抖动大于50 ms),则跟随者向引导者发送反对票。
  • 基于处理能力的反对政策:此策略对Leader的处理能力进行投票,服务器的处理能力由硬件性能(包括CPU使用率、内存使用率和磁盘I/O使用率)和提交日志所需的时间来衡量。如果Leader的处理能力低于Follower设置的阈值,则Follower向Leader发送反对票。
  • 基于提交的日志数的反对策略:此策略根据Leader提交的日志数进行投票。当Leader提交的日志数量达到某个阈值时,Follower会向Leader发送反对票。

{/collapse-item}
{collapse-item label=" 4.3 启发 "}

{hide}

使用策略投票代替先来后到确实是一种很好的想法,能有效的防止不稳定的候选人节点当选领导者的情况。但是这个只适合于非拜占庭情况,如果在存在拜占庭节点的情况下,这种策略导致的问题会非常的多。

本人的创新点想的是加权投票(计算每个投票跟随者的信誉值进行加权给候选人投票),读完这篇论文后,我是不是能加权选择投票(计算在一定时间段每个候选者的信誉值进行投票)。这样的话会大大减少系统的计算开销。

{/hide}

{/collapse-item}
{/collapse}

{dotted startColor="#ff6c6c" endColor="#1989fa"/}

5 论文五:《P-Raft: An Efficient and Robust Consensus Mechanism for Consortium Blockchains

{dotted startColor="#ff6c6c" endColor="#1989fa"/}

{collapse}
{collapse-item label=" 5.1 文章来源 "}

地址:谷歌学术

引用:[1]Shaofei Lu, Xuyang Zhang, Renke Zhao, Lizhi Chen, Junyi Li, & Guanzhong Yang. (2023). P-Raft: An Efficient and Robust Consensus Mechanism for Consortium Blockchains. Electronics, 12(2271), 2271. https://doi.org/10.3390/electronics12102271

期刊:Electronics(JCR:Q2,中科院3区)

作者:Lu Shaofei; Zhang Xuyang; Zhao Renke; Chen Lizhi; Li Junyi; Yang Guanzhong

日期:2023

{/collapse-item}
{collapse-item label=" 5.2 文章主要创新点 "}

①基于性能评估的一致性算法P-RAFT

解决的问题:提高Leader处理的效率,确保Leader选举的稳健性。

解决方案

每个节点的性能与选举超时相关联,以确保具有上级性能的节点更有可能被选为Leaders。

image-20231016152847299

(1)如果Follower节点在设定的时间段内没有收到Leader的心跳消息,则读取其实时性能,并根据Yasa模型计算当前性能得分。基于性能得分,它计算Leader选举的等待时间上限T,这表明每个节点必须考虑是否成为Leader。随着表现分数的增加,Follower会被提示快速转换为候选人并开始选举过程。

(2)在等待T之后,Follower节点发起选举,增加当前项,并将节点的标识更改为候选者。

(3)候选人向其他节点发送投票请求。接收到投票请求的节点将其任期与请求发送者的任期进行比较。如果发送者的任期比它自己的任期长,则节点退出选举,并承担追随者的角色。当所有其他节点收到的术语都低于术语本身时,节点为自己投票。最后,领导人由收到的选票数决定。

(4)一旦Leader被确认,确认消息被发送到其他节点。Follower在收到Leader的消息时验证Leader。在主选择过程结束后,其他节点切换到跟随者状态。

②节点性能评估模型:Yasa模型

解决的问题:评估各个节点的综合性能。

解决方案

$$ C = Wm × Cm + Ws × Cs $$

Cm是节点的机器性能得分,Cs是节点的稳定性得分,WmCm的权重,并且WsCs的权重。WmWs的值可以根据实际应用需求确定。

Cm计算:

每个节点将服务器的CPU空闲率、内存空闲率、GPU空闲率和网络带宽空闲率读入以下矩阵X:

$$ X = (ci, mi, gi, ni) $$

其中ci表示CPU空闲率,mi表示内存空闲率,gi表示GPU空闲率,ni表示网络带宽空闲率。

Cm计算公式:

$$ C_{m}={\textstyle \sum_{j=1}^{4}} (w_{j}\times w_{1j} ) $$

本文选用层次分析法对权重系数进行科学计算。

Cs计算公式:

$$ C_{s} = \frac{2}{1+e^{\mu \times t_{k} } } $$

tk是在时间k内服务器的停机次数; µ是增益参数。µ值越高,系统对节点停机行为的容忍度越低。

③领导者验证机制

解决的问题:为了防止恶意节点伪造自己的任期和抢占集群领导者。

解决方案:提出了一个领导者验证机制,结合阈值签名方案和BLS签名。

BLS签名可以聚合多个签名和m-n个签名,而不产生随机数。BLS签名减少了节点间的冗余通信开销。

阶段1:候选节点从超过2/3的关注者接收部分BLS签名,并生成BLS聚合签名。

阶段2:候选节点分发附加有BLS聚合签名的消息,并等待其他节点对BLS聚合签名的验证。如果验证过程成功,追随者可以提供积极的反馈。但是,如果验证过程失败,则会给出负面反馈。

阶段3:收到2/3正面反馈的Candidate节点变成Leader,并向其他节点发送带有正面反馈的心跳消息,以完成选举过程。

{/collapse-item}
{collapse-item label=" 5.3 启发 "}
{hide}

①本文的流程图不错,可以借鉴学习。

②本文对其权重系数进行了科学计算,对于我自己的创新点而言也需要添加这个计算方式,这样比较有信服力。

{/hide}

{/collapse-item}
{/collapse}

{dotted startColor="#ff6c6c" endColor="#1989fa"/}

6 论文中的一些技术算法介绍

{dotted startColor="#ff6c6c" endColor="#1989fa"/}

{collapse}
{collapse-item label=" 6.1 层次分析法 "}

层次分析法(Analytic Hierarchy Process,AHP)是一种用于解决多准则决策问题的方法,它可以帮助确定不同因素或准则之间的相对权重。以下是使用层次分析法进行权重系数科学计算的基本步骤:

  1. 定义决策结构:首先,明确决策问题的目标和准则,并将它们组织成一个层次结构。层次结构由目标层、准则层和备选方案层组成。确保每个层次都与整体目标和子目标对应。
  2. 构建判断矩阵:对于准则层中的每对准则,创建一个判断矩阵来比较它们之间的重要性。判断矩阵是一个方阵,其元素表示两个准则之间的相对重要性。这些相对重要性通常使用1到9的尺度进行评估,其中1表示两个准则完全一样重要,9表示一个准则远远重要于另一个。
  3. 计算权重向量:通过对判断矩阵进行特征值分解,可以计算出每个准则的权重向量。一般情况下,采用最大特征值法来确定主特征值,并将其归一化以得到权重向量。
  4. 一致性检验:在进行权重计算之前,需要进行一致性检验,以确保判断矩阵的合理性。通过计算一致性指标(Consistency Index,CI)和一致性比率(Consistency Ratio,CR)来评估判断矩阵的一致性。如果CR小于某个预先设定的阈值(通常为0.1),则认为判断矩阵是一致的。
  5. 权重调整:如果一致性比率超过了设定的阈值,则需要对判断矩阵进行修正或重新评估,直到满足一致性要求为止。
  6. 综合决策:使用权重向量将不同层次的准则组合起来,进行综合决策。根据权重系数,可以计算备选方案的综合得分,并确定最优选择。

总之,采用层次分析法进行权重系数的科学计算需要明确决策结构,构建判断矩阵,计算权重向量,进行一致性检验和调整权重,最后综合决策并确定最佳选择。这种方法可以帮助决策者在多准则决策问题中进行科学、系统的权衡和选择。{/collapse-item}

{/collapse}

{progress percentage="100%" color="#ff6c6c"/}

{mtitle title="END 感谢观看"/}


已有 2 条评论

  1. ll

    {!{data:image/webp;base64,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}!}

  2. 111

    good

评论已关闭