一种用于计算机网络的高精度时间同步设备、系统及方法

文档序号:7927397阅读:253来源:国知局
专利名称:一种用于计算机网络的高精度时间同步设备、系统及方法
技术领域
本发明涉及计算机网络应用技术领域,更具体地,本发明涉及一种用于计算机网络的高精度时间同步设备、系统和方法。

背景技术
分布式网络系统、计算机网络性能测量与测试系统以及网络仿真等应用都要求较高精度的时间同步。例如,在计算机网络性能测量中数据包的发送、接收时,精确的时间戳标记是时延、带宽、抖动等网络参数测量的基础。在一个多节点计算机网络测量系统中,各节点时钟除了自身要有较高精度外,还需要保持的很高的同步精度,否则通过比较节点间时间戳差值计算的延时、抖动等网络性能参数将不准确。
常用的时间同步方法一般是软件时钟同步方法,通常基于网络时间协议(Network Time Protocol,NTP)。节点利用NTP协议与网络上时间服务器同步,通过估算数据包在网络上往返延迟,计算节点时钟与时间服务器时钟偏差,从而完成节点时钟与时间服务器时钟的同步。NTP在局域网环境下可以获得1ms同步精度,在广域网环境下可以获得28.7ms同步精度。提高基于NTP协议时钟同步精度的一个办法是应用时间戳计数器(Time Stamp Counter,TSC),主流CPU都提供了TSC寄存器,它记录主机上电以来的时钟周期数,该精度与CPU频率有关,1GHz的CPU的TSC精度为1ns。结合TSC计数器的NTP同步可以将精度提高到微秒级。但这种软件方法受缓存延迟不确定以及中断响应时间不确定的影响,难以达到更高的精度。
基于以太网的硬件时钟同步技术SynUTC利用硬件电路来产生时间戳,同步误差可以达到100ns。但是SynUTC需要修改以太网底层结构,现有交换机硬件必须做出一定修改才能支持SynUTC,难以大范围推广应用。
还存在基于IEEE1588精密时间协议(Precision Time Protocol,PTP)的时间同步方法,PTP协议是网络测量和控制系统的时间同步标准,根据应用的精度要求,采用软件同步和硬件同步两种实现方式。硬件实现的PTP同步精度可达233ns,但是由于同步数据包在交换机或路由器中处理时延不确定,导致同步结果不稳定。
利用全球定位系统(Global Position System,GPS)的外部时钟源,可以达到纳秒级的同步精度。但是,GPS系统价格昂贵,且GPS天线安装不方便,导致测量节点部署位置受限。


发明内容
为克服现有计算机网络应用中时间同步的普适性差、精度低的缺陷,本发明提出一种用于计算机网络的高精度时间同步设备、系统和方法。
根据本发明的一个方面,提出了一种用于网络系统的时间同步设备,包括,GTP收发器、媒体访问控制器、收发数据包缓冲队列和PCIe端点控制器,其特征在于,所述时间同步设备还包括一个或者多个时间戳插入模块和一个或者多个PCS时间戳发生器; 其中,所述PCS时间戳发生器,用于接收和发送同步时钟信号,产生同步时间戳;所述时间戳插入模块分别和PCS时间戳发生器、媒体访问控制器以及收发数据包缓冲队列相连接,将所述同步时间戳插入到数据包的物理链路层。
其中,所述PCS时间戳发生器根据预设的频率控制字和晶振时钟信号,输出时间戳信号。
其中,所述PCS时间戳发生器接收同步时钟输入信号和晶振时钟信号,根据预设的频率控制字,产生时间戳信号提供给所述时间戳插入模块。
其中,所述PCS时间戳发生器包括 直接频率合成器,用于根据参考时钟信号和频率控制字产生时间戳信号; 时间戳计数器,包括低位计数器和高位计数器,用于接收所述时间戳信号和所述同步时钟信号或者控制信号,输出时间戳到时间戳插入模块或者提供用于主时钟时间戳。
其中,所述时间戳插入模块在从所述媒体访问控制器接收的数据包输出到接收数据包队列之前插入时间戳信息;数据包队列中的数据在发送到所述媒体访问控制器之前插入时间戳信息;其中,所述时间戳信息插入所述数据包的物理链路层。
根据本发明的另一方面,提出了一种用于网络系统的时间同步系统,包括多个所述的时间同步设备,其中,所述多个时间同步设备的其中一个作为主设备,所述其余的时间同步设备的作为从设备,所述主设备产生同步时钟输出信号,所述从设备接收所述同步时钟输出信号,实现系统的时间同步。
其中,所述主设备的PCS时间戳发生器根据预设的频率控制字和晶振时钟信号,输出时间戳信号给所述主设备的时间戳插入模块和所述从设备。
其中,所述从设备PCS时间戳发生器接收所述同步时钟输出信号和晶振时钟信号,根据预设的频率控制字,产生时间戳信号提供给从设备的时间戳插入模块。
根据本发明的又一方面,提出了一种使用上述时间同步系统的时间同步方法,包括 步骤10)、从设备接收主设备的时间同步信号,读取该从设备的当前时间; 步骤20)、获取第三次读取和第二次读取以及第二次读取和第一次读取之间的时间差Δt2和Δt1; 步骤30)、获取参考时钟的频率信号,,其中,N为频率控制字位数,

