9.3 封装在非 IP 头部中的 IP 数据包
9.3 封装在非 IP 头部中的 IP 数据包
本节简要讨论 ECN 与封装在非 IP 头部中的 IP 数据包的交互, 例如 MPLS (Multiprotocol Label Switching), GRE (Generic Routing Encapsulation), L2TP (Layer 2 Tunneling Protocol) 和 PPTP (Point-to-Point Tunneling Protocol).
这些封装方法中的 ECN 问题与 IP-in-IP 隧道类似:
-
拥塞指示丢失: 如果封装协议没有携带 ECN 信息的机制, 当外层头部在隧道出口被移除时, 内层 IP 头部 ECN 字段中设置的拥塞指示可能丢失.
-
外层头部缺少 ECN 支持: 如果封装协议不支持类似 ECN 的功能, 即使内层 IP 数据包具备 ECN 能力, 隧道路由器也无法向 ECN-capable 流发出拥塞信号.
本文档不规定这些非 IP 封装中应如何处理 ECN. 此类规范必须针对每种封装协议单独制定, 并考虑该协议的具体特征和约束.
例如:
- MPLS: MPLS 中的 ECN 支持由单独文档处理, 这些文档定义如何在 IP 和 MPLS 头部之间映射 ECN
- GRE: GRE 隧道中的 ECN 处理需要考虑是否以及如何使用 GRE 头部中的 bit 进行 ECN 信令
- L2TP and PPTP: 这些 Layer 2 tunneling protocols 带来额外挑战, 因为它们可能无法直接访问 Layer 3 ECN 信息
为这些封装设计 ECN 支持的协议设计者应遵循与第 9.1 和第 9.2 节所概述原则类似的原则:
- 至少提供 limited-functionality option, 以避免破坏 ECN
- 考虑 full-functionality option, 以在通过隧道时保留 ECN 的好处
- 处理跨隧道携带拥塞信息的安全影响
在某一特定封装协议的 ECN 支持得到适当规定之前, 实现应假设不支持 ECN, 并且使用 ECN 的流在穿越这类隧道时将经历数据包丢弃而不是标记.