3. 超时机制总览:T1~T8 超时定义与作用

SECS/GEM 协议通过八种超时定时器(T1~T8)来保障通信会话的可靠性、有序性和资源回收效率。每种超时对应不同的协议层与场景,理解其定义与作用是对通信链路进行性能调优的基础。本章将逐一解析这八种超时的触发条件、默认值范围及典型影响。

3.1 超时分类与协议层级

根据 SECS-I / HSMS 协议栈的分层结构,T1~T8 可划分为以下三类:

  • 物理/链路层超时:T1、T2、T3、T4,负责字节传输、块确认与连接保持。
  • 会话层超时:T5、T6,负责 TCP 连接建立与通信状态机转换。
  • 应用层超时:T7、T8,负责消息事务完成与数据完整性校验。
关键原则:超时值设置过小会导致频繁重传与连接断开;设置过大会降低故障检测速度。实际部署中需根据网络延迟与设备处理能力进行微调。

3.2 超时定义与作用速查表

超时编号 协议层 默认范围(秒) 触发条件 超时后动作
T1 链路层 1.0 ~ 10.0 发送块后未收到 ACK/NAK 重传该块(最多 7 次)
T2 链路层 0.1 ~ 1.0 收到块后延迟发送 ACK/NAK 接收方丢弃块,发送方重传
T3 链路层 5.0 ~ 120.0 连接空闲,无数据交换 发送心跳(Link Test)
T4 链路层 0.5 ~ 5.0 等待块间间隔(多块消息) 丢弃未完成消息,重置连接
T5 会话层 2.0 ~ 30.0 TCP 连接建立请求未响应 重试连接(最多 3 次)
T6 会话层 1.0 ~ 10.0 等待 Select/Deselect 响应 重发请求或断开连接
T7 应用层 10.0 ~ 300.0 等待事务(Transaction)完成 取消事务,返回超时错误
T8 应用层 0.5 ~ 5.0 等待数据块校验(CRC) 重传数据块

3.3 超时交互流程总览

下图展示了从 TCP 连接建立到应用层事务完成的完整超时交互路径,其中每个箭头代表一次超时定时器的启动与停止。

SECS/GEM 超时交互总览图 T1~T8 超时交互流程总览 TCP 连接建立 T5 超时监控 块传输与 ACK/NAK T1 / T2 超时监控 T3 心跳 / T4 块间隔 Select / Deselect T6 超时监控 事务处理 T7 / T8 超时监控 超时触发与恢复流程说明: • T1/T2 超时 → 块重传(最多 7 次)→ 若仍失败则断开连接。 • T3 超时 → 发送 Link Test → 若连续 3 次无响应则断开。 • T7 超时 → 取消当前事务 → 返回超时错误码给应用层。

3.4 各超时详细解析

3.4.1 T1 — 块传输确认超时

T1 是 SECS-I 中最基础的超时,用于监控单个数据块(Block)从发送到收到 ACK/NAK 的时间。若超时,发送方将重传该块,最多重试 7 次。T1 值通常设置为网络 RTT 的 2~3 倍。

优化建议:在低延迟局域网(<1ms)中,T1 可设为 1.0s;在跨地域广域网中,建议设为 3.0~5.0s 以避免误重传。

3.4.2 T2 — ACK/NAK 延迟超时

T2 作用于接收方,限制从收到块到发出 ACK/NAK 的最大延迟。若接收方在 T2 内未响应,发送方将认为块丢失并重传。T2 通常设为 0.1~1.0s,防止接收方因处理瓶颈导致链路阻塞。

3.4.3 T3 — 连接空闲超时

T3 用于检测通信链路是否存活。当连接空闲时间超过 T3 时,主动端发送 Link Test 消息。若连续 3 次 Link Test 无响应,则判定连接断开。T3 默认值通常为 5.0~120.0s。

3.4.4 T4 — 块间间隔超时

对于多块消息(Multi-block Message),T4 监控相邻块之间的到达间隔。若超过 T4 仍未收到下一块,接收方将丢弃已收到的部分块并重置连接。T4 一般设为 0.5~5.0s。

3.4.5 T5 — 连接建立超时

T5 在 HSMS 会话层使用,监控 TCP 连接建立请求(SYN)到收到 SYN-ACK 的时间。超时后主动端重试连接,最多 3 次。T5 通常设为 2.0~30.0s,需大于 TCP 内置重传超时(RTO)。

3.4.6 T6 — 会话控制超时

T6 监控 Select.req / Deselect.req 等会话控制消息的响应时间。若超时,主动端重发请求或直接断开连接。T6 默认值为 1.0~10.0s。

3.4.7 T7 — 事务完成超时

T7 是应用层最重要的超时,监控从发送 Primary Message 到收到 Secondary Message 的完整事务时间。超时后,发起方取消事务并向上层报告超时错误。T7 范围较宽(10.0~300.0s),需根据设备处理时间合理设置。

3.4.8 T8 — 数据校验超时

T8 用于监控数据块 CRC 校验的完成时间。若接收方在 T8 内未完成校验并返回结果,发送方将重传该块。T8 通常设为 0.5~5.0s,适用于计算能力较弱的嵌入式设备。

3.5 超时参数配置对比

参数 影响范围 常见误配置 推荐调优方向
T1 单块重传频率 设置过小导致频繁重传 按 RTT 动态调整
T2 接收方处理压力 设置过大掩盖接收方瓶颈 与设备 CPU 负载关联
T3 连接保活检测 设置过大延迟故障发现 建议 ≤ 30s
T4 多块消息完整性 设置过小导致正常消息被丢弃 按最大块间隔 + 50% 余量
T5 连接建立成功率 设置过小导致连接失败 ≥ 3 × TCP RTO
T6 会话切换效率 设置过大阻塞状态机 建议 ≤ 5s
T7 应用事务吞吐量 设置过大浪费连接资源 按设备最大处理时间 + 20%
T8 数据完整性校验 设置过小导致误重传 按校验算法耗时 + 100ms

3.6 超时机制设计要点

  • 层级隔离:各层超时独立运行,下层超时不会直接触发上层超时,但累积效应会导致上层事务失败。
  • 重试次数限制:T1 重试 7 次、T5 重试 3 次、T3 连续 3 次无响应后断开,避免无限重试耗尽资源。
  • 超时值联动:T7 应大于 T1 × 最大块数 + T4 × (块数-1),否则正常多块消息也会超时。
  • 日志与监控:所有超时事件应记录时间戳、超时编号、当前重试次数,便于事后分析网络或设备问题。
常见陷阱:不要将所有超时设为相同值。例如 T3 与 T7 若都设为 60s,当 T3 心跳丢失时,T7 事务可能仍在等待,导致资源泄漏。建议 T3 ≤ T7/2。

3.7 本章小结