ドコモ、IPv6シングルスタックはじめます



#自己紹介
はじめまして、NTTドコモでISP基盤の構築をやっています齋藤真希と申します。
アドベントカレンダー1日目、去年とは毛色を変えてインフラまわりの記事から始めます。
だって、ドコモの原点はインフラ屋だもん！！
皆さんがいつでもどこでも誰とでもつながる、そんなあたりまえを守るんだもん！！（←めんどくさいインフラ屋の顔）

ドコモの売りは「あたりまえにつながる」ネットワークだと自負していますが、信頼性のためにしっかり作りこむ一方、お客様にお手頃プランで使っていただくためにコストも下げたくて、日々頭を悩ませたり、チームで喧々諤々したり。
わたしがいるのは、そんな明るい職場です。（サービスデザイン部といいます）


#わたしたちの悩み
さて、ドコモのISPといえば「spモード」と呼んでいるサービスです。
spモード、サービス開始から右肩上がりでユーザが増えていて、ありがたいことに4600万人ものお客様にお使いいただいてます。（ご利用本当にありがとうございます！！）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272816/70c04f66-6c1f-4485-49cb-ac35ce623285.png)

嬉しい反面、IPv4アドレスが足りなくてひーひー言うておりました。
ドコモではIPv4プライベートアドレスを使いまわして、グローバルアドレスに変換してなんとかやりくりしているのです。新サービスが出る、お客様が増えると聞いてはIPアドレスの数を数え……装置が増えると聞いてはIPアドレスを振り直して、足りるか計算し直し……来る日も来る日も、アドレスの残高を数える日々。わたしじゃなくて、わたしの尊敬する先輩が。

IPv6アドレスならこんなに悩まなくていいのに。
なんせIPv4が32ビットなのに対し、IPv6は128ビット。IPv6ならIPアドレス空間が格段に大きくなるのです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272816/cf771ff0-e33c-e123-81db-0d7485a332d2.png)


この問題をわたしがうちの新入社員に説明したときのことです。

IPv4アドレスが足りないっていうのは、桁数の問題でさ。
IPv6アドレスは桁数が増える分全体の数が増えて、ユーザや端末が増えてもへっちゃらになるんだよ。
むかし「ケータイ、PHS、11桁♪」っていうのがあったじゃない？それと同じなんだよ。

……と話したら、彼らが産まれた頃の話で全く伝わりませんでした。
時の流れって早いですね！！！（1998年なので23年前です）

※なんのことか知りたい若者は「11桁うさぎ」でググってねｗ

#特効薬、IPv6シングルスタック

IPv6シングルスタックとは、IPv6アドレスだけをお客様の端末に割り振る方式のことです。
一方デュアルスタックはIPv4とIPv6、両方割り振る方式。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272816/e82882a8-aca6-83d8-099b-5957b51b8ad7.png)

デュアルスタックはIPv4とIPv6を両方割り振りますので、IPv4アドレスが足りない現状は続いてしまいます。
前述の通りIPv4アドレスは足りてないので、アドレスのやりくりを前提とした構成は複雑になるし、検証や設計はv4とv6両方でする必要があるし、v4アドレス管理に多くのリソースを割く必要があるし……ハッピーじゃない！！
シングルスタックはIPv6だけ割り振って、通信の宛先によって変換して接続をする。もう端末側にIPv4アドレスは振りません。

そして、わたしたちは決めました。もうIPv4アドレスを基本とした構成はやめよう。
**IPv4/v6デュアルスタックから、IPv6シングルスタックに舵を切ろう！！**と。

自分たちが楽になるためでもありますが、お客様のためでもあります。
これから先の未来、IoT・5G社会では多くの通信機器が登場してきます。端末が増えるということは、IPアドレスも多く必要になるということ。その時にリソースやコストで悩むことのないシンプルな構成を作っていくことが、高い信頼性を維持する助けになると信じています。
それに、ドコモがモバイル事業者としてIPv6シングルスタックを導入することで、IPv6アドレスの普及に貢献できる！！
なーんて、意気込んでみたり。


#IPv6シングルスタックのしくみ

モバイルネットワークでIPv6アドレスを使うには、①端末、②コアネットワークの設定、③PDN（Packet Data Network）の3つがIPv6アドレスに対応している必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272816/3db447fc-91ee-ef4c-9433-ac730a5b9fd4.png)



この記事は図でいうとISP（spモード）の話です。
通信の宛先がIPv4サイトの場合、IPv6アドレスをIPv4に変換します。その変換にNAT64/DNS64方式と464XLAT方式を採用しています。
なぜならスマートフォンが対応しているから。固定通信事業者では別の方式を使っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272816/4f9df8b2-1d6f-5f1f-7907-bed2dca97b38.png)



ドコモで採用した2つの方式について簡単に説明してみます。

###1．NAT64/DNS64方式

NAT64/DNS64方式はドメイン（FQDN）を用いて接続する方式です。
NAT64とDNS64を組み合わせて利用することで、IPv6アドレスのみを持つ端末からIPv4アドレスのみを持つ宛先への通信を可能とします。DNS64でドメイン名の解決においてIPアドレス変換を行い、その後、NAT64が実際の通信の仲介をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272816/f8a63c2d-56bf-7ce4-e635-e6f90246ac51.png)



**＜通信の宛先がIPv4onlyの場合＞**
①DNS64が接続先IPv4アドレスにプレフィックスを付加し、IPv6として名前解決
②IPv6として通信
③IPv6として指定されていた接続先アドレスのプレフィックスをNAT64で除去して、本来のIPv4アドレスで接続先サーバに接続

