2016-05-06 7 views
1

iperf ist ein großartiges Tool zum Messen von Netzwerkstatistiken wie Verlust, Durchsatz und Jitter. Ich habe es oft benutzt. Aber ich frage mich nur, wie es diese Statistiken berechnet. Für den Durchsatz kann es einfach die Anzahl der Bytes messen, die es in einem bestimmten Zeitraum erhalten hat. Für Jitter kann nur die Paketankunftszeit gemessen werden. Aber, für UDP-Verlust, wie es berechnen kann. Meine Vermutung ist, dass es seine Nutzlast speziell durch das Einbetten von Sequenznummern konstruiert. So kann der Server vorhersagen, welche Pakete verloren gehen. Weiß jemand, was der Inhalt von iperf Paket Nutzlast ist?Wie iperf Netzwerkstatistiken berechnet

Die andere Sache ist, dass am Ende der Verbindung der iperf Client (Absender) einen Server-Bericht erhalten wird (der die Statistiken hat). Welche Portnummer wird dieser Bericht gesendet? Dieser Bericht verwendet TCP oder UDP? Ich kann es nicht mit tcpdump erfassen.

Ich habe versucht, online zu suchen, um die Antworten auf meine obigen Fragen zu finden. Aber ich kann nur finden, wie man iperf BENUTZT. Sieht so aus, als würde kein Dokument/Webseite erklären, wie iperf arbeitet. Kann jemand etwas Einblick geben oder auf Dokumente verweisen?

Antwort

1

Ich sah im Quellcode und nahm auch einige tcpdumps für iperf3. Ich habe folgendes Verständnis für iperf3.

In iperf-UDP-Paketen werden ein Zeitstempel und eine Sequenznummer (der iperf-Quellcode nennt es pcount) vom Absender in die Payload geschrieben. Sobald der Empfänger das Paket erhält, extrahiert es einen Zeitstempel für den Jitter und eine Sequenznummer für die Paketverlustzählung.

Der Jitter wird berechnet, indem der Zeitstempel und die aktuelle Zeit verglichen werden, um zuerst die Verzögerung D_current zu finden. Dann finde | D_current - D_previous | (Der Unterschied löscht die Takt-Synchronisation zwischen dem Sender und dem Empfänger), um zu Jitter beizutragen.

Verlust ist nur, um die Differenz zwischen dem aktuellen PCount und dem erwarteten PCount zu akkumulieren, der zuvor PCount plus eins empfangen wurde.

Egal ob iperf udp (mit der Option -u auf der Client-Seite) oder tcp, wenn iperf startet, wird eine TCP-Verbindung hergestellt. Diese Steuer-TCP-Verbindung wird zum Austausch von clientseitigen und serverseitigen Statistiken verwendet, die CPU-Utilities, Jitter und Verlust, die oben berechnet wurden, am Ende des Tests umfassen.

Von iperf2 log finde ich nicht, dass TCP-Verbindung zu steuern.