答案1
其中一个原因是与 IKEv1 向后兼容.另一个是与 NAT 穿越兼容(UDP 封装,RFC 3948) 因为它利用 IKE 连接创建的现有 NAT 映射通过 NAT 传输 ESP(通过 TCP 执行此操作可能会对性能产生一定影响,见下文)。
但是,现在可以使用 TCP 封装 IKEv2 和 ESP(甚至可以在 TLS 中建立隧道)。此扩展定义在RFC 8229如果无法通过 UDP 建立连接(例如由于防火墙),则可以作为后备。
正如所述第12节该 RFC 中,使用它可能会对性能产生一些负面影响(例如 TCP-in-TCP),因此通常最好使用 UDP。由于它是一个相对较新的扩展,对它的支持还不是很广泛(Linux 内核从 5.6 开始支持它,该版本于 2020 年 3 月/4 月发布)。