コンテンツにスキップ

464XLAT:コアネットワークの IPv4 接続

このドキュメントは編集中です。内容が実際のバージョンと異なる場合があります。

これは補足資料です。現在の Flet’H の各モードを設定するために 464XLAT は必要ありません。IPv4-in-IPv6 のカプセル化と IPv4/IPv6 変換を区別したいときに参照してください。

先に結論を書くと、464XLAT は IPv4 パケット全体を IPv6 トンネルに入れる方式ではありません。ユーザー側で IPv4 を IPv6 に変換し、IPv6-only 網を通過した後、事業者側で IPv4 に戻します。

多くのユーザーにとって、464XLAT の違いはほとんど意識されません。従来の IPv4 アプリケーションもそのまま通信できます。直接確認できる数少ない手がかりの一つは、スマートフォンや端末にローカル専用の IPv4 互換アドレスが表示されることです。実装によっては 192.0.0.2 となり、DS-Lite とよく似て見えます。

これは 464XLAT と DS-Lite のどちらも 192.0.0.0/29 の IPv4 Service Continuity Prefix を利用できるためです。このアドレスがパブリック IPv4 としてアクセス網へ送信されることはなく、同じアドレスが見えても 464XLAT と DS-Lite の転送方式が同じという意味ではありません。

事業者がスマートフォンで 464XLAT を有効にする仕組み

Section titled “事業者がスマートフォンで 464XLAT を有効にする仕組み”

464XLAT は通常、利用者が手動で切り替える機能ではありません。携帯事業者はキャリア設定を通じて端末に 464XLAT の機能を配布します。網が実際に IPv6-only のデータセッションを提供したとき、端末は CLAT を有効化でき、網側は PLAT/NAT64 を提供します。

iOS では、この端末側の機能設定がキャリア設定バンドル(.ipcc)に含まれます。展開した carrier.plist の APN 項目では、次のような設定を確認できる場合があります。

<key>apn</key>
<string>spmode.ne.jp</string>
<key>DefaultProtocolMask</key>
<integer>3</integer>
<key>AllowedProtocolMask</key>
<integer>3</integer>
<key>enableXLAT464</key>
<true/>

これは 🍄 の spmode.ne.jp に対する設定です。protocol mask の 3 は IPv4 と IPv6 の両方を許可する値であり、すべての接続を IPv6-only に固定するものではありません。enableXLAT464 は iOS に 464XLAT の機能をあらかじめ設定し、網から IPv6 のみが割り当てられた場合に端末側の CLAT を起動できるようにします。事業者網には別途 PLAT/NAT64 が必要です。

464XLAT は、役割の異なる二つの変換機能を組み合わせます。

[ プライベート IPv4 クライアント ] -- IPv4 --> [ CLAT ] -- IPv6 --> [ PLAT ] -- IPv4 --> [ IPv4 インターネット ]
ステートレス変換 ステートフル NAT64
  • CLAT(Customer-side translator) は端末またはユーザー側ルーターで動作し、IPv4 と IPv6 を規則に基づいてステートレスに変換します。
  • PLAT(Provider-side translator) は事業者網で動作し、ステートフル NAT64 によって多数の IPv6 ユーザーを事業者の IPv4 アドレスプールへ対応付けます。

戻りの通信は PLAT、CLAT の順に逆方向へ変換されます。ネイティブ IPv6 通信は IPv6 のまま直接流れるため、どちらの変換も通りません。

RFC 6877 が対象とするのは、限定的な IPv4 接続です。クライアントから IPv4 サーバーへ開始する通信には使えますが、外部から直接到達できるパブリック IPv4 アドレスや、制限のない着信 IPv4、一般的な IPv4 の P2P 接続を置き換えるものではありません。

NAT64 と DNS64 だけでも、IPv6 対応アプリケーションは合成された AAAA レコードを使って IPv4-only サーバーへ接続できます。ただし、次のような場合はローカルに IPv4 互換経路が必要です。

  • 192.0.2.1 のような IPv4 リテラルへ直接接続する。
  • アプリケーションが IPv4 socket しか作成できない。
  • CLAT の配下に IPv4-only 機器がある。

CLAT はこれらの IPv4 通信を受け取り、IPv6 に変換して PLAT へ送ります。このため、464XLAT 自体は DNS64 を必須としません。DNS64 を併用する場合、IPv6 対応アプリケーションは CLAT を通らず、PLAT の NAT64 だけで IPv4-only サーバーへ接続できます。

方式IPv6 網を流れる内容主に状態を持つ場所Flet’H の現行対応
DS-Lite外側の IPv6 ヘッダーで包まれた完全な IPv4 パケット事業者の AFTR対応
MAP-E外側の IPv6 ヘッダーで包まれた完全な IPv4 パケット。IPv4 アドレスとポートセットはルールから決まるマッピング自体について事業者側のフロー単位状態は不要対応
IPIP6H / IPIP6HP外側の IPv6 ヘッダーで包まれた完全な IPv4 パケット事業者の固定 IP サービスによる対応
464XLATIPv4 ヘッダーを残さず変換した IPv6 パケット事業者 PLAT のステートフル NAT64非対応

DS-Lite、MAP-E、IPIP6 は元の IPv4 パケットを保持し、外側に IPv6 ヘッダーを追加します。464XLAT は IP ヘッダーを書き換えるため、IPv6 区間では変換後の IPv6 パケットだけを運びます。いずれも IPv6 基盤を使って IPv4 接続を提供しますが、カプセル化、アドレスの意味、事業者側で保持する状態が異なります。

464XLAT と Flet’H に直接の関係はありません。