BIGLOBEの「はたらく人」と「トガッた技術」

世界初への挑戦!インターネットを快適にするNAT64/DNS64とは?

はじめまして。BIGLOBEのN澤です。 最近は気軽に外出しづらい世の中ですので、休日はステイホームで動画サイトを楽しむことが増えてきました。お気に入りの動画は、かつて一世を風靡した某冬ソングの女王が最近の流行りの曲をピアノで引き語りながら暴走 (暴奏?) する動画です。

ということで、今はインターネットで誰もが手軽にさまざまなコンテンツを楽しむことができる時代です。特に光ファイバーのような定額の固定回線では、「ギガが減る」ことを気にする必要がないため、動画のような大容量のコンテンツを楽しんでいる方も多いのではないでしょうか。そのような背景もあり、インターネットのトラフィックは毎年、指数関数的に増加する傾向にあります。

増え続けるトラフィック、どうする?

BIGLOBEのようなインターネットサービスプロバイダ (ISP) にとって、トラフィックの増加は非常に悩ましい問題です。定額で使い放題!とはいえ、インターネット回線の設備能力は有限です。そのため、トラフィックが増加すると混雑が発生し、お客様に快適なインターネット接続を提供することが困難になってしまいます。

そこで、限りある資源を有効活用するため、さまざまな技術的な解決策が存在します。そのひとつは、IPv6回線の活用です。

IPv4?IPv6?

インターネットの回線は世の中に2種類存在しています。IPv4の回線とIPv6の回線です。 一般的に、IPv4回線 (PPPoE) は混雑しやすく、IPv6回線 (IPoE) は空いている傾向があります。理由は、ISPとIPv4回線 (PPPoE) を接続する部分に存在する「網終端装置」と呼ばれる設備がボトルネックとなっているケースがあるためです。IPv6回線 (IPoE) にはこの網終端装置が存在しません。まとめると下記のような状況です。

ボトルネック 混雑度
IPv4回線 (PPPoE) あり (網終端装置) 混雑している
IPv6回線 (IPoE) なし 空いている

であれば、インターネットを快適に楽しむためには、IPv6回線を使って接続すれば無事解決ということですね。めでたしめでたし。

と言えるほど話は単純ではありません。なぜなら、IPv4回線とIPv6回線には互換性がないからです。そのため、インターネット上のサーバにIPv6回線からアクセスしようと思った場合、そのサーバは従来のIPv4アドレスに加えて、IPv6アドレスも持つ必要があります。

例えばBIGLOBEのポータルサイトの場合、下記の2つのIPアドレスを持っています。

IPv4アドレス: 133.208.59.131
IPv6アドレス: 2001:260:401:3df::3

アドレスの桁数も違えば、文字の種類も違いますね。見るからに互換性がなさそうです。 このようにサーバ側がIPv4アドレスに加えてIPv6アドレスも持っていればよいのですが、世の中にはIPv6アドレスを持っていないサーバもまだ数多く存在しています。その場合、IPv6接続を諦めるしかないのでしょうか?いいえ、ここにも技術的な解決策が存在します。それは、「IPv4 over IPv6」と呼ばれる技術です。

IPv4 over IPv6とは?

IPv4 over IPv6にはいくつかの種類があります。いずれの場合も簡単に説明すると、ある特殊な仕組みを利用して、IPv4回線に流れるデータをIPv6回線に流してしまおう、というものです。この仕組み自体は珍しいものではなく、BIGLOBEをはじめとするさまざまなISPで採用されています。BIGLOBEではこれまで、「MAP-E」と呼ばれる方式を採用してきました。長くなってしまうため詳細は省略しますが、興味がある方はぜひ調べてみてください。

前置きが長くなってしまいましたが、ここからがいよいよ本題です。BIGLOBEでは、IPv4 over IPv6方式として、2019年10月に固定回線としては世界で初めて「NAT64/DNS64」と呼ばれる技術を商用化いたしました (2019年10月28日時点、MM総研調べ)。非常にチャレンジングな取り組みでしたが、いかにして世界初を成し遂げたのかを今回ご紹介させていただこうと思います。

