高精度NTP报文接收方法和发送方法与流程

文档序号:13763091阅读:800来源:国知局

本发明涉及通信技术。



背景技术:

随着科技的持续发展,许多行业对时间同步的要求越来越高,高精度的、可靠的系统时间同步是诸多领域安全可靠运行的保障,如通信、电力、交通、金融证券、航天科研等。

在传统的时间同步技术中,主要由客户端与服务器间直接通过携带时间戳的报文进行交换,并利用一定的算法来进行时间同步。随着目前网络对安全性要求的不断提高,为了防止恶意修改或复制时间戳造成安全风险,基于认证的网络时间同步技术得到广泛地应用。

NTP是一种广泛应用在网络成员之间的时间同步协议,实现NTP协议的网络成员间通过交互NTP报文使得彼此的时钟一致,从而实现自动调节各个系统时钟的功能。NTP不仅可提供精准的时间同步服务,而且支持认证机制和MD5验证。因此,NTP是一种具有抗网络安全风险的网络时间同步协议。

传统的NTP主要由CPU采用软件的方式来获取NTP报文的收发时间戳,因此NTP的授时精度一般都在毫秒级别,采用专用的服务器也只能达到微秒级。因此,NTP收发时间戳的精度是影响NTP时间同步精度的最主要因素,NTP报文的收发时间戳的精度越高,NTP时间同步的精度才能提高。

中国专利CN201210008137.2“高精度NTP授时系统的授时方法”公开了一种利用可编程逻辑器件对经过的NTP报文进行时间戳插入修改并修改CRC32校验来保证报文完整性,来提高NTP的授时校时精度。该方法NTP报文的生成或处理都有CPU来完成,只是在MAC和PHY之间,利用可编程逻辑器件对经过的NTP报文进行时间戳插入或修改,并重新计算替换报文的CRC32校验。这种处理方法不能适用于带有认证机制的NTP报文。因为带有认证机制的NTP报文自报文生成后,若报文的信息传输过程中被修改,会破坏NTP报文认证信息的完整性,接收端将丢弃不能通过认证的NTP报文。



技术实现要素:

本发明所要解决的技术问题是,提供一种能够准确获取NTP报文的接收时间的NTP报文接收方法,以及一种能够准确控制NTP报文的发送时间的NTP报文发送方法。

本发明解决所述技术问题采用的技术方案是,高精度NTP报文接收方法,其特征在于,包括下述步骤:

1)PHY接口接收报文,FPGA从PHY发到MAC接口的报文中识别出NTP报文,并提取出NTP报文的源IP地址和IP标识数据;;

2)FPGA记录NTP报文的接收时间戳,并将NTP报文的源IP地址和IP标识数据作为一条数据缓存到存储区(FIFO);

3)CPU处理MAC接收报文,对于其中的NTP报文,根据NTP报文的源IP地址和IP标识从FIFO读取出NTP报文的接收时间时间戳。

进一步的,所述步骤3)中,CPU依据NTP报文的源IP地址和IP标识数据在FIFO中进行查找配对,确定NTP报文的接收时间戳。(从FIFO中依次读取一条数据根据源IP地址和IP标识数据与接收的NTP报文的源IP地址和IP标识进行比较,当比较结果相同时,将该条数据的时间数据作为接收NTP报文的接收时间数据。)

本发明还提供一种高精度NTP报文发送方法,其特征在于,包括下述步骤:

a)CPU生成NTP报文并由MAC发到FPGA,其发送时间戳中包含了预留时延,所述预留时延为报文从生成到发送端口预计所需的发送时间;

b)FPGA对来自MAC发送接口的报文进行识别和缓存,识别出其中的NTP报文,并记录NTP报文的发送时间戳数据;

c)FPGA优先安排NTP报文在其发送时间戳时刻将NTP报文发送到PHY接口。

进一步的,步骤c)中,FPGA依据NTP报文的发送时间戳和当前系统时间,计算下一帧可发的非NTP报文(非NTP报文可能缓存了很多帧,应该是先查看下一帧,如果下一帧满足发送条件,则发该帧;完成了,又重复该过程)的长度,如果可发的非NTP报文长度大于缓存的非NTP报文长度,则将该非NTP报文发送至PHY接口;如果可发的非NTP报文长度小于或等于缓存的非NTP报文长度,则等待至NTP报文发送时间戳的时刻,在发送时间戳的时刻将NTP报文发到PHY接口。