为初始频率控制字,更新所述频率控制字,,其中m为时间戳精度; 步骤40)、通过频率控制字

调整从设备的时钟频率,并计算更新的频率控制字

,使用所述频率控制字

调整从设备时钟频率,实现系统的同步。
其中,所述方法还包括 步骤50)、计算从设备读取主设备的连续两次时间差Δti=Ti-Ti-1;获取两次读取中的误差e0(i)和e1(i),e1(i)=2m-Δti,计算频率控制字

通过

调整从设备的时钟频率。
本发明利用硬件电路实现时间戳,将时间戳记录位置移到物理链路层,消除了常见软件时间戳中缓存延迟以及中断响应时间延迟带来的影响;通过基于预测的时间同步算法(Prediction-based Clock Synchronization,PCS)实现了各测量节点的精确时钟同步;本发明提高了时间戳精度,可以确保各测量节点同步时间戳误差不超过100ns,达到与采用GPS同步相当的精度。



图1为根据本发明的实施例的高精度时间同步方案示意图; 图2为传统接收场景中可以添加时间戳位置的示意图; 图3为不采用PCS同步算法时两块卡时间戳偏差示意图; 图4为图3中每块卡相邻采样数据包时间戳间隔示意图; 图5为根据本发明的实施例的时间同步系统结构示意图; 图6为根据本发明的实施例的硬件时间戳产生电路示意图; 图7为根据本发明的实施例的时间戳插入电路示意图; 图8为本发明的基于预测的时间同步算法PCS时序图; 图9为本发明的基于预测的时间同步算法PCS流程图; 图10为根据本发明的实施例的验证环境示意图; 图11为采用PCS同步算法的两块卡时间戳偏差的两小时结果图; 图12为采用PCS同步算法的两块卡时间戳偏差的十二小时结果图; 图13为PCS算法预测误差示意图。

