Ubuntu Weekly Recipe

第768回OpenSpeedTestとウェブブラウザーを使って家庭内ネットワークの速度を計測しよう

家庭内ネットワークにも2.5GbEや5GbEなどのマルチギガビットイーサネットが押し寄せています。上流であるインターネット側の10Gbpsサービスが増えてきたことに加えて、Wi-Fiの高速化、対応NICやスイッチの増加に加えて価格も安くなっています。第693回のUbuntuでも2.5GbEを使用するや第761回のAlder Lake-Nで省エネPC生活のように、すでに活用している読者もいることでしょう。今回はそんな「新しいネットワークデバイス」向けに、簡単に速度テストできるOpenSpeedTestを紹介します。

お父さんと一緒のネットワークセグメントにしないで

家庭内ネットワークの管理者でもある読者の皆様におかれましては、日々の中で自分の趣味や家族からの要望に応じて、ネットワークのメンテナンス・拡張に腐心されているかと思います。要望と言ってもおおよそは回線の安定性と速度の増加が主体で、家庭によってはカスタマーサポートが主な作業になり、もし父親が管理者だとすると表題のような心無い発言とも対峙しなくてはならないのかもしれません。自分で書いておきながら、なんだか泣けてきた。

さて、家庭内ネットワークと言えば現在はスマートフォンとWi-Fiの組み合わせが主流でしょう。こちらは年々新しい規格が登場すると共に最高速度も向上し、現時点での最新のWi-Fi 6/6Eに至っては最大で9.6Gbpsまで出せることになっています。同様に第706回のUbuntuでも10ギガ(10Gbps)インターネットを体験してみるのように、インターネット側も10Gbpsサービスが増えてきました。

そうすると今度は有線LANの速度が「1Gbpsどまり」なのが「遅い」と感じるかもしれません。どんなに理性的な人間でも、ろうを平らげたあとはしょくが必要になってしまうのです。そこで登場するのが安価に1GbEを超える有線LANを導入できるマルチギガビットイーサネットとなります。

しかしながらWi-Fiにしろ有線LANにしろ、高速なAPやNIC・スイッチを導入したとしても、その真価を確認するのはやっかいです。たとえばインターネット側で10Gbpsサービスを導入していても、インターネット上にある速度計測サイトで2.5Gbpsや5Gbpsが出るとは限りません。そもそも速度計測するなら対象サーバー側の「タイミング」も重要になってきそうです[1]。せっかくだから、⁠ワイヤーレートに近い速度が出ている!やったー」と体感したいところ。そこでこの手の計測にはiperfコマンドが使われます。

本連載でも何度か登場したiperfはお手軽に計測できるものの、そのUIはシンプルです。

図1 iperfによる調査は、視覚的には少し寂しい
図1

どうせならもっとこう、タコメーターのように速度がどれくらい出ているか視覚的にわかるとうれしいですよね。そう、よくある「SpeedTest」のように。というわけで今回はFLOSSとして実装され、セルフホストも可能な「OpenSpeedTest」を試してみます。

コンピューターにとって光の速度は遅すぎる

混雑していない状態のネットワークが期待通りの速度を発揮しない場合、おおよそどこかに「ボトルネック」になるものが存在します。よって速度計測においては、まずできるだけシンプルな状態でのボトルネックの有無の検出が必要です。熟練のネットワーク管理者はだいたい「光速の遅さが最大のボトルネックだ」なんて、どこぞの某聖闘士みたいな発言をするらしいのですが、それはさておき特定のスイッチやAPが負荷をかけるとやたらと遅くなるというのはありうる話です。

よってOpenSpeedTestを使う場合も、計測にあたってのデバイスと対向装置のどちらかにはインストールできなくてはなりません。その際の候補としてOpenSpeedTestには複数の利用方法が存在しますので、まずはそちらをまとめましょう。

  1. OpenSpeedTestのウェブサイトでスタートボタンを押して計測する
  2. 上記をウィジェットとして適当なサイトで読み込んだ上で計測する
  3. 自前のサーバーにOpenSpeedTestをデプロイする
  4. 各OS向けのアプリケーションをインストールする

1番目はよくある速度計測サイトと同じ使い方です。2番目は、速度計測のUIを自分のサイトに埋め込む方法でうす。埋め込むためのHTMLタグはサイトにありますので、そちらを確認すると良いでしょう。商用利用も可能となっています。どちらの場合もOpenSpeedTestサイトとインターネット自体の速度がボトルネックになります。

3番目はOpenSpeedTestのDockerイメージやGitHubに公開されているコードを自前のサーバーにデプロイする方法です。LANの中にある適当なサーバーにもインストールすれば、インターネット側の状態を気にすることなく計測が可能です。この方法はさらに「OpenSpeedTestのデータと同期するかどうか」で2種類の方法にわけられます。

「同期する」場合、速度計測自体はローカルで行われますが、計測結果等はOpenSpeedTestのデータベースに保存されます。よってOpenSpeedTestのアカウントに加えて、インターネットから速度計測のサーバーにアクセスできる必要があります。⁠同期しない」場合は単に計測用ソフトウェアをインストールするだけです。

