socketsnetwork-programmingsctpmultihomedmultipath

SCTP : transmitting with both interfaces at the same time


On my machine, I have 2 interfaces connected to another machine with 2 interfaces as well. I want to use both interfaces at the same time to transfer data. From SCTP view, each machine is an endpoint. So, I used a one-to-one socket. On the server side, I tried to bind INADDR_ANY as well as bind() the first and bindx() the second. On the client side, I tried connect() and connectx(). Whatever I tried, SCTP use only one of the two interfaces at a given time.

I also tested the sctp function on Iperf and the test app in the source code. Nothing works.

What am I missing here? Do you have to send each packet by hand from one or the other address and to one or the other address?

There surely must have a function where you can build several streams where each stream allows the communication between a pair of specific addresses. Then when you send a packet, SCTP chooses automatically which stream to send the packet in.

Thanks in advance!


Solution

  • What you are asking for called concurrent multipath transfer, feature that isn't supported by SCTP (at least not per RFC 4960). As described in RFC 4960 by default SCTP transmits data over the primary path. Other paths are meant to be monitored by heartbeats and used when transmission over primary path fails.