Wireshark Malformed Packet
Hallo,
ich versuche einem Problem auf die Spur zu kommen, das aus mehreren kleinen Problem zu bestehen scheint. Sozusagen eine Matroschka unter den Problemen.
Folgendes:
Grober Aufbau...
In VLAN 10 befinden sich etwa 10 Rechner die auf einen Datenbankserver (Firebird DB SuperServer 3.0) per OBDC-Treiber zugreifen. Nun passiert es immer wieder das Anwender auf bestimmte Datensätze nicht mehr zugreifen können und es im firebird.log zum Fehler "read errno = 10054". Das lässt darauf schließen das der Firebird-Prozess auf ein Commit wartet, das aber nicht mehr kommt, da der Client die Verbindung verloren hat. Dies endet damit, das die Datenbank einen Lock erfährt.
Ich konnte zwar mittlerweile durch Optimierung des Firebird-Servers die Performance verbessern und die Symptome weitestgehend lindern, doch gibt es immer noch vereinzelt das Problem. Meist kann dies dann kurzfristig nur durch einen Neustart des Firebird-Servers behoben werden. Mittlerweile denke ich das es noch zusätzlich ein Netzwerk-Problem gibt.
Leider ist das Log nicht wirklich ergiebig und die Möglichkeiten mit Firebird sehr eingeschränkt. Es gibt dort keine, zumindest mir nicht bekannte, Möglichkeit herauszufinden welcher Rechner genau das Problem hat.
Auf dem DB-Server habe ich dann mit Wireshark einen Mitschnitt erstellt, ungefähr 25 Minuten... Experteninformation:
Es wurden nur die Aktivitäten auf Port TCP 3050 mitgeschnitten. Die Malformed Packets bestehen in beide Richtungen zu und von fast allen Clients. Deshalb schließe ich mittlerweile eine Fehlkonfiguration oder einen Defekt eines Switches nicht aus. Aber auch eine fehlerhafte Client-Software wäre möglich.
Bin mir nicht sicher ob das der Fehler ist den ich suche und ob es sich überhaupt um ein Problem handelt. Beim SMPP scheint es normal zu sein, da hier meist das Packet mit dem letzten Fragment der Übertragung angezeigt wird.
Auf den Access-Switchen (SG200 und SG350X, siehe Zeichnung) sind keine Fehler auf den Schnittstellen vorhanden. Selbes Bild auf dem Brocade, jeweils die Schnittstelle vom Server und den Uplinks zu den Access-Switchen geprüft. Hier mal ein Auszug von der Schnittstelle des Servers:
Statistik
Die Auslastung steigt über den Tag kaum auf über 2%. DSCP/QoS ist auf der Schnittstelle des Servers, der Switche und der Clients aktiviert. Die Pakete auf Port 3050 sind aber derzeit nicht markiert. Die LWL-Uplinks sind ebenfalls kaum beansprucht. Habe die Windows Firewall zu Testzwecken deaktiviert, aber keine Veränderung. Da sich der Server ebenfalls im VLAN 10 befindet und somit sich alles im selben L2-Segment abspielt, sehe ich den pfSense weniger als Problem.
Latenzen mit ICMP und DSCP 0 zum entferntesten Rechner bei 0,62ms mit 500x 4K-Blöcken übertragen. Durchsatz bei 110MB/s.
Patchkabel der Client-Arbeitsplätze weitestgehend erneuert. Treiber up-to-date. Rechner sind etwas betagt, aber jetzt auch nicht "Asbach Uralt".
Nächste Maßnahme wäre ein Mitschnitt auf einem Client-Rechner, aber da ich es nicht eingrenzen kann, wäre das ins "Blaue" raten.
Was könnte man noch prüfen? Sind die angezeigten Fehler überhaupt ein Problem?
Gruß
ich versuche einem Problem auf die Spur zu kommen, das aus mehreren kleinen Problem zu bestehen scheint. Sozusagen eine Matroschka unter den Problemen.
Folgendes:
Grober Aufbau...
In VLAN 10 befinden sich etwa 10 Rechner die auf einen Datenbankserver (Firebird DB SuperServer 3.0) per OBDC-Treiber zugreifen. Nun passiert es immer wieder das Anwender auf bestimmte Datensätze nicht mehr zugreifen können und es im firebird.log zum Fehler "read errno = 10054". Das lässt darauf schließen das der Firebird-Prozess auf ein Commit wartet, das aber nicht mehr kommt, da der Client die Verbindung verloren hat. Dies endet damit, das die Datenbank einen Lock erfährt.
Ich konnte zwar mittlerweile durch Optimierung des Firebird-Servers die Performance verbessern und die Symptome weitestgehend lindern, doch gibt es immer noch vereinzelt das Problem. Meist kann dies dann kurzfristig nur durch einen Neustart des Firebird-Servers behoben werden. Mittlerweile denke ich das es noch zusätzlich ein Netzwerk-Problem gibt.
Leider ist das Log nicht wirklich ergiebig und die Möglichkeiten mit Firebird sehr eingeschränkt. Es gibt dort keine, zumindest mir nicht bekannte, Möglichkeit herauszufinden welcher Rechner genau das Problem hat.
Auf dem DB-Server habe ich dann mit Wireshark einen Mitschnitt erstellt, ungefähr 25 Minuten... Experteninformation:
Es wurden nur die Aktivitäten auf Port TCP 3050 mitgeschnitten. Die Malformed Packets bestehen in beide Richtungen zu und von fast allen Clients. Deshalb schließe ich mittlerweile eine Fehlkonfiguration oder einen Defekt eines Switches nicht aus. Aber auch eine fehlerhafte Client-Software wäre möglich.
Bin mir nicht sicher ob das der Fehler ist den ich suche und ob es sich überhaupt um ein Problem handelt. Beim SMPP scheint es normal zu sein, da hier meist das Packet mit dem letzten Fragment der Übertragung angezeigt wird.
Auf den Access-Switchen (SG200 und SG350X, siehe Zeichnung) sind keine Fehler auf den Schnittstellen vorhanden. Selbes Bild auf dem Brocade, jeweils die Schnittstelle vom Server und den Uplinks zu den Access-Switchen geprüft. Hier mal ein Auszug von der Schnittstelle des Servers:
SSH@ICX7250-24 Switch#sh int e 1/1/6
GigabitEthernet1/1/6 is up, line protocol is up
Port up for 5 hour(s) 21 minute(s) 13 second(s)
Hardware is GigabitEthernet, address is 609c.9fXX.XXXX (bia 609c.9fXX.XXXX)
Configured speed 1Gbit, actual 1Gbit, configured duplex fdx, actual fdx
Configured mdi mode AUTO, actual MDIX
EEE Feature Disabled
Member of L2 VLAN ID 10, port is untagged, port state is FORWARDING
BPDU guard is Disabled, ROOT protect is Disabled, Designated protect is Disabled
Link Error Dampening is Disabled
STP configured to ON, priority is level0, mac-learning is enabled
Flow Control is config enabled, oper enabled, negotiation disabled
Mirror disabled, Monitor disabled
Mac-notification is disabled
Not member of any active trunks
Not member of any configured trunks
Port name is firebird
IPG MII 96 bits-time, IPG GMII 96 bits-time
MTU 1500 bytes
MMU Mode is Store-and-forward
300 second input rate: 3901264 bits/sec, 565 packets/sec, 0.39% utilization
300 second output rate: 611352 bits/sec, 375 packets/sec, 0.06% utilization
20427754 packets input, 19514919625 bytes, 0 no buffer
Received 94 broadcasts, 902 multicasts, 20426758 unicasts
0 input errors, 0 CRC, 0 frame, 0 ignored
0 runts, 0 giants
12326764 packets output, 2104320437 bytes, 0 underruns
Transmitted 4505 broadcasts, 29751 multicasts, 12292508 unicasts
0 output errors, 0 collisions
Relay Agent Information option: Disabled
Protected: No
MAC Port Security: Disabled
UC Egress queues:
Queue counters Queued packets Dropped Packets
0 12287379 0
1 325 0
2 31 0
3 0 0
4 4099 0
5 7 0
6 3 0
7 9934 0
MC Egress queues:
Queue counters Queued packets Dropped Packets
0 15435 0
1 178 0
2 9373 0
3 0 0
Statistik
SSH@ICX7250-24 Switch#sh statistics e 1/1/6
Port Link State Dupl Speed Trunk Tag Pvid Pri MAC Name
1/1/6 Up Forward Full 1G None No 10 0 609c.9fXX.XXXX firebird
Port 1/1/6 Counters:
InOctets 19565903357 OutOctets 2111934779
InPkts 20485226 OutPkts 12363506
InBroadcastPkts 94 OutBroadcastPkts 4512
InMulticastPkts 904 OutMulticastPkts 29848
InUnicastPkts 20484228 OutUnicastPkts 12329146
InBadPkts 0
InFragments 0
InDiscards 0 OutErrors 0
CRC 0 Collisions 0
InErrors 0 LateCollisions 0
InGiantPkts 0
InShortPkts 0
InJabber 0 OutDiscards 0
InFlowCtrlPkts 0 OutFlowCtrlPkts 0
InBitsPerSec 4474592 OutBitsPerSec 715128
InPktsPerSec 645 OutPktsPerSec 427
InUtilization 0.45% OutUtilization 0.07%
Die Auslastung steigt über den Tag kaum auf über 2%. DSCP/QoS ist auf der Schnittstelle des Servers, der Switche und der Clients aktiviert. Die Pakete auf Port 3050 sind aber derzeit nicht markiert. Die LWL-Uplinks sind ebenfalls kaum beansprucht. Habe die Windows Firewall zu Testzwecken deaktiviert, aber keine Veränderung. Da sich der Server ebenfalls im VLAN 10 befindet und somit sich alles im selben L2-Segment abspielt, sehe ich den pfSense weniger als Problem.
Latenzen mit ICMP und DSCP 0 zum entferntesten Rechner bei 0,62ms mit 500x 4K-Blöcken übertragen. Durchsatz bei 110MB/s.
Patchkabel der Client-Arbeitsplätze weitestgehend erneuert. Treiber up-to-date. Rechner sind etwas betagt, aber jetzt auch nicht "Asbach Uralt".
Nächste Maßnahme wäre ein Mitschnitt auf einem Client-Rechner, aber da ich es nicht eingrenzen kann, wäre das ins "Blaue" raten.
Was könnte man noch prüfen? Sind die angezeigten Fehler überhaupt ein Problem?
Gruß
Please also mark the comments that contributed to the solution of the article
Content-Key: 634277
Url: https://administrator.de/contentid/634277
Printed on: April 25, 2024 at 08:04 o'clock
14 Comments
Latest comment
Vorab ein paar Fragen zur Infrastruktur an sich:
- Ist das VLAN 10 vom Server Netz (Firebird) segementiert ? Wenn ja, wer routet ?
- Gibt es redundante Links ? Wenn ja nutzt du Spanning Tree und welchen STP ?
- Wenn STP hast du beachtet das der ICX ein inkompatibles Spanning Tree zum Cisco benutzt und das entsprechende angepasst bzw. berücksichtigt ?
Nein, ist nicht segmentiert.
Also ein komplett flaches, dummes Netz. Hoffentlich liegst du dann bei nicht mehr als 100, max. 150 Clients pro Netz. Wenn mehr wäre eine Segmentierung natürlich sinnvoller.STP ist auch OK, das kann man ausschliessen
Switches sind alle auf dem aktuellen bzw. recommended Release ?
- ICX 8.0.90h (h Patch !)
- SG350X 2.5.5.47
- SG200 1.4.11.5
Solche Fehler sind immer nicht ganz einfach. Um die bestehende Infrastruktur wirklich vollständig ausschliessen zu können müsstest du 1 oder 2 Testclients einmal direkt an den Server patchen und vergleichen.
Malformed Pakete sind auch nicht immer zwingend ein Netzwerk Fehler sondern könnten auch simple Anzeige Fehler sein:
https://www.wireshark.org/docs/wsug_html_chunked/AppMessages.html#_malfo ...
Du solltest dringenst auch den ICX Core auf die recommendete 8.0.90h (h Patch !) updaten. Die 8.0.7er ist uralt und hat keinen Support mehr und hatte ein paar STP Bugs und LACP Fixes. Gut, die FW ist nicht involviert in die Kommunikation aber das solltest du schon machen.
Per USB Stick ist das 3 Minuten Sache mit einer Downtime.
Es ist so oder so empfehlenswert denn Ruckus wird über kurz oder lang alles auf das neue UFI Format umstellen was auch den Bootloader automatisch mit updatet.
Achtung beim Update aufs UFI das muss mit einem Zwischenschritt passieren:
Per USB Stick ist das 3 Minuten Sache mit einer Downtime.
Es ist so oder so empfehlenswert denn Ruckus wird über kurz oder lang alles auf das neue UFI Format umstellen was auch den Bootloader automatisch mit updatet.
Achtung beim Update aufs UFI das muss mit einem Zwischenschritt passieren:
- Firmware Image ZIP File für 8.0.90h runterladen und non UFI Imagename und Bootloader Code rauskopieren.
- An den Cisco Ports unbedingt gig-default neg-off konfigurieren bei 1Gig SFPs !!
- Switch mit dem non UFI Image updaten ebenso den Bootloader und checken das im Stack alle Member die neue SW und Bootloader geladen haben. (show ver und show flash)
- Rebooten
- Wenn der Stack wieder gebootet hat wiederholst du die Update Prozedur mit dem UFI Image nochmal. Du wirst sehen das nach dem Upload automatisch der aktuelle UFI Bootloader extrahiert und upgedatet wird.
- Dann Switch final auf das UFI Image booten
Gut, du hast ja wohl hoffentlich das neue Image ins Secondary geflasht, dann kannst du einfach wieder aus dem Primary booten und gut iss. Aber das ist nicht nötig... Immer ruhig Blut !
Mit der neuen Firmware musst du bei Fremdherstellern einfach nur ein gig-default neg-off auf den SFP Ports konfigurieren, dann sollte das sofort wieder klappen.
So sieht der Port dann aus:
!
interface ethernet 1/2/2
port-name LWL Uplink Cisco SG
gig-default neg-off
!
Sorry hatte ich oben vergessen zu erwähnen !
Mit der neuen Firmware musst du bei Fremdherstellern einfach nur ein gig-default neg-off auf den SFP Ports konfigurieren, dann sollte das sofort wieder klappen.
So sieht der Port dann aus:
!
interface ethernet 1/2/2
port-name LWL Uplink Cisco SG
gig-default neg-off
!
Sorry hatte ich oben vergessen zu erwähnen !
Zu 1.)
Ja, da hast du recht. Wenn du das UFI Image in das Secondary flashst sollte in jedem Falle dort auch der aktuelle 10.1.18er Boot Code geflasht sein.
Ggf. wieder holst du das nochmal. Falls es nicht klappt mal mit einem Unit spezifischen Flashen (unit x) am Kommando. Die Boot Codes sollten identisch sein. Kannst du ja auch beim UFI Flash Prozess im CLI mit den dortigen Terminal Messages (ggf. term mon eingeben wenn du Telnet oder SSH machst) sehen das er nach dem Image auch noch den Bootcode flasht.
Zu 2.)
Hast du zusätzlich zu gig-default neg-off auch testweise mal den Spoeed auf 1G dort forciert mit speed 1000 ? Wenn das ein 1 G Port ist solltest du das besser mal machen.
Die Interface Statistiken sehen sonst absolut sauber aus.
Ja, da hast du recht. Wenn du das UFI Image in das Secondary flashst sollte in jedem Falle dort auch der aktuelle 10.1.18er Boot Code geflasht sein.
Ggf. wieder holst du das nochmal. Falls es nicht klappt mal mit einem Unit spezifischen Flashen (unit x) am Kommando. Die Boot Codes sollten identisch sein. Kannst du ja auch beim UFI Flash Prozess im CLI mit den dortigen Terminal Messages (ggf. term mon eingeben wenn du Telnet oder SSH machst) sehen das er nach dem Image auch noch den Bootcode flasht.
Zu 2.)
Hast du zusätzlich zu gig-default neg-off auch testweise mal den Spoeed auf 1G dort forciert mit speed 1000 ? Wenn das ein 1 G Port ist solltest du das besser mal machen.
Die Interface Statistiken sehen sonst absolut sauber aus.
und dann auf den Secondary (Primary derzeit gebootet mit UFI) einfach nochmal das UFI-Image drüberbügeln?
Richtig, einfach nochmal im Secondary rübermangeln...und dort unterschiedliche Firmware-Versionen und Boot Codes drauf liegen?
Er wird vermutlich normal booten aber dir auf der Konsole eine Fehlermeldung geben das das nicht das zum UFI Image gebundelte Boot Image ist und du doch bitte nochmals auf das UFI Image updaten sollst.Booten wird er weil das ja der "Transfer" Bootloader ist der UFI und non UFI bootet.