CUBE SUGAR CONTAINER

技術系のこと書きます。

フレッツ回線が遅すぎる問題を IPv6/IPoE と DS-Lite で解決した

最近というほど最近でもないんだけど、近頃はとにかくフレッツ回線のスループットが出ない。 下手をすると、モバイルネットワークの方が速いので時間帯によってはテザリングをし始めるような始末だった。 今回は、そんなスループットの出ないフレッツ回線を何とか使い物になるようにするまでの流れを書いてみる。

先に断っておくと、今回はいつものような特定の技術に関する解説という側面は強くない。 思考の過程なども含んでいるので、いつもより読み物的な感じになっていると思う。 調べ物をして、それらについて理解した内容のまとめになっている。

結論から書いてしまうと、今回のケースでは IPv6/IPoE 接続と DS-Lite を使って何とかなった。 DS-Lite というのはゲーム端末ではなくて IPv4/IPv6 共存技術の一つである RFC6333 (Dual-Stack Lite Broadband Deployments Following IPv4 Exhaustion) の通称を指す。

そして、背景とか技術的な内容が不要なら下の方にある「利用までの流れ」から読み始めてもらうと手っ取り早いと思う。

フレッツ回線が遅い原因

まず、一般的に「フレッツが遅い」と言われる主な原因は、フレッツ網内にある PPPoE の終端装置がボトルネックになっているため。 技術に明るい個人ユーザレベルでは周知の事実みたいだけど、ISP なんかが公式でこの問題について言及しているものにも以下があった。 この記事を読むと、どのような設備を通ってパケットがインターネットまで届くのかが理解できる。

techlog.iij.ad.jp

ようするに、フレッツ網と ISP の接続境界 (POI: Point of Interface) が詰まっている。 この場合、フレッツ網内も ISP のバックボーン内も転送能力には余裕があるからタチが悪い。 フレッツ網内だけでスループットを測定しても、バックボーン内だけで測定しても、どちらも何ら問題は出ない。 また、終端装置の設備は都道府県ごと・ISP ごとに用意されているので、状況はまちまちらしい。 とはいえ、都内では特に多くの ISP で上記の輻輳が起きているようだ。

そんな背景もあって、これまで遅いなと感じたときには PPPoE のセッションを張り直してみることもあった。 たまに、比較的空いている終端装置につながることもあって、そうするとスループットが改善したりする。 PPPoE ガチャ。

じゃあ、ボトルネックになっている終端装置を増強すれば良いじゃないか、という話になるんだけど、それがどうやら難しいらしい。 何故なら、ISP が終端装置を増強したくても、その権限は NTT 側にあるため。 NTT 的には PPPoE セッション数に応じて設備増強をするポリシーでいるようで、ISP から要望があっても拒んでいる。 これは、総務省が収集している NGN (フレッツ光ネクストのこと) に対するパブリックコメントを見ると分かる。

www.soumu.go.jp

ここには ISP の NTT に対する恨みつらみが書かれていて、収集された意見に対して「終端装置」で検索をかけると、それが分かる。

インターネット上のコンテンツはリッチ化を続けており、一人あたりのトラフィック量は急速に増え続けている。

www.soumu.go.jp

そうした状況の中で、フレッツ網の設備増強基準が時代にそぐわないものになっているんだろう。

(2017/6/11 追記)

NTT 東西が公開している次の資料を見ると、フレッツ網内にある PPPoE の終端装置の増強基準が書かれている。 2013 年度以降は、一セッションあたり 130 ~ 500 kbps を基準に増強が行われているようだ。 これは 17 ページの「(参考)当社におけるこれまでのトラヒック増への対応」に記載されている。 利用状況によってはスループットが 1 Mbps 前後になっても疑問はない数値といえるだろう。

接続料の算定に関する研究会(第2回) ~NGNのオープン化について~

