Warum bekommen wir hohe Schwankungen bei der Bandbreitenmessung Kakteengraph?

14

Wir befanden uns im Redundanztest von Etherchannel und Routing in unserem Netzwerk. Während dieser Intervention haben wir einige Messungen durchgeführt. Unser Überwachungstool ist Cacti for Graph. Das überwachte Gerät ist ein 4500-X auf VSS. Jede Verbindung befindet sich auf einem anderen physischen Gehäuse.

Schema:

Ätherkanal 1

Test-Chronologie:
[t0] Link am te1 / 1/14-Port wurde physisch entfernt. Der Te2 / 1/14 ist aktiv. Po1 ist betriebsbereit.
[t0 + 15] Link am Te1 / 1/14-Port wurde wieder in Betrieb genommen und überprüft, ob der Port im Etherchannel Po1
[t0 + 20] Link am Te1 / 1/14-Port physisch entfernt wurde. Der Te2 / 1/14 ist aktiv. Po1 ist betriebsbereit.
[t0 + 35] Der Link am Te1 / 1/14-Port wurde wieder in Betrieb genommen und überprüft, ob der Port wieder im Etherchannel Po1 ist

In unseren Tests haben wir den Verkehrskanal Po1 durch Cacti (Grafik unten) überwacht und eine signifikante Änderung des Durchflusswerts festgestellt, als wir die te1 / 1/14-Verbindung (Verbindung te2 / 1/14-Assets) während der Rückwärtsfahrt ziemlich stabil deaktiviert haben . Wir haben auch die Zähler auf int Po1 überprüft und diese wurden ziemlich stabil gehalten.

Graph

Zwei 10G-Schnittstellen sind in Etherchannels mit konfiguriertem LACP gebündelt. Im Ätherkanal befinden sich 2 Vlans. Eine für Multicast-Verkehr und eine für Internet / All Traffic.

Kennen Sie eine mögliche Ursache für dieses Verhalten?

cgasp
quelle
Wie lange hast du jeden Test gemacht?
Laf
Jede Port-Trennung dauert 15 Minuten, wie Sie in der Chronologie sehen können.
Cgasp
Was ist Ihre Port-Channel-Konfiguration und Ihr Load-Balance-Typ auf beiden Seiten? Was können Sie uns über Ihre Testsuite sagen und paramters dass erzeugt , dass der Verkehr - ein Fluss, mehrere Flüsse, Protokoll usw.
generalnetworkerror
Zwei 10G-Schnittstellen sind in Etherchannels mit konfiguriertem LACP gebündelt. Im Ätherkanal befinden sich 2 Vlans. Eine für Multicast-Verkehr und eine für Internet / All Traffic. Frage aktualisiert.
Cgasp
Der Test war ein allgemeiner Redundanztest für Routing-Protokolle und Etherchannels. Wenn ein Link ausfällt, was passiert dann? Alle Tests laufen wie erwartet, aber wir fragen uns, warum dieses Verhalten bei der Messung von Bandbreiten auftritt.
Cgasp

Antworten:

11

Um den Kommentar von ytti zu erweitern.

Ihr Abfrageintervall scheint sehr klein zu sein, alle 10 Sekunden, wenn ich richtig lese. Es gibt einige Gründe, warum Sie dieses Ergebnis erzielen könnten.

Geräteseite:

  • Schlechte Auswahl der Zähler. Wenn Sie 32-Bit-Zähler verwenden, können diese alle ~ 3,4 Sekunden aktualisiert werden, wenn Sie eine 10-g-Schnittstelle mit Zeilenrate verwenden
  • Zähleraktualisierung: Bei vielen größeren Geräten werden die Zähler nur zwei- oder dreimal pro Minute aktualisiert, und es kann nie davon ausgegangen werden, dass sie synchron sind. Alle 30 Sekunden sind so niedrig, wie ich es mir vorgestellt habe, und selbst dann möchte ich immer mindestens zwei Punkte, bevor ich einen Alarm auslöse oder Maßnahmen ergreife
  • Es kann ein GOTCHA-Fehler auftreten, da Pakete, die für die CPU-Verarbeitung gesendet wurden (möglicherweise Netflow), sofort gezählt werden, während Pakete, die nicht für die RE-Stapelverarbeitung verwendet werden (siehe Juniper MX).

Poller Seite:

  • Wird der Polling-Wert in dem Intervall genau abgefragt, und wenn nicht, wird das Ergebnis mit der tatsächlichen Abfragezeit (z. B. x Bits in yz Sekunden) eingespeist, so dass eine sinnvolle Rate berechnet werden kann
  • Was passiert, wenn Zähler zurückgesetzt werden oder SNMP-GETs nicht beantwortet werden? Verschiedene Tools reagieren unterschiedlich auf diese
