Webブラウザを備えたクライアントから手軽に回線速度測定ができるLibreSpeedを、SONiCで稼働しているイーサネットスイッチで動くようにしました。実稼働のスイッチでは、ネットワークを安定稼働させるための大事な仕事がたくさんありますのでこのようなアプリケーションを稼働させることはまず無いと思いますが簡易的な検証に便利です。
EdgeCore AS7326
何かしらのリミッターがあるらしく500Mbpsしか出ない
date or ntpでクロックを設定して
/etc/apt/sources.listを編集して
deb http://ftp.jp.debian.org/debian/ buster main contrib non-free
sudo apt-get install apache2 php git sudo git config --global http.sslVerify false cd /var/www/html sudo git clone https://github.com/adolfintel/speedtest.git
この状態で"http://host-ip/speedtest/"をアクセスすると、ディレクトリが表示され。example-singleServer-full.html等を選択すれば測定画面が表示されますが。みっともないのでindex.htmlを設定しましょう。
ln -s example-singleServer-full.html index.html

チューニング
このままでは高速な帯域測定ができませんので、チューニングが必要です。ファブリックチップとホストCPUの接続帯域に制限されます。TOMAHAWKはPCIe v 2.1 4 lane 16Gbps?。
TRIDENT3/TOMAHAWK3だと PCIe Gen3 x 4 = 32Gbps
MTU
スイッチのインターフェースなので、デフォルト9100。クラインアント側の設定変更が必要になる場合があるでしょう。
TCP
/etc/sysctl.conf
net.ipv4.
/etc/php/7.0/apache2/php.ini
default | recomend | |
upload_max_filesize | 2M | 50M |
post_max_size | 8M | |
max_input_time | 60 | |
max_exctution_time | 30 | 90 |
memory_limit | 128M |
https://github.com/librespeed/speedtest/issues/50
speedtest_worker.js
xhr_ul_blob_megabytes : 20
通常は20MBupload。mobileだと4MB
測定結果の蓄積
mysplによる測定結果の蓄積機能もありますが省略。
DNSの設定も省略
nginx上での構築
phpの設定がちょっと面倒
rasberryPiでの測定結果
singel core 700MHz 512MB RAM 100BASE-TX
download | upload | |
---|---|---|
標準状態 Windows PC chrome via 1G-T | 36.9Mbps | 64.2Mbps |
標準状態 iPadPro client chrome via wifi 11a | 41.5Mbps | 53.5Mbps |
php.ini変更iPad Pro | 44.1Mbps | 50.1Mbps |
Rasberry Pi4を使えば1Gbps出るらしい