また、同じ資料の中ではこのエントリで紹介する IPoE の接続に関わる設備 (GWR) は接続事業者 (ISP/VNE) 側の負担で自由に増強できることも書かれている。 つまり、IPoE の場合は ISP 側は増強してほしいのに NTT が拒むのでできない!というPPPoE と同じ状況は生まれにくいようだ。 これは 15 ページの「NGNのインターネット接続」に記載されている。

もう一つ、16 ページには接続事業者側の負担で網終端装置を自由に増強できるメニューを提供し始めたということも書かれている。 現時点で要望のあった 9 社のうち 4 社が利用を開始しているようだ。

解決策について

話がだいぶ大きくなったけど、ここからは個人の話になる。 この問題の解決策としては、当初いくつかの選択肢が考えられた。

まず一つ目は、そもそも別の回線キャリアに乗り換えてしまうこと。 これは、例えば NURO のようなサービスを指している。 ただ、調べていくとこのやり方だとかなりお金がかかることが分かった。 具体的には、初期工事費用が万単位でかかるのと、月額料金も現状よりだいぶ上がりそうな感じ。 初期工事費用については乗り換えキャンペーンやキャッシュバックで補填するとしても、月額料金は如何ともしがたい。

二つ目は、そもそもフレッツ回線を解約してしまうこと。 モバイルネットワークはそれなりにスループットが出ているので、これに一本化してしまう。 必要な経費は、固定回線っぽく使うために必要な SIM フリーのモバイルルータを購入する資金のみ。 具体的には、以下のようなやつ。

指す SIM カードについては MVNO で複数枚出せるプランに加入しているので問題なし。 ただ、これだと転送量上限がある点に不安を覚えた。 自宅で技術的な検証をしていると数 GB のファイルとかダウンロードする機会もあるし、これはまずい。

三つ目は、今あるフレッツ回線をなんとかする方法。 上記の記事でも挙げられているけど、ようするにフレッツ網内にある PPPoE の終端装置さえ迂回できればボトルネックは解消できる。 この迂回する方法としては IPoE 接続を使うやり方が挙げられる。

IPoE について

従来、フレッツ網で IPv4 の通信をするときは PPPoE というトンネリングプロトコルが使われている。 これは、主にユーザの認証のために用いられる。 このプロトコルの終端装置がフレッツ網内でボトルネックになっていることは前述した通り。 この通信方式を、以後は IPv4/PPPoE と記述する。

それに対して IPv6 の通信では、上記の PPPoE を使うやり方と IPoE という二つの方法がある。 これらの通信方式を、以後はそれぞれ IPv6/PPPoE と IPv6/IPoE と記述する。 その中でも IPv6/IPoE については現時点で輻輳しておらず快適らしい。

IPoE というのは Internet Protocol over Ethernet の略で、トンネリングプロトコルを使わず直にイーサネットを扱うやり方を指す。 IPoE については以下のサイトが分かりやすい。

IPv6 IPoEの仕組み:Geekなぺーじ

また、これは副次的なものだけど IPv6/IPoE を使うと下りの最大速度が IPv4/PPPoE よりもサービススペックとして上がる場合もある。 例えば、フレッツ光ネクストのマンション・ハイスピードタイプを使う場合を考えてみよう。 以下の公式サイトを見ると、但し書きで IPv6/IPoE は受信速度が 1Gbps と書かれている。

flets.com

ちなみに、上りと下りの両方が 1Gbps のプランを契約すると、だいたい月額料金が ¥500 は上がる。 それに対し、月額料金はそのままで下りに関しては 1Gbps で使えるのはでかい。

ただし、全ての ISP が IPv6/IPoE に対応しているわけではない。 例えば、東京で IPv6/IPoE が使える ISP は次の通り。 それぞれの回線プランごとにも使える・使えないなどが細かく分かれている。

flets.com

IPv6/IPoE を使えば全て解決?

また、IPv6/IPoE さえ使うことができれば全て解決かというと、そうもいかない。 なぜかというと、ちまたのサービスによって IPv6 への対応状況がまちまちだから。 IPv6 に対応していないホストへの通信は IPv4/PPPoE を経由するので今まで通りのスループットしか出ない。