步骤b)中,FPGA将NTP报文存储在NTP报文存储区,将非NTP报文存储在非NTP报文存储区。对于非NTP报文缓存,应该记录报文长度,便于发送调度计算;对NTP报文,应该从报文中提取出发送时间戳数据,作为该报文的发送时间控制数据。

本发明通过硬件方式获取NTP报文的接收时间戳,提高了NTP报文接收时间戳精度;通过NTP报文的特征数据与接收时间戳来匹配,保证NTP接收时间与报文处理时的数据一致性。这样从获取时间戳的方式及数据的可靠匹配保证了NTP报文的接收时间戳的精度。

本发明通过硬件方式控制NTP报文的发送时间与报文中所设置的时间数据一致,提高了NTP报文发送时间戳的准确性。

本发明不改变报文的任何内容,保证了报文的完整性,适用于带有认证及MD5验证功能的NTP应用需求。

附图说明

图1为本发明的方案示意图。

具体实施方式

参见图1。

在NTP报文接收端,从PHY发到与MAC接口的以太报文进行报文识别,根据NTP报文的特征如UDP的端口号123识别出是否是NTP报文,对于NTP报文提出NTP报文源IP地址及IP标识数据,并记录从PHY接口接收报文时刻的时间戳,再将时间戳数据、源IP地址及IP标识数据作为一条数据缓存到FIFO中;CPUFIFO的读取接口获取该NTP报文的接收时间戳数据并可以根据源IP地址及IP标识数据来准确实现接收时间戳与NTP报文的匹配,该报文经过报文识别后直接送到MAC接收接口;对于非NTP报文,直接送到MAC接收接口。以上皆由FPGA完成。

CPU从MAC中解析出NTP报文并从FIFO接口获取报文的接收时间戳,即得到NTP报文到达接收端的准确的时间戳数据。对于时间戳与报文的通道不一致,采用提取报文中的特征数据与时间戳来进行匹配,从而保证来时间戳数据的可靠性和可操作性。

在NTP报文发送端,当CPU生成NTP报文时,对于NTP报文中的发送时间戳数据要充分考虑报文从生产到发送端口发出的时间,因此发送时间戳数据要落后于NTP报文的实际生成时间。从MAC发送接口发出的以太报文,交FPGA,经过报文识别,根据NTP报文的特征如UDP的端口号123识别出是否是NTP报文,并提取出NTP报文中的发送时间戳数据,并将识别出的报文分类缓存,将NTP报文及其发送时间戳数据缓存于NTP报文缓存区域,将非NTP报文及其长度缓存于非NTP报文缓存区域。根据缓存区域中的NTP报文及非NTP报文缓存情况进行发送调度控制,优先保证NTP报文在其数据报文中设置的发送时间戳时刻发送,在无NTP报文发送或NTP报文的等待时间长时发送非NTP报文缓存区的以太报文数据。发送调度可以根据NTP报文的发送时间戳及当前系统时间,计算出可发非NTP报文的报文长度,如果该长度大于非NTP报文缓存区域中的报文长度,则将该报文从非NTP报文缓存区域发出到PHY接口;若计算出的长度小于非NTP报文缓存区域的报文长度,则等待NTP报文的发送,当NTP报文的发送时刻到来时,立即将NTP报文发送到PHY接口。

NTP时间在FPGA内根据工作时钟的控制自动运行时间,CPU根据参考时间或NTP报文计算出系统的时间偏差,通过校时接口校准系统NTP时间。这种通过时钟在FPGA内运行时间的方式,从硬件上保证了时间运行的准确性,并且便于FPGA实时获取NTP时间数据。

实施例:

