NTP网络授时系统设计与实现——NTP服务器端授时服务软件设计与实现.docx

上传人:夺命阿水 文档编号:991112 上传时间:2024-02-22 格式:DOCX 页数:15 大小:138.62KB
返回 下载 相关 举报
NTP网络授时系统设计与实现——NTP服务器端授时服务软件设计与实现.docx_第1页
第1页 / 共15页
NTP网络授时系统设计与实现——NTP服务器端授时服务软件设计与实现.docx_第2页
第2页 / 共15页
NTP网络授时系统设计与实现——NTP服务器端授时服务软件设计与实现.docx_第3页
第3页 / 共15页
NTP网络授时系统设计与实现——NTP服务器端授时服务软件设计与实现.docx_第4页
第4页 / 共15页
NTP网络授时系统设计与实现——NTP服务器端授时服务软件设计与实现.docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《NTP网络授时系统设计与实现——NTP服务器端授时服务软件设计与实现.docx》由会员分享,可在线阅读,更多相关《NTP网络授时系统设计与实现——NTP服务器端授时服务软件设计与实现.docx(15页珍藏版)》请在课桌文档上搜索。

1、第4章NTP效劳器端授时效劳软件设计与实现NTP效劳器端的授时效劳软件主要包括三个功能模块:参数设置、时钟检查与校正和NTP效劳。因参数设置局部相对较简洁,只是对参数设置文件的简洁读写,本章重点介绍CLinux系统开发平台的建立和另外两个功能模块的设计实现,同时对GPS授时、NTP协议等相关背景学问作简洁介绍。因本系统效劳器的硬件开发只停留在电路设计阶段,还没有形成实际的产品,故效劳器端软件的开发,在SmalIARM2200开发试验板上完成。SmartARM2200开发试验板,是一款承受ARM7TDMI芯片,带有RS232串口、JTAG接口、IOM以太网接口,完全支持CLinux的试验开发设备

2、,可完全模拟本系统所设计效劳器的软件和硬件环境。要完成开发工作,首先要将CLinux移植到试验开发板上,建立穿插编译环境。系统开发平台的建立1.inux操作系统下ARM应用程序开发平台的建立,包括CLinux穿插编译环境的建立、CLinux内核编译以及CLinux环境下的应用程序开发。4.1.1 4cLimIX穿插编译环境的建立117由于嵌入式Linux的开发板资源有限,不行能在开发板上运行开发和调试工具。通常需要穿插编译调试的方式进展,即“宿主机+目标机(开发板)”的形式。目标机和宿主机一般承受串口进展连接,也可同时使用以太网口连接。宿主机是运行Linux的PC,可以是安装了Linux操作系

3、统的本地机,亦可以是Linux效劳器。宿主机和目标机的处理器通常状况下都不会一样。本工程中,宿主机是安装/RedhatEL4AS的X86架构PC机,而目标机则承受SmartARM2200型试验开发板,要完成程序开发,宿主机需要建立适合于目标机的穿插编译环境。程序在宿主机上编译一连接一定位,得到的可执行文件则在目标机运行。在宿主机上安装RedhatEL4AS系统,由于目标板平台处理器是ARM,因而需要安装GCC针对ARM的编译器。适用于CLinux的编译器为arm-elf-gcc。arm-elf-gcc安装步骤为:1.将编译器文件arm-elf-tools-20040427.sh拷贝到名目usr

4、src下,为arm-elf-tools-20040427.sh增加可执行权限:#ChmOd755arm-elf-20040427.sh2 .安装arm-elf-gcco执行arm-elf-tools-20040427.sh:./artn-elf-tools-20040427.sh安装完毕后,查看usrlocalbin名目下是否存在arm-elf-gcc等文件,假设存在,根本可以确定穿插编译器安装成功。3 .添加穿插编译器的路径。一般状况下安装过程会自动执行,并在下次启动还有效。exportPATH=$PATH:usrlocalan-elfbin4.1.2,编译CLinux1 .将CLinux源

5、码包CLinux-dist-20040408.tar.gzn8i拷贝到名目如usrsrc下,并解压。tarzxvfCLinux-dist-20040408.tar.gz解压后,在当前名目下会多出文件夹CLinux-dist,即CLinux源代码名目。2 .为SmartARM2200开发板和LPC2200芯片打补丁。将光盘附带的补丁文件CLinux-dist-20040408-lpc-chy-cmj.patch拷贝到当前名目下,并执行:catCLinux-dist-20040408-lpc-chy-cmj.patchpatch-pl-dCLinux-dist为LPC2200打补丁后,在CLinu