それに、そもそもユーザ側の機器にも IPv6 に対応していないものはたくさんある。 例えば一般的なゲーム機器でいうと PS4 や Nintendo Switch といった最新ハードであっても今のところ対応していない。 これは、IPv6/IPoE をそのまま使っただけでは、その恩恵に預かれないシチュエーションが数多くあることを意味している。

IPv4 のトラフィックも IPoE に流したい

そこで考えられるのが IPv4 の通信を IPv6/IPoE 経由で流してしまう、という発想。 そうすれば、フレッツ網内のボトルネックを迂回しながらも、前述したような問題を解決できる。

これには、元々は IPv4 の縮小期に使うために検討されていた技術を応用する。 色々な種類があるんだけど、日本では主に MAP-EDS-Lite が使われている。 これは、一般に IPv4 over IPv6 トンネルと呼ばれるもので IPv4 のパケットを IPv6 のパケットで包んで送ってしまう手法になっている。

MAP-E と DS-Lite それぞれの手法の違いは、次のサイトが詳しい。 ようするに NAPT (Network Address Port Translation) が CPE (Customer Private Edge) にあるか CGN (Carrier Grade NAT) になるかの違い。

techlog.iij.ad.jp

IPv6/IPoE を提供しているのは誰?

ちょっと話が巻き戻るんだけど、そもそも IPv6/IPoE を使ったインターネットへの疎通性を提供しているのは ISP ではない。 これは、いわゆるネイティブ接続事業者 (VNE: Virtual Network Enabler) が担っている。 VNE は最近まで三社だけに限定されていて、それぞれの固定回線キャリアが出資している IX (Internet eXchange) 事業者が同時に VNE も担っていた。 ISP は、そのいずれかと契約することで IPv6/IPoE をユーザが使えるようにしている。

そんな VNE なんだけど、事業者によって IPv4 を IPv6 を通して使うために採用している技術はそれぞれ異なる。 例えば JPNE (KDDI 系) は MAP-E を、マルチフィード (NTT 系) は DS-Lite をそれぞれ採用している。 BBIX (ソフトバンク系) については公開されているドキュメントを調べても、具体的に何を使っているかは分からなかった。

JPNE は MAP-E を「v6 プラス」というサービス名で提供している。

v6プラス | サービス紹介 | JPNE | 日本ネットワークイネイブラー株式会社

マルチフィードは DS-Lite を「IPv4インターネット接続オプションサービス」というサービス名で提供している。

サービスのご案内 - transixサービス|インターネットマルチフィード株式会社

BBIX は「IPv6 IPoE + IPv4 ハイブリッドサービス」というサービスを提供している。 IPv4 over IPv6 トンネルを使っている、ということは分かるんだけど具体的な方式は分からない。

IPv6 IPoE + IPv4 ハイブリッドサービス サービス概要|ソリューション|BBIX株式会社

つまり、まとめるとこう。

VNE サービス名 方式
JPNE v6 プラス MAP-E
マルチフィード IPv4インターネット接続オプションサービス DS-Lite
BBIX IPv6 IPoE + IPv4 ハイブリッドサービス IPv4 over IPv6 トンネル (具体的な方式は不明)

なので、続いては IPv6/IPoE を使うにしても ISP が契約している VNE が何処かを確認したい。 これは、それぞれの方式によって用意すべきルータなどが異なるため。

契約している VNE については、公開している ISP もあれば非公開にしている ISP もある。 もし、非公開な ISP だと上記のサービスが使えたとしても公式なサポートではなくなる。 つまり、いつ通信できなくなっても文句は言えない自己責任ということ。

ちなみに、今回自分が使った ISP も契約している VNE は非公開だった。 ただし、ウェブサイトでの下調べや、使ってみた結果としてはマルチフィードであることは明らかだった。 つまり、DS-Lite に対応したルータを用意すれば良い、ということになる。

とはいえ、公式には非公開とされているので、ここでは具体的にどの ISP を使っているか書くことは控えることにする。 参考までにということであれば、個別に聞いてもらえたらお伝えします。 IPoE を申し込んでも初期費用や追加の月額料金がかからない点は良かったと思う。