一种高精度的NTP实现方案如图1,主要由PHY、FPGA、MAC和CPU构成,其中PHY与MAC完成以太报文的收发功能;CPU解析及产生以太报文,并计算系统时间的偏差,完成系统时间维护等功能;FPGA主要实现NTP时间,NTP报文的接收时间戳记录及NTP报文的发送时间控制等功能来保证NTP的收发时间戳的精度。NTP报文结构如表1。NTP在客户端/服务器模式下实现时间同步过程主要有:首先客户端向服务器发送NTP同步请求报文,报文离开客户端的时间T1,对应NTP报文中的数据Originate Timestamp;当服务器接收到该报文时,需要记录报文到达时刻的时间T2,对应NTP报文中的数据Receive Timestamp,同时服务器向客户端回复响应报文,其中响应报文的携带其发送时间戳T3,对于NTP报文中的数据Transmit Timestamp;客户端接收到响应报文的同时得到相应报文到达时间戳T4。这样NTP客户端与服务器端完成1次NTP报文交互过程中就获得了4个时间戳数据,通过计算就能得到客户端与服务器的路径延迟和客户端与服务器的时间偏差。

对于客户端,当CPU生成NTP请求报文时,首先计算MAC中未发出数据的数量,预先估计NTP请求报文从生成到发出的所需时间,然后将当前时间加上预估时间作为NTP请求报文的Originate Timestamp数据。从MAC发送接口发出的以太报文,经过报文识别,识别出NTP请求报文并从报文中提取出发送时间戳数据T1,然后将NTP请求报文及T1缓存在设置的NTP报文缓存区域;对于识别出的非NTP请求报文,将报文及报文长度缓存在设置的非NTP报文缓存区域。发送调度实时查询NTP报文及非NTP报文缓存区域的报文缓存情况,若有NTP报文缓存,查询NTP报文的发送时间T1,计算出T1与当前时间可发送报文的长度,若可发报文长度小于下1帧非NTP报文的长度,则不发送任何报文,等待直到系统时间等于T1时,立即将NTP报文发到PHY接口;若可发报文的长度大于或等于下1帧非NTP报文的长度,则发送非NTP报文。每完成1帧以太报文的发送,重复前面的判断过程。若无NTP报文缓存,则直接将非NTP报文缓存区域缓存的报文发到PHY接口。

对于服务器端,对PHY发到MAC的以太报文经过报文识别,识别出NTP请求报文时记录当前的系统时间作为NTP的接收时间戳T2,并提取出NTP请求报文的源IP地址及IP标识数据,最后将T2、源IP地址及IP标识数据写入FIFO中。CPU接收解析NTP请求报文,并从FIFO读取接口获取T2、源IP地址及IP标识数据,根据原IP地址及IP标识数据与解析的NTP报文的源IP地址及IP标识进行比对,确定于该NTP报文相对应的T2数据。

对于服务器端,当接收NTP请求报文后需要向客户端发出NTP响应报文。当CPU生成NTP响应报文时,首先计算MAC中未发出数据的数量,预先估计NTP响应报文从生成到发出的所需时间,然后将当前时间加上预估时间作为NTP响应报文的Transmit Timestamp数据。从MAC发送接口发出的以太报文,经过报文识别,识别出NTP响应报文并从报文中提取出发送时间戳数据T3,然后将NTP响应报文及T3缓存在设置的NTP报文缓存区域;对于识别出的非NTP请求报文,将报文及报文长度缓存在设置的非NTP报文缓存区域。发送调度实时查询NTP报文及非NTP报文缓存区域的报文缓存情况,若有NTP报文缓存,查询NTP报文的发送时间T3,计算出T3与当前时间可发送报文的长度,若可发报文长度小于下1帧非NTP报文的长度,则不发送任何报文,等待直到系统时间等于T3时,立即将NTP报文发到PHY接口;若可发报文的长度大于或等于下1帧非NTP报文的长度,则发送非NTP报文。每完成1帧以太报文的发送,重复前面的判断过程。若无NTP报文缓存,则直接将非NTP报文缓存区域缓存的报文发到PHY接口。

对于客户端,对PHY发到MAC的以太报文经过报文识别,识别出NTP响应报文时记录当前的系统时间作为NTP的接收时间戳T4,并提取出NTP响应报文的源IP地址及IP标识数据,最后将T4、源IP地址及IP标识数据写入FIFO中。CPU接收解析NTP响应报文,并从FIFO读取接口获取T4、源IP地址及IP标识数据,根据原IP地址及IP标识数据与解析的NTP报文的源IP地址及IP标识进行比对,确定于该NTP报文相对应的T4数据。

表1

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1