[erlang-questions] gen_sctp throughput mystery

Raimo Niskanen <>
Tue Mar 6 11:46:34 CET 2012


On Sun, Mar 04, 2012 at 01:19:00PM +1100, Anthony Shipman wrote:
> On Sun, 4 Mar 2012 12:43:49 pm Anthony Shipman wrote:
> > > The now() value shows the packets being written to the socket at 11ms
> > >  intervals on the client but they are received at strict 200ms intervals
> > > on the server. The server is just doing a simple receive loop.
> > >
> > > Is there something in SCTP that limits the rate on an SCTP stream?
> > 
> > I forgot to mention that the behaviour is the same for sctp_nodelay=true.
> > 
> 
> Replying to my own question. It's the net.sctp.sack_timeout = 200 kernel 
> parameter. But I don't understand why it should limit the server to 5 packets 
> per second over a localhost link.

Great finding if true... Can you elaborate? What happens when you tweak this
parameter? Note that 1 / 200ms is exactly 5 per second.

I found this link:
  http://sandarenu.blogspot.com/2009/11/reducing-time-between-sctp-message.html
And a quote from it it says:
  That 200ms is a configuration based on the SCTP RFC. According to that
  an acknowledgment(SACK) should be generated for at least every second
  packet received, and SHOULD be generated within 200 ms of the arrival
  of any unacknowledged DATA chunk.
So, might it be so that if you send just one data chunk there will be
a 200 ms delay before an ack?

I have focused on the SCTP socket API, not dug into the RFC:s...

> 
> -- 
> Anthony Shipman                    Mamas don't let your babies 
>                    grow up to be outsourced.
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions

-- 

/ Raimo Niskanen, Erlang/OTP, Ericsson AB



More information about the erlang-questions mailing list