スプラトゥーン2が快適に出来ない
イカ2を購入してプレイを楽しんでいますが唯一の不満は通信回線の品質でした。S+に来れた頃はまだ回線の遅延状況は悪くなかったのですが、上がった頃(ちょうど夏終わり?)に急激に夕方から夜の時間帯で遅延がひどくなってきました。
同時に回線速度もダウンロードが3Gレベルまで落ちたり。昼の昼食頃でも同じような現象に落ちてしまい、その近辺でネットを使うにもつらい状況でした。
IPv6 IPoE + DS-Lite 導入してみました
利用している回線はIPv4 PPPoE方式の接続で、多分世間で一番使われてるISPとの接続方式だと思いますが、何年も前からパンク気味だったりする状況なのでいい加減どうにかしたいと考えてまして。
ISP変更はある種のギャンブル感(その時はよくてもその先はわからない)があったり、別の通信回線の契約もダウンタイムを入れることが出来ない事情があるので諦めてました。
で、数年前から(ちょうど初代のイカをやってて遅延に悩んでた頃)フレッツ光のNGN網に直接接続する=IPv6接続をネイティブで行うIPoEという技術を知り、そのIPv6網に対してIPv4をトンネリング技術を用いて提供する技術を知ることになりました。
IPv6 IPoE とDS-Liteについての詳しい情報はイカの参考のブログや情報源に頼ります。かなり参考になるので、どうしても何とかされたい方は技術の概要含めてチェックされてみると良いです。
- kanai6274's blog: スプラトゥーン2を快適に楽しむためのネットワーク環境づくり
- スプラトゥーン2の為にプロバイダをBIGLOBEに変えた | 星光のつれづれ日記
- IIJmio FiberAccess/NF に移った | もろもろ
- てくろぐ: 【試してみた】IPv6「ネイティブ接続」
- 【山田祥平のRe:config.sys】モバイルよりも遅いんじゃ話にならない - PC Watch
というわけで強い動機はイカを快適に行うことですが、根本的におそすぎる回線に嫌気が差したので頑張って解決することにしました。うまく行った所と苦労した話をメモがてら残します。
契約をする
フレッツ v6 オプションの契約
フレッツ光はIPv6の接続は提供してくれますがオプションの契約が必要です。それはこちらから行えます。
- サービス内容|フレッツ・v6オプション|フレッツ光公式|NTT東日本|インターネット接続ならフレッツ光
- フレッツ光公式|NTT西日本|フレッツ 光ネクスト(FTTHアクセスサービス)フレッツ・v6オプション
この契約をするとき、フレッツ光で契約したときに割り振られる「お客様ID」と「アクセスキー」が必要です。
このv6 オプションは申し込んで1日もかからずに利用可能となりました。
契約中に見られるネーム設定は、IPoEやDS-Lite自体には特に必要は無いのでほったらかしでも良いです。
IPoE + DS-Liteを提供してくれるISPと契約する(iijmio FiverAccess/NF)
NTT内のNGN網ではIPoEが利用できるようになりましたが、外部に出るためのプロバイダーとの契約が必要です。今回は利用しているRouterboardでの実績があるiijmioのFiberAccess/NFを利用します。
知らなかったのですが、iijmioでフレッツ光のIPv6オプション導入を代行してくれます。実は上の作業をしなくても良かったようです(大した手間ではないので自分でやったただけです)
iijmioのMVNOを利用していて会員サービスのmioIDを所有していたので、そのIDで契約しました。契約自体も画面の情報に従ってすすめるだけです。v6 オプションの契約を行った際に利用したお客様IDとアクセスキーが必要です。
契約が終わると数時間もしないうちに開通の連絡が届いて(iijmioからready to startメールが届きます)すぐに利用可能になります。
ルーターの設定を行う
NTTとISP(iijmio)とそれぞれ契約が出来ましたので、後は必要な情報をもとにIPv6 IPoEとDS-Liteの設定を行うことで、IPv6でのインターネットアクセスとIPv6を経由したIPv4のインターネットアクセスが出来るようになります。
一般家庭ルーター, 著名な業務用ルーターの場合
多分殆ど多くに方はこちらを参考にしていただければ問題なく利用可能になりますね。国内のルーターメーカーはほぼ対応しているっぽいです。
海外メーカーはだめな場合が多いらしいです。DS-Lite自体はRFC6333で規定されてる標準規格だったりしますが。。
Routerboardの場合
自分が所有しているルーターはMicrotekというメーカーのRouterboard RB2011シリーズです。RouterboardでのIPoE, DS-Liteの設定事例を幾つか見つけることが出来ます。今回はほぼそのままでの設定で問題なく利用可能でした。
IPv6 IPoEの接続
設定は以下のブログ記事と、ツイッターで頂いた情報を元に設定しました。
まーしゃるのへもへも日記 - RouterboardでIPv6 IPoE - IPv6を有効にする日
転載すると
・SystemのPackagesでIPv6を有効にする
※無効の場合はEnableを押したあと再起動が必要
・IPv6のメニューが出てくるので、
DHCPクライアントの設定をする
InterfaceをONUにつながっているところへ
Pool Nameに適当な名前をつける
Prefix Lengthを60へ(※)
※ひかり電話の場合は/60らしい…?
Use Peer DNSにチェック
Add Default Routeにチェック
・DHCPクライアントを有効にして、Statusタブで
アドレスが取れたことを確認する
※Status が boundになる
・IPv6の中のNDのメニューを選択
デフォルトでエントリがあるのでコレを変更
Advertise DNSにチェック
Other Configurationにチェック
・IPv6のDHCP Serverの設定を入れる
InterfaceをLAN側のポートに
Address Pool6をDHCPクライアントのところで
設定したものへ
※コレはDNSの配布にしか使わないので
あまり神経質にならなくてもいいかも
・最後に、IPv6のAddressのところで追加をする
From PoolをDHCPクライアントのところで
設定したものへ
InterfaceをLAN側のポートへ
EUI64はお好みでチェック
Advertiseにチェックを入れる
ひかり電話契約されている方は、利用できるIPv6のネットワーク構成が違うそうです。ONUにNGN網から割り振られるIPv6アドレスはプレフィックスが割り振られます。
IPv6のアドレス配布は、接続先から各端末に対してアドレスが振られる場合(RA, Router Advertisemen, ルーター広告)とプレフィックスと呼ばれる128bit長のIPv6アドレスのうち、上から幾つかのビット数を配布する方法とあります。
プレフィックスが割り振られた場合はそれを元にDHCPv6サーバーを用いてアドレスを生成した後に各端末に割り振ることが出来ます。
ひかり電話契約なしの場合はRAのみです。RAだけでは、ルーターのみにしかIPv6アドレスが振られることになるそうです。 その際にRAプロキシという、ルーターで受けたRAをLAN側にも流す技術に対応していないと、LAN側ではIPv6のアドレスを再割り振り出来ず各端末はIPv6通信ができなくなります。 (回避策としてはNATを構築したり、IPv6ネイティブではないIPv6 PPPoE接続の利用があります。)
Routerboardだとひかり電話契約なしでの成功例が無いので、現状だとひかり電話ありで行うのが理想的のようです。(IPv6 IPoE自体の話で、DS-Liteは行けるかもしれません)
参考:
- SEIL で NGN IPv6 ネイティブ (IPoE) 接続を試す
- IPv6ホストのアドレス設定(ステートレス、ステートフル、DHCPv6)
- フレッツ光ネクストのIPv6との戦い | geek log.
これを調べてて思ったのですが、ひかり電話の契約有り無しでだいぶ事情が違うんですね。性能や設備の違いがあるのかちょっと気になりますね。
IPoEの設定が終わって、各端末にアドレスが振られたら test-IPv6.jp や IPv6-test.com などにアクセスして見ます。端末に振られているアドレスが表示されたらIPv6のネイティブ通信が出来るようになっています。
ping6
やtraceroute6
, dig [IPv6_domain] AAAA
と言ったIPv6のネットワークに関するコマンドでチェックしてみても良いです。
この段階でIPv6に対応しているスピードテスト, 動画配信(Youtube, Netflixなど)にアクセスすると快適になってるはずです。速度的には感動的でした。
本当にIPv6でアクセスしているか、Youtubeへの動画アクセスはChrome Dev Toolsで見た様子です。Remote AddressがIPv6のアドレスになってますね。DS-LiteをしていてもIPv6での通信となっていました。
DS-Lite(Dual Stak Lite)の設定
IPv6での通信が出来るようになったので本丸のDS-Liteです。こちらも成功事例を元に作業し、全く同じ手段で成功しています。
RouterBoardでDS-Liteの設定をしてみた | geek log.
IPIPv6 Tunnelの設定の際にあるLocalAddressの指定は、IPoE設定時のIPv6>Addresses内で設定したLAN側アドレスを利用します。(Twitterで騒いだらgeek logの中の方にメンション頂きました。ありがとうございます!)
私の場合このように設定してます。
— Hiroki Chinen (@haisaihiroki) 2017年10月3日
1. dhcpv6クライアントでprefixを取得しpoolにためる
2. そのpoolを使い、普段使っているネットワークのインターフェイスにアドレスを割り振る
3. 割り振ったアドレスを使いipIPv6トンネルを張る
です。
こちらも test-IPv6.jp や IPv6-test.com などでリモートホストを確認できます。ISPがTransixや Internet Multifeedなどと書かれていればDS-LiteでIPv4通信が出来ています。
起こったトラブル
DHCPv6のアドレス割当が行われない
Routerboard側でDHCPv6-PDのアドレス割り振りが行われないことがあったのですが、こちらはRouterboardのファームウェアを最新版にしたことにより解決しました。
currentブランチは6.40.4で動作確認してます。bug fixブランチは6.39.3ですが早々にバージョンに上げてしまったので未検証です。
(後から考えたのですが、もしかしたらこの問題は次のSPI絡みのパケット破棄で起こる可能性もありそうです。検証できないのが残念ですが。。)
ONUのパケットフィルタとSPI(ステートフルパケットインスペクション)で起こりそうな事例
※:ここに書く内容は事実かどうかあまり検証していません。なのでもし間違っていたらコメントをいただけると嬉しいです。
ONU側でIPv6のパケットフィルタリングとSPIが適応されています。パケットフィルタリングはNTTのNGN網以外の外部からの接続を弾いてくれます。(なので、IPv6-test.comでpingがfilterされたりします)こちらは有効のままで問題ないと思われますが、自分は問題が起きたときに切り分けとして、上記でかいたようにRouterboardのFirewallを設定しました。
SPIは不正なパケットを検知した時点で、一定の時間の間はパケット破棄してくれるようですが、このSPIの挙動がよくわかっていません。(どういうルールで不正パケットと判断しているかわからないです)
ICMPv6はネットワークの疎通以外にも、ARP的なMACアドレス解決機能や、近くのIPv6を喋る端末を探す機能(Neighbor Discovery)にも使われる重要なプロトコルですが、これも多量に受けようとすると不正なパケットとみなしてパケットを破棄しているようです(NGN網以外のアドレスには敏感っぽい?)そのため、本来はほしい通信路の確保がこの判定で一時的にできなくなってるのではと考えています。
DNSの名前解決も同じ挙動を起こしていて、IPv6でv6のアドレスでpingを打つと通るのにドメイン名では通らない自体が結構起きました。(その為、DS-Liteの設定時に接続先をgw.transix.jpにすると通信できなくて、IPv6は通るのに??と困ってました)
そのため、正しく設定できているはずなのに通信ができなくなるときは、SPIを無効にする、不正パケット判定の解除時間を減らすなどで解決できるはずです。その分リスクもあるので必要な通信が確保できればSPI有効のままでの利用でも良いと思います。
DS-Liteの接続が不安定
DS-Liteで通信確立をしている状況でしばらく利用していると、パケットロスを起こすことがたまにありました。こちらはIPIPv6 Tunnelの設定項目にあるkeepaliveを指定することで、今のところロスが起こる状況はなくなりました。こちらはTwitterでアドバイス頂きました。
ipIPv6のkeepaliveのパラメーターを調整しても駄目な感じですかね? https://t.co/DlGIohVnPu
— Routerboard UG JP (@RBUG_JP) 2017年10月8日
keepaliveの時間設定は、Routerboard側のデフォルトで出てくる10秒に10回の指定です。これのおかげで別の問題が起こるか様子を見ていますが今のところは問題無さそうです。
(追記:2017-10-21) 稼働させてからルーターの再起動を行った所DS-Liteのトンネリングが確立しなくなり、keepariveの設定を除去した所確立するようになりました。ルーターはRB750Gr3に交換した後なので、機器によって事情が違うかもしれません。しばらく様子を見て問題がありそうならまた追記します。
DS-Lite:性能テスト
速度低下が始まる夕方に測定してみました。その結果ですが、
RB2011 IPv4 PPPoE
RB2011 IPv6 IPoE + DS-Lite
DS-Liteのときのほうが速度低下してしまってますね。。(ここで改善した様子をバーンと出す予定だったのですが)何故かと言うと後述します。。
しかしPing値は改善していました。この辺はIPv4 PPPoEの終端設備に行っていない効果が見えていますね。
雑感
IPv6よくわかってなかった人がIPv6 IPoEのネイティブ接続とDS-LiteでIPv4通信も出来るようになりました。
今回は利用しているルーターの話でやや遠回りしていましたが、対応している家庭用のルーターなら簡単に設定可能なはずです。IPv4 PPPoEでの接続で回線の遅さにお困りの方はチャレンジしてみても良いと思いますし、ほとんど難しいことはないのでおすすめです。
IPv6では速度的には非常に快適になりました。深夜帯にダウンロードが後も早いとYoutubeやAmazonやnetflixなどの配信も快適でした。
ただ、DS-Liteは見たところ向上と言うより低下しています。これはRB2011の性能的に、DS-Liteのようなトンネリングで性能が落ちてるのではと助言をいただきまして
IPoE DS-Liteの速度を見てると、ちょっと頭打ちがある気がしてる。RouterboardはRB2011UiAS だけど、性能の問題なんだろうか?(その割にCPUは食わないけどね)
— Hiroshi Sano:🦑2 (@hrs_sano645) 2017年10月13日
たぶん、性能の問題はあるかと思います。特に2011は一世代ほど古いので。
— Routerboard UG JP (@RBUG_JP) 2017年10月13日
暗号化処理は必須でないにしても、hEXとかならパフォーマンスの向上は見込めると思います。 https://t.co/g98xEet1T4
はい、たぶん、2コア4スレッドは思ったよりも頼もしいかと。
— Routerboard UG JP (@RBUG_JP) 2017年10月13日
メモリも十分ですし、ルールが多くても大丈夫かと。
ポート数だけが少ないのが難点でしょうか。 https://t.co/72oyt66lE9
現在利用しているRB2011は2013年ごろに発売された製品で、世代的には古くなっています。その為処理の重めなトンネリングで性能の頭打ちが見えてしまったようです。
ということでRB-UG.jpの中の方に直接おすすめいただいた hEXという新しめのルーターを購入しました!この記事を書いている段階で快適に利用しています。次回はこのルーターのレビューをやってみようと思います。
マスタリングTCP/IP IPv6編 第2版 | |
ASIN : 4274069192 こちらはAmazonアソシエイトプログラム参加リンクです |
Splatoon 2 (スプラトゥーン2) | |
ASIN : B072J2J26T こちらはAmazonアソシエイトプログラム参加リンクです |