CN101576835B - 一种满足拜占庭协议的两轮通信方法 - Google Patents
一种满足拜占庭协议的两轮通信方法 Download PDFInfo
- Publication number
- CN101576835B CN101576835B CN2009100859438A CN200910085943A CN101576835B CN 101576835 B CN101576835 B CN 101576835B CN 2009100859438 A CN2009100859438 A CN 2009100859438A CN 200910085943 A CN200910085943 A CN 200910085943A CN 101576835 B CN101576835 B CN 101576835B
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- machine
- synchronizing pulse
- inconsistent
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
一种满足拜占庭协议的两轮通信方法,步骤为:(1)冗余系统中M个单机分别将自身数据和同步脉冲发送给其它单机;(2)对脉冲个数进行计数并与预设值进行比较,若计数值小于预设值时各单机完全接收到其它单机发送的数据,则执行下一步,否则判断发生单机超时故障;(3)各单机将其接收到的M-1个数据及自身数据按相同顺序依次转发给其它单机,并对M次转发过程中的每一次脉冲个数均进行计数;若每一次转发时各单机均能在当次计数值小于预设值时接收到相同的M个数据,则执行下一步,否则判断发生单机超时故障;(4)各单机对M个数据逐一进行表决,若每次表决时各单机的对应数据均一致,则冗余系统正常,否则冗余系统发生拜占庭故障。
Description
技术领域
本发明设计一种通信方法,特别是一种在多机冗余系统中为了防止拜占庭故障所采用的两轮通信方法。
背景技术
在多机冗余系统中,系统通常需要对某台单机的专有数据达成一致,比如对于单机的时钟数据如何、对于专有的传感器数据如何,对于单机的状态数据如何等。对于这类单源数据,为了防止拜占庭故障,即拥有数据的单机给其它不同机器发送不一致的数据,系统需要执行两轮交换来达成一致,即第一轮拥有单源数据的机器发送自己的专有数据,第二轮其它机相互转发接收到的数据,这是经典的拜占庭协议(Byzantine Protocol)问题,相关内容可参见文献M.Pease,L.Lamport,S.Shostak.The Byzantine generalsproblem[J].ACM Trans.Programming Languages and Systems,1982,4(3):382~401。
对于由多台单机组成的冗余系统,两轮通信过程通常需要在同一段时间内执行完,以方便系统的容错判决;另一方面,系统所有单机需要对这种输入数据以相同的顺序进行处理。现有的两轮通信方法是每台单机分别执行这种两轮通信,首先,对于第一台被触发的机器,将自己的数据发送给其它单机,其它单机在收到该数据后,再相互进行转发给其它M-1个单机;然后第二台被触发的机器,重复第一台被触发机器执行过的这种两轮通信,第三台被触发的机器也重复这个过程,如此重复M次,使得系统中的每个单机都执行过两轮通信,再进行处理。这种方法的不足之处有两点:第一,每台单机的触发顺序是不确定的,导致每台单机完成两轮通信的先后顺序不一致,因而数据最终到达的时间也不一致,这就使得系统的容错判决困难;第二,这种两轮交换是顺序执行的,导致系统数据交换的时间相对较长。
发明内容
本发明的技术解决问题是:克服现有技术的不足之处,提供了一种容错判决简单、可提高整个系统通信效率的满足拜占庭协议的两轮通信方法。
本发明的方法的技术解决方案是:一种满足拜占庭协议的两轮通信方法,包括以下步骤:
(1)设冗余系统中有M个单机,6≥M≥4,各单机分别将自己的数据和同步脉冲发送给其它M-1个单机,同时等待接收其它M-1个单机发送的数据;
(2)对步骤(1)中的同步脉冲个数进行计数并与预设值进行比较,若同步脉冲的计数值小于预设值时各单机完全接收到其它M-1个单机发送的数据,则执行步骤(3);若同步脉冲的计数值与预设值相同时各单机还未完全接收到其它M-1个单机发送的数据,则执行步骤(5);
(3)各单机将其接收到的其它M-1个单机传来的数据及其自己的数据按同样的顺序依次转发给其它M-1个单机,各单机在转发数据的同时还保持发送同步脉冲,并对M次转发过程中的每一次的同步脉冲均进行计数;若每一次转发时各单机均能在当次同步脉冲个数的计数值小于预设值时接收到相同的M个数据,则执行步骤(4),否则执行步骤(5);
(4)各单机对M个数据中的每一个数据逐一进行表决,若每次表决时各单机的对应数据均一致,则判定冗余系统正常,否则执行步骤(5);
(5)判定冗余系统异常,若某单机未在规定计数时间内发送数据,则所述单机发生超时故障;若表决时只有一台单机的数据与最终表决结果不一致,则步骤(3)中转发此不一致数据的单机发生拜占庭故障;若多于一台单机的数据与最终表决结果不一致,则步骤(1)中发送此不一致数据的单机发生拜占庭故障。
本发明与现有技术相比的有益效果是:
(1)本发明中,M台单机的第一轮通信可以同时进行,当冗余系统中的各单机同步比较好时可以提高通信效率,使得通信轮数最高可以减少M-1轮;
(2)本发明中,第二轮数据转发的过程是按照约定的顺序进行的,因此第二轮数据交换结束后得到的是顺序一致的数据序列,方便系统容错判决;
(3)本发明中,采用发送与接收同步脉冲的过程作为超时计数单位,在等待接收其它机的数据过程中发送同步脉冲,一方面可以用来判定是否超时,另一方面可以方便获取其它机数据到来的时间,为系统同步提供参考。
附图说明
图1为本发明两轮通信方法的原理框图;
图2为4单机冗余系统中进行第一轮数据通信时数据流向示意图;
图3为4单机冗余系统中进行第二轮数据通信时数据A的流向示意图;
图4为4单机冗余系统中进行第二轮数据通信时数据B的流向示意图;
图5为4单机冗余系统中进行第二轮数据通信时数据C的流向示意图;
图6为4单机冗余系统中进行第二轮数据通信时数据D的流向示意图。
具体实施方式
如图1所示,为本发明两轮通信方法的原理框图,设冗余系统中有M个单机,此处6≥M≥4。因为根据文献M.Pease,L.Lamport,S.Shostak.The Byzantine generals problem[J].ACM Trans.Programming Languagesand Systems,1982,4(3):382~401中的相关内容可知,为了容忍f个单机发生拜占庭故障,冗余系统至少需要存在3f+1个单机。本发明方法适用于f=1的情况,也就是M≥4,此时冗余系统可以容忍1个单机发生拜占庭故障,采用本发明方法可以很好的进行纠错。当M≥7也就是f=2时,冗余系统可以同时容忍2个单机发生拜占庭故障,也就是说当M≥7时,冗余系统可能会同时有2个单机发生拜占庭故障,此时应至少进行三轮通信才能对2个故障单机进行处理,而采用两轮通信方法最多也只能纠检1个单机的错误,此时采用本发明的方法也可以纠检出2个故障单机中1个单机的错误,但显然其实用性已经大大降低,不利于在工程上应用。因此,为了提高针对单个单机发生拜占庭故障时纠错的可靠性,本发明方法中选取6≥M。各单机首先在第一轮时发送自己的数据,然后发送同步脉冲等待接收其它机的数据,在其它机的数据到达时记录此时自己发送同步脉冲的个数。若在发送同步脉冲的个数小于预先设定值时接收到其它机的数据,则各机第二轮按照约定的顺序依次转发第一轮收到的数据。在转发某台机数据后等待接收其它机数据的过程中,同样保持发送同步脉冲,据此来判断其它机是否发送超时故障。在第二轮结束后进行数据一致性表决,判断通信过程中是否发生拜占庭故障。本发明中通过对同步脉冲进行计数并与预设值进行比较来对数据发送过程进行计时,用于判定超时和记录其它机数据到达的时间。
若在通信过程中有某台机器的数据没有在规定时间内到达,即本机发送同步脉冲的个数不小于预先设定值,则判定数据没有到达的机器发生超时故障;否则,若表决时只有一台单机的数据与最终表决结果不一致,则判定第二轮转发此不一致数据的单机发生拜占庭故障,此机给不同机转发的数据不一致;若多于一台单机的数据与最终表决结果不一致,则判定第一轮发送此数据的单机发生拜占庭故障,此机给不同机发送的数据不一致。对于同步脉冲预设值,其主要与通信波特率、需要交换数据量的大小以及系统最晚完成两轮交换的时间有关。一般应用时,通常设置同步脉冲的个数为10个,当通信波特率为3.6864Mbps时,时间约为32.552us。
实施例
假设冗余系统中有4个单机(即M=4),分别为A机、B机、C机、D机,当采用本发明的方法进行通信时,第一轮的通信情况如图2所示,
A机:将A机的专有数据a分别发送给B机、C机和D机;
B机:将B机的专有数据b分别发送给A机、C机和D机;
C机:将C机的专有数据c分别发送给A机、B机和D机;
D机:将D机的专有数据d分别发送给A机、B机和C机。
在第一轮交换结束后,4台机器分别获得a、b、c、d的数据序列。由于在数据发送过程中可能发生拜占庭故障,某台机器可能给不同机器发送不一样的数据,使得每台机器得到的a、b、c、d的数据序列可能不一致,因此需要进行第二轮通信。
在进行第二轮通信时,各机转发数据序列a、b、c、d的情况分别如图3~图6所示,
A机:将数据a分别发送给B机、C机和D机,将数据b分别发送给B机、C机和D机,将数据c分别发送给B机、C机和D机,将数据d分别发送给B机、C机和D机;
B机:将数据a分别发送给A机、C机和D机,将数据b分别发送给A机、C机和D机,将数据c分别发送给A机、C机和D机,将数据d分别发送给A机、C机和D机;
C机:将数据a分别发送给A机、B机和D机,将数据b分别发送给A机、B机和D机,将数据c分别发送给A机、B机和D机,将数据d分别发送给A机、B机和D机;
D机:将数据a分别发送给A机、B机和C机,将数据b分别发送给A机、B机和C机,将数据c分别发送给A机、B机和C机,将数据d分别发送给A机、B机和C机。
4机在数据发送与转发过程中,在自己数据发出后转向发送同步脉冲,记录其它机器数据到达时自己发送同步脉冲的个数。一方面可以用来判定其它机是否超时(数据到达时发送同步脉冲的个数是否小于预先设定值),另一方面可以方便获取其它机数据到来的时间,为系统同步提供参考。同时接收到对方机的同步脉冲,可以作为二者通信链路正常的标志。
数据表决过程:对接收到的其它3机的数据采用3取2多数表决,如果表决时A、B、C、D机的数据完全一致,则判定系统通信正常,否则,判定在通信过程中发生拜占庭故障。例如,在表决数据a时,将A机第二轮转发的数据屏蔽掉,对B、C、D机转发的3份数据采用3取2多数表决获得表决的结果v,若A、B、C、D机的数据与表决结果v一致,则判定系统通信正常;否则,若A机或者B机或者C或者D之一与表决结果v不一致,其它3机与表决结果一致,则判定此不一致机发生拜占庭故障;否则,多于一台单机的数据与表决结果v不一致,则判定A机发生拜占庭故障。
以上仅对M=4的情况进行了说明,当M=5或6时,其进行两轮通信的原理和方法与M=4的情况相同。
本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。
Claims (1)
1.一种满足拜占庭协议的两轮通信方法,其特征在于包括以下步骤:
(1)设冗余系统中有M个单机,6≥M≥4,各单机分别将自己的数据和同步脉冲发送给其它M-1个单机,同时等待接收其它M-1个单机发送的数据;
(2)对步骤(1)中的同步脉冲个数进行计数并与预设值进行比较,若同步脉冲的计数值小于预设值时各单机完全接收到其它M-1个单机发送的数据,则执行步骤(3);若同步脉冲的计数值与预设值相同时各单机还未完全接收到其它M-1个单机发送的数据,则执行步骤(5);
(3)各单机将其接收到的其它M-1个单机传来的数据及其自己的数据按同样的顺序依次转发给其它M-1个单机,各单机在转发数据的同时还保持发送同步脉冲,并对M次转发过程中的每一次的同步脉冲均进行计数;若每一次转发时各单机均能在当次同步脉冲个数的计数值小于预设值时接收到其它M-1个单机转发的数据,则执行步骤(4),否则执行步骤(5);
(4)各单机对M种数据中的每一种数据逐一进行表决,若每次表决时各单机的对应数据均一致,则判定冗余系统正常,否则执行步骤(5);
(5)判定冗余系统异常,若某单机未在规定计数时间内发送数据,则所述单机发生超时故障;若表决时只有一台单机的数据与最终表决结果不一致,则步骤(3)中转发此不一致数据的单机发生拜占庭故障;若多于一台单机的数据与最终表决结果不一致,则步骤(1)中发送此不一致数据的单机发生拜占庭故障。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100859438A CN101576835B (zh) | 2009-05-31 | 2009-05-31 | 一种满足拜占庭协议的两轮通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100859438A CN101576835B (zh) | 2009-05-31 | 2009-05-31 | 一种满足拜占庭协议的两轮通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101576835A CN101576835A (zh) | 2009-11-11 |
CN101576835B true CN101576835B (zh) | 2010-12-01 |
Family
ID=41271772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100859438A Expired - Fee Related CN101576835B (zh) | 2009-05-31 | 2009-05-31 | 一种满足拜占庭协议的两轮通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101576835B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10303565B2 (en) * | 2014-03-18 | 2019-05-28 | Kabushiki Kaisha Toshiba | Multicasting system voting on server data |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106447311B (zh) * | 2016-09-26 | 2019-11-08 | 北京天德科技有限公司 | 一种四次通信的拜占庭容错算法的区块链建块方法 |
CN117215177A (zh) * | 2023-11-09 | 2023-12-12 | 北京控制工程研究所 | 一种天地往返一体化控制系统及控制方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1550988A (zh) * | 2003-01-23 | 2004-12-01 | ��������ϵͳ�����ɷ�����˾ | 容错计算机控制系统 |
CN101053216A (zh) * | 2004-09-02 | 2007-10-10 | 皇家飞利浦电子股份有限公司 | 使用两个通信控制器的分布式通信系统及其操作方法 |
-
2009
- 2009-05-31 CN CN2009100859438A patent/CN101576835B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1550988A (zh) * | 2003-01-23 | 2004-12-01 | ��������ϵͳ�����ɷ�����˾ | 容错计算机控制系统 |
CN101053216A (zh) * | 2004-09-02 | 2007-10-10 | 皇家飞利浦电子股份有限公司 | 使用两个通信控制器的分布式通信系统及其操作方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10303565B2 (en) * | 2014-03-18 | 2019-05-28 | Kabushiki Kaisha Toshiba | Multicasting system voting on server data |
Also Published As
Publication number | Publication date |
---|---|
CN101576835A (zh) | 2009-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN201075870Y (zh) | 多机架路由器 | |
CN107483135A (zh) | 一种高同步的时间触发以太网装置及方法 | |
CN102769626B (zh) | 一种会话信息同步方法、装置以及系统 | |
CN101783759B (zh) | 一种总线错误恢复处理方法 | |
CN102521059B (zh) | 一种星载数据管理系统自主容错方法 | |
CN101170472A (zh) | 一种基于以太网技术的数控通信方法 | |
CN100573499C (zh) | 用于对固定等待时间互连进行锁步处理的方法和装置 | |
CN102664719B (zh) | 适用于dcs的分布式安全传输方法 | |
CN104753716B (zh) | 传输系统错误检测和校正系统及方法 | |
CN103473196A (zh) | 一种1553b总线与星内设备总线间遥测遥控数据传输装置 | |
CN105388890A (zh) | 一种用于列车控制的安全计算机系统 | |
CN103516571A (zh) | 一种双can总线保证数据通信可靠性的系统架构及其方法 | |
CN102984059A (zh) | 千兆以太网冗余网卡及其链路切换条件判定结果控制方法 | |
CN101576835B (zh) | 一种满足拜占庭协议的两轮通信方法 | |
CN104077181A (zh) | 一种适用于分布式任务管理系统的状态一致性维护方法 | |
CN102123110B (zh) | 一种网关系统的数据传输方法及网关系统 | |
CN110519374B (zh) | ZigBee网络化工业控制系统的边缘计算方法及其边缘节点 | |
CN112887176B (zh) | 一种基于心跳报文的计算机联锁子系统主备切换系统 | |
CN102820994A (zh) | 一种用于网络隔离环境下的数据交换装置及方法 | |
RU2431174C1 (ru) | Комплекс резервируемых программно-аппаратных средств автоматизации контроля и управления | |
CN203340113U (zh) | 内外网穿透远距离传输数据的源服务器及目的服务器系统 | |
CN109194555B (zh) | 一种改进的小卫星数传分系统总线调度系统 | |
CN114826812A (zh) | 一种rs485通信多主站的实现方法及系统 | |
CN101527707A (zh) | 用于sctp协议栈热备份的实时一致性检验方法及相关装置 | |
CN103391324B (zh) | 一种基于tftp协议的热备份方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101201 Termination date: 20200531 |
|
CF01 | Termination of patent right due to non-payment of annual fee |