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)完成。状态转换包括:
- idle → wait-ctl-reply (发送 SCCRQ)
- wait-ctl-reply → wait-ctl-conn (接收 SCCRP)
- 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 原文。本章提供了状态机的概述和主要状态转换流程。