iperf3はUDPモードだとジッタを測定できる。
このジッタの値はどうやって求めているか?を調べざるを得なくなったので渋々調べた。
iperf3 jitter calculationによると、どうもサーバ側から送信時刻を含んだRTPの電文を16回送信して、以下のように求めているとのこと。
現在時刻ー電文中の送信時刻で通信に掛かった時間を求め、前回の電文の時間と比べて揺らぎを求め、その揺らぎの絶対値/16を加算していく…。
つまるところ、ばらつきの絶対値を合計して16で割ってるから分散…というか二乗していないので最後に√を取る必要が無いので、これは標準偏差なのか。
毎回加算しているのが平均との差分なのかちょっと納得いかないが標準偏差なのはいかにもあり得る話。
このジッタの値はどうやって求めているか?を調べざるを得なくなったので渋々調べた。
iperf3 jitter calculationによると、どうもサーバ側から送信時刻を含んだRTPの電文を16回送信して、以下のように求めているとのこと。
In Reporter.c
of Iperf 2.0.3 , the "jitter" designed to follow RFC 1889, Real Time Protocol (RTP)
:
// from RFC 1889, Real Time Protocol (RTP)
// J = J + ( | D(i-1,i) | - J ) / 16
transit = TimeDifference( packet->packetTime, packet->sentTime );
if ( data->lastTransit != 0.0 ) {
deltaTransit = transit - data->lastTransit;
if ( deltaTransit < 0.0 ) {
deltaTransit = -deltaTransit;
}
stats->jitter += (deltaTransit - stats->jitter) / (16.0);
}
data->lastTransit = transit;
so the key is "RFC 1889, Real Time Protocol (RTP)"
現在時刻ー電文中の送信時刻で通信に掛かった時間を求め、前回の電文の時間と比べて揺らぎを求め、その揺らぎの絶対値/16を加算していく…。
つまるところ、ばらつきの絶対値を合計して16で割ってるから分散…というか二乗していないので最後に√を取る必要が無いので、これは標準偏差なのか。
毎回加算しているのが平均との差分なのかちょっと納得いかないが標準偏差なのはいかにもあり得る話。
コメント