参考：JPNICのブログ[「NAT64およびDNS64技術のご紹介」](https://blog.nic.ad.jp/blog/intro_nat64_dns64/)


###2．464XLAT方式

464XLAT方式は、IPアドレスに直接アクセスする方式です。
CLAT（Customer-side translator）とPLAT（Provider-side translator）というアドレス変換装置を用い、複数のアドレス変換技術を組み合わせて通信を確立します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272816/18780787-bfe0-d7d5-6b03-7afc4a4b12f3.png)


**＜通信の宛先がIPv4onlyの場合＞**
①端末にはISPによるIPv6アドレスとCLATによる端末内部だけで利用可能な内部IPv4アドレスが割り振られる
②内部IPv4アドレスをIPv6アドレスに変換してIPv6として通信
③ISP側のNAT64(PLAT)によりグローバルIPv4に変換し、接続先サーバに接続

これにより、端末側にISPからIPv6アドレスしか割り当てられなかったとしても、インターネットにアクセスする時点でグローバルIPv4アドレスに変換されるので、グローバルIPv4アドレスによるインターネットへの接続を確立することができます。


なぜ2つの方式を採用する必要があるかというと、多くのアプリケーションでIPv6シングルスタックを使えるようにするためです。
IPv6シングルスタックに接続できる条件を増やしていくのがv6アドレス普及の鍵ですから、より多くのアプリケーションや端末でシングルスタックが対応できるように準備しています。
この記事の切羽詰まり感を見ると急激にIPv6アドレス比率が増える！ように感じると思うんですが、お客様の端末買い替えの動向にもよるため、数年かけてIPv6アドレスの割り当て比率を大きくしていく想定です。

#アドレス管理が楽になります

IPv6アドレスはIPv4アドレスに比べて数が多いと前述しましたが、数が多いとなぜアドレス管理が楽になるのか。
そのあたりを図解してみます。

アドレス設計においてはシステム用とユーザ用でアドレス帯域を分けたいんですが、今までのIPv4/IPv6デュアルスタックでは、ユーザ用アドレスが不足するたびにシステム用アドレスの帯域も使ってなんとか捻出してました。
そして今度はシステム用アドレスが足りなくなり、空いてるところで確保する……なんてことを繰り返してたら、アドレス帯がカオスな状態に。
プライベートアドレスを使い切ったらまた設備を新規構築。今までのアドレス管理のノウハウを生かして上手に設計してやりくり……したつもりが、なかなかそうもいかずまたカオス。
システム用とユーザ用のアドレス帯域をきれいに分けることができていなかったのです。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272816/9741b128-409b-53bd-a34d-4b31e197cbbb.png)

これが、IPv6シングルスタックになると……

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272816/83c1139b-18b8-7802-093b-f3dc99a85ff2.png)

なんということでしょう！
カオスだったアドレス帯域がきれいなまま保たれています！（と、なるはずですｗ）
ご覧の通り、IPv6になると広大なアドレス空間を使えるので、アドレスを細かく管理する必要がないのです。半分キレながらアドレス管理していたわたしの先輩も、きっと喜んでくれるに違いありません！

我々技術者にとってはIPアドレスは大事な要素ですが、多くのお客様にとってはそうではないので、IPv6シングルスタックが入った後も何も変わらず当たり前に通信ができることが重要です。
商用サービス開始後はspモードのAPNをそのまま使えますので、お客様はアドレスのことを意識する必要がない。申し込みもいらない。
え、IPv6アドレスってなに？おいしいの？
そんな世界をめざしています。

#テスト、テスト、テスト

新しいことをするのですから、時間をかけて綿密なフィールドテストをしました。
テストのステップはざっくり5項目。

1. ドコモサービスの簡易検証
- 世の中にあるメジャーなアプリの試験
- ドコモの各種サービス開発部門による詳細試験
- ドコモ以外の開発者の試験
- 最終確認

4ステップ目の「ドコモ以外の開発者の試験」は、世の中のアプリやサービスの開発者の皆様にIPv6シングルスタックの検証をしていただくためのもの。
そのため、商用サービスの本格開始前に開発者向けの試験環境を公開しました。
これ、ドコモのISPとしては初めての取り組みです。インフラ屋、報道発表とか慣れてないからドキドキしちゃった。
※参考：プレスリリース　[IPv6 シングルスタック方式の導入に向けて接続試験環境の提供を開始](https://www.nttdocomo.co.jp/binary/pdf/info/news_release/topics_210629_00.pdf)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2272816/84fb065a-4bac-5615-510d-cbad9a98b965.png)



ということで、ただいま開発者様向けに試験環境を提供しています。この試験環境提供は12/3まで。**（あと2日！）**
試験環境をお使いいただいた皆様、ご協力本当にありがとうございます。
急に使えなくなるとびっくりすると思いますので、12/4になったらAPNの設定を "spmode.ne.jp" に戻してくださいね！
[こちらのページの「IPv6SS 接続試験用環境のご利用条件」](https://www.nttdocomo.co.jp/service/developer/smart_phone/etc/v6ft/index.html)から同意して進んでいただくと、削除の手順例が載っています。

そうそう、[IPv6 Summit in TOKYO 2021](https://www.jp.ipv6forum.com/)にもご招待いただいています。
この記事はほんのさわりで、もっともっと詳しい話も聞けますので、興味のある方はぜひいらしてください。
ISPだけじゃなくて、コアネットワークの話もありますよー。

#おれたちの戦いはこれからだ


試験環境提供が終わったら、年末年始をまたいで本格開始に向けた最後の仕上げをします。
商用サービス開始は2022年春の予定（早春くらいかも？）。
ということで、中の人一同最後の仕上げを進めています。
がんばります。
サービス開始の際にはまたプレスリリース出しますので、ドコモの新しい挑戦をあたたかく応援いただけると幸いです。

以上、インフラ屋の奮闘の一幕をお届けしました。
最後まで読んでいただいてありがとうございました！