6、x平台内核配置的时候将会有LPC2200的选项。3 .配置CLinux(1)配置方式可以通过3种方式配置CLinux,分别是makeconfigmakemenuconfig和makexconfig。各命令使用范围不一样,但效果是一样的。各命令说明如下:makeconfig-命令行方式,适用于掌握台和图形终端makemenuconfig一文本菜单方式,适用于掌握台和图形终端makexconfigX窗口图形界面方式,仅适用于图形终端由于文本菜单的配置方式,既可在终端掌握台使用,亦可在图形终端下使用,再由于其配置直观性,因而承受这种配置方式。(2)配置CLinux和文件系统口9建终端或者在掌握台(C

7、TRL+ALT+F1F6进入6个掌握台的1个)下,进入CLinux源代码所在的名目,如usrsrcCLinux-dist。cdusrsrcIp(LX-dist假设不是进展第一次编译,需要先去除以前编译产生的关心文件和目标文件,以保证编译的正确性。假设是第一次编译则可省略。makedistclean通过文本菜单方式配置CLinu0makemenuconfig在配置界面中按提示设置相应的厂商/产品、内核版本、函数库版。SmartARM2200开发试验板使用的是PHlLIPS的LPC2200芯片,使用随机光盘供给的补丁文件后,只需对平台进展根本设置,最终选择DefaUltaHSettingS后退出保

8、存即可。建立源代码文件依靠关系(第一次必需执行):makedep编译内核:make编译完毕,会在CLinux安装名目下建立romfs和images两个名目。其中romfs为romfs文件系统的临时存放名目,里面有很多有用程序;images为生成的目标代码名目,其中ronfs.img为romfs文件系统的映象文件,image.bin为文件系统和内核代码的目标文件。在IinUX2.4.x名目下会有一个Iinux文件,是编译好的内核文件,为elf格式。这些文件可用于进展CLinux内核试验。(3)下载CLinux内核到开发板先在WilKk)WS环境下,PC机使用串口与目标板连接,使用超级终端将开发板

9、随机光盘上的BootLoader程序下载到开发板。使用PC机网口与开发板相连,启动到IinUX系统,启动开发板进入FrPSeNer模式,在PC机上使用FTP客户端软件gFtp将编译好的CLinux内核以及文件系统传送到开发板。(4)启动CLinux宿主机启动到Iinux系统,使用串口与目标板相连,翻开终端窗口,运行minicom并进展相应设置,将目标板复位重启,即可依据终端窗口的提示启动至CLinUX系统。4 .配置NFS在宿主机Iinux系统中配置并启动NFS效劳,关闭系统防火墙,去掉iptables效劳,在NFS效劳器设置中添加相应的共享名目,即可完成整个穿插编译环境的设置。环境设置完成后

10、,即可在宿主机端编写系统软件,经过arm-elf-gcc进展穿插编译后,通过minicom在目标机上运行系统程序了。4. 2时钟检查与校正模块设计与实现本系统所实现的时钟检查与校正模块,其主要功能,是对效劳器串口进展初始化,通过对串口接收数据的分析,自动推断外接准确时钟源的类型,从中分别出标准时钟信号,与自身时钟进展比对,如时钟偏差超过系统设置的上限,则将自身时钟校正为标准时钟。本系统实现实际支持的外接时钟源,包括艳(钵)原子钟、GPS、北斗卫星定位系统和CDMA终端等。因对各种外接时钟源的操作根本全都,仅接收信号的格式有差异,故本文只以GPS授时为例,对系统的设计实现进展说明。4.1.1 G

11、PS授时根本原理GPS是NAVSTAR/GPS(NavigationSatelliteTimingandRanging/GlobalPositioningSystem)的简称,是由美国国防部研制的导航卫星测距与授时、定位和导航系统,由21颗工作卫星和3颗在轨备用卫星组成,这24颗卫星等间隔分布在6个互成60度的轨道面上,这样的卫星配置根本上保证了地球任何位置均能同时观测到至少4颗GPS卫星附。GPS由三局部构成:一是GPS卫星(空间局部):21颗工作卫星,3颗备用卫星;二是地面支撑系统(地面监控局部):1个主控站,3个注入站,5个监测站;三是GPS接收机(用户局部):接收GPS卫星放射信号,以

