Tech Racho エンジニアの「?」を「!」に。
  • ライフ

特定のWebサイトだけたまに異常に遅くなる現象が発生した

10Gbpsの回線を2本導入して快適なはずの自宅のインターネット回線で、ある日、特定のWebサイトだけやたらと不安定なことに気づきました。

  • ログインが高確率でタイムアウトする。再試行すると成功する。
  • それ以外の画面遷移も、3回に1回位の確率で、10秒以上かかったりタイムアウトする。

解決までの記録です。

少し切り分けてみる

まずは当然ながら、ブラウザ・PC・ルーター・ネットワーク・対象サイトなどを切り分けていきます。

対象サイトの障害?

最初はサイト側の問題かと思って気にしていなかったのですが、数ヶ月経っても改善せず、問い合わせてもシステム障害は確認されていないとのこと。

  • 2回線あるうちのフレッツ光クロスの回線でだけ発生しており、auひかりの回線では発生していない。
  • フレッツ光クロスの回線では、別ブラウザはもちろん別PCからでも同じ現象が発生する。
  • フレッツ光クロスの回線では、時間帯を問わず発生する。
  • 環境はすべて有線LAN接続で、フレッツ光についてはHGWに直結しており、無線などの問題はない。

対象サイトは悪くなく、なんとなく、フレッツ光クロス側の回線が怪しくなってきます。

宅内環境の問題?

レンタルのONUやHGWを電源抜き差ししたり、ファームアップデートを確認したりしましたが、特に現象に変化は見られません。

回線の問題?

フレッツ光の工事故障情報には、気になる記載はありません。そもそも数ヶ月続くとも考えにくい。

また別のサイトでは問題が発生せず、安定しています。
時間帯を問わず、スピードテストサイトでも帯域・pingレイテンシ・ジッター・パケロスなどに悪化は見られません。

v6プラスの問題?

この回線ではv6プラスを使っています。

試しに別のv6プラスを使っている環境(都道府県をまたぐのであまり参考にはならない)から試してみましたが、問題ありませんでした。流石にv6プラス全体がおかしいということはなかった。

エビデンスを集める

詳細が不明ながら、自宅ではなくNTTやJPNEのネットワーク、またはその先の経路に原因がある可能性が高そうです。
再現条件を明確にしないと問い合わせしても意味は薄そうなので、自分の初歩的なミスがないかの確認も含めて、簡単なスクリプトを組んで問題を整理してみます。

telnetでログを取る

本当はpingやtracerouteの結果を集めたかったのですが、対象サーバがHTTPSしか応答してくれず、あまり人様のサーバに頑張ったポートスキャン仕掛けてもよろしくないですし、HTTPSで接続確立するための時間を測定することにします。

どうやるか迷ったのですが、 "echo \"close\" | timeout 5 telnet -b #{BIND} #{HOST} 443" といったコマンドの実行時間を測定することにしました。 BIND は複数NICでどれを使うかを指定するIPアドレス、 HOST は宛先Webサーバのホスト名です。

def ping
  t1 = Time.now
  stdout, stderr, status = Open3.capture3("echo \"close\" | timeout 5 telnet -b #{BIND} #{HOST} 443")
  t2 = Time.now

  ms = ((t2 - t1) * 1000).round(1)

  if stdout =~ /Connected/
    stdout =~ /Trying ([\d\.]+)/
    puts "success #{ms} #{$1}"
  else
    puts "failed to connect #{ms} #{stdout}"
  end
end

あまり正確な測定ではないですが、傾向が分かれば良いのです。5分ごとに10回くらい接続してみました。5秒間応答がなければタイムアウト扱いです。また、ついでにtelnetするので宛先サーバのIPアドレスも記録しています。これで、例えばラウンドロビンで特定IPのサーバだけ調子悪いとかあるのかな?と思いましたが、フレッツ・au回線どちらのパターンでもサーバ側は常に同一のIPアドレスでした。

HTTPS接続の確立にそんな何百msもかからないだろうということで、1秒を超えたら黄色くしてみたらこんな感じ。これはひどい。表示範囲にタイムアウトはありませんでしたが、コネクション確立だけでこれだけかかるなら、より複雑なPOSTとかで数十秒かかっても不思議はないでしょう多分。

フレッツ光クロス/v6プラス回線での結果

フレッツ光クロス/v6プラス回線での結果

同じスクリプトをauひかりの回線で実行した結果はこんな感じでした。普通こうですよね...

au回線での結果

au回線での結果

切り分け用に他のサーバのログも取る

