9.2.1.3 IPsec 隧道头部处理的变化
9.2.1.3 IPsec 隧道头部处理的变化
本节描述支持 ECN 所需的 IPsec tunnel mode 头部处理变化. 这些变化修改 [RFC2401] 中规定的在封装和解封装期间处理 TOS/Traffic Class 字节的过程.
封装 (隧道入口)
在隧道入口封装数据包时, 隧道端点 MUST:
- 检查该 SA 在 SA Database 中的 ECN_TUNNEL 字段
- 如果 ECN_TUNNEL 指示 "not permitted":
- 将外层头部中的 ECN 字段设置为 not-ECT (00)
- 不改变内层头部中的 ECN 字段
- 如果 ECN_TUNNEL 指示 "permitted":
- 按照第 9.1.1 节规定应用 full-functionality option:
- 如果内层头部 ECN 字段为 not-ECT 或 ECT, 将其复制到外层头部
- 如果内层头部 ECN 字段为 CE, 将外层头部 ECN 字段设置为 ECT(0)
- 按照第 9.1.1 节规定应用 full-functionality option:
外层头部中 DS 字段的其余部分 (DSCP bits) 按照现有 IPsec 规范 [RFC2401] 设置.
解封装 (隧道出口)
在隧道出口解封装数据包时, 隧道端点 MUST:
- 检查该 SA 在 SA Database 中的 ECN_TUNNEL 字段
- 如果 ECN_TUNNEL 指示 "not permitted":
- 如果外层头部设置了 CE codepoint, 该数据包 SHOULD 被丢弃 (因为这指示潜在篡改或错误配置)
- 否则, 不改变内层头部 ECN 字段; 只移除外层头部
- 如果 ECN_TUNNEL 指示 "permitted":
- 按照第 9.1.1 节规定应用 full-functionality option:
- 如果外层头部 CE codepoint 已设置, 在内层头部中设置 CE codepoint
- 否则, 保持内层头部 ECN 字段不变
- 如果外层头部设置了 CE codepoint 但内层头部为 not-ECT, 该数据包 SHOULD 被丢弃
- 按照第 9.1.1 节规定应用 full-functionality option:
这些处理规则确保在允许时, ECN 拥塞指示能够跨 IPsec 隧道正确保留, 并通过检测和拒绝具有意外 ECN codepoint 组合的数据包来维护安全性.