Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Jul 2020 19:27:00 +0200
From:      Michael Tuexen <Michael.Tuexen@lurchi.franken.de>
To:        ticso@cicely.de
Cc:        freebsd-net@freebsd.org, Bernd Walter <ticso@cicely7.cicely.de>
Subject:   Re: SCTP problem, how to debug?
Message-ID:  <EE7DEB1F-D941-4FC2-91FB-7A1A3D3E11C3@lurchi.franken.de>
In-Reply-To: <20200717160739.GA79604@cicely7.cicely.de>
References:  <20200717160739.GA79604@cicely7.cicely.de>

next in thread | previous in thread | raw e-mail | index | archive | help


> On 17. Jul 2020, at 18:07, Bernd Walter <ticso@cicely7.cicely.de> =
wrote:
>=20
> I'm running an LED matrix with SCTP.
> The matrix consists from 24 raspberry pi running NFS-root FreeBSD
> 12.0-RELEASE (they have an SD card for u-boot and loader).
> A client system is running FreeBSD 12.1-RELEASE.
I fixed iterator related bugs and this was MFCed to stable/12 recently.
The problem was that the iterator stopped sending.
>=20
> The matrix modules have a one to many service socket.
> The daemon regularily sends status informations (temperature, etc.) to
> each association and has a second thread to receive.
>=20
> The client system has two deamons running.
>=20
> One daemon is to control power output related to temperature states.
> It has one thread reestablishing associations via sctp_connectx() to
> each of the 24 modules using a single one to many socket.
> Another thread collects all regular received data and updates stored
> values.
> Yet another thread sends power control data via SCTP_SENDALL, so that =
all modules know
> the maxed allowed brightness rating.
>=20
> The other daemon uses the same threads to reconnect and receive.
> It connects to the very same sockets on the modules.
> Another thread updates picture data and wanted power rating.
> That is sending picture data to the given matrix module and then
> SCTP_SENDALL an update trigger to all modules.
> That is reduced brightness at night times, ...
>=20
> All SCTP_SENDALL are just trigger with 0 length and different ppid =
values.
Are you really sending messages of length 0? That shouldn't work...
>=20
> =46rom time to time (1-5 days) I notice that a module won't get =
updates
> anymore.
> I see that the association got a SCTP_SENDER_DRY_EVENT event.
> Therefor my expectation is that there is nothing to send.
> I still see the association in the socket list and also receive the =
regular
> temperature data.
> However, obviously sending won't happen.
> The other modules still get data.
>=20
> When I restart the client daemon, things start to work again.
>=20
> Currently I'm clueless on how to debug this problem any fsurther.
Can you try stable/12?
> Doing a full network log would be too big and I'm not very experienced
> to understand the SCTP packets.
> I have no idea to see what data is in the send buffer.
> netstat with TCP would show send and receive queue, not so with SCTP.
> Data is send with a single thread, which sctp_sendmsgx() the data for
> all modules sequencially into the same socket.
I'm not sure I understood what you are actually doing on which socket
and how many associations are involved.

Best regards
Michael
> I havn't checked yet if I get an error with the write to the specific
> module IP.
>=20
> --=20
> B.Walter <bernd@bwct.de> http://www.bwct.de
> Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.
> _______________________________________________
> freebsd-net@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?EE7DEB1F-D941-4FC2-91FB-7A1A3D3E11C3>