長いですが結論から言うと根本原因はわかっていないですが、解決方法は見つかりました。
サマリー:
・フレッツ光ネクスト(PPPoE)をv6プラス(IPoE)に変更するために、新しい無線LANルータとしてバッファロー WSR-A2533DHP2(WSR-2533DHP2のAmazon限定版)を導入した
・無線LAN接続、かつ、v6プラスであるときに限り、一部のサイト(pixiv)やゲームでのみ途中で読み込むのをやめる不具合が発生する
・有線LANやPPPoEのときは問題なく使える
・今まで使っていた別のルータの無線LANを通して接続すると解決した
・WSR-A2533DHP2自体の無線LANを通してv6プラスを問題なく使う方法は未解決
※WSR-A2533DHP2 Version 1.20 (R0.04/B0.06-0)
少し前からv6プラスには興味を持っていたものの、グローバルIPが必要な環境でもあったので様子を見ていたが、最近になって(ISPによっては)2つのルーターを使用するとPPPoEと同一セグメントで共存できる場合があるということで、v6プラス対応のルーターを購入して導入をしてみた。それまではIPv6のみIPoE(IPv6接続オプション)で使用していたので、ルーターを接続するだけでほぼJPNEのv6プラスに変更可能だった。
図1 LAN環境
デュアルホーミング構成ではあるものの、基本的にv6プラスの新ルーターを使う設定にして、PPPoEのグローバルIPが必要なものだけ手動でデフォルトゲートウェイをPPPoEを担っている旧ルーターに振り分けるようにした。
(一部のアプリでv6プラスだと不具合が出る可能性があるという噂は前からよく聞いていたのですぐに変更できるようにしておいた)
v6プラス自体は非常に快適(今まで下り6Mbpsぐらいの時間帯が70Mbpsぐらいになるなど)であったが、スマートフォンやノートPCから見た際に次のようなトラブルが頻発するようになった。
・pixivのサイトの画像部分のみ(アプリもブラウザも)
・ららマジのロード画面(もう書いてる時点でゲーム自体が余命一週間未満ですが)
・ナナシスのロード画面やマッチ画面で稀に(マッチ画面で落ちると痛い)
図2 不具合が起きる条件
(ほらやっぱりと思って、)WiFiの設定でIPを手動設定にしてデフォルトゲートウェイをPPPoEに変更してみたところ、快適になった。
v6プラスのせいかなと思いつつも、デスクトップPCで絶対に起こらないのと、ノートPCでは有線LANで接続する際には発生しないことがわかったのでもう少し調べてみることにした。
図3 問題が起きない条件1 PPPoEを通す
今回の件でややこしかったのは、「最初の数分程度」はどの場合でも解決したかのような挙動を見せるのでぬか喜びが多い点。
まるで何かの検閲でも入っているような動き(確実に再現性があるのがpixivの画像閲覧時なので、あ、はい、という感じで)
やってみて効果が無かったものとして…
- ブラウザの種類を変える (Edge, Chrome, Firefoxですべて同じ)
- ドライバのバージョンの変更 (HP Elite x2 1012 G1等に搭載されているIntel Dual Band Wireless-AC 8260は過去に何度かドライバとWindowsの関係で不具合があったことがあるので最初に疑った)
- ドライバのパラメータ設定の変更 (WoWLAN、ARPオフロード等)
- 2.4GHz(802.11g/b/n)や5GHz(802.11a/n/ac)のどちらかに限定
- IPv6をオフ(全てv4の話で元々関係ないのと旧環境でもDNSはIPoEなので混在ではあった)
ネットを検索してても、ナナシスがなぜかv6プラスで遅いとか、どういうわけかゲーム機のマルチプレイ設定が通らないなどの話を稀に見かけるほどなので、完全に駄目であるという可能性は低い。
PixivはCDNに対してJavascriptで非同期読込をしているようで、Chromeのデベロッパーツールで見ると、最初の少しは読み込んだ後にnet::ERR_CONNECTION_RESETが多数コンソールに表示されるようになる。NATでポートが足りなくなったときの現象に少し似ているなと思ったが、とにかく有線LANで繋いでいる時や無線LANでもPPPoEルータを通している場合には発生しない。
適当にWiresharkを眺め始めてみたところ、有線の時に比べるとなんとなくパケット分割に関する再送やTCP Dup Ackが多い気がする、ということに気づいた。(何となくWiresharkで黒い帯が多めに見える程度の話w)
そこでもしかしてMTUの計算がどこかでおかしくなっているのでは、と思いつき調べてみたところv6プラスでは以下の通りIPv4部分のMTUが1460になるらしい。
IPv6ヘッダ 40 byte
--
IPv4ヘッダ 20 byte
ICMPヘッダ 8 byte
ICMP Data 1432 byte
ping -4 -f -l 1432 外部サーバ
ping -4 -f -l 1433 外部サーバ
でフラグメント有無の違いがあったのでMSSは確かに1432、MTUは1460。
管理コマンドプロンプトを起動し…
netsh interface ipv4 show interface で無線LANのインタフェース番号(Idx)を調べて既定値の1500になっているのを変更。
netsh interface ipv4 set interface (Idx番号) mtu=1460
この設定にしてv6プラス経由でpixivを見たところ、ちょっと引っかかりはする感じがするもの、少なくても画像が表示されなくなるということは全く無くなった。
でもそれだったらPPPoEの方は1454だからもっと調子悪くてもおかしくないし、有線LANだとMTU1500のままv6プラス通して問題ないのになぜだろうという感じに。
図4 問題が起きない条件2 MTUを手動で1460に設定する
図5 問題が起きない条件3 有線LANで接続
MTUの変更はパソコンでは容易であるものの、スマートフォンではRoot化しないとWiFiに関してはできないということなのでちょっと厄介だなと思って再度MTUまわりで検索していたら、WSR-2533DHP2とXBox360の組み合わせで、どういうわけかMTU検出に失敗する事例がkakaku.comの掲示板にあった。
https://bbs.kakaku.com/bbs/K0001074909/SortID=22337430/
その方によると別の無線LANアダプタを中継させたら通ったとのこと。(旧ルータが同じWHR-1166DHP2なので偶然の一致)
そんなことあるのか、と思って、旧ルータのWHR-1166DHP2の無線LANを別SSIDで復活させて繋いでみたところ、あら不思議、v6プラスを通しても全く問題なくpixivが見られるように。ノートPCでもスマートフォンでもデスクトップPCの方で見ているのと同じサクサクに。
図6 暫定的な解決策 別の無線LANアダプタを通して使う
ということで新ルータの無線LANは諦めて、無線LANは旧ルータのを使うように設定を変更して、暫定的に解決。
純粋に同一セグメントに対してのメディアコンバーターとして使うので、DHCPサーバーはそのまま新ルータの方を使う。
VDSLアダプタが100Mbpsなので、LAN側でルータ同士でGbEで回される分には速度的にも特に問題なしということで。
WSR-2533DHP2が無線LANを通してv6プラスを使う場合で、特定のサイト(CDN)に特定のアクセス方法をする場合に限り、何らかの理由でパケットが分割されるか落とされて、しかもそれが上位のどのレイヤーでも検知できずに、再送がかからないか再送されてきたのを無視する…ってことなのかなと。
※LANの環境変更が大きいので検証していないのは、WSR-2533DHP2がPPPoEのときにどうなるのか、というのと、WSR-2533DHP2の無線LANから一度別のルーターまたはLAN内のProxyを通して再度WSR-2533DHP2の有線LANでv6プラスを通した場合にどうなるか。