ちなみに、元々は 3 社に限られていた VNE 事業者の枠は、最近になって 16 社にまで拡大された。 そのため、ISP 自身が直接 VNE 事業に乗り出す例も出てきている。 具体的には、以下。

「IPv6接続機能」提供開始のご案内|プロバイダ ASAHIネット |料金、接続品質、満足度で比較して選ばれるISP

ただし、そのような新規参入した事業者が今後どういった IPv4/IPv6 共存技術を採用するのかは分からない。 同種の技術としては MAP-E や DS-Lite 以外にも 464XLATMAP-T4rd/SAM といった選択肢もある。 また、いつ頃から提供し始めるのかも分からない。 そもそも、そのようなサービスを VNE が提供しなければいけない、といったような決まりは存在しないので。

ここらへんは、どうも元々は「VNE はみんなで 4rd/SAM を使っていこう」みたいな流れがあったっぽいんだけど。 今はどうしてこうなったのかな。

NTT NGNネイティブ方式上でIPv4 over IPv6提供へ:Geekなぺーじ

利用までの流れ

続いては IPv6/IPoE と DS-Lite を使えるようにするまでに実施した流れなどについて書く。 ちなみに IPoE についての知見は、どうやら何処のサポートセンターにもあまりたまっていないらしい。 そのため、問い合わせて返ってきた答えが間違っていたということも平気で起こる、というか起こった。

また、不安に思う人もいるかもしれないのであらかじめ書いておくと、IPv6/IPoE + DS-Lite を一旦使い始めたからといって従来の IPv4/PPPoE が使えなくなるわけではない。 両者は二者択一というわけではなく ISP によって IPv4/PPPoE の機能は提供され続ける。 これは、あくまで VNE が IPv6/IPoE を通して IPv4 の通信も通せるようにする機能を「オプションとして」提供しているに過ぎないため。 仮に何らかの問題があったとしても (遅いとはいえ) IPv4/PPPoE に戻すことはできる。 さらに言えば、例えば複数のルータを使ったり業務用ルータでポリシールーティングするといった工夫をすれば、両者を同時に併用することも可能になっている。

フレッツの契約内容を確認する

まずは、自分が使っているフレッツの契約内容を確認する。 これは、前述した通りフレッツの契約内容によって ISP の対応状況が異なるため。

ちなみに、サービス名などが途中で変わっていたというケースもあるみたい。 今回のケースは正にそれで、いつの間にか B フレッツマンションタイプからフレッツ光ネクストマンションタイプになっていた。 念を入れるならサポートセンターに問い合わせると今の契約内容を書いた紙が送ってもらえる。

契約内容が分かったら、フレッツの公式サイトで自分の使っている ISP がそれに対応しているかを確認しよう。

flets.com

また、上記の表に載っていなくても実は対応していた、ということもあるみたい。 なので、あきらめずに ISP のサポートセンターに問い合わせてみるのも手だと思う。

ISP に IPv6/IPoE の利用を申し込む

続いて、対応していることが分かったら ISP に IPoE を使いたい旨を伝えて申し込む。 これはおそらくサポートセンターに電話することになると思う。

同時に、ISP が契約している VNE についても確認しておこう。 前述した通り VNE によって用意するルータが異なってくる。 JPNE なら MAP-E 対応のものになるし、マルチフィードなら DS-Lite 対応のものになる。 また、前述した通り契約している VNE を公式には非公開にしている ISP もある。 なので、ウェブサイトであらかじめ下調べするのが手っ取り早いだろう。

ちなみに、自分の場合はここで一度「使っている回線がフレッツ光ネクストではないので無理」と断られた。 ただ、結論としては ISP に登録されている内容がおかしくなっていただけだった。 前述したフレッツの契約内容を調べた上で再度問い合わせたところ受け付けてもらえた。

フレッツに v6 オプションを申し込む

