IEEE1588学习笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、端对端透明时钟(E2E)和点对点透明时钟(P2P)
1.1 透明时钟概述
IEEE1588V2.0版本(2008)相对于V1.0版本(2002)一个较大区别是,2.0版本增加了透明时钟类型。
一般组网中,交换机作为透明时钟使用。
当主从机交换消息路径包含一个或多个交换机时,延时包括两部分,路径延时(Path Delay)和驻留时间(residence time)。
一般来说,路径延时是报文在物理媒介上的延时,双向对称且延时稳定。
驻留时间取决于数据流量和交换机的处理能力,可能动态变化。
透明时钟分E2E(end to end)和P2P(peer to peer)两种类型。
两种类型都需要交换机支持将报文的出口时间(egress)和入口时间(igress)差值添加到报文中去。
此差值即为交换机的驻留时间。
P2P时钟还能够主动发送延时请求报文给与它相接的端口,测量路径延时。
1.2 两种对时模式原理
E2E模式对时原理:
图1.1 E2E透明时钟对时原理
如图1.1所示,主从时钟经过一个E2E交换机对时,所有报文经过交换机时,交换机会将驻留时间累加到报文的校正域(CF)中,但是路径延时并没有事先知道,要发送同步报文和延时请求报文计算路径延时。
E2E模式主机需要响应所有从机的Delay_Req报文,网络规模受到限制。
P2P模式对时原理:
图1.2 P2P透明时钟对时原理
如图1.2所示,主从时钟经过一个P2P交换机对时,在主机发送Sync报文之前,支持P2P模式的交换机已经主动发送pDelay_req报文,获取了交换机每个端口和与它相连的端口之间的路径延时,并保存下来。
当网络拓扑关系变化时,能迅速获取到新的路径延时。
因为路径延时事先获得,主机只需要广播Sync报文和Follow_Up报文,不需要响应所有从机的Delay_Req报文,负荷大大降低,可以支持比E2E模式更大的网络容量。
Sync报文和Follow_Up报文经过交换机时,P2P节点的驻留时间会累加到报文校正域中,而路径延时已经事先获得,因此只需要单向报文就可以对时。
1.3 路径延时和驻留时间写入报文的方式
当报文经过交换机时,交换机会将路径延时和驻留时间写入报文的校正域(CorrectionField)中。
与报文发送时间戳类型,校正域写入方式也分为一步方
式(one-step)和两步方式(two-step)。
1.3.1 路径延时写入方式
如果时钟为一步点对点时钟,在Sync报文从出去端口转发之前,累加<meanPathDleay>值到Sync报文校正域中。
<meanPathDleay>值已经通过对等延时机制,测量得到该Sync报文的进入端口对应链路的路径延时。
如果时钟为两步点对点时钟,累加<meanPathDleay>值到Sync报文随后的Follow_Up报文中。
其他与一步时钟相同。
1.3.2 驻留时间写入方式
一步透明时钟:<residenceTime>值在报文离开出去端口时,累加到校正域中。
如果twoStepFlag标志为真,表示Follow_Up报文将随后接收到。
<residenceTime>是Sync报文离开交换机出口时间减去进入交换机入口时间。
该值写入与Sync报文相匹配的随后的Follow_Up报文校正域中。
二、宣告报文(Announce)
2.0版本将1.0版本的Sync同步报文拆分为Announce报文和Sync报文。
Announce报文包含超主时间信息,以广播方式定时发送。
如果从机在一段时间内没有收到Announce报文,说明对应的超主时钟丢失,需要用最佳主时钟算法(BMC)寻找新的超主时钟。
拆分出超主时钟后,Sync报文除了公共报文头部外,只包含时间戳信息(如有Follow_Up报文,时间戳无效)。
(按:有可能Sync变短后,路径延时和驻留时间更加短、更加稳定,有利于对时)
三、时钟ID和端口ID
每个时钟节点有一个或多个端口,因此一个时钟只有一个唯一的时钟ID,然后在时钟ID层次下,再分端口ID。
端口ID只要保证本时钟内各端口ID互不相同,一般从1开始编号。
不同时钟节点的端口ID可以相同。
ClockIdentity数据类型是一个8字节的数组,一般即为网卡的MAC地址保证唯一性(符合EUI-64规范)。
PortIdentity数据类型是一个结构体,包括ClockIdentity和porNumber。
其中porNumber不是时钟节点的端口总数目,而是端口索引,从1开始编号。
只有一个PTP端口的PTP节点的PortNumber值应该为1。
有N个PTP端口的PTP节点,PortNumber值分别为1,2,……,N。
全0和全1端口ID保留。
全1端口在管理报文和信号报文中使用(报文的目标端口为所有端口)。
全0端口在数据集比较算法比较端口ID和时钟ID时使用(当外部主时钟和本地时钟比较portNumber时,本地时钟的portNumber设置为0)。
全0端口还可以代表一个空端口,表示该端口还未初始化或者是一个无效的端口号。
?尚未明白疑问:PTP所指的不同端口是真实存在的物理端口,还是可以同
一个物理端口虚拟出的端口ID?做主机时,是否需要考虑分配多个主机端口,分别给不同从机对时的情况?多个主机端口要分配在不同的物理端口,还是可以在同一物理端口虚拟?
许继:PTP时钟每个端口是指物理端口,比如一个设备有四个网卡都接入PTP系统,则总端口数为4,端口ID依次为1,2,3,4。
时钟ID可以选择任意一个端口的MAC地址(一般选第一个端口的MAC地址即可)。
clockIdentity用作PTP节点的唯一标识符,而不是用作网络地址。
虽然网络地址通常可以从clockIdentity获得。
四、单播、组播和广播
IEEE1588以UDP方式接入网络。
在原有IEEE1588报文前面,还要加入UDP
头部封装。
如图4.1所示,字节0~字节41共42个字节为UDP报文头部,字节42~字节81共40个字节为IEEE报文通用头部,其后再是不同报文格式。
图4.1 IEEE1588报文格式
广播MAC地址为FF-FF-FF-FF-FF-FF。
图4.2 IEEE1588组播IP地址
IANA保留组播地址范围是从224.0.0.0到239.255.255.255。
IEEE1588使用其中两个地址。
IEEE1588报文使用2个UDP端口。
IANA(internet assigned number authority)规定,组播mac地址的高24bit为
0x01005e,mac 地址的低23bit为组播ip地址的低23bit。
由于ip组播地址的后28位中只有23位被映射到mac地址,这样就会有32个ip组播地址映射到同一mac地址上。
除了管理报文,所有的多播报文在普通时钟或边界时钟节点终结。
如果对应的Delay_Req报文以多播方式发送,则Delay_Resp报文以多播方式发送;
如果对应的Delay_Req报文以单播方式发送,则Delay_Resp报文以单播方式发送;
五、UTC、GPS、TAI时间
六、上位机设计
图5.1 上位机配置界面参考设计。