12、获得必要的导航和定位信息,经数据处理,完成导航和定位工作。GPS的根本授时原理是:卫星不连续地发送自身的星历参数和时间信息,用户接收到这些信息后,经过计算求出接收机的三维位置,三维方向以及运动速度和时间信息)。GPS的根本原理示意如以下图。(XI-X)2-Kyry)2+(z1-z)2+c2-(t-1)=d12(x2-x)2Xyj-y)2+(-z)2+c2(t-1)三2(3-)2-K-y)2+(-z)2+c2(t-)=2(XrX)2%.y+(zrz+c2(t-tw)=2求解未知数(x,y,Z/t)定位定时图4-1GPS授时原理在本系统中,可以从GPS模块的输出信号中直接猎取时间信息,故对GPS定

13、位信息的解算方法不做具体介绍。4.1.2 GPS数据接收本系统开发过程中,选择了串行接口的GPS接收机。所使用GPS接收机的串口通信协议为:串口的传输率可调,默认值为4800bpso无奇偶校验,8个数据位,1个起始位,1个停顿位。GPS板输出的数据是以美国国家海洋电子协会(NationalMarineElectromcsASSOCiatiOn)的NMEAO183ASCII码接口协议为根底的。输出为多条语句,内容包括经度、纬度、速度、方位角、高度、世界时、星历等信息。另外,GPS还可直接输出秒脉冲(IPPS),其精度高达土ls0本系统的软件设计,承受从GPS的串行接口输出信号出分别时钟信号的方式

14、来猎取标准UTe时间。4.1.3 NMEA0183数据格式22NEMAO183输出语句的格式如以下图所示: hh 检验和检验和 终止符符号(回车,换行)$AACCC,dddddd,起始tt语句头j发送的语句名数据内容域分隔符图4-2NMEAoI83输出语句的构造示意图其中以ASCn码为输出形式的NMEA0183的RMC(RecommendedMinimumSpeciflCGPS/TRANSITData,推举定位信息)语句如下:$GPRMC,*hhUTC时间,hhmmss(时分秒)格式定位状态,A二有效定位,V=无效定位纬度ddmm.mmmm(度分)格式(前面的0也将被传输)纬度半球N(北半球)

15、或S(南半球)经度dddmm.mmmm(度分)格式(前面的0也将被传输)经度半球E(东经)或W1西经)地面速率(OOO.0999.9节,前面的0也将被传输)地面航向(OOo.0359.9度,以真北为参考基准,前面的0也将被传输)UTC日期,ddmmyy(日月年)格式磁偏角(000.0-180.0,前面的0也将被传输)磁偏角方向,E(东)或W(西)模式指示(仅NMEAOI833.00版本输出,A=自主定位,D=差分,E=估算,N二数据无效)除了RMC语句以外,GlobalPositioningSystemFixData(GGA)GPS定位信息、GeographicPosition(GLL)定位地

16、理信息和Dataandtime(ZDA)时间和日期信息中,也都包含时间信息。4.2.4时钟检查与校正模块的实现GPS授时模块的流程如以下图所示:图4-3GPS授时模块流程图在实现过程中,最关键的是对RS232串口的操作,局部代码如下:intfd;intnrcad,nwrite,i;charbuff2000;fd_setrd;*翻开串口*/if(fd=open_port(fd,1)0)(perror(uopen_porterror);retum;)*设置串口*/if(i=SeLoPl(fd,4800,8,N,1)0)perror(uset_opterror);return;/*串口的读写*/FD