LapTop006
quelle
1
Selbst wenn Sie alle N sehr genau abfragen, werden die HW-Zähler möglicherweise nicht in genauen Intervallen abgefragt, sodass es so aussieht, als ob t1, t2 keinen Anstieg des Datenverkehrs sehen und t2, t3 über dem Liniendaten. Die genauesten Ergebnisse, die Sie erhalten können, sind möglicherweise im Bereich math.stackexchange zu finden, aber ich glaube, das Beste, was Sie tun können, ist 2 * the_slowest_update_interval. Wenn die Box alle 10 Sekunden aktualisiert wird, könnten Sie alle 20 Sekunden Messdaten erhalten. Aber wahrscheinlich können Sie mit etwas Statistik-Magie näher an die 10er
heranrücken
1
Außerdem ist es wichtig, welchen Poller Sie mit Cacti verwenden, und zwar in einem Abrufintervall von 10 Sekunden. Ich habe schlechte Erfahrungen mit dem Standard-Poller in diesen kurzen Abfrageintervallen gemacht. Es wird nicht erwähnt, ob sie Spine oder den Standard-Poller verwenden.
Brett Lykins
6

Ihr Problem ist, dass Ihr Router-Sampling und Ihr eigenes Polling nicht im selben Moment auftreten. Das heißt, obwohl das Abfrageintervall statisch ist, enthalten die Abfrageintervalle eine unterschiedliche Anzahl von Abtastwerten, die Ihre Mathematik nicht berücksichtigt.
Angenommen, Sie haben t1, t2, t3 abgefragt, aber der Router hat im Intervall t1, t2 nichts abgetastet, sodass der gesamte Datenverkehr zwischen t1, t3 zum abgefragten Wert t2, t3 geführt hat. Dies bewirkt, dass Ihre Rate bei t1, t2 0 ist und bei t2, t3 über der Linie liegt

Jetzt werde ich eine Lösung vorschlagen, aber bitte überprüfen Sie dies mit jemandem, der flüchtige Kenntnisse der Mathematik hat.

Finde als erstes die Schnittstelle heraus, an der du interessiert bist (wenn ge-1/1/1):

snmpbulkwalk SWITCH ifDescr | grep ge-1/1/1

Dann sehen Sie die ifIndex-Nummer. Nehmen wir an, es ist '42'.

Dann mache etwas wie:

while true; do
  snmpbulkwalk SWITCH ifHCInOctets.42 >> DATA
  date >> DATA
  sleep 1
done

Analysieren Sie nun die Ergebnisse, um festzustellen, wie oft die Zähler im Durchschnitt tatsächlich aktualisiert werden. (Ich kann bei Bedarf ein Skript für die Analyse erstellen)

Dann kommt der Teil, in dem wir Mathe brauchen würden, aber ich werde eine naive Lösung vorschlagen.

Wenn Ihr Aktualisierungsintervall 10 Sekunden beträgt, wählen Sie das Feld alle 5 Sekunden aus, dh doppelt so oft wie aktualisiert. Dann wären Ihre Proben

t0, t5, t10, t15, t20, t25, t30

Dies wären nun Ihre Rohdaten, die Sie nicht verwenden würden, aber Sie würden lieber die tatsächlichen Samples auf diese Weise wiederherstellen

s1 = (t0+t5+t10)/3
s2 = (t10+t15+t20)/3
s3 = (t20+t25+t30)/3

Der Grund hierfür ist, dass wir über die Grenzen hinweg auslaufen möchten, um die Auswirkungen ungenauer Abfrageintervalle bei Ihrem Switch zu verringern.

Sie würden dann s1, s2, s3 zeichnen und Sie sollten ein viel flüssigeres / genaueres Ergebnis haben als das, was Sie jetzt sehen.

Ich bin mir jedoch sicher, dass dies kein neues Problem ist, und ich bin mir sicher, dass es eine formale Lösung gibt, um die optimale Genauigkeit wiederherzustellen. Leider liegt die Erstellung dieser Lösung außerhalb meiner Fähigkeiten. Etwas, für das die Leute von math.stackexchange besser gerüstet wären.

ytti
quelle
3

Da Sie mit der gleichen Rate abrufen, mit der die Zähler aktualisiert werden, sind Sie wahrscheinlich nicht synchron.

Durch konfigurieren

snmp-server hc poll <<hundredths of a second>>

Sie können das Intervall, in dem die SNMP-Zähler aktualisiert werden, auf etwa 1 Sekunde reduzieren. Dies sollte zu einem genaueren Wert für den Durchsatz führen, wenn Sie alle 10 Sekunden abfragen.

Zu Ihrer Information, dies ist ein versteckter Befehl.

Mike Marotta
quelle