了解 464XLAT ALG 流量支持
在移动网络上部署 IPv6 应用程序时,请注意,某些移动运营商无法为其用户提供 IPv6 支持,因为某些电话应用程序不支持仅 IPv6 环境。
解决方案是使用 NAT64 机制访问运营商网络中仅支持 IPv4 的内容,并使用 464XLAT 流量使仅支持 IPv4 的应用能够在仅支持 IPv6 的网络上运行。
464XLAT 架构是客户端转换器 (CLAT) 上的无状态转换和提供商端转换器 (PLAT) 上的有状态转换的组合。464XLAT 架构用于结合使用无状态(将专用 IPv4 地址转换为全球 IPv6 地址,反之亦然)和有状态(将 IPv6 地址转换为全局 IPv4 地址,反之亦然)转换来转换设备的数据包信息。
图 1 展示了 464XLAT 架构,该架构通过结合核心 PLAT 上的现有和众所周知的有状态协议转换和边缘 CLAT 上的无状态协议,在纯 IPv6 网络上提供 IPv4 连接。专用 IPv4 主机可以通过 CLAT 和 PLAT 转换访问全球 IPv4 主机。相反,IPv6 主机无需转换即可直接到达 Internet 上的其他 IPv6 主机。这意味着客户端设备 (CPE) 可以支持 CLAT,也可以作为 IPv6 原生路由器运行,用于传输原生 IPv6 流量。
了解 464XLAT ALG 功能
图 2 描述了地址转换架构,并展示了如何结合使用提供商端转换器 (PLAT) 的有状态转换和客户端转换器 (CLAT) 的无状态转换来转换设备的数据包信息。在此图中,客户端通过前缀委派机制(如 DHCPv6 前缀委派 (DHCPv6-PD))委派一个 IPv6 前缀。因此,客户端具有用于转换的专用 IPv6 前缀。
PPTP、RTSP 和 FTP ALG 还支持 XLAT 功能。
以下各节介绍当设备充当 PLAT 时 PPTP、RTSP 和 FTP ALG 的工作原理:
PPTP ALG 如何支持充当 PLAT 的设备
图 3 介绍了 PPTP ALG XLAT 功能。
PPTP ALG 将call_ID用于目标端口功能。
-
The client sends the outgoing call request (with PPTP Access Concentrator (PAC) call_ID) to the server:
CLAT:源地址/端口从 Ipv4_1/port1 转换为 Ipv6_1/port1。但是,有效负载call_ID不会更改。
PLAT:源地址/端口 Ipv6_1/port1 将转换为 Ipv4_1'/port1' 并匹配 NAT64 规则。但是,有效负载中的call_ID不会更改。PPTP ALG 创建一个门,例如 server_ip/0->Ipv4_1'/call_ID(Ipv6_1/call_ID)。
The first generic routing encapsulation (GRE) packet reaches the gate from the server side:当第一个 GRE 流量到达入口时,来自服务器端且目标为 Ipv4_1'/call_ID 的 GRE 数据包将转换为 Ipv6_1/call_ID。最后,GRE 数据包在 CLAT 之后到达客户端 Ipv4_1/call_ID。
Another special case for call_ID 0:
CLAT:源地址/端口从 Ipv4_1/port1 转换为 Ipv6_1/port1。但是,有效负载call_ID不会更改。
PLAT:源地址/端口 Ipv6_1/port1 将转换为 Ipv4_1'/port1' 并匹配 NAT64 规则。但是,有效负载中的call_ID 0 会手动转换为 65002。PPTP ALG 创建一个门,例如 server_ip/0->Ipv4_1'/65002(Ipv6_1/0)。
The first GRE packet reaches the gate from the server side:当第一个 GRE 流量到达入口时,来自服务器端目标 Ipv4_1'/65002 的 GRE 数据包将转换为 Ipv6_1/0。最后,GRE 数据包在 CLAT 后到达客户端 Ipv4_1/0。
-
The server sends the outgoing call reply (with PPTP Network Server (PNS) and PAC call_ID) to the client:
PLAT:源地址/端口 Ipv4_2/port2 将转换为 Ipv6_2/port2' 并匹配 NAT64 规则。但是,有效负载中的call_ID不会更改,并且 PPTP ALG 会创建一个门,例如 client_v6/0->Ipv6_2/call_ID(Ipv4_2/call_ID)。
CLAT:源地址/端口从 Ipv6_2/port2 转换为 Ipv4_2/port2。但是,有效负载call_ID不会更改。
The first GRE packet reaches the gate from the client side:当第一个 GRE 流量到达入口时,来自客户端的带有目标 Ipv4_2'/call_ID 的 GRE 数据包在 CLAT 之后转换为 Ipv6_2/call_ID,然后转换为 Ipv4_2/call_ID。最后,GRE 数据包在 PLAT 之后到达服务器 Ipv4_2/call_ID。
Another special case for call_ID 0:
PLAT:源地址/端口 Ipv4_2/port2 将转换为 Ipv6_2/port2' 并匹配 NAT64 规则。但是,有效负载中的call_ID被转换为 65002,PPTP ALG 创建一个门,例如 client_v6/0->Ipv6_2/65002(Ipv4_2/0)。
CLAT:源地址/端口从 Ipv6_2/port2 转换为 Ipv4_2/port2。但是,有效负载call_ID不会更改。
The first GRE packet reaches the gate from the client side:当第一个 GRE 流量到达入口时,来自客户端的 GRE 数据包(目标为 Ipv4_2'/65002)在 CLAT 之后转换为 Ipv6_2/65002,然后转换为 Ipv4_2/0。最后,GRE 数据包在 PLAT 之后到达服务器 Ipv4_2/0。
RTSP ALG 如何支持充当 PLAT 的设备
图 4 介绍了 RTSP ALG XLAT 功能。
-
The Windows Media Player on the Windows PC sends a SETUP message:
CLAT:源地址/端口从 Ipv4_1/port1 转换为 Ipv6_1/port1。但是,有效负载 Ipv4_2/端口 3 不会更改。
PLAT:源地址/端口 Ipv6_1/port1 转换为 Ipv4_1'/port1' 并匹配 NAT64 规则,有效负载端口 3 转换为端口 3'。但是,有效负载 ULR 中的 IP 地址保持不变。
-
The Windows Media Server on the Windows server sends a 200 OK message:
PLAT:源地址/端口 Ipv4_1'/port1' 将转换为 Ipv6_1/port1 并匹配 NAT64 规则。但是,有效负载中的端口 4 不会更改。端口 3' 将转换为端口 3。RTSP ALG 通过从服务器端发送的目标 Ipv4_1'/port1' 的 UDP 媒体数据创建门,例如 c->s Ipv6_1/port1->Ipv6_2/port3 和 s->c Ipv4_2/port4->Ipv4_1'/port3',然后 IP 报头被转换为 Ipv6_1/port1 并到达门。
CLAT:源地址/端口从 Ipv6_1/port1 转换为 Ipv4_1/port1。但是,有效负载端口 3/端口 4 不会更改。
-
The server sends the Real-Time Transport Protocol (RTP) over UDP media data:
PLAT:当 RTP over UDP 媒体数据通过目标 Ipv4_1'/port3 从服务器端发送时,IP 报头将转换为 Ipv6_1/port3 并到达门。
CLAT:IP 报头从 Ipv6_1/port3 转换为 Ipv4_1/port3。
-
The client sends the RTP over UDP media data:
CLAT:源地址/端口从 Ipv4_1/端口 3 转换为 Ipv6_1/端口 3,目标地址从 Ipv4_2/端口 4 转换为 Ipv6_2/端口 4。
PLAT:源地址/端口从 Ipv6_1/port3 转换为 Ipv4_1'/port3,目标地址从 Ipv6_2/port4 转换为 Ipv4_2/port4。
FTP ALG 如何支持充当 PLAT 的设备
图 5 和图 6 描述了无源模式和端口模式下的 FTP ALG XLAT 功能。
-
A 227 message enters passive mode:
CLAT:源地址/端口从 Ipv4_1/port1 转换为 Ipv6_1/port1。但是,有效负载不包含 IP 或端口信息。
PLAT:源地址/端口 Ipv4_1'/port1' 将转换为 Ipv6_1/port1 并匹配 NAT64 规则。但是,有效负载中的 Ipv4_2/port3 不会更改,并且 FTP ALG 会创建一个门,例如 Ipv4_1/0(Ipv6_1/0)->Ipv4_2/port3。
-
The first packet reaches the gate from the client side:当流量到达入口时,来自客户端的目标 Ipv4_2/端口 3 的日期数据包将转换为 Ipv6_2/端口 2。IP 报头通过基于 PLAT 的 NAT64 规则转换为 Ipv4_2/port3。
-
FTP port mode sends a PORT message:
CLAT:源地址/端口从 Ipv4/port1 转换为 Ipv6/port1。
PLAT:源地址/端口为 Ipv6_1/端口 1 转换为 Ipv4_1'/port1' 并匹配 NAT64 规则。有效负载中的 Ipv4_1/port2 将转换为 Ipv4_1'/port2',FTP ALG 会创建一个门,例如 Ipv4_1'/port2'(Ipv4_1/port2->server_ip/server_port。
-
The first packet reaches the gate from the server side:当流量到达入口时,来自服务器端且目标为 Ipv4_1'/port2' 的第一个数据包将转换为 Ipv6_1/port2。最后,数据包在 CLAT 之前到达客户端 Ipv4_1/端口 2。