具体实施例方式 下面结合附图和具体实施例对本发明提供的一种用于计算机网络的高精度时间同步设备、系统和方法进行详细描述。
图1示出根据本发明的实施例的高精度时间同步总体方案,如图1所示,首先利用硬件电路(诸如FPGA、PLA等类似结构)实现时间戳生成电路,生成时间同步设备,将时间戳记录位置移到物理链路层,消除常见软件方法时间戳中缓存延迟以及中断响应时间延迟带来的影响;将各同步设备互相连接,设定一个主同步设备,将所有需要同步的设备连接形成时间同步系统,在该时间同步系统中应用基于预测的时间同步算法(Prediction-based ClockSynchronization,PCS)来实现各节点设备的时钟精确同步。在本实施例中,通过FPGA构建时间戳生成电路,同样地,基于以下对时间戳生成电路的原理性描述,时间戳生成电路也可以使用PLA、ASIC或者其他集成电路实现。在本实施例中,在应用时间戳生成电路构建时间同步系统时,利用RS422连接同步设备,同样地,本发明也可以使用公知的诸如RS484、RS232或者USB、PCI等其它连接技术。在构建的时间同步统中,应用所述PCS时间同步方法,实现所连接设备的高精度同步。
图2为网络数据包接收场景中添加时间戳的位置示意图,在传统网络接口卡数据包接收场景中,用户空间域内的数据包基于具体应用程序到达网络接口卡,网络接口卡将数据包根据网络协议(诸如TCP/IP)转送到主机内存,通过中断来通知驱动程序处理收到的数据包。主机响应中断,将收到的数据包拷贝到上层协议栈处理,处理后的数据包最终到达应用程序。如图2所示,在这个过程中,时间戳可在多个位置加入媒体访问控制(Media Access Control,MAC)层、驱动层以及应用层。不同位置加入时间戳受缓存延迟及中断响应时间延迟的影响不一样,时间戳与数据包到达真实时间的偏差也不一样,其中,在媒体访问控制层所受影响最小、驱动层次之、应用层所受影响最大;差别在毫秒级。本发明的实施例中定义这个偏差为时间戳附加误差。
图3为具有相同标称频率的晶振所产生的时间戳偏差示意图,产生时间戳的时钟受晶振抖动及漂移影响其速率不稳定,因而,产生的时间戳也会随时间有偏差。
图4为图3中相邻采样数据包时间戳间隔示意图,二者是由相同标称值晶振所产生时间戳偏差。由此,本发明中定义由晶振不稳定导致的偏差为时间戳本身误差。所以本发明的实施例中定义的时间戳误差由时间戳本身误差及时间戳附加误差组成,要提高时间同步精度需要从减少时间戳本身误差与附加误差着手。
本发明的实施例中,将时间戳记录位置移到物理链路层,由硬件电路将时间戳加入到应用系统中,图5为根据本发明一个具体实施例的时间戳同步设备结构图。由于在数据包离开MAC后就加入时间戳,使得可以排除时间戳附加误差中各种软件延迟的影响因素,将时间戳精度提高到纳秒级。
在本实施例中,该设备电路结构基于FPGA实现,可以将该电路结构应用到网卡中或其它网络测量设备中。
如图5中所示,该时间同步设备包括GTP收发器、媒体访问控制器、收发数据包缓冲队列(图中的接收数据包队列和发送数据包队列)以及PCIe端点控制器。现有的设备中同步时钟输入和输出通过收发数据包缓冲队列直接与媒体访问控制器相连,通过软件方法控制来实现同步。在本实施例中,该时间同步系设备还包括一个或者多个时间戳插入模块和一个或者多个PCS时间戳发生器,其中,PCS时间戳发生器接收和发送同步时钟,接收包处理器的控制信号,和时间戳插入模块相连接,控制时间戳插入模块,时间戳插入模块分别和PCS时间戳发生器、媒体访问控制器、包处理器以及收发数据包缓冲队列相连接,将时间戳插入到网络数据的物理链路层。在本实施例中,图中示出两个时间戳插入模块,本发明可以使用一个时间戳插入模块。
需要同步的各部件通过图5中所示的同步时钟输入、输出互连(物理连接上可以是任何形式的串行输入或者其它公知连接方式),PCS时间戳发生器产生的时钟信号输入到时间戳插入模块(例如,数据传输的内容为64比特的时间戳信息),在时间戳插入模块中将时钟信号插入到接收或发送的网络数据包中。
图6示出图5中所示的PCS时间戳发生器的详细电路,如图6所示,所述发生器的核心是直接频率合成器,通过调整频率控制字调整生成时钟频率。在本实施例中,时间戳寄存器共64bit,高32bit值代表从1970年1月1日凌晨0点开始的秒数,低32bit值表示秒的分数。这种表示方式能达到的最高分辨率为2-32s,即233ps,而且,通过将低32-mbit置成0,可获得分辨率为2-ms的时钟。时间戳寄存器高32bit秒计数初始值通过驱动程序在初始化时由主机写入,因此要求主机时间具有秒级精度,这通过NTP协议可方便实现;低32bit秒分数部分由内部计数器产生,计数器在直接频率合成器输出时钟频率fsyn下计数,计满后产生进位信号,高32bit计数值加1。
如图6所示,各部件通过数据线相连,其中参考时钟为图5所示的外部晶振输入的时钟,频率控制字为预设的频率调节参数;直接频率合成器的输出值寄存到时间戳低位计数器中;时间戳低位计数器的进位信号输入到时间戳高位寄存器中,当节点为主节点时,该进位信号还将产生输出脉冲信号提供给从节点;时间戳高位寄存器以及时间戳低位寄存器的值送入到时间戳插入模块;当节点为从节点时,利用主节点提供的输入脉冲,产生中断信号,通知驱动读取当前时间戳寄存器的值。
图7示出图5所示的时间戳插入模块的详细电路,如图7所示,接收的数据包先寄存到寄存器中,然后在该数据包输出到接收数据包队列之前插入当前时钟信息(当前时钟值由图6所示的硬件时间戳生成电路产生);发送数据包队列中的数据在发送之前也先寄存到寄存器中,插入当前时钟后发送到MAC;其中,数据时钟信息插入数据的物理链路层。
在本发明的另一个实施例中,本发明提出一种时间同步系统,包括多个上述的时间同步设备,其中,多个时间同步设备的其中一个作为主设备,产生同步时钟输出信号,所述其余的时间同步设备的作为从设备,接收主设备发送的同步时钟输出信号,经过本设备的时间戳发生器和时间戳插入模块的相应处理,实现系统的时间同步。所有从设备与该主同步设备互联或者分别相连,构成时间同步系统,所述连接方式包括但不限于RS484、RS232、RS422以及USB。主设备的PCS时间戳发生器根据预设的频率控制字和晶振时钟信号,输出时间戳信号给所述主设备的时间戳插入模块和所述从设备。从设备PCS时间戳发生器接收所述同步时钟输出信号和晶振时钟信号,根据预设的频率控制字,产生时间戳信号提供给本设备的时间戳插入模块。
本发明中还提出了一种基于预测的时钟同步算法(Prediction-based ClockSynchronization,PCS)通过上述系统来完成多个节点间的时钟同步,多节点同步时需要指定一个主节点发出参考时钟,与主节点同步的节点称为从节点,主从节点的指定依据应用需求而定,没有任何附加限制,主从节点间通过异步串行总线互连。同步时主节点每隔1s输出一个脉冲到各从节点,从节点收到脉冲后,读取时间戳寄存器,测出上一秒结果,调整DDS频率控制字期望下一秒同步偏差最小。本发明的时序示意图如图8所示,本发明分成启动和同步两个阶段。
启动阶段 第0步,从节点启动,当从节点PCS时间戳发生器接收到主节点输出的秒脉冲后,从时间戳计数器中读取当前时间T0,同时产生中断信号通知驱动读取该值; 第1步,当从节点PCS时间戳发生器再次接收到主节点输出的秒脉冲后,从时间戳计数器中读取当前时间T1,同时产生中断信号通知驱动读取该值,驱动利用第0步与第1步读取的时间值计算第0步与第1步之间的时间差Δt1=T1-T0; 第2步,当从节点PCS时间戳发生器第3次接收到主节点输出的秒脉冲后,从时间戳计数器中读取当前时间T2,同时产生中断信号通知驱动读取该值,驱动利用第1步与第2步读取的时间值计算第1步与第2步之间的时间差Δt2=T2-T1,并利用下面的公式计算参考时钟(晶振输出)的实际频率; ,其中N为频率控制字位数,本实施例中值为32;

