読者です 読者をやめる 読者になる 読者になる

CUBE SUGAR CONTAINER

技術系のこと書きます。

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

IPv6 Linux

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

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

結論から書いてしまうと、今回のケースでは 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

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

解決策について

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

まず一つ目は、そもそも別の回線キャリアに乗り換えてしまうこと。 これは、例えば 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 を経由するので今まで通りのスループットしか出ない。

それに、IPv4 と IPv6 のデュアルスタックな環境で、どちらが使われるかは設定や OS の実装にも影響を受ける。 低速な IPv4/PPPoE と高速な IPv6/IPoE のどちらも使えるようになっているときに IPv4/PPPoE が優先して使われてしまうと、遅いままになる。

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

そこで考えられるのが IPv4 の通信も IPv6/IPoE 経由で流してしまう、という発想。 これには、元々は IPv4 の縮小期に使うために検討されていた技術を応用する。 色々な種類があるんだけど、日本では主に MAP-EDS-Lite が使われている。 それぞれの手法の違いは、次のサイトが詳しい。 ようするに NAPT (Network Address Port Translation) が CPE (Customer Private Edge) にあるか CGN (Carrier Grade NAT) になるかの違い。

techlog.iij.ad.jp

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

そんな VNE の中でも JPNE (KDDI 系) は MAP-E を、マルチフィード (NTT 系) は DS-Lite をそれぞれ採用している。 BBIX (ソフトバンク系) については公開されているドキュメントを調べても、具体的に何を使っているかは分からなかった。

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

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

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

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

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

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

ちなみに、今回自分が使った ISP も契約している VNE は非公開だった。 ただし、ウェブサイトでの下調べや、使ってみた結果としてはマルチフィードであることは明らかだった。 とはいえ、公式には非公開とされているので、ここでは具体的にどの ISP を使っているか書くことは控えることにする。 参考までにということであれば、個別に聞いてもらえたらお伝えします。

利用までの流れ

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

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

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

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

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

flets.com

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

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

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

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

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

続いて、フレッツ側でも v6 オプションというサービスを有効にする。 これにはサポートセンターに電話する以外にも、サービス情報サイトという Web サービス経由を使って自分で設定することもできる。

flets.com

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

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

ここまでで回線のレベルでは IPv6/IPoE が使えるようになる。 続いては、それを実際に使ってみるフェーズ。

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

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

ここから選ぶなら、入手性や設定の敷居という面では Buffalo のルータを選ぶのが良さそう。 もし、腕に覚えがあるようなら YAMAHA も意外と安く買えるから良いかな?

ギガアクセスVoIPルーター NVR510

ギガアクセスVoIPルーター NVR510

とはいえ DS-Lite は結局のところ内側 IPv4 外側 IPv6 な IP-IP トンネルさえあれば動く。 なので、がんばれば Linux なんかを使って自作できる。 例えば次のサイトでは Raspberry Pi を使って DS-Lite のルータを作る方法を紹介してる。

techlog.iij.ad.jp

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

使う

あとは 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 以上出るようになった。

まとめ

  • フレッツが遅い原因は 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 への移行を促す陰謀だったんだよ!

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

おわり。