Paketverlustrate mit iperf und tcpdump

10

Ich habe eine Leitung auf ihre Verbindungsqualität mit getestet iperf. Die gemessene Geschwindigkeit (UDP-Port 9005) betrug 96 Mbit / s, was in Ordnung ist, da beide Server mit 100 Mbit / s mit dem Internet verbunden sind. Andererseits wurde gezeigt, dass die Datagramm-Verlustrate 3,3-3,7% beträgt, was ich etwas zu viel fand. Mit einem Hochgeschwindigkeitsübertragungsprotokoll habe ich die Pakete auf beiden Seiten mit aufgezeichnet tcpdump. Dann habe ich den Paketverlust berechnet - durchschnittlich 0,25%. Hat jemand eine Erklärung, woher dieser große Unterschied kommen könnte? Was ist Ihrer Meinung nach ein akzeptabler Paketverlust?

stefita
quelle
Welches Protokoll haben Sie beim Schnüffeln mit tcpdump verwendet? War ein TCP oder UDP?
PiL
Ich habe udp für beide Tests verwendet.
Stefita
Ähm ... könnten Sie es mit einem anderen Paketschnüffler versuchen?
PiL
2
Wireshark verwendet dasselbe Backend wie tcpdump, um Pakete zu erfassen, sodass keine unterschiedlichen Ergebnisse erzielt werden (libpcap oder winpcap, je nach Plattform).
Jed Daniels
1
Können Sie den Paketverlust tcpdumpwährend der iperfSitzung messen ? Es ist eine bessere Schätzung als Ihre. Zweitens den Serverstatus während des Tests überwachen - kann es sein, dass Pakete einfach verworfen werden?
Lexsys

Antworten:

3

Ich habe mit iPerf im UDP-Modus einen erheblichen Datenverlust festgestellt, weil die CPU nicht mithalten konnte. Aus irgendeinem Grund scheint iPerf mit UDP viel CPU-intensiver zu sein als iPerf mit TCP. Erleben Sie die gleichen prozentualen Verluste, wenn Sie iPerf auf die Hälfte der Rate einstellen?

Um Ihre zweite Frage zu beantworten, wie viel Paketverlust akzeptabel ist, hängt es wirklich davon ab, welche Anwendung Sie ausführen und wie viel Datenverkehr Sie haben. Es sollte wirklich keinen Verlust geben, wenn Sie unter Ihrem Bandbreitenlimit sind. Für die meisten Dinge würde ich mich wahrscheinlich nicht zu sehr über 0,25% beschweren, aber das ist immer noch ein großer Verlust, wenn Sie mit wirklich hohen Raten laufen.

[EDIT 1] Einige andere Gedanken, die ich zu diesem Thema hatte:

  1. Versuchen Sie, die iPerf-Raten zu erhöhen. Wenn es irgendwo ein systemisches Problem gibt, ist es wahrscheinlich, dass Sie unabhängig von der Rate den gleichen Prozentsatz an Verlusten erleiden. Wenn Sie an den Grenzen Ihrer Hardware stehen oder Ihr Provider eine Art ROT ausführt , wird es wahrscheinlich keinen Verlust bis zu einer bestimmten Rate geben, und dann wird der Verlust inkrementell schlimmer, je höher Sie darüber hinausgehen.
  2. Führen Sie Ihre tcpdump-Messung der iPerf-Sitzung durch, um zu überprüfen, ob Ihre Tests korrekt sind.
  3. Probieren Sie iPerf mit TCP aus. Dies meldet keinen Verlust, aber wenn Sie einen Verlust erhalten, kann die Verbindung nicht sehr hoch skaliert werden. Da sich dies auch auf die Latenz auswirkt, sollten Sie einen Endpunkt mit möglichst geringer Latenz testen.
  4. Stellen Sie je nachdem, welche Ausrüstung Sie im Inneren Ihrer Verbindung haben, sicher, dass Sie sie so nah wie möglich schließen. Wenn Sie beispielsweise mehrere Switches zwischen Ihrem Testsystem und dem Edge-Router haben, wechseln Sie zu einem direkt verbundenen Switch.
  5. Wenn Sie einen verwalteten Switch haben, überprüfen Sie die Statistiken, um sicherzustellen, dass der Verlust dort nicht auftritt. Ich habe einige billigere Switches gefunden, die abfallen, wenn Sie fast 100 Mbit / s UDP-Verkehr auf ihnen haben (meistens jedoch alte und billige nicht verwaltete Switches).
  6. Versuchen Sie es mit gleichzeitigen iPerfs von zwei verschiedenen Clients auf zwei verschiedenen Hosts, damit Sie sicher sein können, dass das Limit nicht auf die CPU oder eine billige lokale NIC-Karte zurückzuführen ist.
Jed Daniels
quelle
Das könnte ein guter Grund sein. Leider kann ich momentan wegen Firewall-Problemen nicht testen. Ich werde auf Ihre Antwort zurückkommen, sobald ich einen neuen Test durchgeführt habe.
Stefita
0

Nun, mit TCP gibt es Mechanismen, um die Auslastung eines Flusses zu maximieren, mit UDP gibt es keine. Daher muss jede Anwendung ihre eigenen Mechanismen erstellen. Daher verwendet wahrscheinlich jede Anwendung einen anderen Ansatz, um dies zu tun. Wahrscheinlich lässt Iperf mehr Pakete verloren, da versucht wird, die maximal verfügbare Bandbreite zu erreichen, ohne darauf zu achten, ob die Informationen empfangen werden oder nicht. Die andere Anwendung wird wahrscheinlich versuchen, nicht viele Pakete zu verlieren, und die Paketrate auf den verfügbaren Durchsatz in der Verbindung reduzieren.

Rohr
quelle
0

Haben Sie tcpdump verwendet, um den Paketverlust bei Verwendung von iPerf zu überprüfen, um sicherzustellen, dass der mit tcpdump berechnete Paketverlust mit iperf übereinstimmt?

Möglicherweise stellen Sie fest, dass Ihre Messmethoden nicht vergleichbar sind.

Craig
quelle
0

verwirft iperf automatisch Pakete, die mit UDP nicht in der richtigen Reihenfolge ankommen? Möglicherweise sehen Sie ein wenig Jitter in der Verbindung.

Lloyd Baker
quelle