Berechnen der Netzwerknutzung von einem Server

384
termcap

Ich versuche, die prozentuale Netzwerkauslastung eines Servers in meinem Netzwerk für den Snmp-Verkehr (ein- oder ausgehend) zu berechnen. Ich habe die folgenden Schritte befolgt, kann jemand darauf hinweisen, ob ich dabei einen Fehler gemacht habe?

Schritt 1: Führen Sie tcpdump eine Minute lang aus, um alle Pakete mit src oder dst port als 161 (snmp) zu erfassen und an eine Textdatei zu senden

Schritt 2: Extrahieren Sie die Länge aus den erfassten Paketen, Beispielzeile unten

11:09:59.602526 IP (tos 0x0, ttl 252, id 21267, offset 0, flags [none], proto UDP (17), **length 84**) myremotedevice.snmp > mylocalserver.32802: { SNMPv1 C=public { GetResponse(37) R=<redected> E:redected=redected } }  

Schritt 3: Fügen Sie alle Längen aus der Datei hinzu, beispielsweise Gesamtlänge = 4505407 Bytes

Schritt 4: Führen Sie Y = (X * 8) / 60 aus, um die Bits pro Sekunde zu erhalten.

Y = (4505407 * 8) / 60 Y = 600720.93 

Schritt 5: Ich habe ein Gigabit-Netzwerk. Um das Netzwerk util zu finden, führen Sie Folgendes aus:% util = (Y / 1000000000) * 100

%util = (600720.93/1000000000) * 100 %util = 0.06% 

Daher kann ich daraus schließen, dass die Netzwerkauslastung pro Sekunde für SNMP-Verkehr für meinen Server 0,06% beträgt.

Die Frage ist also, ob die obige Berechnung genau ist. Vielen Dank!

2

1 Antwort auf die Frage

1
Spiff

Nein, dieses Ergebnis ist ungefähr doppelt so hoch wie es sein sollte.

Da es sich bei Ihrem Filter entweder um den Quell-ODER-Ziel-Port 161 handelte, bedeutete dies, dass Sie sowohl an eingehendem als auch an ausgehendem SNMP-Verkehr interessiert waren.

Gigabit-Ethernet wird immer geschaltet, dh es ist immer Vollduplex. Es hat also 1 Gigabit / Sek. Ankommende Bandbreite plus 1 Gigabit / Sek. Ausgehende Bandbreite für insgesamt 2 Gigabit / Sek. Gesamtbandbreite. Sie sollten sich also von 2 Milliarden anstelle von 1 Milliarde geteilt haben.

Abgesehen davon ist Ihre Berechnung für die meisten Zwecke wahrscheinlich nahe genug. Wenn Sie noch genauer sein möchten, können Sie die Zeit berücksichtigen, die zwingende Lücken zwischen Paketen, Präambeln auf physischer Ebene und Begrenzer für den Beginn des Frames erforderlich sind. Wenn Gigabit-Ethernet-Bits Bits sendet, werden diese mit 1.000.000.000 Bits pro Sekunde gesendet, es werden jedoch nicht ständig nützliche Bits gesendet (aufgrund der von mir genannten obligatorischen Lücken und Präambeln). Diese Dinge zeigen sich nicht in dem, was von tcpdump erfasst wird. Um also extrem präzise zu sein, müssen Sie daran denken, sie zu berücksichtigen. Wenn ich mich richtig erinnere, ist die Lücke 96 Bit-Zeiten, der vorläufige + Begrenzer ist 64 Bit, also insgesamt 160 "unsichtbare" Bits pro Paket.

Zum Hinzufügen hinzugefügt: Möglicherweise möchten Sie auch noch einmal überprüfen, ob das Längenfeld, das Sie aus dieser Ausgabe von tcpdump verwenden, die volle Länge des Ethernet-Frames ist und nicht nur die Länge des IP- oder UDP-Datagramms.

Vielen Dank für die ausführliche Antwort, es war wirklich hilfreich. Ich denke, Sie sind richtig. Ich sammle nur die IP-Paketlänge. Ist es richtig, wenn ich davon ausgehe, dass diese Länge die UDP-Header-Länge sowie die tatsächlich übertragenen UDP-Daten enthält? termcap vor 8 Jahren 0
Nach dem obigen Kommentar und dem Aufbau Ihrer Antwort wäre es korrekt, wenn bei der obigen Beispielerfassung, die eine IP-Headerlänge von 84 Bytes meldet, die Gesamtgröße des Pakets auf dem Draht liegen würde termcap vor 8 Jahren 0
- wäre 304 Bytes + 84 Bytes = 388 Bytes. Die 305 Bytes umfassen den von Ihnen erwähnten Overhead sowie jeweils 32 Bytes für die MAC-Adressen der Quelle, des Ziels und 4 Bytes für den Ethernet-Typ. termcap vor 8 Jahren 0