その瞬間にPCやネットワーク全体が不調だったケースを除外したいので、全く同じスクリプトを別サイト宛に動かしておきました。

flets auひかり

やはり、他のサイトでは特に問題ありません。

問い合わせる~解決

途中経路が悪いようにしか見えないので、ISP(enひかり)に問い合わせました。

enひかりさん、問い合わせにちゃんと対応してくれて、好感度が高いです。何を問い合わせても「ルーターに近づけろ」としか言わないGoogleさんとは違う。最初に必要な情報をしっかりと提供すれば、「電源抜いて」とか「ルーター初期化して」とかのテンプレやり取りで何日も浪費することなく、具体的な相談ができます。なお基本電話ベース。

何度かの往復や簡易診断の結果、以下のような回答をもらいました。

  • NTT東日本からチェックする簡易診断では、特に問題はない。
  • JPNEに確認したが、それらしい障害はない。
  • ONUの交換といった対応をやってみることは可能だが、故障でなかった場合は料金がかかる。

まあ、そうですよね。

そういえば?

ここで、ふと思い出しました💡

  • 問題が起きるようになったのは2023年4月頃からだった気がする。
  • その頃に、割り当てられているグローバルIPv4アドレスが変わった記憶がある。
  • 当時のスピードテストサイトのスクショを見る限り、IPv6プレフィックスも変わっている。

つまり、4月頃に何らかの理由でIPアドレスの再割り当てがあり、その際によくわからないハズレを引いたのでは、という仮説が成り立ちます。それなら、再度割り当てを変更してもらってガチャを回し直せば良いのでは...

再割り当てを起こすには?

この仮説を元に、再度ISPに相談してみました。

フレッツ光(おそらくクロスもネクストも同じ)で割り当てられるIPv6アドレスは半固定で、時間経過やONU再起動ではあまり変わりませんが、以下のようなタイミングで変化するようです。

  • ONUやHGWを交換した場合
  • NTT側で設備工事があった場合
  • NTT側で手続きが必要なタイプのオプション変更をした場合(固定IPの契約や解除、VNEの変更、ひかり電話の契約や解除など)

つまり、 なにかオプションを申し込めば良さそう です。例えば、固定IPを申し込んですぐ解約するとか。

enひかりの優秀なところは、複数のVNE(v6プラスとXpass)を選べるところです。以前からv6プラスとXpassの速度比較したいなと思っていたので、ちょうど良い機会だということでXpassへの変更を申し込みました。切り替え事務手数料2,200円なり。

Xpassに切り替える

Xpassへの切り替えは簡単です。電話でお願いしますといえばそれで完了、翌月の請求が2,200円増えるだけです。

申し込んでから数時間で、v6プラスの回線が切断され、その後1時間位?でXpassから降ってくるIPv6アドレスに切り替わりました。30分ほどで、IPv4アドレスも割り振られました。ダウンタイムが気になる方は予備回線を用意しておくか、日時指定で申し込むと良いと思います。

解決した!

わくわくしながら再測定すると...

フレッツ光/Xpass回線の結果

フレッツ光/Xpass回線の結果

バッチリ解決しました。良かった良かった。

pingレイテンシがわずかに改善

pingレイテンシがわずかに改善

思わぬ副産物で、pingレイテンシがv6プラス→Xpass変更で0.5msほど改善しました。ラッキー。ただ、グラフ化したサンプルが少なく詳細未確認ですがIPv4の最悪値は微妙にブレる様になったかも?ジッターもわずかに増えたかもしれません。これはアンラッキー。

ping to 1.1.1.1

ping to 1.1.1.1

ping to google-ipv4

ping to google-ipv4

ping to google-ipv6

ping to google-ipv6

グラフがちょん切れている左側がv6プラス、右側がXpassです。

その後数ヶ月使っていますが、speedtest結果では帯域はv6プラスと大差なく、良いサーバを選べば時間帯を問わず下りで5~8Gbpsくらいは出ます。上りは若干落ちたかも?2~5Gbpsくらい。上述の通りpingレイテンシが僅かに改善、気になる不安定さはなく、全体的に快適です。ブランド力でJPNEに劣るから心配していましたが、アルテリア悪くない。

終わりに

ということで、結局何が悪かったのかははっきりとはわかりませんが、VNEの変更により解決しました。

複雑なインターネットの、途中経路になにかトラブルがあったんでしょう多分。そういうこともあるんだなということで、フレッツ光を使うならIPガチャの存在を認識しておきつつ、困ったときのためにVNEを切り替えられるプロバイダはおすすめです!



CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。