CTCS-3级列控系统标准规范
5.4.8.5.2 5.4.8.5.3
RSSP-II5
发起方 应答方 Tinit_start Tinit1 OffsetStart (Tinit1, 0, T0, Tres1 initcycl) TOffsetAnsw1 (Tres_ start Tinit2 res2, Tres2 T发起方计算偏移: init1, Tres1, Trescycl) 1. Tinit_offset_max = Tinit2 - Tres2 2. Tinit_offset_min = Tinit1 - Tres1 Stop Tinit_start Tinit_start Tinit3 OffsetAnsw2 (Tinit3, Tres2, Tinit2) Tres3 接收方计算偏移: 1. Tres_offset_max = Tres3 - Tinit3 2. Tres_offset_min = Tres2 - Tinit2 Stop Tres_start Tinit4 OffsetEst (Tres4, Tinit3, Tres3, Tres4 Tres_ start 偏移估算: Tres_offset_min, Tres_offset_max) 如果满足下列条件,则时钟偏移估算有效: 1. |Tinit_offset_max + Tres_offset_ min | = 0 2. |Tinit_offset_min + Tres_offset_max | < Toff_max TOffsetEnd(Tinit5, Tres4, init5 有效/无效) Tres5 周期消息可选的定时器 周期消息可选的定时器 图例说明: - Tinit_start和Tres_start:初始化定时器。如果在收到Offset Answers消息前计时终止,则将释放并重启安全连接。 - TinitX和TresX:发起方和应答方的第X个时间戳。 - Trescycl和Tinitcycl:应答方和发起方传送消息的周期。如果非周期性发送,则此参数设为―0‖。 - Tres_offset_max和Tinit_offset_max:发起方和应答方估算的最大偏移值。 - Tres_offset_min和Tinit_offset_min:发起方和应答方估算的最小偏移值。 - Toff_max:时钟偏移估算值之间的最大差异。 - 有效/无效:时钟偏移检查的结果。 图17:时钟偏移更新过程 发起方通过发送OffsetStart消息启动时钟偏移更新程序。
发送OffsetStart 消息时,发起方启动定时器Tinit_start。如果Tinit_start终止时,发起方仍未接收到OffsetAnsw消息,则根据错误处理程序(见第5.4.10节)对该错误进行处理。
规范名称:铁路安全通信协议-Ⅱ(RSSP-Ⅱ)
第26页
CTCS-3级列控系统标准规范
5.4.8.5.4 5.4.8.5.5 5.4.8.5.6 5.4.8.5.7
5.4.8.5.8 5.4.8.5.9
5.4.8.5.10
5.4.8.5.11 5.4.8.5.12 5.4.8.5.13 5.4.8.6
5.4.8.6.1
5.4.8.6.2
RSSP-II5
在接收到OffsetStart消息后,应答方通过发送OffsetAnsw消息进行应答。
发送OffsetAnsw消息时,应答方启动定时器Tres_start。如果Tres_start终止时,应答方仍未接收到OffsetAnsw2消息,则根据错误处理程序(见第5.4.10节)对该错误进行处理。 如果发起方在Tinit_start终止前接收到OffsetAnsw消息,则发起方对其与应答方之间的时钟进行最大和最小偏移值的估算。
发起方向应答方发送OffsetAnsw2消息。发送OffsetAnsw2消息时,发起方启动定时器Tinit_start。如果Tinit_start终止时,发起方仍未接收到OffsetEst消息,则根据错误处理程序(见第5.4.10节)对该错误进行处理。
如果应答方在Tres_start终止前接收到OffsetAnsw2消息,则应答方对其与发起方之间的时钟进行最大和最小偏移值的估算。
应答方向发起方发送OffsetEst消息。发送OffsetEst消息时,应答方启动定时器Tres_start。如果Tres_start终止时,应答方仍未接收到OffsetEnd消息,则根据错误处理程序(见第5.4.10节)对该错误进行处理。
如果发起方在Tinit_start终止前接收到OffsetEst消息,则发起方对其与应答方分别估算的最大和最小偏移值进行检查。然后,发起方通过OffsetEnd消息将检查结果发送给应答方。如果检查中发现错误,则根据错误处理程序(见第5.4.10节)对该错误进行处理。 在接收到OffsetEnd消息后,应答方将对时钟偏移估算的结果进行检查。如果检查中发现错误,则根据错误处理程序(见第5.4.10节)对该错误进行处理。
如果时钟偏移估算值有效,并且消息为某一方向或双向周期传输,则可以选择启动一个TTS周期定时器。此定时器非安全相关,仅用于在早期阶段检测丢失的周期消息。 每接收到一个消息时应复位该TTS周期定时器。如果定时器结束时仍未收到消息,则根据错误处理程序(见第5.4.10节)进行处理。 时间戳标记和检查
应用层之间传送应用数据的消息结构如下图所示:
应用层之间交换的消息 消息类型 TTS 用户数据 序列号 发送方时上一次收到上一次收到消间戳 方时间戳 息时的时间戳 用户数据 字节 第1个字节 第2个第3个第4个第7个第8个第11个第12个第15个字节 字节 字节 字节 字节 字节 字节 字节 SAI帧头 图18:应用数据消息
此消息分别包括以下数据域: ? 消息类型:6(十六进制值); ? 序列号;
? 发送时间戳:定义发送方的时间戳;
?
上一次接收方时间戳:此域给出接收方上一次传送给发送方的时间戳;
规范名称:铁路安全通信协议-Ⅱ(RSSP-Ⅱ)
第27页
CTCS-3级列控系统标准规范
5.4.8.6.3
5.4.8.6.4 5.4.8.6.5
5.4.8.6.6 5.4.8.6.7 5.4.8.6.8 5.4.8.6.9
5.4.8.6.10 5.4.8.6.11
RSSP-II5
? 上一次收到消息时的时间戳:此域给出上一次从对等实体处接收到消息时的时间戳; ?
用户数据:用户数据域。
时间戳原理包括:
将发送方本身的时间戳列入发送时间戳域。
将上一次从接收方处接收的时间戳列入上一次接收方时间戳域。
将发送方上一次从接收方处接收消息时的时间戳列入上一次接收消息时的时间戳域。
发送方所发送的时间戳消息中的―过零点‖,由接收方处理。 下图说明了TTS的原理:
子系统A时间戳子系统Bn-2(TTB(r),?)B(r) 表示上次发送的时间戳n-1n子(TA(n),TB(r),TA(n-1))系子统n+1l系时统间n+2(Tl+1时B(l+1),TA(n),TB(l))间n+3(TB(l+2),TA(n),TB(l))l+2n+4(Tl+3B(l+3),TA(n),TB(l))n+5l+4n+6l+5(TA(n+6),TB(l+3),TA(n+5))l+6图例说明:安全信号设备间安全通信接口处理
图19:TTS原理
如果时间戳过程中出错,则根据错误处理程序(见第5.4.10节)对该错误进行处理。 时间戳更新程序完成后,时钟偏移的最大值和最小值既已确定,并可用于估算应用数据消息的时间有效性。
发送方应根据发送方时钟、上次从对等实体处接收到的时间戳以及上次从对等实体处接收消息的时间戳,对发送消息进行时间戳标记。
接收方接收到应用数据消息时,应使用接收方估算的最小偏移值以及附加处理延迟的估计值,将消息的发送时间按接收方时钟进行估算。计算表达式如下:
Treceiver=Ttime_stamp_sender - △Textra_delay + Trec_offset_min
消息的时间有效性根据接收方估算的消息发送时间与接收到消息时的时间之间的差值Trec_current - Treceiver)进行判断。
如果根据此差值判断传输数据的时间有效,则表示延迟是可以接受的。时间有效性由Tmax定义。Tmax为双方协定的配置参数。如果消息的延迟不可接受,则拒绝该消息,并根据错误处理程序(见第5.4.10节)对该错误进行处理。
规范名称:铁路安全通信协议-Ⅱ(RSSP-Ⅱ)
第28页
(CTCS-3级列控系统标准规范
5.4.8.6.12 5.4.8.6.13 5.4.8.6.14 5.4.8.6.15
Tmax参数与对等实体发送数据的最大有效时间相一致。
通过Tmax的值,可以检测到传输时间的增大,以及双方设备之间的正向时钟偏移。 差值结果(Trec_current - Treceiver)应为正值。如果为负值,则根据错误处理程序(见第5.4.10节)对该错误进行处理。
时间有效性检查过程如下图所示。
发送方 Tinit Ttime_stamp_sender ΔTextra_delay: 可选的附加延迟 与Tmax相对应的 下边界 由于计算rec_offset_min 和 ΔTextra_delay从而造成对 Tinit过度估算 接收方 Trec_current Treceiver Treceiver 是根据接收方的时钟所估算的Tinit值: Treceiver = Ttime_stamp_sender – ΔTextra_delay + Trec_offset_min 如果满足下列条件,则该消息有效: 0 <=Trec_current - Treceiver <=Tmax Treceiver 计算结果的 时间允许窗口
图例说明: Ttime_stamp_sender:发送方时间戳(TTS中发送方时间戳域)。 Treceiver:根据接收方时钟估算的应用数据的传输时间。 △Textra_delay:发送方子系统处理应用数据的附加延迟的总和。 Trec_offset_min:接收方估算的最小偏移值。 Tmax:最大有效时间。 Trec_current:接收到消息时接收方的当前时间。 Tinit:根据发起方时钟,应用数据的传送时间。 图20:时间戳计算
5.4.8.7
时钟偏移更新
时钟偏移应根据设定的时间,定期进行更新。 时钟偏移更新程序详见下图所示:
5.4.8.7.1 5.4.8.7.2
RSSP-II5
规范名称:铁路安全通信协议-Ⅱ(RSSP-Ⅱ) 第29页
CTCS-3级列控系统标准规范
子系统A: 更新发起方 上次从B接收的时间戳:TB(l) 子系统B 来自于B的上一条消息 (TB(l), . . .) Tinit_start 《时钟偏移更新》 请求(TA(x), TB(l), TA(t)) 将TA(x)存储为上次从子系统A接收的时间戳 更新发起方的时间偏移: 1. TA_offset_max = TA(y) - TB(n) 2. TA_offset_min = TA(x) - TB(m) 《时钟偏移更新》 应答 (TB(n), TA(x), TB(m)) 图例说明: - TAX(s)和TB(s):子系统A和子系统B的时间戳。 - TA_offset_max:子系统A估算的最大偏移值。 - TA_offset_min:子系统A估算的最小偏移值。 图21:时钟偏移更新程序
5.4.8.7.3 5.4.8.7.4 5.4.8.7.5 5.4.8.7.6 5.4.8.7.7 5.4.9 5.4.9.1 5.4.9.1.1 5.4.9.1.2 5.4.9.1.3 5.4.9.1.4 5.4.9.1.5
时钟偏移更新消息的结构与应用数据消息(无用户数据域)的结构一致。 定时器Tinit_start用于监督执行时钟偏移更新程序所需的时间。
如果执行时钟偏移更新程序所需时间大于Tinit_start值,则表示传送延迟时间很长,不能有效
更新时钟偏移。
如果时钟偏移更新失败,则根据错误处理程序(见第5.4.10节)对该错误进行处理。 在接收到时钟偏移更新的应答后,发起方要检查它是否是对偏移更新请求的应答:该消息中的上一次接收方时间戳应等于偏移更新请求消息中的发送方时间戳。 EC防御技术
总体概述
根据EN 50159-2的要求,应用数据消息要防护延迟威胁,EC的安全防御技术即可用于保护消息的时效性。
从对等实体接收到的每一条消息都含有帧头,使用帧头里的EC计数可以实现对延迟威胁的防护。
EC需要具有固定的周期值。
延迟威胁的检测通过对接收到的消息中的EC计数值和本地计算的EC计数期望值进行比较实现。
安全防御技术保障了从上次传输消息开始指定的时间区域内传输消息(如果应用程序没有要求的话,不包含应用程序数据)的有效性,从而将消息传输转换为伪周期模式。这样就可以管理在安全连接另一端的超时数据接收。
EC计数格式
规范名称:铁路安全通信协议-Ⅱ(RSSP-Ⅱ)
第30页
5.4.9.2
RSSP-II5