メインコンテンツまでスキップ

7. Control Connection State Machines (控制连接状态机)

本章定义了 L2TP 控制连接和会话建立、维护和拆除的状态机。

7.1 Control Connection Protocol Operation (控制连接协议操作)

控制连接状态机描述了隧道建立和拆除的状态转换。每个状态定义了可接受的事件、相应的操作和下一个状态。

7.2 Control Connection States (控制连接状态)

控制连接包含以下状态:

  • idle: 初始状态,未建立连接
  • wait-ctl-reply: 等待对等方的控制连接回复
  • wait-ctl-conn: 等待控制连接完成
  • established: 控制连接已建立
  • closing: 正在关闭控制连接

7.2.1 Control Connection Establishment (控制连接建立)

控制连接建立使用三次握手(SCCRQ, SCCRP, SCCCN)完成。状态转换包括:

  1. idle → wait-ctl-reply (发送 SCCRQ)
  2. wait-ctl-reply → wait-ctl-conn (接收 SCCRP)
  3. wait-ctl-conn → established (接收 SCCCN)

7.3 Timing Considerations (时序考虑)

  • 重传计时器: 用于可靠传输的控制消息重传
  • Hello 间隔: 定期发送 Hello 消息的间隔
  • 超时检测: 检测隧道故障的超时机制

7.4 Incoming Calls (传入呼叫)

传入呼叫的建立涉及 LAC 和 LNS 的协调状态转换。

7.4.1 LAC Incoming Call States (LAC 传入呼叫状态)

LAC 端的传入呼叫状态:

  • idle: 无活动呼叫
  • wait-reply: 等待 LNS 的 ICRP
  • wait-connect: 等待呼叫连接
  • established: 会话已建立

7.4.2 LNS Incoming Call States (LNS 传入呼叫状态)

LNS 端的传入呼叫状态:

  • idle: 无活动呼叫
  • wait-connect: 等待 LAC 的 ICCN
  • established: 会话已建立

7.5 Outgoing Calls (传出呼叫)

传出呼叫由 LNS 发起,LAC 执行实际的呼叫操作。

7.5.1 LAC Outgoing Call States (LAC 传出呼叫状态)

LAC 端的传出呼叫状态:

  • idle: 无活动呼叫
  • wait-reply: 等待对 OCRQ 的响应
  • wait-cs-answer: 等待呼叫应答
  • established: 会话已建立

7.5.2 LNS Outgoing Call States (LNS 传出呼叫状态)

LNS 端的传出呼叫状态:

  • idle: 无活动呼叫
  • wait-reply: 等待 LAC 的 OCRP
  • wait-connect: 等待 OCCN
  • established: 会话已建立

7.6 Tunnel Disconnection (隧道断开)

隧道断开可以由 LAC 或 LNS 通过发送 StopCCN 消息启动。接收到 StopCCN 后,对等方应确认消息并清理所有相关资源。


注:完整的状态转换表和详细的状态机图请参考 RFC 2661 原文。本章提供了状态机的概述和主要状态转换流程。