[CentOS] Memory issue in kernel sctp implementation

Wed Mar 4 12:25:00 UTC 2015
Danny Smit <danny.smit.0 at gmail.com>

Dear all,

I'm running into a possible memory issue with the SCTP implementation
in CentOS 6, using lksctp-tools. So far I've not seen the problem with
other distributions yet.

The problem is that whenever a SCTP client connection is initiated to
a second host and port at which no SCTP server application is
listening

The scenario is simple:
- call socket() to create a socket.
- call sctp_connectx() to establish a connection.

The last call is repeated periodically to retry to establish a connection.

When looking on the wire using wireshark it shows that an SCTP INIT
packet is sent to the second host, which replies with an SCTP ABORT.

This is exactly according to the SCTP specification. However it
appears ABORT isn't propagated into to application layer that calls
sctp_connectx().

Furthermore, because reconnect attempts are made, a steady memory
increasement occurs. Looking at /proc/meminfo, the increasement occurs
in SUnreclaim, the kernel slab cache.

Can you advice if this can be an issue with the SCTP implementation in
the kernel? Maybe an issue solved upstream, but not (yet) backported
into centos 6?

It applies to the following package versions (also to older kernels):

- kernel-2.6.32-504.8.1.el6.x86_64
- lksctp-tools-1.0.10-7.el6.x86_64

Regards,

Danny Smit