NAT64/DNS64とは

まず初めに「NAT64/DNS64って何?」というところからですね。 「エヌエーティーシックスティフォー」というと某アイドル集団のような感じがしますが、一般的に「ナットろくよん・ディーエヌエスろくよん」と読みます。注意したいのは「ろくよん」の部分です。「ろくじゅうよん」ではないのです。これは前述の「IPv4 over IPv6」に由来します。IPv6とIPv4を相互に変換する技術のため、「64 (ろく・よん) 変換」とも呼ばれます。

NAT64/DNS64の場合、「DNS64」と呼ばれる装置と「NAT64」と呼ばれる装置を利用して、このIPv4 over IPv6を実現しています。

例として、IPv4アドレスしか持たないあるサイトに、NAT64/DNS64でIPv6回線を通してアクセスする場合の流れを下記の図に示します。

f:id:biglobe-editor1:20200728094404p:plain

※図中のURLやIPアドレスは全てダミーのものです。

各ステップをもう少し詳しく説明すると、下記の通りです。

  1. お客様は「ipv4-only.example.com」に接続したいため、DNSにIPアドレスを問い合わせます。
  2. 通常のDNSの場合、「ipv4-only.example.com」が持つ203.0.113.1というIPv4アドレスを回答します。しかしDNS64の場合、対象のサイトがIPv4アドレスしか持たないとき、一定のルールに従ってIPv4アドレスをIPv6アドレスに変換 (DNS64変換) します。
  3. DNS64はDNS64変換したIPv6アドレスをお客様に回答します。
  4. お客様はDNS64変換されたIPv6アドレスにアクセスします。このときのアクセスは全てNAT64装置に向かいます。
  5. NAT64装置はDNS64変換されたIPv6アドレスを元のIPv4アドレスに戻します。
  6. NAT64装置は元のIPv4アドレスである203.0.113.1にアクセスし、お客様が欲しているコンテンツを取得します。
  7. NAT64装置はお客様にコンテンツを返却します。


以上がNAT64/DNS64の仕組みです。仕組みとしては、比較的シンプルだと思います。

なぜNAT64/DNS64に取り組むのか

NAT64/DNS64の仕組みはご理解いただけたかと思います。ここでひとつの疑問が生じます。

「なぜMAP-EがあるのにNAT64/DNS64もやるの?」

非常によい質問ですね! 答えは、NAT64/DNS64はMAP-Eにはない大きなメリットがあるためです。それは、

「NAT64/DNS64はお客様宅内に特別な機器の設置が不要」

であるためです。MAP-Eを使おうと思った場合、宅内にMAP-Eに対応した (無線LAN) ルータが必要になります。最近の国内メーカーさんの無線LANルータであれば対応機種は多いのですが、対応していない機種もまだまだあります。BIGLOBEはお客様の「安心・安全」を第一に考える会社ですので、PCに不慣れなお客様にとっては難しい「ルータの交換」といった作業はなるべく避ける必要があります。そのため、NAT64/DNS64の選択はBIGLOBEにとって最適な選択だったのです。

そのような理由からNAT64/DNS64の導入を決定したBIGLOBEですが、先述の通り、道のりは平たんではありませんでした。ではいったい、何が困難だったのでしょうか?

NAT64/DNS64導入までの道のり

NAT64/DNS64導入の検討は2017年に始まりました。若手エンジニア数人の検証チームが発足し、導入に向けた評価を行うことになりました。まずは社内の評価環境でNAT64/DNS64のネットワークを作成して動かしてみたところ、問題なく動作しました。「これならいける!」と思い、次はお客様向けの本番環境にNAT64/DNS64を作成しました。いきなり全てのお客様向けに公開するわけにはいきませんので、先行トライアルとして1000名のお客様にご協力いただき、NAT64/DNS64のテストを行いました。その結果…

不具合の嵐!!

なんということでしょう。社内で検証した際には特にトラブルはなかったのに! 調査を進めていくうちに、さまざまな問題が明らかになりました。特に大きな問題となったのは、互換性の問題です。

