跳到主要内容

8. L2TP Over Specific Media (特定媒体上的 L2TP)

本章描述 L2TP 在特定媒体类型上的实现细节。L2TP 被设计为可以在多种数据包传输媒体上运行,包括 UDP/IP、帧中继、ATM 等。

8.1 L2TP over UDP/IP

L2TP 使用注册的 UDP 端口 1701 用于隧道端点之间的通信。UDP 为 L2TP 控制消息和数据消息提供数据包传输服务。

端口分配 (Port Assignment):

  • 源端口 (Source Port): 发送端可以使用任何可用的 UDP 端口作为源端口。
  • 目标端口 (Destination Port): 必须使用 UDP 端口 1701。

数据包封装 (Packet Encapsulation):

L2TP 数据包在 UDP/IP 上的封装格式如下:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| UDP Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| L2TP Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| L2TP Control Message or |
| PPP Payload |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

UDP 校验和 (UDP Checksum):

UDP 校验和应该被计算并包含在所有 L2TP 数据包中。接收端必须验证校验和(如果存在)。如果校验和验证失败,数据包必须被丢弃。

MTU 考虑 (MTU Considerations):

由于 L2TP 添加了额外的封装层(L2TP 头部 + UDP 头部 + IP 头部),实现必须考虑路径 MTU。典型的封装开销:

  • IP 头部:20 字节(IPv4)或 40 字节(IPv6)
  • UDP 头部:8 字节
  • L2TP 头部:至少 6 字节(可能更多,取决于选项)

分片 (Fragmentation):

建议 L2TP 实现避免 IP 分片。可以通过以下方式实现:

  1. 路径 MTU 发现(Path MTU Discovery)
  2. 在隧道建立时协商 MRU(Maximum Receive Unit)
  3. 在 PPP 层进行分片而不是 IP 层

8.2 IP

L2TP 数据包使用 IP 作为其数据包传输协议。IP 为 L2TP 提供端到端的数据包传输服务。

IP 版本支持 (IP Version Support):

L2TP 被设计为可以在 IPv4 [RFC791] 和 IPv6 [RFC2460] 上运行。实现应该支持至少一种 IP 版本,并可以选择支持两者。

IPv4 特定考虑 (IPv4-Specific Considerations):

  • 协议类型 (Protocol Type): 当使用 UDP 封装时,IP 协议字段设置为 17(UDP)。
  • 服务类型 (Type of Service, TOS): L2TP 实现可以设置 IP TOS 字段以指示服务质量要求。控制消息可能需要比数据消息更高的优先级。
  • 生存时间 (Time to Live, TTL): 应该设置合适的 TTL 值以防止数据包在网络中无限循环。

IPv6 特定考虑 (IPv6-Specific Considerations):

  • 下一个头部 (Next Header): 当使用 UDP 封装时,设置为 17(UDP)。
  • 流标签 (Flow Label): 可以使用 IPv6 流标签来识别属于同一隧道的数据包流,以便进行 QoS 处理。
  • 跳数限制 (Hop Limit): 相当于 IPv4 的 TTL。

地址选择 (Address Selection):

LAC 和 LNS 必须能够确定对端的 IP 地址。这可以通过以下方式实现:

  • 静态配置
  • DNS 解析
  • 动态发现机制

多宿主考虑 (Multi-homing Considerations):

如果隧道端点有多个 IP 地址(多宿主),实现必须确保隧道的所有数据包都使用一致的源地址。这对于保持隧道状态和防止混淆至关重要。

安全性 (Security):

当 L2TP 在 IP 上运行时,强烈建议使用 IPsec [RFC2401] 来保护隧道流量。IPsec 可以提供:

  • 机密性 (Confidentiality): 通过 ESP 加密
  • 完整性 (Integrity): 通过 AH 或 ESP 认证
  • 端点认证 (Endpoint Authentication): 通过 IKE

详细的安全考虑请参见第 9 章。


实现注意事项 (Implementation Notes):

  1. 端口复用 (Port Multiplexing): 多个隧道可以在同一对 IP 地址之间建立,通过 Tunnel ID 进行区分。

  2. NAT 穿越 (NAT Traversal): 当 L2TP 需要穿越 NAT 设备时,可能需要额外的机制(如 L2TP/IPsec NAT-T)。

  3. 防火墙考虑 (Firewall Considerations): 防火墙必须允许 UDP 端口 1701 的双向通信以支持 L2TP。

  4. QoS 映射 (QoS Mapping): 实现可以将 PPP 层的 QoS 要求映射到 IP 层的 DSCP 或 TOS 字段。