続いて、フレッツ側でも v6 オプションというサービスを有効にする。 これにはサポートセンターに電話する以外にも、サービス情報サイトという Web サービス経由を使って自分で設定することもできる。 また、ISP によってはユーザの同意を得た上で代理で申し込んでくれる場合もあるようだ。

flets.com

ちなみに、NTT のサポートセンターからは一度「VDSL 配線方式なので IPoE は使えない」と言われた。 しかし、結論としては VDSL 配線方式だろうと光配線方式だろうと関係なく IPoE は使える。 ここは、調べても情報が出てこないので、あやうく工事をするところだった。

IPv6/IPoE + DS-Lite 対応ルータを用意する

ここまでで回線のレベルでは IPv6/IPoE が使えるようになる。 続いては、それを実際に使ってみるフェーズ。 今回のケースでは ISP が契約している VNE がマルチフィードだった。

そのため、DS-Lite に対応したルータを用意する必要がある。 これについては、マルチフィードで接続性を検証した機種を公式サイトで公開している。

transix DS-Lite 接続確認機種情報

ここから選ぶなら、入手性や設定の敷居という面では Buffalo のルータを選ぶのが良さそう。 もし、腕に覚えがあるようなら YAMAHA も業務用ルータとしては意外と安く買えるから良いのかも。 ただし YAMAHA の場合 MAP-E には残念ながら今のところ対応していないけど。 上記の検証で使われたそのものズバリな機種は古くて既に入手がしづらくなっているみたいだけど、後継機種はこれかな。

また、Buffalo のウェブサイトを調べたところ、次のようなページを見つけた。 どうやら、ここに載っている機種であれば MAP-E と DS-Lite の両方に対応しているらしい。

buffalo.jp

(2017/5/27 追記)

アイオーデータの WN-AX1167GR という機種も DS-Lite と MAP-E の両方に対応しているようだ。 これは実売価格で ¥6,000 前後と、なかなかリーズナブルで良さそう。 ただし、機能が追加された最新のファームウェアにアップデートする必要はあるらしい。

とはいえ DS-Lite の機構は極めてシンプルで、CPE 側に関しては IPv6 の SLAAC と IPv4 over IPv6 トンネルの機能さえあれば動作する。 なので、ちょっとがんばれば Linux なんかを使って自作することもできる。 例えば次のサイトでは Raspberry Pi を使って DS-Lite のルータを作る方法を紹介してる。

techlog.iij.ad.jp

つまり、自分で作ればタダみたいなもんやぞ! いや、筐体の費用がかかるので、タダではないです。

それと、買うにしても作るにしてもファイアーウォールはしっかりかけよう。 IPv4/PPPoE を使っていた頃とは、使うべきルールが異なっているはずなので。 IPv6 をブリッジしてデュアルスタックにするなら、特に気をつけた方が良い。

使う

あとは DS-Lite を設定したルータでインターネットへの疎通があることを確認して使うだけ。

例えば、以下は Google に traceroute してみたところ。

$ traceroute www.google.co.jp
traceroute to www.google.co.jp (216.58.197.195), 64 hops max, 52 byte packets
 1  172.16.0.1 (172.16.0.1)  1.437 ms  1.103 ms  1.015 ms
 2  ike-gw00.transix.jp (14.0.9.66)  6.579 ms  6.584 ms  6.410 ms
 3  ike-bbrt10.transix.jp (14.0.9.65)  6.456 ms  6.336 ms  6.506 ms
 4  bek-bbrt10.transix.jp (14.0.8.66)  7.005 ms
    bek-bbrt10.transix.jp (14.0.8.94)  6.952 ms
    bek-bbrt10.transix.jp (14.0.8.78)  6.999 ms
 5  210.173.176.243 (210.173.176.243)  7.474 ms  7.551 ms  8.019 ms
 6  108.170.242.193 (108.170.242.193)  7.615 ms  9.450 ms  8.119 ms
 7  72.14.233.221 (72.14.233.221)  7.687 ms  7.825 ms  7.665 ms
 8  nrt13s48-in-f195.1e100.net (216.58.197.195)  7.958 ms  7.940 ms  7.865 ms

