Evening folks!
Working on a project that utilizes SCTP on Fedora/BSD and Open Solaris.
It has multiple endpoints and multiple local IPs, so multi-homing is being
used. The 'original' code was written and tested first on a Fedora Core 8
machine and 'ported' to the Open Solaris servers.
It pretty much works, with the obvious caveats and differences between the
OS's taken into account.
Where we fall down is on an intial sctp_connectx call to create the
association at the 'client' end (the side that starts the process going).
The version of Open Solaris (10) we are using does not have a sctp_connectx
call built into the OS, so we took the function from the Fedora side, and are
using it within the application itself.
It works perfectly on all the systems when the links are all 'alive', and
happy. The 2 machines connect, negotiate, and do their thing (which amounts
to transferring files from a remote server to the client - pulling) as they
should. We can even break links during the transfers and they will switch to
the other link as expected with multi-homing SCTP. All expected results.
BUT. On the Fedora/BSD machines, if the primary link (in our case, the first
IP in the connectx IP list - not set as Primary explicitly) is down at
program startup, sctp_connectx still connects to the other link that is alive
and starts transferring data. When (and if) the primary link returns - it
even swaps to that link to finish the transfer. That is what I assume to be
proper procedure for SCTP.
On Open Solaris it does not initiate the connection or create what would be a
useable association, if the first IP is down and unresponsive during the init
phase (using sctp_connectx), it actually just sits there until it times out.
The server end (the far end) never sees a connection attempt either. After 45
to 60 seconds, the client times out and stops.
The odd part is that sctp_connectx returns a '0' as if it succeeded in both
cases - 1) when all the links are UP and 2) When the 'first' IP is down.
So after that LONG winded entrance - is the SCTP suite on Open Solaris doing
something different even using the same sctp_connectx code from Fedora (which
BTW looks the same as others I have seen for OS7 and other systems) and
somehow not going to the second IP and starting the connection? Or perhaps is
there is a different way to do this on Open Solaris?
Using connect() in its 'raw' state takes FAR too long to timeout to be useful
in testing the links - I tried that.
Any insight, help or direction steering would be GREATLY appreciated! Just
seems very weird that the sctp_connectx function works fine when the links are
all up, but not when one is down at association building time.
Thanks in advance.
Regards,
Jerome
PS. I dug through the bowels of the Internet, and did not find anything
useful in this case, so I am asking here!
--
FRWS WebMail (http://www.frws.com)
Cause you deserve Spam and Virus free email...
_______________________________________________
sctp-discussion mailing list
sctp-discussion AT sctp.de
http://www.sctp.de/mailman/listinfo/sctp-discussion
Archive powered by MHonArc 2.6.19+.