相关概念:
节点的时间信息:在本算法中指的是节点的本地全局时间计数器
微节拍:周期性的、用以增加计数器值的事件
时间粒度:连续两个微节拍间的时间区间
全局时间:每个本地时钟选择一个微节拍子集,作为该时钟本地可见的全局时间的节拍,全局时间是抽象的
内同步精度:任意时钟的微节拍的时间戳偏移都不得超过的数
算法目的:发生拜占庭错误时实现分布式容错时钟的再同步(解决集中式主控同步中主控节点失效的问题)
前置条件:时钟总数N>=(3k+1),k是拜占庭时钟的数量
算法流程:

  1. 每个节点与其他节点交换信息以获取其他全部节点的全局时间计数器状态,这里需要减去时间信息(前面提到的其他节点的本地可见的全局时间)传输时的时间延迟抖动(系统收发、解释同步消息的时间,包括调度、操作系统、协议栈的消息队列、消息重传策略、介质访问延迟、接收端的中断延迟、调度延迟);
  2. 执行收敛函数FTA计算本地全局时间计数器的校正值,如果校正值大于系统规定的精度值,则自身无效,在FTA中,由于拜占庭时钟提供的时钟值必定大于或小于正常值,故它在处理阶段中被剔除,从而屏蔽了它对其他正常时钟的影响
  3. 调整本地时间:状态校正、速率校正
    状态修正:直接用校正项修改本地时间值
    速率修正(建议):用校正项修改本地时钟运行速率,使其在下一个再同步间隔期间加快或减慢,改变微节拍数或调节晶振电压,系统中所有的速率修正项平均值接近0
    流程图:

    环境搭建:
    四台通过局域网连接的计算机。设置组播地址为224.0.0.111,端口为8000,修改所有电脑的网卡名称统一为eno1,对于linux系统,输入命令sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev eno1(其中224.0.0.0是网段地址)加入D级多播网络的IP路由,选择一台制造拜占庭错误,其余三台不做改动,四台电脑均设置成不通过互联网校正时间,先每台电脑互相发送一段数据确定彼此间的传输延迟,通过配置文件确定一个时间使所有的程序同时(各自的本地时间)开始第一次组播,之后每台电脑每1分钟(可配置)组播一次(按照本地时钟的频率),组播后启动计数器计算收到的其他节点的组播的时间,并记成收到消息时的本地时间,进行FTA。
    程序分为服务端线程与客户端线程。服务端负责发送组播数据,客户端负责监听组播数据,当收到3个组播数据后就执行FTA校正本地时间。

项目地址:https://github.com/carduswork/FTA

时钟容错同步算法之FTA相关推荐

  1. 《安富莱嵌入式周报》第307期:开源智能制冷板,Keil MDK6发布时间,编程助手Github Copilot X,Matlab2023,高品质电容式麦DIY

    周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Pow ...

  2. UART、RS232、RS485、IIC、SPI、CAN、CANFD、LIN、flexray、以太网等总线介绍

    目录 A.基础概念 A.1 字节 A.2 波特率 A.3 QoS A.4 AVB A.5 TSN A.6 DDS A.7 SOME/IP A.8 SOME/IP与DDS的差异点 A.9 以太网帧 A. ...

  3. Dynamo涉及的算法和协议——p2p架构,一致性hash容错+gossip协议获取集群状态+向量时钟同步数据...

    转自:http://www.letiantian.me/2014-06-16-dynamo-algorithm-protocol/ Dynamo是Amazon的一个分布式的键值系统,P2P架构,没有主 ...

  4. 向量时钟同步算法_如何让超级下载算法在不同CortexM内核下也能跑?

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记(1)之执行在不同CM内核下. 文接上篇 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计&g ...

  5. 向量时钟同步算法_【精品】无压缩4K超高清EFP系统中PTP精确时钟同步技术解析...

    点击标题下「广电猎酷」可快速关注 本文由<广播与电视技术>杂志独家授权.本文刊发于2020年第6期. 作者:钟辰 (中央广播电视总台,北京 100020) [摘 要] 在SMPTE-211 ...

  6. 数据库故障容错之系统时钟故障

    本文通过对CnosDB数据库系统时钟故障的讨论,提出了在单机环境和集群环境中解决系统时钟故障的方案,具有非常重要的指导意义. 可能并不存在的情况引发的讨论 有一天,CnosDB实习生小邵在做时间乱序数 ...

  7. 向量时钟同步算法_Clifford论文系列多异步时钟设计的综合及脚本技术(1)

    最近写资料的空闲时间,想着看看clifford E. Cummings的经典论文,虽然年代较远,但是每一篇都值得好好研究.本系列不定期更新,计划看完以下论文. 本文英文链接http://www.dee ...

  8. 1588时钟同步算法仿真matlab,基于卡尔曼滤波与PID控制的IEEE1588从时钟同步研究

    Research on IEEE1588 slave time synchronization based on Kalman filter and PID control theory ZHU Tu ...

  9. 时钟同步产品(时间同步系统)技术应用方案

    时钟同步产品(时间同步系统)技术应用方案 分布式系统由Tanenbaum定义,"分布式系统是一组独立的计算机,在"分布式系统 - 原理和范例"中作为用户的单一,连贯的系统 ...

最新文章

  1. php dropdownlist,为何activitieDropdownlist的值始终无法获取到
  2. select函数及fd_set介绍
  3. easyui 排序实现
  4. javascript 开发_25个新JavaScript开发人员的免费资源
  5. [软技能] png-8和png-24有什么区别?
  6. 分析师视角:2018年的数据中心3大预测
  7. 高等代数第3版下 [丘维声 著] 2015年版_高等代数笔记整理(一)
  8. Excel中度分秒格式(dd°mm′ss″)与十进制度(°)格式互转,角度与弧度互转
  9. 健身菜鸟需要掌握哪些基本的健身常识
  10. NVIDIA GeForce 800系列详细配置参数
  11. IBM山东开建全球首个完整云计算中心
  12. java中英文汉语混合排序_Java编程实现中英混合字符串数组按首字母排序的方法...
  13. beautifulsoup函数
  14. 《支付宝对接之-当面付》
  15. shor 量子算法,合数分解
  16. u8信息服务器,u8服务器的配置
  17. Centos 7.x yum安装php5.6.X
  18. Java企业应用系统——MES工厂智造系统 包含ERP WMS
  19. 使用Python通过拉马努金公式快速求π
  20. 电控系统开发工作内容梳理

热门文章

  1. SPSS MODELER笔记1----数据基本处理和整体方法概念
  2. java 随机字母_如何用java随机生成一个字母
  3. 洛谷P5633 最小度限制生成树 题解
  4. 国产手机销量同比大跌超过五成,手机库存货需10个月消化
  5. 查找数据库指定数据的数据表和字段名称SQL语句
  6. 主板的芯片和插槽介绍
  7. 用户画像无头绪?手把手教你RFM模型
  8. python作用域的理解-python中对变量的作用域LEGB、闭包、装饰器基本理解
  9. 完美国际真数苹果_苹果被破解!iPhone也能用上安卓了
  10. 杂感-ThinkPad E570