ちゃんと Transix を経由していることが経路の逆引き結果から分かる。

DS-Lite を使うことで、以前は混雑しているときの RTT が 35ms 以上あったところが 15ms 未満まで短縮された。 それに伴って TCP のスループットも、ひどいときは 1Mbps 前後だったのが常時 50Mbps 以上出るようになった。

(2017/6/10 追記)

コマンドラインのツールなどを使わずに DS-Lite が有効になっているかどうかを確認する方法について。 これには、ユーザの IP アドレスや使っている通信事業者の情報を表示してくれるサービスなどを利用しよう。

これは、例えばスピードテストのサイトなどでも表示してくれるところがある。 その内容が INTERNET MULTIFEED とか VNE の名前っぽい表示になっていれば大丈夫。

beta.speedtest.net

これでどうして DS-Lite や MAP-E が有効になっているか確認できるのかについても書いておこう。 まず、前述した通り IPv6/IPoE を使うと、IPv6 の通信は VNE の設備を経由してインターネットに到達することになる。 さらに、DS-Lite や MAP-E は IPv4 を IPv6 で包んで送り届ける技術なので、IPv4 についても同様に VNE の設備を通る。 つまり、通信において ISP の設備は使われない。

このとき、使われる IPv4 グローバルアドレスは VNE が所有しているものになる。 そのため、上記のようなサービスで、その所有者を表示すると VNE の名前が出てくるわけだ。 これによって、通信がどのような経路を通っているかが確認できて DS-Lite や MAP-E が使えているかが分かる。

(2017/4/9 追記)

一つ注意点としては DS-Lite は NAPT が CGN になっているのでポート開放がユーザレベルでは制御できない。 家でサーバを立てている場合なんかには、それらを IPv4/PPPoE の方にルーティングしてやる必要がある。 あるいは、手間はかかるけど VPS などを借りて自宅と IPv6/IPoE 経由で VPN を張り、外からは VPS を通して接続する方法も考えられる。 IPoE で配布される IPv6 プレフィックスは半固定なので、このやり方は取りやすいと思う。 半固定というのは、サービススペック上は可変ということになっているけど実質的にはほとんど変更されることがない、という意味。 ちなみに、これが v6 プラスの MAP-E なら NAPT が CPE にあるので原理上は開けられるはずなんだけど。 とはいえ、その場合も一つの IPv4 グローバルアドレスを複数の CPE で共有する関係で使えるポートレンジは限られるはず。

もう一つ懸念しているのは CGN の NAPT セッション数が足りなくなったりしないかという点。 同じく DS-Lite を試している他のブログでそれらしき事象が起こったらしい言及があった。 まだ遭遇したことはないんだけど、使うアプリケーションや時間帯によっては影響を受けるかもしれない。

まとめ

  • フレッツが遅い原因は PPPoE の終端装置がボトルネックになっているせい
  • IPv6/IPoE を使うとボトルネックになっている PPPoE の終端装置を迂回できる
  • ただし、使っているフレッツの契約と ISP の組み合わせで使えるかは異なる
  • また、そのままデュアルスタックで使うと IPv4 の通信が遅いままで残ってしまう
  • その解決策として IPv6/IPoE を使って IPv4 をトランスポートする技術がある
  • 採用している技術は IPv6/IPoE を提供している VNE ごとに異なる
  • JPNE なら MAP-E を、MF なら DS-Lite を使っている
  • 使うには ISP への申込みとフレッツで v6 オプションの有効化がいる
  • ISP によって契約している VNE が異なる
  • ISP が契約している VNE を非公開としてるなら、上記も非公式サポートとなる
  • DS-Lite 対応ルータは MF が公開している
  • とはいえ、ぶっちゃけ IP-IP トンネルさえあれば何とかなる
  • IPoE 関連でサポートセンターの返答は間違っていることが多い

Ω<つまり、これは PPPoE の終端装置をあえて輻輳させることで IPv6 への移行を促す陰謀だったんだよ!

ΩΩΩ<な、なんだってー?!

おわり。