DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1207|回复: 0
打印 上一主题 下一主题

[待整理] 嵌入式分布系统中网络设备的时间同步

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-10 07:40:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
引言
       
          随着我国航天事业的飞速发展,将逐步构建多群、多任务、多功能相对独立的测控计算机结构体系。由于实现功能的不同,系统的组织结构与操作系统也千差万别,对时间精度的要求很不相同。整个系统必须在统一的时间尺度下进行工作,因此各节点之间时间的统一具有必要性;另一方面,当今世界宽带网络飞速发展,各种支持网络系统也越来越多,各个网络系统之间互联也需要高精度、通用的时间同步。在这种状况下,如何探索和研制简便、可靠、准确和通用的网络授时系统就成为迫切需要解决的问题。
       
          要实现网络设备时间同步,主要完成两方面的工作内容:第一,通过某种授时方式获取精确时间;第二,将精确时间同步到网络中的每一台设备,这也是网络时间同步系统的设计难点。
       
          本文将要介绍的是一种基于嵌入式实时操作系统VxWorks的NTP网络授时服务器,其内核响应速度快,可以方便地支持实时处理,克服了以往开发网络授时服务器的弊端。本文介绍了NTP服务器的原理、系统总体任务及其通信机制设计,并针对NTP协议运行在VxWorks下的一些问题进行了相应的改进,同时通过性能测试分析表明本系统的有效性。
       
        1 NTP工作原理
       
        1.1 NTP协议
       
          NTP协议是通过网络的通信来实现计算机时钟的同步,而数据本身在网络上的传输也是需要时间的。因此,要获得准确的当前时间,就必须考虑网络延迟造成的影响。实际上,可通过计算报文的来回程时间来估计网络延迟。网络时间同步的最主要问题是,如何获得当前的准确时间。NTP通过一系列同步算法选择精确时间,规避网络延迟,保证网络时间同步的安全性。
       
          NTP 协议支持3种对时工作方式。
       
        ① 主从模式(Server/Client mode):用户向一个或几个服务器提出服务请求,根据所交换的信息计算两地时间偏差和网络延迟,从中选择认为最准确的时间偏差并调整本地的时钟。
       
        ② 广播模式(Multicast/Broadcast mode):此种模式适用于高速的局域网中。局域网中的一个或多个服务器以固定的时间周期向某个多播地址广播自己的时标,客户端不计算时间偏差和网络延迟,直接用接收到的时标修正自己的时钟,忽略各种误差。
       
        ③ 对称模式(Symmetric mode):两个以上的时间服务器互为主从进行时间消息的通信,相互校正对方的时间以维持整个同步子网的时间一致性。
       
          根据本系统的特点,最终确定选用主从模式。因为系统中各个子系统的结构和功能是完全相同的,所以只需要先实现一个子节点的服务,就可以以相同的方法实现所有子节点的时钟同步。
       
        1.2 NTP原理与实现
       
          本系统的NTP协议的对时工作是在主从工作方式下实现。NTP算法首先就要根据服务器和客户端的往返报文来确定两地时钟的差值和报文在网络中传输的延迟。这里定义,客户端和时间服务器之间的时间偏差(offset)用希腊字母θ表示,对时过程中的网络路径延迟(delay)用希腊字母δ表示。
       
          假设子节点A要向服务器方B请求时间服务。A首先要生成一个标准的NTP查询信息包,通过网络发送到B。B收到查询信息包后,根据自己的本地时间,生成一个标准的NTP时间信息包,通过网络发回给A。分布式系统中的NTP实现原理图如图1所示。
       
        图1 分布式系统中NTP实现原理图
       
          其中,T1为子节点A发送查询请求时间,T2为服务器B收到查询请求时间,T3为服务器B回复时间信息包时间,T4为子节点A接收到的时间信息包时间,T1、T2、T3和T4以客户方的时间系统为参照,δ1为请求信息在网上传播所消耗的时间,δ2为回复信息在网上传播所消耗的时间。
       
          其过程如下:
       
        ① 客户端首先向时间服务器发送一个NTP 数据包,同时在数据包上打上客户端本机的发送时间戳T1;
        ② 服务器接收到客户NTP 数据包后,同时在数据包上打上服务器本机的接收时间戳T2;
        ③ 服务器向客户返回NTP 数据包后,同时在数据包上打上服务器本机的发送时间戳T3;
        ④ 客户端接收到服务器返回的NTP 数据包,同时在数据包上打上客户端接收时间戳T4。
       
          当完成了整个过程之后,客户端就拥有了4个时间T1~T4,并通过他们算出A与B时间上的差值,用以参考并调整客户方时钟。
       
          这里设定服务器的时钟是准确的,服务器和客户端时钟的时间偏差是θ,从客户端发送报文到服务器端的路径延迟是δ1,从服务器到客户端的路径延迟是δ2,路径延迟总和是δ. 那么可以列出3个方程式:
       
       
          假设从客户端到服务器的路径延迟和从服务器到客户端的路径延迟相等,即δ1=δ2=δ/2 ,以上3个方程式变为:
       
       
          可以求出,服务器和客户端时钟的时间偏差θ=[(T2-T1)+(T3-T4)]/2,客户端与服务器总的网络路径延迟δ=(T4-T1)-(T3-T2)。
       
        图2 NTP时间偏差与网络延时
       
          服务器和客户端之间的时间差异可以从图2中看出。
       
          在知道了如何用NTP 算法计算精确的时间偏差值后,需要使用时间偏差值来调整本地时钟的时间,才算完成了NTP 时间同步的全部工作。
       
        2 分布式系统整体架构及实现
       
        2.1 分布式系统架构
       
          目前课题的整个系统是由5块相同的嵌入式开发板组成,硬件平台是PowerPC MPC8548ERM,移植的操作系统为VxWorks 5.5,开发板之间的连接通信目前实现了3种方式,即以太网、串口和Rapid IO方式,本方案时间同步协议的实现是基于以太网通信介质的。其中一块开发板作为时间服务器,并通过串口和上位机相连接,以实现通过上位机来控制整个分布式系统。NTP网络分布式系统结构如图3所示。
       
        图3 NTP网络分布式系统结构
       
          本课题目前基于UDP协议实现分布式系统中NTP协议的时间同步。
       
        2.2 NTP设计实现
       
          由于整个系统是独立的分布式系统,整个系统对绝对时间的要求不高,只需要各子系统之间的相对时间达到一致即可。所以首先需要确立一个子系统作为服务器端,此端受上位机系统的控制。系统运行时,通过上位机向此服务器端发送预设的时钟值,此时钟源就作为整个分布式系统的参考时钟源。 而其他子系统作为客户端,可以在合适的时候向服务器申请时间校准服务。
       
          NTP服务器上的时间戳为从1900年1月1日0时0分至今的秒数(UTC时间)。而子节点获取的时间戳为1970年1月1日0时0分至今的秒数(程序中的time(NULL)返回的是UTC时间)。所以,要对子节点的时间戳与服务器时间戳计算时,需在子节点的时间戳基础上加上1900~1970年的秒数:3 600 s×24×(365×70+17)。
       
          在程序实现中,每隔固定的一段时间子节点就需要进行时钟校对。校对时,子节点首先需要调用系统底层提供的本地时间查询函数,得到当前系统准确时间,然后将此时钟数据打包成专用的NTP数据格式,形成时间查询包,再通过已经搭建好的如图3所示的分布式网络环境,将时间查询包发送到服务器端。
       
          时钟服务器端在接收到客户端发送来的时间查询包的时候,将调用本地时钟查询函数来记录此时间请求数据包到达的精确时间,然后根据NTP 协议的实现原理,再次调用系统时间来形成用以回馈给客户端的时间信息包,并同时将时间信息包发回客户端。当客户端收到此时间信息包后,即可根据NTP的时间计算和校准公式来计算网络延时和与服务器的时间差值,并在规定的时间范围内实现自身的时钟同步。此即一次完整的时间校准过程。程序设计流程如图4所示。
       
        图4 NTP程序设计流程
       
          在子系统软件对服务器返回的时间信息包进行分析的过程中,还要进行网络时延的估计。这一部分的设计对于提高时间同步的精度至关重要,因此在软件设计前需要对网络状态和时延数据进行大量的统计分析,以确定较好的时延补偿方法。
       
        3 性能评估
       
          由系统测试获得,服务器和客户端两端的运行时的时钟数据有:T1=1970010100:00:00:583, 转化后为0 s+583 ms;T2=2011082216:17:21:368, 转化后为1 314 029 841 s+368 ms;T3=2011082216:17:23:568, 转化后为1 314 029 843 s+568 ms;T4=1970010100:00:02:799, 转化后为2 s 799 ms。
       
          为了计算和时间校对的方便,程序会将时钟数值单位转换成s和ms。
          根据公式可以计算出:
        ① 时钟的时间偏差θ=[(T2-T1)+(T3-T4)]/2=1 314 029 840.776 s。
        ② 客户端与服务器平均网络路径延迟δ=[(T4-T1)-(T3-T2)]/2=8 ms。
       
          在请求时间同步的客户端计算出时间偏差值和网络路径延时后,会根据设置的阈值进行参考比对。如果计算所得值在阈值范围内,则进行本地时钟的调整;如果所得值超出了这个阈值范围,则认为这个时间信息有误或者没有必要进行本地时钟值的调整,即不进行时钟调整。
       
          有关资料中对10 000次校时请求的往返网络时延进行统计,90%以上的网络时延不到1 ms,引起的网络延时误差小于±1 ms。在实际的测量过程中,系统时间的测量误差一般为±10 ms。因此,测量误差为影响结果的主要因素。另一方面,对于偶然出现的网络时延较大的情况,应该在程序中设置网络时延箝位值δ0,即当δ>δ0时丢弃该时间信息包,重新发送校时请求,从而起到保证校时精度的作用。
       
          对10 000次校时请求计算出的时差值进行统计后得出,相对于其均值,时差值大约分布在±50 ms区间范围内,形成一条单一斜率的曲线。通常,为了避免由于校时间隔较小形成校时频繁,应根据时差走势图在程序中设置时差箝位值&theta;0,即当&theta; <&theta;0时,不对本地时钟进行更新,直接退出。
       
          由实际的测试数据可以看出本设计方案能符合应用需求。
       
        4总结
       
          本文研究和讨论了NTP服务器的任务设计方案和服务器实现的关键算法。系统选用WindRiver公司开发的嵌入式实时操作系统VxWorks以及高性能处理器PowerPc MPC8548ERM,稳定性有了明显的提高,保证了服务器系统能够长时间持续工作。网络时间服务系统的构建并不复杂,但要保证达到较高的授时精度,不仅需要对网络时延估计进行深入的分析和研究,而且建立时间服务器网络授时体系也是非常必要的。多个时间服务器在不同的区域的合理分布,能有效保证广域网的授时精度。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-27 14:44 , 耗时 0.109877 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表