HSMS 会话建立流程:主动连接与被动连接、T5 超时与连接重试、会话 ID 的协商机制

HSMS(High-Speed SECS Message Services)会话的建立是设备与主机之间进行 SECS/GEM 通信的第一步。理解主动连接与被动连接的角色分配、T5 超时对连接重试的影响以及会话 ID(Session ID)的协商机制,是配置可靠通信链路的基础。本章将详细拆解这三个核心环节。

2.1 主动连接与被动连接的角色模型

在 HSMS 会话建立中,通信双方的角色并非对等。根据 SEMI E37 标准,连接双方被定义为 主动实体(Active Entity) 和 被动实体(Passive Entity)。通常,主机(Host) 作为主动方发起 TCP 连接,而 设备(Equipment) 作为被动方监听端口。

关键原则: 主动方负责发起 TCP 连接请求;被动方负责监听并接受连接。角色一旦确定,在会话生命周期内通常不会互换。

下表对比了主动连接与被动连接的核心差异:

特性 主动连接(Active) 被动连接(Passive)
典型角色 主机(Host) 设备(Equipment)
启动行为 主动发起 TCP SYN 连接 监听端口,等待连接
IP/端口配置 需配置被动方的 IP 和端口 配置本地监听端口
连接状态机 从 NOT CONNECTED → CONNECTING → CONNECTED 从 NOT CONNECTED → LISTENING → CONNECTED
重试机制 受 T5 定时器控制,主动重试 持续监听,不主动重试

以下 SVG 图展示了主动方与被动方在 TCP 层面的连接建立过程:

HSMS 主动连接与被动连接建立流程 主动方(主机) Active Entity 被动方(设备) Passive Entity ① 发起 TCP 连接 ② 接受连接 ③ TCP 连接建立成功 TCP 连接建立后,HSMS 将进行 Select.indication 和 Select.response 握手

2.2 T5 超时与连接重试机制

T5 定时器 是 HSMS 协议中用于控制 连接重试间隔 的关键参数。当主动方尝试建立 TCP 连接失败(例如被动方未就绪、网络不可达)时,T5 定时器决定了主动方在两次连接尝试之间的等待时间。

常见配置陷阱: T5 值设置过小(如 < 1 秒)会导致网络风暴,大量重试请求占用带宽;设置过大(如 > 60 秒)则会延长链路恢复时间,导致设备长时间离线。推荐初始配置为 10~30 秒。

连接重试的完整流程如下:

  1. 连接失败: 主动方发起 TCP 连接请求,未收到 SYN-ACK 或收到 RST。
  2. 启动 T5: 主动方启动 T5 定时器,进入等待状态。
  3. T5 超时: 定时器到期,主动方再次发起连接请求。
  4. 循环: 重复步骤 1~3,直到连接成功或达到最大重试次数(如果配置了上限)。

以下 SVG 图展示了 T5 超时与连接重试的时序:

T5 超时与连接重试时序 主动方 被动方 第 1 次连接请求 ✗ 连接失败 T5 等待 第 2 次连接请求 ✗ 连接失败 T5 等待 第 3 次连接请求 ✓ 连接成功 T5 超时值应大于 TCP 连接超时时间,避免无效重试

2.3 会话 ID(Session ID)的协商机制

会话 ID(Session ID) 是 HSMS 会话的唯一标识符,在 Select.indication 和 Select.response 消息中完成协商。会话 ID 的值范围由 设备 ID(Device ID) 决定,通常为 0~32767 之间的整数。

会话 ID 的协商过程分为以下步骤:

  • 步骤 1: 主动方发送 Select.indication 消息,其中包含提议的会话 ID(通常为设备 ID)。
  • 步骤 2: 被动方收到后,验证会话 ID 是否合法(是否在允许范围内、是否已被占用)。
  • 步骤 3: 被动方回复 Select.response 消息,携带状态码:
    • 0x0000(成功): 会话 ID 被接受,会话建立。
    • 0x0001(拒绝): 会话 ID 无效或冲突,会话建立失败。
最佳实践: 在配置设备时,确保设备 ID 在主机端和设备端保持一致。如果设备 ID 不匹配,Select.response 将返回拒绝状态码,导致会话无法建立。

以下 SVG 图展示了会话 ID 协商的完整消息交换:

会话 ID 协商机制(Select 握手) 主机(Host) 设备(Equipment) Select.indication (Session ID = 100) 验证 Session ID Select.response (Status = 0x0000) HSMS 会话建立成功 会话 ID 在会话生命周期内保持不变 断开后重新连接需重新协商

2.4 连接建立失败常见原因与排查

在实际部署中,HSMS 会话建立可能因多种原因失败。下表总结了常见问题及其排查方向:

故障现象 可能原因 排查建议
TCP 连接超时 IP 地址/端口配置错误;防火墙拦截 使用 ping 和 telnet 测试网络连通性
连接被拒绝(RST) 被动方未启动监听;端口被占用 检查设备 HSMS 服务状态;使用 netstat 查看端口
Select.response 返回拒绝 会话 ID 冲突或超出范围 核对设备 ID 配置;检查是否已有相同 ID 的会话
频繁重试导致网络拥塞 T5 超时值设置过小 增大 T5 值(建议 ≥ 10 秒)
总结: HSMS 会话建立的成功依赖于正确的角色配置、合理的 T5 超时设置以及一致的会话 ID 协商。主动方负责发起连接,被动方负责监听和验证。T5 定时器控制重试频率,避免网络资源浪费。会话 ID 的协商通过 Select 握手完成,是会话建立的最后一道关卡。