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 分片。可以通过以下方式实现:
- 路径 MTU 发现(Path MTU Discovery)
- 在隧道建立时协商 MRU(Maximum Receive Unit)
- 在 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):
-
端口复用 (Port Multiplexing): 多个隧道可以在同一对 IP 地址之间建立,通过 Tunnel ID 进行区分。
-
NAT 穿越 (NAT Traversal): 当 L2TP 需要穿越 NAT 设备时,可能需要额外的机制(如 L2TP/IPsec NAT-T)。
-
防火墙考虑 (Firewall Considerations): 防火墙必须允许 UDP 端口 1701 的双向通信以支持 L2TP。
-
QoS 映射 (QoS Mapping): 实现可以将 PPP 层的 QoS 要求映射到 IP 层的 DSCP 或 TOS 字段。