4番目のアプリケーションは、計測用のウェブサーバーをインストールするためのパッケージをインストールする方法です。実際にインストールされるのは「クライアントではない」点に注意しましょう。公式サイトにリストアップされているように、WindowsやMacだけでなく、AndroidやiOS、Linuxにも対応しています。Ubuntuデスクトップならsnapパッケージをインストールする方法がかんたんでしょう。UbuntuサーバーならDockerイメージを使うのが良さそうです。

snapパッケージをUbuntuデスクトップにインストールする

Ubuntuデスクトップで計測したいなら、お手軽なsnapパッケージ版を試してみましょう。ただしsnapパッケージ版はGUIアプリケーションであるため、デスクトップ環境がないと動かない点に注意が必要です。

「Ubuntuソフトウェア」かsnapコマンドで「openspeedtest-server」をインストールします。Ubuntuソフトウェアなら「openspeedtest」で検索するだけです。表示されるパッケージをインストールしましょう。

図2 Ubuntuソフトウェア上のOpenSpeedTestパッケージ
図2

CLIからインストールするなら、次のコマンドを実行しましょう。

$ sudo snap install openspeedtest-server

あとはインストールしたアプリケーションを起動すれば準備完了です。画面上にhttp://IPアドレス:3000と表示されます。同じネットワーク内の任意のデバイスのウェブブラウザーからそのURLにアクセスすれば、Ubuntuデスクトップとそのデバイスの間の計測を行えます。

図3 デスクトップ版のOpenSpeedTestサーバー
図3

DockerイメージでUbuntuサーバーにデプロイする

公式が配布しているアプリケーションはすべて計測サーバーを動かすためのGUIアプリケーションです。CLI環境にインストールする場合は、自分でソースコードからインストールするか、Dockerインスタンスをデプロイするかの2択になります。

今回はより簡単で確実なDocker版をインストールしてみましょう。Dockerは公式のパッケージでもUbuntuリポジトリにあるdocker.ioパッケージでも、snap版のdockerパッケージでも構いません。docker.ioパッケージなら次のようにインストールします。

$ sudo apt install docker.io

デプロイは次のように実行します。

$ sudo docker run --restart=unless-stopped --name openspeedtest -d -p 3000:3000 -p 3001:3001 openspeedtest/latest

Docker版の場合、3000番ポートでHTTPを、3001番ポートでHTTPSを使うようになっています。ただしサーバー証明書等は用意されていません。HTTPSを使って計測したい場合は、自前で証明書を用意しましょう。Let's Encryptを使うならdocker runの後ろに-e ENABLE_LETSENCRYPT=True -e DOMAIN_NAME=speedtest.example.com -e USER_EMAIL=you@exmaple.comのようなオプションを追加しておくと、Dockerインスタンスの中で証明書の取得も行ってくれます。

速度の計測方法

速度計測の方法はすごくシンプルで、指定されたURLにアクセスしてStartボタンを押すだけです。

図4 画面はレスポンシブデザインになっている
図4
図5 Startボタンを押すとテスト開始。まずはダウンロードから
図5
図6 アップロードも完了すると両方の結果が表示される
図6

手元の環境だとなぜかアップロードが妙に遅くなってしまいました。これはiperfでも同じ傾向を示したので、経路のどこかに問題がありそうです。

ちなみにFirefoxだと、拡張機能がインストールされていると2.5Gbps以上の速度もしくは10分以上の継続でうまく計測できなくなるようです。FirefoxにしろChrome系にしろ、正確なデータを取りたければ拡張機能を無効化することをおすすめしています。

もちろんスマートフォンからも、同じようにURLにアクセスすれば速度を計測できます。たとえば場所によるWi-Fiの速度を計測したい場合に便利でしょう。

なお、OpenSpeedTestには「ストレスモード」も実装されています。これは計測時間を長くすることで、ネットワーク負荷をかけて、長時間でも十分な性能が出るか確認するモードです。URLの後ろに?S=XXXと入力することでストレスモードになります。具体的なオプションをいくつかあげておきましょう。

  • ?S=Lもしくは?Stress=Low:計測時間を5分にする
  • ?S=Mもしくは?Stress=Medium:計測時間を10分にする
  • ?S=Hもしくは?Stress=High:計測時間を15分にする
  • ?S=Vもしくは?Stress=VeryHigh:計測時間を30分にする
  • ?S=Eもしくは?Stress=Extreme:計測時間を60分にする
  • ?S=Dもしくは?Stress=Day:計測時間を1日にする
  • ?S=Yもしくは?Stress=Year:計測時間を1年にする
  • ?S=nもしくは?Stress=n:計測時間をn秒にする

本当に1年間継続して計測できるかは疑問ですが、それ以外についてはたとえば連続運転すると熱で遅くなってしまわないかの確認に使えます。

このようにOpenSpeedTestの機能はとてもシンプルなものですが、家庭内ネットワークのどこかのマシンにインストールしておけば、いつでも確認できるというメリットがあります。できれば「speedtest-cli」のように、CLI版のクライアントもほしいところではありますが、現時点では公式には存在しないようです。

おすすめ記事

記事・ニュース一覧