naoki86star

インターネットの片隅でなにかしら書いてみる

VPS間遅延測定

前置き

最近は海外VPSの量も減らしてきました。*1

VPS間の通信遅延なんかは、netdata+fping w/ grafanaでだいたい評価できるのだけども、ちょっと数字をだしてみたくなったので自前測定。

原理
  • IPv4/udp で、ノード間を片方向独立で測定
  • 送った側の送信時刻をudp小パケットに書いて送る、受信側は受信側の時計で受信時刻を記録→NTPによる変動影響は含まれてしまう
  • 送信間隔は1sec固定、gettimeofday()+nanosleep()で制御

受信側の間隔も1sec間隔+遅延の揺らぎとなるので、それでNTPの影響がキャンセルできる方法ないか考えてみたかった。

結論
  • netdata+fping使えばいい(楽)
  • パケロスな場合に行き帰りでどちらが悪いかは今回のように測定するとわかる
  • 両方向の結果を一ヶ所で処理すればntp揺らぎキャンセルした結果だせそうだけどそれ結局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
ここは行き帰りで経路が同じっぽく普段から距離のわりにレイテンシがいいと思っているところ

f:id:naoki86star:20200224191721p:plain
片方向毎レイテンシ
f:id:naoki86star:20200224191727p:plain


都市B
ここは行き帰りで経路がちがうっぽいところ、都市Aより実は直線距離が近かったのは初めて認識、普段、実際にsshするにはちょっと厳しい

f:id:naoki86star:20200224191839p:plain
片方向毎レイテンシ
f:id:naoki86star:20200224191911p:plain


都市C
遠いし若干マイナーなベンダーで距離以外でもsshだとやりにくさをたまに感じるところ

片方向毎レイテンシ
f:id:naoki86star:20200224191928p:plain

(end of text)

*1:円安傾向もあるし

*2:片方向で測定するツールのプラグインを作ってみるのもいいのかもしれない

*3:2測定重ね書き