- Beiträge
- 9.191
- Reaktionspunkte
- 2.950
-> Hier kostenlos registrieren
Hi,
mein Plan ist es, Wireshark um ein paar Statistik-Funktionen für Profinet zu erweitern, um damit in der Praxis ein paar nützliche Aussagen über das Netzwerk treffen zu können.
Solche Statitstikfunktionen sind in Wireshark für ausgewählte Netzwerkprotokolle schon vorhanden. In etwa vergleichbar wäre das Protokoll RTP (Real-Time Transport Protocol) für Medienstreams (übrigens ganz witzig, Wireshark kann aus einem Netzwerkmitschnitt die übertragenen Audiodaten abspielen).
Meine bisherige Liste an Daten die interessant sind, wären:
1) Netzwerkauslastung anteilig Profinet / restliche Netzwerklast
2) Anzahl der Pakete einer Konversation (Quell-MAC zu Ziel-MAC)
3) Min/Max/Mittelwert Jitter in ms
4) Anzahl der Watchdog-Timeout-Fehler
5) Erfassung der Teilnehmernamen (falls ein Konfigurationstelegramm in der Aufzeichnung vorhanden ist)
Zu 1) Die Funktion ist in Wireshark schon vorhanden. Über Statistics -> Protocol Hierarchie bekommt man eine Balkendarstellung in dem die Protokolle die in dieser Datei erfasst wurden aufgelistet werden. Mit Anteilen in %, in kbit/s usw.
Punkt 3) berechne ich aus dem Unterschied des PN-Cyclecounters aus zwei aufeinander folgenden Telegrammen, und dem Unterschied zwischen den Zeitstempeln zu denen diese Telegramme erfasst wurden. Die Genauigkeit hängt dabei davon ab, wie genau das Betriebssystem die Zeitstempel einträgt. USB-Netzwerkadapter sind darum aufgrund der zusätzlichen Latenzen zu vermeiden.
Fragen:
- Welche Statuswerte führen noch zu einem Erhöhen des Fehlerzählers? Der Jitter würde dann ab diesem Punkt neu berechnet.
Bisher habe ich als Bedingung:
pn_rt.frame_id == 0xfe01 and pn_io.error_code1 == 253 and pn_io.error_code2 == 5
welche ich bisher immer bei meinen Aufzeichnungen gesehen habe, wenn ein Teilnehmer ausfällt.
Vielleicht hat jemand Zugriff auf die Profinet-Spec und kann mal nachsehen was dort für den Fall festgelegt wurde.
- Welche Informationen könnte man noch sammeln?
Bisher mache ich die Analyse statisch mit einem Python-Skript. Wenn die Funktion feststeht werde ich mich daran machen das in Wireshark zu integrieren.
Aus der Wireshark-Aufzeichnung aus diesem Thread (https://www.sps-forum.de/simatic/63239-profinet-sporadischer-teilnehmerausfall.html) bekomme ich z. Zt. die folgende Informationen extrahiert:
mein Plan ist es, Wireshark um ein paar Statistik-Funktionen für Profinet zu erweitern, um damit in der Praxis ein paar nützliche Aussagen über das Netzwerk treffen zu können.
Solche Statitstikfunktionen sind in Wireshark für ausgewählte Netzwerkprotokolle schon vorhanden. In etwa vergleichbar wäre das Protokoll RTP (Real-Time Transport Protocol) für Medienstreams (übrigens ganz witzig, Wireshark kann aus einem Netzwerkmitschnitt die übertragenen Audiodaten abspielen).
Meine bisherige Liste an Daten die interessant sind, wären:
1) Netzwerkauslastung anteilig Profinet / restliche Netzwerklast
2) Anzahl der Pakete einer Konversation (Quell-MAC zu Ziel-MAC)
3) Min/Max/Mittelwert Jitter in ms
4) Anzahl der Watchdog-Timeout-Fehler
5) Erfassung der Teilnehmernamen (falls ein Konfigurationstelegramm in der Aufzeichnung vorhanden ist)
Zu 1) Die Funktion ist in Wireshark schon vorhanden. Über Statistics -> Protocol Hierarchie bekommt man eine Balkendarstellung in dem die Protokolle die in dieser Datei erfasst wurden aufgelistet werden. Mit Anteilen in %, in kbit/s usw.
Punkt 3) berechne ich aus dem Unterschied des PN-Cyclecounters aus zwei aufeinander folgenden Telegrammen, und dem Unterschied zwischen den Zeitstempeln zu denen diese Telegramme erfasst wurden. Die Genauigkeit hängt dabei davon ab, wie genau das Betriebssystem die Zeitstempel einträgt. USB-Netzwerkadapter sind darum aufgrund der zusätzlichen Latenzen zu vermeiden.
Fragen:
- Welche Statuswerte führen noch zu einem Erhöhen des Fehlerzählers? Der Jitter würde dann ab diesem Punkt neu berechnet.
Bisher habe ich als Bedingung:
pn_rt.frame_id == 0xfe01 and pn_io.error_code1 == 253 and pn_io.error_code2 == 5
welche ich bisher immer bei meinen Aufzeichnungen gesehen habe, wenn ein Teilnehmer ausfällt.
Vielleicht hat jemand Zugriff auf die Profinet-Spec und kann mal nachsehen was dort für den Fall festgelegt wurde.
- Welche Informationen könnte man noch sammeln?
Bisher mache ich die Analyse statisch mit einem Python-Skript. Wenn die Funktion feststeht werde ich mich daran machen das in Wireshark zu integrieren.
Aus der Wireshark-Aufzeichnung aus diesem Thread (https://www.sps-forum.de/simatic/63239-profinet-sporadischer-teilnehmerausfall.html) bekomme ich z. Zt. die folgende Informationen extrahiert:
Code:
Src MAC Dst MAC Packets[#] Min-Jitter[ms] Max-Jitter[ms] Mean-Jitter[ms] Min in Frame[#] Max in Frame[#] Errors[#]
----------------------------------------------------------------------------------------------------------------------------------------------
00:20:d5:01:19:45 00:30:de:06:66:f1 5240 0.000032 2.968040 0.074671 4905 4501 0
ec:e5:55:33:77:75 00:20:d5:01:19:45 4 31.868956 32.189152 32.035372 31549 31546 1
00:30:de:06:67:1b 00:20:d5:01:19:45 5 0.002893 0.104937 0.048654 31524 31543 1
00:30:de:06:66:f1 00:20:d5:01:19:45 5227 0.000032 4.113880 0.058599 1535 4313 1
00:30:de:06:66:9f 00:20:d5:01:19:45 5228 0.000032 0.889984 0.061982 320 21933 1
00:20:d5:01:19:45 00:30:de:06:66:fa 5241 0.000032 4.114119 0.073236 1266 4312 0
00:20:d5:01:19:45 00:30:de:06:66:9f 5241 0.000032 3.042969 0.071416 787 4308 0
00:30:de:06:67:06 00:20:d5:01:19:45 2 0.037941 0.037941 0.037941 31529 31529 1
00:30:de:06:a8:33 00:20:d5:01:19:45 3 0.017134 0.083891 0.050512 31530 31538 1
00:30:de:06:66:fa 00:20:d5:01:19:45 5228 0.000032 0.968012 0.060594 1457 30099 1
00:30:de:06:66:a5 00:20:d5:01:19:45 3 0.010046 0.034061 0.022054 31528 31537 1
MAC-Adresse Device-Name
----------------------------------------------------------------------------------------------------------------------------------------------
00:30:de:06:66:fa montagekanuelekappe
00:30:de:06:66:9f zufuehrungkanuele
00:30:de:06:66:f1 kanalkanuelekappe