大规模网络化播出系统中校时方案的设计与实现

  • 优秀论文奖
  • 文章作者:中国新闻技术工作者联合会 2021/12/30-04:43 阅读: loading...

    马坤

    (中央电视台)

    摘要:时钟的精度与可靠性一直是播控系统设计中的一个关键技术问题。随着广电系统网络化、数字化的发展,NTP网络校时成为了一个广泛应用的校时手段,该方式简单有效、易于实现,但在实际应用上也存在着诸多局限。本文根据实际系统情况,在NTP协议的基础上,加入了多种高精度实时控制关键技术及防跳变机制,完整地给出了一个适合播出系统特点的网络校时方案。关键词:播出系统 NTP协议 校时精度 可靠性 播出系统需要按照节目单时间精确的给各类受控设备发送控制命令,因此对时钟的依赖性很高,时钟的精确性及可靠性直接关系到播出安全,对于一个网络化的大规模播出系统来说,如何设计校时方案以保证时钟的精确和可靠更是一个巨大的挑战。中央电视台新址播出系统承载着24个常规频道的节目单编排、媒体文件传输及信号播出业务,最大可扩展至40个频道,仅播出控制工作站数量就将近200台,另有其它支撑类的服务器及工作站100台左右,共300台左右需要校时的客户端。面对大量的校时需求,以往的设计经验已无法借鉴。在系统建设过程中,我们通过不断的摸索与尝试,在基于NTP网络校时方案的基础上,加入了多种高精度实时控制关键技术及防跳变机制,建立了一套适合于电视播出的校时系统,最终使播控指令的时钟精度达到了1毫秒,且具备较高的可靠性,本校时系统实际运行良好稳定,为播出安全提供了基础保障。
    • 1.NTP网络校时概述

    1.1 NTP原理NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。NTP基于UDP协议进行传输,使用UDP端口号为123。使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。对于运行NTP的本地系统,既可以接受来自其他时钟源的同步,又可以作为时钟源同步其他的时钟,并且可以和其他设备互相同步。

    1 NTP授时原理

    NTP最典型的授时方式是客户机/服务器(Client/Server)方式,如图1所示,客户机首先向服务器发送一个NTP包,其中包含了该包离开客户机的时间戳T1,当服务器接收到该包时,依次填入包到达的时间戳T2、包离开的时间戳T3。然后立即把包返回给客户机。客户机在接收到响应包时,记录包返回的时间戳T4。客户机用上述4个时间参数就能计算出2个关键参数:NTP包的往返延迟d和客户机与服务器之间的时钟偏差t。客户机使用时钟偏差来调整本地时钟,以使其时间与服务器时间一致。

    T2=T1+t+d1

    T4=T3-t+d2 (1

    d=d1+d2

    假设NTP请求和回复包传送延时相等,即d1 = d2,则可解得

    T=(T2-T1)/2-(T4-T3)/2

    d=(T2-T1)-(T4-T3) (2

    最终解得:

    t = (T2-T1)+d1 = (T2-T1)+d/2 (3

    t、d只与T2、T1差值及T3、T4差值相关,而与T2、T3差值无关,即最终的结果与服务器处理请求所需的时间无关。因此,客户端即可通过T1、T2、T3、T4计算出时差t去调整本地时钟。1.2 基于NTP减少计算机时钟偏差通用PC机自带的两类时钟源:硬件时钟和软件时钟(或称为系统时钟)。不论是硬件时钟还是软件时钟,都是由石英晶体振荡器驱动的,通过累计石英晶体振荡器输出脉冲数,换算出时间,所以计算机时钟的准确度取决于晶振频率准确度。受温度变化、电压、芯片老化等因素影响,晶振频率会发生小幅度波动,其中温度对晶振频影响最大。由于工艺和材料的原因,同一生产线上标称频率相同的石英晶体,其实际频率是不同的,实际频率与标称频率偏差率从10-4量级到10-9量级不等。以10-4量级为例,时钟每天至少误差8.64 s。对于联网计算机,同步时钟最简便的方法是网络授时,时钟频率偏差是时钟长期计时累积误差的主要原因,要提高时钟长期计时精度,必须补偿时钟频率偏差。联网的计算机采用NTP方式,可非常方便地校准时钟频率偏差。1.3 NTP授时精度分析NTP授时精度与NTP服务器与用户间的网络状况有关,主要取决于NTP包往返路由的延时对称程度,往返路由的延时不对称值最大不超过网络延时。公式(2)是在假设NTP请求和回复包在网上传送延时相等,即d1=d2=d/2的情况下得出的,而d1、d2的取值范围在(0…d)间,由公式(3)可以得出最大授时误差是±d/2。一般广域网的网络延时在10 ms~500 ms之间;局域网的网络延时在计时操作系统内核处理延迟的情况下通常小于1 ms。假定局域网内NTP延时小于1 ms,理论上授时误差将小于0.5 ms,但对于Windows操作系统内置的NTP客户和NTP服务,并不能达到此精度。多核平台下Windows时钟分辨率一般为15.625ms,因此基于Windows操作系统的内置NTP授时精度也不会超过此标准。下面将详细分析如何进一步提高播控平台的时钟分辨率,使播控指令精度达到毫秒级,并提升其可靠性。

    2.校时精度及可靠性的几点改进措施

    2.1 提高操作系统的时钟分辨率上文已提到在通常情况下,windows系统的时钟分辨率仅为15ms,由于播出软件只是一个应用程序,十分依赖它的运行环境—操作系统。因此不得不提及Windows操作系统的时间片和时钟分辨率。软件经常使用的API函数GetTickCount () 返回自系统启动以来的ms数,由于系统分辨率的限制,那么返回的只能是15.625ms的整数倍,这就是操作系统的时钟分辨率的概念。操作系统的时钟分辨率直接对操作系统提供的线程相关API有影响,例如在播控软件代码里调用的函数event.Lock(TIMECLIP);其实质是调用了系统API函数WaitForSingleObject();虽然TIMECLIP是6即希望锁定线程6ms但是由于XP的时钟分辨率是15.625ms,所以上述语句实际是锁定线程15.625ms,通过在这条语句前后加测量可证实这一点。通过使用微软的一个测试工具ClockRes(用来测试操作系统的时钟分辨率的工具)在多核机器上分别测试了WindowXP,Window2003Server,和Windows7,测试结果如下表:从上表中可以看出WindowXP和Windows7实际上是可以支持1ms的时钟分辨率,但这必须要开发设备驱动程序,在内核态下调用DDK里的一个函数ULONG ExSetTimerResolution( IN ULONG DesiredTime, IN BOOLEAN SetResolution );来进行修改。应该说操作系统的时钟分辨率对于播出软件的控制精度是影响最直接和最大的,对于WINDOWS自带的NTP校时服务也有很大影响。2.2 NTP校时软件的定制开发对于播控平台的校时软件,需要毫秒级的校时精度,且需要有足够的安全机制保证不发生时钟跳变。Windows自带的NTP校时服务显然无法满足要求,为此,我们对NTP校时客户端软件进行了定制开发,主要功能如下:1) 可配置NTP主服务器、NTP备服务器两个校时服务器地址,当主服务器连接超时后,可自动连接备服务器。2) 可显示客户端发送时间点、服务端接收时间点、服务端发送时间点、客户端接收时间点。经过四个时间点的比对得出基准时间源与本地的时间差,以毫秒为单位。

    2 NTP响应细节显示

    3) 可分别配置自动校时间隔如前文所述,新址播出系统有300余台服务器需要进行校时操作,如果同时进行,会对NTP服务器造成巨大压力,无法及时响应。因此,应对不同主机、不同软件的校时间隔分开配置,避免同一时间有多台主机访问服务器。4) 可配置防跳变时间为避免由于服务器端的时间发生跳变而引起播控平台的时间出错,可设置防跳变时间,如果本地时间与时钟源的时间差大于设定的防跳变时间,则不进行自动校正,会弹出对话框来提示用户是否确认进行时间校正,如图所示:

    3 防跳变报警

    2.3 利用同步信号进行守时在对计算机平台的时钟进行校准后,在校时间隔期间,还需要利用同步守时卡来进行守时。同步守时卡是通过外接高精度同步信号,利用同步信号的场中断做为基准信号进行计数。用同步守时卡并不能提升控制精度,但是可以自己守时,即计算机系统时间发生漂移,或者被人为修改都不会产生影响,且可以同步发送播控指令的时机。板卡自身带有高稳晶振,即使失去同步信号,也可在一定时间范围内保持时间精度。同步守时卡具备设置时间和取出时间的功能,即通过设置时间给出绝对参考时间,由BB卡根据场中断计时,并计算当前的绝对时间。在播控软件中通过读取BB卡获取当前时间,如果配置不使用BB卡则直接获取当前的系统时间。2.4 播控软件的优化播控软件控制信号源设备和切换设备,依据既有的播出执行单,在指定的时间将指定的节目信号输出。要确保软件的控制精度,既要实现对信号源设备和切换设备的独立控制精度。同时还需要很好的协调好二者的时序关系,实现“零帧”控制精度,针对播控软件,我们从以下几点进行了优化:1) 播出软件在播出前将整个播出单进行编译,编译后的单子我们称为正播单,正播单即是按照节目条目播放的先后顺序进行了排列(没有了插播),每个条目的开播时间和时长都已确定,不再需要额外的计算开销。2) 对于一个频道会单独创建一个播控线程,该线程负责该频道的播出控制逻辑的调度。播控线程负责创建用于设备播出逻辑控制的Processor,每个Processor都对应了一个具体的被控设备(如播放设备、切换设备、包装设备),每个Processor对象中都聚合了一个代表设备的对象,该对象负责动态载入实际的设备控制插件。Processor是通过这个对象来操作被控设备。3) 播控线程创建好后,会每隔一段时间获取当前时间并调用所有的Processor进行播出逻辑检查和执行动作的功能。4) 要避免播控线程和设备层线程的冲突,在设备层维护一个设备状态查询结果的Cache,设备线程是在设备空闲时执行设备状态查询指令,播控线程直接从Cache里取设备状态。5) 由播控线程根据节目单来设定下一切换时刻,设备状态检测前可以判断离下一切换时刻还有多长时间,如果距离太近就放弃设备检测避免关键时刻发送命令被阻塞。

    3.整体校时方案设计

    3.1 整体时钟系统

    4 整体时钟系统

    1) 时钟系统为参与控制管理的系统设备提供校时信号,通过显示钟提供准确的时间信息。2) 时钟系统接受总控系统的EBU时钟信号锁定。3) 时钟系统接受总控标频锁定。4) 时钟系统提供NTP网络校时信号给播出控制系统。5) 时钟系统由主备时钟发生器及时钟信号倒换器组成。6) 具有主备关系的设备时钟信号来自不同的分配板卡。3.2 校时服务端部署1) 由专用的NTP校时卡充当校时服务器,网络校时卡接受播出系统内的LTC时码输入同时转换为NTP时间信息通过网络发布,是播出控制系统内部的校时基准。校时卡本身具备输出时钟与输入时钟比对功能范围(±0?ms-9.999ms),当相差大于此范围显示“Overflow2) 正常授时模式“LTC_Video:LTC作为时间、日期、信息的主要来源,校时频率可由1小时至N天可调。另外由总控输入的同步信号作为本地震荡授时频率锁定,平时校时卡依据同步信号锁定的本地震荡源进行守时。精度等同于本地震荡源±0.5PPM。3) 丢失LTC输入:当校时卡丢失输入的LTC时,对校时卡本身输出连续时码信号没有影响,时钟会依据同步锁定的本地震荡源继续输出,精度等于本地震荡源±0.5PPM。3.3 校时客户端部署及设置1) 各工作站部署定制NTP校时软件访问NTP校时服务,对本地系统时间进行校时,根据工作站类型进行分组,访问间隔设置为20-30s不等,避免同一时间大量的NTP请求发送到服务器,减轻服务端的压力。2) 控制机的同步守时卡读取本地系统时间进行校时,访问间隔为1天,设置防跳变时间,一般为4-5s。3) 同步守时卡利用全台统一提供的同步信号进行守时。4) 控制机软件直接读取同步守时卡的时间做为软件时间,设置防跳变时间,一般为1s。

    5 校时架构简图

    3.4 故障处理1) NTP主服务故障:超过三次连接失败后,NTP校时软件自动连接备服务,当主服务正常后,需在NTP校时软件界面上手动选择“连接主服务器”,以重新连接到主服务器。2) NTP软件时间与服务器时间偏差过大:如超过防跳变时间(目前设置为2s),则需在软件界面上点击“手动校时”。3) 同步守时卡同步信号丢失:此时BB卡靠自身晶振守时,精度为10-6,大概11小时偏差1帧(40ms),此种情况下播出控制软件有声音报警,应尽快恢复同步信号。4) 同步守时卡故障:控制机软件上的时间会停止,此时可在控制机软件选择停用BB卡守时,则控制机软件会继续读取本地系统时间,然后在合适的时间替换备机。

    4. 总结

    本文详细介绍了应用于大规模网络化播出系统中的校时方案,在传统NTP网络校时方案的基础上,加入了多种高精度实时控制关键技术及防跳变机制,使播控平台的时钟分辨率达到了毫秒级且具备较高的可靠性,通过合理的系统部署及设置,建立了一套适合于电视播出的校时系统。目前该系统已投入运行两年多,校时系统运行稳定,保障了播出安全,可为有类似需求的系统提供参考。 参考文献

    [1] 黄沛芳,基于NTP的高精度时钟同步系统实现,电子技术应用,2009357

    [2] 陈敏,基于NTP协议的网络时间同步系统的研究与实现,华中科技大学硕士论文,2005

    [3] 黎文伟,张大方,谢高岗,基于通用PC架构的高精度网络时延测量方法,软件学报,2006(02)

    [4] 天极网,用VC编写基于Windows的精确定时程序, http://www.yesky.com/211/1879711.shtml

    [5] 微软MSDN开发文档,ExSetTimerResolution routine,https://msdn.microsoft.com/zh-cn/library/windows/hardware/ff545614(v=vs.85).aspx

    编辑:中国新闻技术工作者联合会

    评论 点击评论