17、_ZERO(&rd);FD_SET(fdt&rd);while(FDJSSET(fd,0)(从gps信号中分别时钟处理(略)close(fd);return;4. 3NTP效劳模块NTP效劳模块的功能,主要是创立SOCket端口,接收客户端NTP报文,附加时间戳后回复NTP报文。NTP报文是效劳器与客户端交互的主要消息,也是客户端猎取标准时间的手段,在此先对NTP的工作模式、消息格式和同步原理做一简要介绍。4.1.1 网络时间协议概述网络时间效劳的工作模式主要有三种2目1 .主/被动对称模式(Symmetricmode)0一对一的连接,双方均可同步对方或被对方同步,先发出申请建立连接的一方工作

18、在主动模式下,另一方工作在被动模式下;2 .主/从模式(ServerZClientmode)。与主/被动对称模式根本一样。唯一区别在于,客户方可被效劳器同步,但效劳器不能被客户同步,本篇论文的时钟效劳就是在这种模式的根底上设计的;3 .播送模式(MUltiCaSt/Broadcastmode)。一对多的连接,效劳器不管客户工作在何种模式下,主动发出时间信息,客户由此信息调整自己的时间,此时网络延时被无视,因此在准度上有损失,但可满足秒级应用。本系统实现的NTP模型,工作于C/S模式。时间信息的传输都使用UDP协议,每一个时间包内包含最近一次的大事的时间信息、包括上次大事的发送与接收时间、传递现

19、在大事的当地时间、及此包的接收时间。在收到上述包后即可计算出时间的偏差量与传递资料的时间延迟。时间效劳器利用一个过滤演算法,及从前八个校时资料计算出时间参考值,推断后续校时包的准确性,一个相对较高的离散程度,表示一个对时资料的可信度比较低。仅从一个时间效劳器获得校时信息,不能校正通讯过程所造成的时间偏差,而同时与很多时间效劳器通信校时,就可利用过滤算法找出相对较牢靠的时间来源,然后承受它的时间来校时。因条件限制,本系统承受发送多个恳求的方式来模拟多个效劳器。4.1.2 NTP消息格式及其意义NTP是UDP的客户端,它本身是IP的一个客户端,IP和UDP的标头的构造描述如图;UDP端口号指定给N

20、TP是123,此号码将被使用在UDP标头里的源端口和目的端口这二栏中,剩余的UDP标头栏将被设定成规格的描述,以下为NTP消息格式的描述,跟随着IP和UDP的标头,NTP的消息格式和RFC-1305NTP的格式描述是完全一样的,从时钟效劳猎取时间偏差,NTP协议的格式NTP包=NTP头+4个时间戳=48字节。NTP的消息格式如下所示:0816243LlVNModeStratumPOllPrecisionROOtDelay(32)RootDispersion32)ReferenceIdentifier(32)ReferenceTimcstamp64)OriginateTimcstamp(64)R

21、eceiveTimcstamp(64)TransmitTimestamp(64)AUthcnticator(optional)(96)1. 图4-4NTP消息格式2. 1.eapIndicator(LI):此项为2bit码,对当日发生的跳动(闰秒)的最终一分钟发出警告,插入或者删除了一秒。3. VN(VersionNumber):3bit的整数,表示NTP的版本号码,目前最的版本是4o4. Mode:3bit的整数,表示工作模式,其定义的数位如下:0保存1主动对称2被动对称3客户端4效劳器端5播送6保存给NTP掌握信息7保存给个人使用5. Stratum:此项为8bit的无符号整数,其数位定义

22、如下:0无定义1首级时钟源2次级时钟源6. Poll:这是一个长度为为8bit的有符号整数,表示相继两个消息间的最大间隔。单位为秒,以2的基表示,范围在NTP.MINPOLL和NTP.MAXPOLL之间,理论上的范围为4(16sec)-14(16284sec),大多数实际应用范围为6(64SeC)-Io(1024sec)。7. Precision:这是一个长度为8bit的有符号整数,用来表示本地时钟的准确性,单位为秒,以2的事表示。8. Rootdelay:这是一个32bit的有符号的定点数,表示到主要时间源来回的时间延迟,小数点在15和16bit之间。依靠相对的频率和时间作为补偿,记录值可呈

23、现正位和负位,范围从几毫秒到几百毫秒。9. Rootdispersion:这是一个32bit有符号的定点数,表示相对于主要时间参考源的最大过失,小数点在15和16bit之间,只有可能消灭正值,这值通常从0亳秒到几百毫秒。10. ReferenceClockIdentifier:32bit码,识别特别的参考时间源。0层(未具体说明)或1层(主要参考),这是一个4组8bit、左边对齐的0填充ASCll字符串,ASCn标识符说明如下:表4-1ReferenceClockIdentifier数据说明StratumCodeMeaning0DCNDCN路由选择协议0NISTNIST公众模式0TSPTSP时

24、间协议0DTS数字时间效劳器1ATOM原子钟(己校准)1VLFVLF无线电(OMEGA等等)1Callsign一般无线电1LORCLORAN-C无线电导航1GOESGPESUHF环境卫星1GPSGPSUHF卫星定位11. ReterenceTimestamp:本地时钟最终被设定或校正的时间,64bito12. OriginateTimestamp:Client对SerVer发出恳求的本地时间,64bito13. ReCeiVeTimeStamP:恳求到达SerVer的本地时间,64bito14. TransmitTimestamp:SerVer对Client发出响应的本地时间,64bito15

25、. Authenticator(Optional):当NTP认证机制被实现时,此项包含有认证信息,96bit,此项为可选信息。4.1.3 NTP同步算法NTP算法首先要依据效劳器和客户端的来回报文来确定两地时钟的差值和报文在网络中传输的延迟时间。本文定义客户端和时间效劳器之间的时间偏差用表示,对时过程中的网络路径延迟用表示。NTP协议效劳器与客户端对时的根本过程如以下图所示:图4-5效劳器与客户端对时过程上图中,Tl和T4是客户端时钟记录的发送NTP报文和接收NTP报文的时间,T2和T3是效劳器端时钟记录的接收和发送NTP报文的时间。假设效劳器的时钟是准确的,效劳器与客户端时钟的时间偏差是,从

