top button
Flag Notify
    Connect to us
      Site Registration

Site Registration

Is SCTP throughput really this low compared to TCP?

0 votes
687 views

I've been testing SCTP throughput between two nodes over a 10Gb-Ethernet backplane, and am finding that at best, its throughput is about a third of that of TCP. Is this number generally accepted for current LKSCTP performance?

All TCP/SCTP tests performed with 1000-byte (payload) messages, between 8-core Xeon nodes @ 2.13GHz, with no CPU throttling (always running at 100%) on otherwise idle systems. Test applications include netperf, iperf and proprietary in-house stubs.

The latency between nodes is generally 0.2 ms. Tests were run using this low-latency scenario, as well as using traffic control (tc) to simulate networks with 10 ms, 20 ms and 50 ms latency (i.e. 20 ms, 40 ms and 100 ms RTT, respectively).

In addition, each of these network scenarios were tested using various kernel socket buffer sizes, ranging from the default kernel size (100-200 kB), to several MB for send and receive buffers, and multiple send:receive ratios for these buffer sizes (generally using larger receive buffer sizes, up to a factor of about 6).

Finally, tests were performed on kernels as old as 3.4.2 and as recent as 3.14. The TCP throughput is about 3x higher than that of SCTP as a best-case scenario (i.e. from an SCTP perspective), and much higher still in worst-case scenarios.

posted Apr 10, 2014 by Navneet

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button

1 Answer

+1 vote

To do a more of apples-to-apples comparison, you need to disable tso/gso on the sending node.

The reason is that even if you limit buffer sizes, tcp will still try to do tso on the transmit size, thus coalescing you 1000-byte messages into something much larger, thus utilizing your MTU much more efficiently.

SCTP, on the other hand, has to preserve message boundaries which results in sub-optimal mtu utilization when using 1000-byte payloads.

My recommendation is to use 1464 byte message for SCTP on a 1500 byte MTU nic.

answer Apr 10, 2014 by Bob Wise
Thanks - I will give that a try. What about generic-receive-offload and large-receive-offload ?
They do help tcp a bit by allowing it to ack more data in one shot. If they are on, might make sense to turn them off.

I suppose sctp could benefit from GRO a bit...
Similar Questions
+4 votes

Out of three prominent advance transport protocols (TCP, UDP and SCTP) which is the best to use and why should i use that protocol ?

0 votes

Sometimes due to requirement, we have to chose one transport protocol either TCP or SCTP. What are all factors need to be considered while doing selection.

+3 votes

To establish a connection b/w to systems TCP handshake is happeing successfully, BUT SCTP handshake is not happening could any help me to solve this problem.

...