前置き
最近は海外VPSの量も減らしてきました。*1
VPS間の通信遅延なんかは、netdata+fping w/ grafanaでだいたい評価できるのだけども、ちょっと数字をだしてみたくなったので自前測定。
原理
- IPv4/udp で、ノード間を片方向独立で測定
- 送った側の送信時刻をudp小パケットに書いて送る、受信側は受信側の時計で受信時刻を記録→NTPによる変動影響は含まれてしまう
- 送信間隔は1sec固定、gettimeofday()+nanosleep()で制御
受信側の間隔も1sec間隔+遅延の揺らぎとなるので、それでNTPの影響がキャンセルできる方法ないか考えてみたかった。
考察
- パケロスな場合に行き帰りでどちらが悪いかは今回のように測定するとわかる
- 両方向の結果を一ヶ所で処理すればntp揺らぎキャンセルした結果だせそうだけどそれ結局fpingで間に合う
- netdata+fping使えばいい(楽)
詳細
インターネット上の離れたVPS間だと、非対称通信になる率は高く、片方向独立で測ってみると、どっち方向にどんな特徴でるかを知ることができた。やり始めると手間なので結論的にはnetdata+fpingでいいと考えたのだけども*2fpingの結果の読み方とか再認識できたのが吉。
元々fping のquality packetのチャートが意味が取りにくい、平らなら良いのだろう程度に思っていた。短時間統計だと率換算しにくいな改めて思った。
結果
東京対3都市で測定した結果
行latency平均/標準偏差(sec) | 戻latency平均/標準偏差(sec) | 行packet 受信率 | 戻packet 受信率 | |
都市A(約8800km/13hop) | 0.060340/0.001559 | 0.062893/0.001555 | 1.000 | 1.000 |
都市B(約7480km/9hop) | 0.072281/0.015925 | 0.134784/0.002435 | 0.997 | 1.000 |
都市C(約17200km/17hop) | 0.140183/0.005297 | 0.178544/0.225213 | 0.998 | 0.997 |
今回取得データチャートとnetdata+fping(latency)チャート*3の比較
青線→東京
赤線←東京
都市A
ここは行き帰りで経路が同じっぽく普段から距離のわりにレイテンシがいいと思っているところ
都市B
ここは行き帰りで経路がちがうっぽいところ、都市Aより実は直線距離が近かったのは初めて認識、普段、実際にsshするにはちょっとレスポンス面でフラストレーションが溜まる感じ
都市C
遠いし若干マイナーなベンダーで距離も要因の一つであろうがそれ以外でもsshで応答の悪さが散見するところ
(end of text)