26、客户端发送报文到效劳器端的路径延迟是l,从效劳器端到客户端的路径延迟是2,路径延迟总和是,则可列出三个方程:T2-T1=+1(公式4-1)T4-T3=2-(公式4-2)l+2=(公式4-3)假设从客户端到效劳器的路径延迟和从效劳器到客户端的路径延迟相等,即l=2=/2,则从以上三个方程可以求出:=(T2-T1)-(T4-T3)/2(公式4-4)=(T2-T1)+(T4-T3)(公式4-5)效劳器与客户端之间的时间差异可以从图4-6看出。图4-6时间偏差和网络延迟在网络中只有一个时间效劳器的状况下,网络中的客户只能从这个唯一的时钟源猎取准确时间,如何评判获得时间的准确性呢?这里特地承受了一种数据

27、过滤处理,这种处理的目的是改善通过唯一一个时钟源获得的网络延迟和时钟偏差e的估量准确度25NTP承受的是一种收敛算法。具体的实现是:客户方每隔固定的时间T就向时钟源发送一次对时恳求,同时采集时钟源返回的对时报文,计算每次采得的四个时戳(Tl、T2、T3、T4)得到和e值,将屡次对时的结果以6形式排成队列。保存最近得到的N个,值1也就是在,值序列上开一个值为N的窗口),然后看哪个,8的值最小,就将其对应的值作为客户方本次处理的时钟偏差值。4.1.4 NTP效劳模块的实现网络授时系统设计中,ARM系统作为时间同步系统的效劳器,担当着时间同步申请的应答任务,为客户机终端供给精准的时间。这就涉及到效劳

28、器接收申请和应答申请的过程。在本系统的设计中,依据NTP协议原理,整个效劳器的时间同步应答可以分为以下几个步骤:1 .接收来自客户端的时间同步申请;2 .猎取标准时间,在接收到数据帧的NTP消息中添加接收该同步恳求的时间戳。3 .把上述数据帧保存在表中,接收下一个时间同步申请;4 .从表中取出数据帧,发送应答,此时标记发出应答的时间戳。依据以上的应答过程,时间同步申请总是处于最高的优先级,一旦有恳求发生,效劳器首先接收该数据帧,并标记接收到恳求的时刻。假设此时无另外的恳求到来,则发送应答,并记录发送应答的时刻;否则,保存接收到的从前申请,图4-7NTP效劳器程序流程图NTP效劳模块实现的主要技

29、术要点为socket套接字和NTP报文的解析、操作。Socket套接字实质上就是一种供给网络应用编程的接口,它是应用程序与TCP/IP以及其它协议实行客户机/效劳器的通信机制固,使网络客户机和效劳器通过socket实现网络间的连接和数据传输。最常用的socket套接字有两种,一种是流式套接字(streamsocket)和数据报套接字二(datagramsocket)。流式套接字在Iinux中被称为SOCKET_STREAM,使用TCP协议,该套接字是最常用的类型,它利用TCP的牢靠性供给双向的、挨次的和无重发的没有定界数据流。与其不同的是数据报套接字,在Iinux中被称为SOCK_DGRAM,

30、其支持网络层协议的数据包模型中的双向数据流,保持纪录定界,接收进程必需对收到的错序数据定序,删除重发的数据和供给牢靠保证。本文承受数据报套接字方式来完成时间同步恳求和时间同步应答的,时间同步恳求方处于客户端方式,客户为主动进程;而时间同步应答方为效劳器方,效劳器为被动进程。不管socket的内部机制如何,系统调用和建立socket通信的各个环节是一一对应的。其主要的系统调用有:1.SOCket创立socketo应用程序在使用SOCket前必需拥有一个socket0系统调用SoCket函数向应用程序供给创立socket的手段;2. bind指定本地地址。Bind将本地socket地址与所创立的SoCket号联系起来。从而为该SoCket命名;3. connect。和accept()建立socket连接,这两个系统调用用于建立完整的相关的建立,其中COnneCt()主要为面对连接的客户设计,而accept()为面对效劳器而设计的;4. listen()用于面对连接的效劳器,说明情愿承受连接;5. send()和recv()发送和接收系统调用。Send()系统调用用于向网络中发送数据,recv()用于接收数据;6. ClOSe()断开连接,真正释放和套接字相关的系统资源。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号