NAT64/DNS64は先述の通り、ISP側でIPアドレスを変換して通信を行います。ほとんどの場合は問題なく通信ができるのですが、一部のサービスやアプリでは不具合が発生することが分かりました。理由はさまざまですが、IPアドレスを変換することがどうやら「不正な通信」とみなされてしまうことがあるようです。特に「オンラインゲームの認証に失敗する」という不具合報告が多く寄せられました。また、特定のOSやアプリ、IoT機器などで通信ができないといった不具合も見られました。

もちろん社内での検証の際には、多くの機器やアプリで評価を行い、問題ないことを確認していました。しかしそれでも社員数人では、検証できるサービスに限りがあります。1000人規模のお客様のさまざまな環境による、さまざまな使い方で、多くの問題点を洗い出すことができました。フィールドテストというものの重要性を思い知らされました。

この「さまざまな環境」というのがNAT64/DNS64にとっては大きな問題なのです。実はNAT64/DNS64は世界中のモバイルキャリアでは採用実績があります。しかし、固定回線では採用実績はありません。これはおそらく、モバイルであれば端末やOSなどの環境や使い方がある程度統一されていることにより、固定回線に比べて不具合が少ないためと考えられます (一部のプラットフォームでは、NAT64/DNS64への対応を必須にしている場合もあります)。

不具合と立ち向かう

ではBIGLOBEはこの不具合とどのように戦ったのでしょうか?それは、

「NAT64/DNS64を諦める」

ことです。

「お前は何を言っているんだ」

と思ったでしょうか。NAT64/DNS64を全て諦めるわけではありません。不具合の出るサービスの場合のみ、諦めるのです。どういうことかというと、DNS64側に細工をしました。

通常、DNS64はどのようなURLの問合せであっても、そのURLがIPv6アドレスを持たない場合、IPv4アドレスをDNS64変換して回答します。このDNS64に、NAT64/DNS64環境では不具合が発生するサービスのURLを登録しておきます。BIGLOBE社内ではこの機能を「対象外リスト」と呼んでいます。対象外リストに登録されたURLに対しては、DNS64変換を行わないように制御することで、NAT64/DNS64環境においても問題なく通信が行えるようになりました。

f:id:biglobe-editor1:20200728095733p:plain

※図中のURLやIPアドレスは全てダミーのものです。

この対象外リストの機能は、社内のエンジニアによってわずか3日で開発し、リリースされました。お客様の安心・安全を第一に考えるBIGLOBEですので、お客様にご迷惑をおかけしてはならない、という熱い思いで3日間不眠不休で取り組みました (嘘です。ちゃんと寝ました)。さらにこの機能、特許出願中です!

ここでまたひとつ疑問が生じます。

「対象外リストの登録ってどうやってやるの?」

またもよい質問ですね。答えは…

「人力です。」

なんということでしょう。インターネットという最先端の領域において、(固定回線では) 世界初で特許出願中の機能は、社員数人の涙ぐましい人力で支えられていたのです。このあたりの非常に泥臭い運用が必要となるところも、NAT64/DNS64の難しさではないかと思っています。

今後は対象外リスト登録の自動化も検討していく予定です。

そしてリリースへ

このように泥臭く汗臭く涙ぐましい努力の結果、2019年10月にはNAT64/DNS64を晴れて本格スタートすることができました!

「インターネットが速くなった!」という喜びの声がお客様から届いたときには、全てが報われたような気がしました。エンジニアにとって、開発していたサービスを無事リリースできたときの喜びは、何ものにも代えがたいものです。そしてBIGLOBEでは現在、NAT64/DNS64のさらなる拡大に向けて、日々奮闘しています。

おわりに

最後まで読んでいただきどうもありがとうございました。今回ご紹介したNAT64/DNS64導入の奮闘記は、ほんの一部です。ここには書けないような裏話もたくさんあり、全てをまとめると本が1冊書けるのではないかと思います。今回の記事を通して、NAT64/DNS64に少しでも興味を持っていただければ幸いです。それではまたお会いできる日まで。