跳到主要内容

1.4. The INFORMATIONAL Exchange (INFORMATIONAL 交换)

1.4 The INFORMATIONAL Exchange (INFORMATIONAL 交换)

在 IKE SA 运行期间, 对等方可能希望就错误或特定事件的通知向对方发送控制消息. 为此 IKE 定义了 INFORMATIONAL 交换. INFORMATIONAL 交换必须仅在初始交换之后发生, 并使用协商好的密钥进行密码保护. 注意, 某些Informational消息 (而非交换) 可以在 IKE SA 上下文之外发送. 第 2.21 节亦非常详细地涵盖错误消息.

与某一 IKE SA 相关的控制消息必须在该 IKE SA 下发送. 与 Child SA 相关的控制消息必须在生成它们的 IKE SA (或若 IKE SA 被 rekey 则为其后继) 的保护下发送.

INFORMATIONAL 交换中的消息包含零个或多个 Notification, Delete 与 Configuration 载荷. INFORMATIONAL 交换请求的接收方必须发送某种响应, 否则发送方将假定消息在网络中丢失并重传. 该响应可以是空消息. INFORMATIONAL 交换中的请求消息也可以不包含任何载荷. 这是端点要求对方验证其存活的预期方式.

INFORMATIONAL 交换定义如下:

Initiator                         Responder
-------------------------------------------------------------------
HDR, SK {[N,] [D,]
[CP,] ...} -->
<-- HDR, SK {[N,] [D,]
[CP,] ...}

INFORMATIONAL 交换的处理由其组成载荷决定.

1.4.1. Deleting an SA with INFORMATIONAL Exchanges (用 INFORMATIONAL 交换删除 SA)

ESP 与 AH 的 SA 总是成对存在, 每个方向一个 SA. 关闭 SA 时, 必须关闭 (即删除) 该对的两个成员. 每个端点必须关闭其入向 SA, 并允许另一端点关闭每对中的另一个 SA. 要删除 SA, 发送带一个或多个 Delete 载荷的 INFORMATIONAL 交换, 列出要删除的 SA 的 SPI (按入向分组头中预期出现的方式). 接收方必须关闭指定的 SA. 注意, 切勿在单条消息中为某一 SA 的两侧发送 Delete 载荷. 若需同时删除许多 SA, 在 INFORMATIONAL 交换中为每对 SA 的入向一半包含 Delete 载荷.

通常, INFORMATIONAL 交换的响应将包含另一方向成对 SA 的 Delete 载荷. 有一种例外. 若碰巧一组 SA 的两端独立决定关闭它们, 各自可能发送 Delete 载荷, 两条请求可能在网络中交叉. 若节点收到针对其已发出删除请求的 SA 的删除请求, 它必须在处理请求时删除出向 SA, 在处理响应时删除入向 SA. 此时, 响应不得再为已删除的 SA 包含 Delete 载荷, 否则会导致重复删除并理论上可能删除错误的 SA.

与 ESP 与 AH SA 类似, IKE SA 也通过发送 INFORMATIONAL 交换来删除. 删除 IKE SA 隐式关闭其下协商的任何剩余 Child SA. 对删除 IKE SA 的请求的响应是一条空的 INFORMATIONAL 响应.

半关闭的 ESP 或 AH 连接是反常的, 具有审计能力的节点若其持续存在可能应当审计. 注意本规范未规定时间期限, 因此由各个端点决定等待多久. 节点可以拒绝在半关闭连接上接受入向数据, 但不得单方面关闭它们并重用 SPI. 若连接状态变得足够混乱, 节点可以按上文所述关闭 IKE SA, 然后在新 IKE SA 下在干净基础上重建所需 SA.