为初始频率控制字,本实施例中值为0xABCC7712;驱动利用下面的公式计算新的频率控制字
,其中m为时间戳精度,本实施例中值为24; 第3步,当从节点PCS时间戳发生器第4次接收到主节点输出的秒脉冲后,从时间戳计数器中读取当前时间T3,同时产生中断信号通知驱动读取该值,驱动利用第2步与第3步读取的时间值计算第2步与第3步之间的时间差Δt3=T3-T2。从节点PCS时间戳发生器应用第2步中计算出的频率控制字

调整时钟频率,并由驱动利用下面的公式计算新的频率控制字
第4步,当从节点PCS时间戳发生器第5次接收到主节点输出的秒脉冲后,从时间戳计数器中读取当前时间T4,同时产生中断信号通知驱动读取该值,从节点PCS时间戳发生器应用第3步中计算出的频率控制字

调整时钟频率,并由驱动利用上面第3步的公式计算新的频率控制字

。至此,启动阶段结束。
B.同步阶段 经过启动阶段的4步调整之后,从节点时钟与主节点时钟已经同步,但是考虑到时钟晶振的不稳定性,从节点需要不断修正频率控制字,从而保持与主节点的长期同步; 1.当从节点PCS时间戳发生器接收到主节点输出的秒脉冲后,从时间戳计数器中读取当前时间Ti,同时产生中断信号通知驱动读取该值,驱动计算两次连续中断的时间差Δti=Ti-Ti-1; 2.驱动计算前两步预测误差e0(i)及e1(i) e1(i)=2m-Δti,计算预测误差时不限于本实施例中提供的计算公式,公式中变量含义同前所述;3.从节点PCS时间戳发生器应用上一次循环计算出的频率控制字

