はじめに
新しい家へ引っ越しした。手っ取り早く通信環境がほしい。光回線の工事が込み合う時期だったのですぐ工事&開通というわけもいかず、楽天モバイルが約3000円/月で使えるというので、モバイルルーターを手に入れて固定回線化し、speedtest-cliを定期的に走らせて回線速度を測ってみた。
NW構成
楽天モバイルの端末(Rakuten WiFi Pocket 2C)を固定化、全部有線接続。モバイル回線を安定させせるために、端末はカーテンレールから釣って窓中央になるよう設置した。
計測方法
- speedtest-cliを利用
https://www.speedtest.net/ja/apps/cli - 計測リトライは5回まで
- 10分間隔で3週間定点観測
結果
先に結果から。
全区間トレンド
曜日、時間帯別トレンド
点群は実データ、実線は各週・時間ごとの中央値を繋いだものである。
12時~13時ごろに速度もレイテンシも悪くなる傾向にあることがわかった。速度については、上りは比較的安定しているが、下りは明け方に早く、夕方から深夜にかけては落ち込むことが分かった。
補足
※speedtestでは、計測先のサーバーがかなり離れたサーバーを指定してしまう場合がある。モバイル回線の測定にフォーカスするため、曜日別のトレンド分析には200km以内のデータを採用した。
詳細
speedtest-cliはセキュアモードで利用した。取得データはAWS API Gatewayに打ち上げてAWS側で処理できるようにした。(--json
オプションでjson形式で結果を取得できることは後から分かった。API Gatewayの裏側のLambdaでペイロードを正規表現で処理するロジックを作ってしまった・・・)
testres=$(speedtest-cli --secure)
# retry
for i in {1..5} ; do
if [[ "$testres" == *Download* ]]; then
break
else
testres=$(speedtest-cli --secure)
fi
done
curl -X POST -H "Content-Type: application/json" -d "${testres}" "https://xxx.execute-api.ap-northeast-1.amazonaws.com/xxx"
systemdでbashを実行するためのserviceファイル
[Unit]
Description=bootstrap service
After=network-online.target
[Service]
User=ubuntu
ExecStart=/bin/bash /home/ubuntu/app/speedtest/checkspeed.bash
Restart=on-failure
Type=simple
[Install]
WantedBy=multi-user.target
10分毎に定期的に実行するためのtimerファイル
[Unit]
Description=bootstrap service
After=network-online.target
[Timer]
OnCalendar=*:0/10
[Install]
WantedBy=timers.target
おわりに
それなりの回線をパパっと用意できたし、3000円/月ならこの質で十分な気もしている。Rakuten WiFi Pocket 2Cは4Gまでの対応だが、5G対応端末に変えたらもっと速度は出るのかもしれない。レイテンシが悪いのが気になるが、YouTube見たりネットサーフィンしているような通常ユースでそこまで困らないので、今のところこの回線で良いかな・・・。