张 贺,张 林,郑滟雷,张 旭(中讯邮电咨询设计院有限公司,北京100048)
自20世纪80年代以来,Ethernet技术以其组网灵活、高速率、大带宽及即插即用等优势,成了Internet重要的网络技术。为满足某些应用对时间的同步需求,业界开发的网络时间协议(NTP)的同步精度可达ms级。在电信领域中,NTP虽可用于网管系统的告警故障定位及计费结算等,但却无法满足位置定位服务和无线移动通信系统高精度的时间同步要求。其后IEEE标准委员会颁布了IEEE 1588标准,其全称为网络测量和控制系统的精确时钟同步协议标准,并分别于2002年及2008年发布了1588v1版本及1588v2版本草案。1588v2版本增加了单播等内容,具有更优的时间精度,更适合于电信网络环境。
本文首先介绍目前常用的PTP报文封装方式,然后论述1588v2各种报文类型的主要功能及内容格式。
1588协议规定了事件报文及通用报文。其中:事件报文是在发送和接收过程中都需要精密时间戳、会激发发送后续消息的报文,主要包括Sync报文、Delay_Req报文、Pdelay_Req报文及Pdelay_Resp报文;通用报文则不会激发发送后续消息,主要包括Announce报文、Follow_up 报文、Delay_Resp 报文、Pdelay_Resp_Follow_up报文、Management报文及Signaling报文。
PTP报文封装可采用PTP over用户数据报协议(UDP)over IPv4、PTP over UDP over IPv6、PTP over IEEE 802.3/Ethernet、PTP over Device NET、PTP over Control NET及PTP over IEC 61158 Type 10 (现场总线)等方式。电信网通常主要应用前3种方式。下面介绍PTP报文在前3种传输协议中的封装方式。
该协议描述的是如何使用UDP和以太网协议版本4(IPv4)完成PTP报文的传输。
在该传输协议方式下,首先将PTP报文封装到UDP数据包中;为识别其为PTP报文数据,PTP报文的第一字节(Byte)应紧跟在 UDP报文头(Header)的最后一字节之后;加入IPv4协议的IP包头后,再封装到以太网帧中进行传输。 PTP over UDP over IPv4的封装方式见图1。
图1 PTP over UDP over IPv4的封装方式
该方式与PTP over UDP over IPv4基本相同,只是IPv4与IPv6的区别。 PTP over UDP over IPv6的封装方式见图2。
图2 PTP over UDP over IPv6的封装方式
PTP over IEEE 802.3/Ethernet的封装方式见图3。
图3 PTP over IEEE 802.3/Ethernet的封装方式
从上述3种封装方式来看,PTP报文最终均封装到以太网帧中进行传输,只是封装方式和过程稍有不同而已。采用UDP协议时,事件报文和通用报文的UDP目的端口号分别为319和320;直接采用以太方式封装时,PTP报文的以太网类型为0x88F7。
前面提到了PTP报文类型,下面介绍各种报文的内容格式及相关报文的主要功能。
PTP报文由报文头、报文主体及报文扩展字段(可选)等部分组成(见图4),其中报文头为34字节(272 bit),对所有PTP报文都是通用的,其格式及字段含义见表1。
图4 PTP报文的组成
a)传输特性。采用UDP/IPv4封装时bit4填充1、bit5~bit7填充0,采用UDP/IPv6及以太封装时全部填充0。
b)报文类型。该字段定义报文类型如Sync、Delay_Req及Delay_Resp等。
c)PTP报文版本。该字段定义当前协议版本,IEEE 1588v1定义为1,IEEE 1588v2定义为2。
d)报文长度。该字段定义所发送PTP报文的总长,包括报文头、报文主体和报文扩展字段(在扩展字段中用于填充的数据除外)。
e)时间域编号。该字段定义PTP报文所属的时间域。域是指使用协议彼此相互同步的一个逻辑组。本域时钟不要求必须与其他域的时钟保持同步。时钟类型为OC和BC时,描述报文发送设备属于的时间域。如果是TC模式,描述最初报文发送设备属于的时间域。
f)标志域。该字段包括显示状态的多种标志。
g)时间修正域。该字段定义是的PTP报文中携带的时间信息经透明时钟(TC)时,对驻留时间的一个ns级别的修正值。如果是P2P方式的TC,还包括对路径传送时间的修正。
h)源端口ID。该字段定义发送PTP报文的源端口地址信息,包括时钟设备ID和PORT端口ID。
i)序列号。该字段定义不同PTP报文的序列号。
j)控制域。该字段定义IEEE 1588v1版本描述报文类型的字段,类似于1588v2版本的报文类型,只是少了一些选项。
k)日志消息间隔。该字段定义及显示协商后的报文发送间隔。
Announce报文是用来描述时间源能力的报文,其内容格式见表2。
表2中:originTimestamp定义为数值为0或精度为±1 ns时的时间戳,currentUtcOffset定义为 UTC与TAI时间标尺间的闰秒时间差,grandmasterPriority1/2表示用户定义的grandmaster优先级1/2,grandmaster-ClockQuality定义为grandmaster的时间质量级别,grandmasterIdentity定义为grandmaster的时钟设备ID,stepsRemoved定义为grandmaster与Slave设备间的时钟路径跳数,timesource定义为时间源头类型(如:GPS表示GPS卫星传送时钟,PTP表示PTP时钟,NTP表示NTP时钟,Hand_set表示人工调整校准时钟等)。
Sync报文由Master时钟发送,带有Master的时间信息。如果Master是Two_step模式的时钟,其发送的Sync报文中的时间戳将被设置为0,实际的时间戳将由和该Sync报文相关联的Follow_up报文发送。Sync报文的内容格式见表3。
表3 Sync报文内容格式
Delay_Req报文的内容格式与Sync报文完全相同。Delay_Req报文由从钟发出,类似于Master有One_Step及Two_Step 2种时钟模式。Slave存在One_Way和Two_Way 2种模式 (单向和双向)。在One_Way模式下,Slave不需要发送Delay_Req报文。Delay_Req报文的内容格式见表4。
表4 Delay_Req报文内容格式
只有在主时钟是Two_Step时钟模式时,才会发送Follow_Up报文,其内容格式(见表5)与Sync和Delay_Req报文相同。
当Master收到Slave发出的Delay_Req报文时,会响应Delay_Resp报文。Delay_Resp报文的内容格式见表6。
表5 Follow_Up报文内容格式
表6 Delay_Resp报文内容格式
表6中:receive Timestamp定义为响应的 Delay_Req报文的接收时间戳 (t4),精度为ns级;requestingPortIdentity定义为响应的Delay_Req报文的发送设备端口。
该报文仅在P2P TC时钟模式下才产生,由P2P时钟作为“延迟请求者”发出,内容格式见表7。
表7 Pdelay_Req Message报文内容格式
该报文仅在P2P TC时钟模式下才会产生,由P2P时钟作为“延迟响应者”发出,内容格式见表8。
表8 Pdelay_Resp Message报文内容格式
表8中:receiveReceiptTimestamp在 One_Step模式下的数值为0;在Two_Step模式下定义为响应的Pdelay_Req报文的接收时间戳(t2),精度为ns以上的精确时间戳;requestingPortIdentity定义为响应的Pdelay_Req报文的发送设备端口ID。如果P2P时钟模式是Two_Step,Pdelay_Resp Message报文的时间戳将被设置为0。实际的时间戳将由和该Pdelay_Resp报文相关联的Pdelay_Resp_Follow_Up报文发送。
只有在P2P时钟模式是Two_Step时才会产生Pdelay_Resp_Follow_Up报文,其内容格式见表9。
表9 Pdelay_Resp_Follow_Upe报文内容格式
表9中:responseOriginTimestamp在 Two_Step模式下定义为响应的Pdelay_Resp报文的发送时间戳(t3),精度为ns级以上;requestingPortIdentity定义为响应的Pdelay_Resp报文的发送设备端口ID。
以上介绍了IEEE 1588v2中规定的其中9种主要PTP报文的内容格式,以及报文中相关字段的功能定义和特定的时钟模式所需要的报文等。
从目前分组网络时钟模式应用情况来看,全网采用BC时钟模式、使用二层组播方式是得到大多数业界人士认可的。该方式在中国移动3G移动回传网络的同步解决方案中得到了普遍应用。因此,在同步网络中常遇到的报文也无非就是 Sync、Delay_req、Delay_Resp、Announce及Signaling等。1588v2对链路的对称性要求较为严格,但采用TC模式时需要的时间同步设备和承载设备均能很好地支持P2P和E2E这2种延时机制。
基于对PTP报文的上述理论认识,笔者也参与了一些分组网络环境下的1588同步测试。分组网络环境下1588同步测试模型见图5。
图5 分组网络环境下1588同步测试模型
该测试环境是由6台具有1588v2功能的分组传送网络 (PTN)设备组建的一个分组环网。时间源从PTN-1节点输入基准时间信号 (PTP包),长链路经PTN-2、PTN-3及PTN-4节点后至PTN-5,由PTN-5设备从接收到的PTP包中恢复出频率信号 (2 Mbit/s)接至传输分析仪测试该信号的漂移性能;恢复出的时间信号(PTP)接时间间隔分析仪进行测试。全网时钟模式设置为BC,在PTN-4与PTN-5间插入抓包仪表进行实时抓包,以分析PTP报文的交互情况。
测试用的抓包仪为Calnex公司生产的Paragon。该仪表具有2个主要功能:一是对其所串入链路中的PTP报文进行抓包,通过抓包来分析PTP报文的交互情况;二是在测试网络中加载ITU-T G.8621规定的相关测试模版。在目前版本中,2项功能尚不能同时使用,即用来抓包时就不能加载测试模版,反之亦然。
根据图5所示的组网环境,通过Paragon仪表截取的其中一段抓包结果可知:Master每发1个Sync报文都会有1个单独的sequence ID,并按递增顺序排列,中间若出现非连续序号时会有红色标识提醒(仅是提醒,并不一定代表有错误);当Slave向Master发送Delay_Req请求后,Master会回复相应的Delay_Resp报文,这2个交互报文的sequence ID是相同的。在抓包结果中,还能看到PTP报文头中的transport Specific、Message Type、version PTP、Message Length、domain Number、flags、correction Field、source PortIdentity、control Field及log Message Interval等信息,因篇幅受限,不再赘述。
通过抓包及报文分析,还可加深对相关标准规范的理解。例如:IEEE 1588规定Master可采用1步时钟(one-step clock)及 2 步时钟(two-step clock)模式,ITU-T G.8265.1又给出了详细说明,即在“one-step”模式下,Master在发送的Sync报文中就需打上时间戳,而在 “two-step”模式下,Master的时间信息是由在随Sync报文后发送的相应Follow-up报文携带并向下传送,因此可通过仪表抓包结果观察是否有Follow-up报文来确定PTP的时钟模式;IEEE 1588中还定义了Master与Slave间单向和双向交互方式。如果只需从PTP报文中恢复频率,仅采用单向方式即可,这样Slave是不需要向Master发送Delay_Req请求报文的,同样Master也不必回复Delay_Resp报文;有时也会根据需要来调整Master发送Sync报文的速率,例如若需要从PTP中恢复出更为精准的频率信号,就可采用调高Sync报文的发送速率的方式,这时也可以通过Paragon进行抓包来分析不同速率下Sync报文的发送情况。
本文简要地介绍了IEEE 1588的由来,并结合表格分析了1588v2中几种主要报文的功能、内容格式及在不同时钟模式下的PTP报文形式,并根据实际测试的抓包结果对报文进行分析,以加深理解。
从目前来看,PTN逐步取代传统SDH网络的发展趋势已十分明显。因此,如何在PTN上实现频率和时间同步是十分必要的,而1588则是当前较为合适的选择。由于IEEE 1588v2标准还处在不断发展和完善之中,所以从技术研究角度出发,实时关注和跟踪1588技术的发展趋势,掌握标准动态、积累工程应用经验乃至在现网中开展小范围的技术试点测试是十分必要的。
[1]IEEE std 1588-2008.IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control System[S/OL]. [2011 -02 -01].http://lib.nutn.edu.tw/database/IEL/OPACStdList_2009.htm.
[2]ITU-T G.8261/Y.1361.Timing and synchronization aspects in packet networks.[S/OL].[2011-02-01].http://www.itu.int/itudoc/itu-t/aap/sg15aap/history/g.8261/index.html.