Also ein weiterer Tag des Debuggens und schließlich habe ich eine Erklärung.
1) Die SAEAS feuerten das abgeschlossene Ereignis nicht ab, weil sie nicht mehr senden konnten. Dies zeigt, dass Wireshark auf das TCP -Fensterentleer zurückzuführen ist. (TCP Zerowindow)
2) Das TCP -Fenster entleerte sich, da die Netzwerkschicht ein Ereignis in den Stapel weitergab, der zu lange dauerte, dh es gibt keinen Produzenten/Verbraucher zwischen der Netzwerkschicht und der Benutzeroberfläche. Daher müsste das Netzwerk -OP auf das Zeichnen des Bildschirms warten, bevor das ACK gesendet wird.
3) Die Veranstaltung, die zu lange dauerte, war ein Bildschirmaufzug in einem Event -Handler auf der GUI. Das Test -Rig war ein Konsolenfenster (eines, das eingehende Nachrichten zusammenfasste). Deshalb verursachte es also kein Problem bei einer viel höheren Last. Es ist normal, den Bildschirm bei jeder Nachricht nicht neu zu zeichnen, aber dies geschah, weil das Projekt noch nicht ganz fertig ist. Die Neuausfahrtsrate wäre später festgelegt worden.
4) Die kurzfristige Lösung besteht einfach darin, sicherzustellen, dass keine GUIs die Show hochhält. Eine robustere Lösung könnte darin bestehen, einen Produzenten/Verbraucher auf der Netzwerkebene zu erstellen.