,驱动计算下一步频率控制字
不同的频率控制字会使得图6中直接频率合成器合成出来的时钟频率不同,如果发现从节点在主节点两次脉冲间隔内时间走快了,那么需要将从节点的频率控制字调小,反之,调大。通过不断的调整,可以保证从节点时钟与主节点时钟趋于一致。
在进行具体设备的同步和同步测试时,将需要同步的设备按照图10所示,利用异步串行连接线互连(例如RS422)。图10是为了验证本发明性能的实验环境,网络测试仪采用Spirent公司TestCenter,利用其千兆模块发出测试数据包,通过分光器将一路流量分成两路相同流量,经过等长光纤跳线连接到两个测试节点,数据包到达两个测试节点时刻相同。两个测试节点分别安装在高性能服务器上。安装带有所述同步设备的两块网卡,启动同步驱动方法,并利用RS422连接两块网卡即可进行同步或者测试。
图11为采用PCS同步算法的两块卡时间戳偏差的两小时结果,其中横坐标为测量时间点,纵坐标为两块卡时间戳偏差(单位为纳秒),从结果可见,时间戳偏差在-50ns~180ns之间。图12为采用PCS同步算法的两块卡时间戳偏差的十二小时统计结果,其中横坐标为时间戳偏差,纵坐标为该偏差出现的频率,从结果可见,PCS算法通过调整频率控制字很好地完成了两个设备的同步,大部分时间戳偏差控制在0~100ns之内。图13显示了PCS算法的预测误差,其中横坐标为测量时间点,纵坐标为两块卡时间戳偏差(单位为纳秒),从结果可见预测误差主要分布在-50ns~50ns之内。
最后应说明的是,以上实施例仅用以描述本发明的技术方案而不是对本技术方法进行限制,本发明在应用上可以延伸为其他的修改、变化、应用和实施例,并且因此认为所有这样的修改、变化、应用、实施例都在本发明的精神和教导范围内。
权利要求
1、一种用于网络系统的时间同步设备,包括,GTP收发器、媒体访问控制器、收发数据包缓冲队列和PCIe端点控制器,其特征在于,所述时间同步设备还包括一个或者多个时间戳插入模块和一个或者多个PCS时间戳发生器;
其中,所述PCS时间戳发生器,用于产生同步时间戳;所述时间戳插入模块分别和PCS时间戳发生器、媒体访问控制器以及收发数据包缓冲队列相连接,将所述同步时间戳插入到数据包的物理链路层。
2、权利要求1的时间同步设备,所述PCS时间戳发生器根据预设的频率控制字和晶振时钟信号,用于接收和发送同步时钟信号,其中,所述同步时钟信号包括时间戳信号。
3、权利要求1的时间同步设备,所述PCS时间戳发生器接收同步时钟输入信号和晶振时钟信号,根据预设的频率控制字,产生时间戳信号提供给所述时间戳插入模块。
4、权利要求1的时间同步设备,所述PCS时间戳发生器包括
直接频率合成器,用于根据参考时钟信号和频率控制字产生时间戳信号;
时间戳计数器,包括低位计数器和高位计数器,用于接收所述时间戳信号和所述同步时钟信号或者控制信号,输出时间戳到时间戳插入模块或者提供用于主时钟时间戳。
5、权利要求1的时间同步设备,所述时间戳插入模块在从所述媒体访问控制器接收的数据包输出到接收数据包队列之前插入时间戳信息;数据包队列中的数据在发送到所述媒体访问控制器之前插入时间戳信息;其中,所述时间戳信息插入所述数据包的物理链路层。
6、一种用于网络系统的时间同步系统,包括多个权利要求1到5的任意一个所述的时间同步设备,其中,所述多个时间同步设备的其中一个作为主设备,所述其余的时间同步设备作为从设备,所述主设备产生同步时钟输出信号,所述其余的从设备接收所述同步时钟输出信号,实现系统的时间同步。
7、权利要求6的时间同步系统,其中,所述主设备的PCS时间戳发生器根据预设的频率控制字和晶振时钟信号,输出时间戳信号给所述主设备的时间戳插入模块和所述从设备。
8、权利要求6的时间同步系统,其中,所述从设备PCS时间戳发生器接收所述同步时钟输出信号和晶振时钟信号,根据预设的频率控制字,产生时间戳信号提供给从设备的时间戳插入模块。
9、一种用在权利要求6所述的时间同步系统中的时间同步方法,包括
步骤10)、从设备接收主设备的时间同步信号,读取该从设备的当前时间;
步骤20)、获取第三次读取和第二次读取以及第二次读取和第一次读取之间的时间差Δt2和Δt1;
步骤30)、获取参考时钟的频率信号,其中,N为频率控制字位数,
为初始频率控制字,更新所述频率控制字,其中m为时间戳精度;
步骤40)、通过频率控制字
调整从设备的时钟频率,并计算更新的频率控制字
使用所述频率控制字
调整从设备时钟频率,实现系统的同步。
10、权利要求9的方法,其中,所述方法还包括
步骤50)、计算从设备读取主设备的连续两次时间差Δti=Ti-Ti-1;获取两次读取中的误差e0(i)和e1(i),e1(i)=2m-Δt1,计算频率控制字
通过
调整从设备的时钟频率。
全文摘要
本发明提供一种可用于计算机网络性能测试、监控系统以及网络仿真的高精度时间同步设备、方法和系统。包括利用硬件电路实现时间戳发生电路,将时间戳记录位置移到物理链路层,消除常见软件时间戳中缓存延迟以及中断响应时间延迟带来的影响;并且通过基于预测的时间同步算法(Prediction-based Clock Synchronization,PCS)实现各测量节点的精确时钟同步;本发明提高了时间戳精度,可以确保各测量节点同步时间戳误差不超过100ns,达到了与采用GPS同步相当的精度,但实现简单、造价低廉。
文档编号H04J3/06GK101388741SQ20081022489
公开日2009年3月18日 申请日期2008年10月24日 优先权日2008年10月24日
发明者谢应科, 王建东, 超 祝, 谢高岗 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1