I am using Linux SCTP Stack. Currently on the same Linux machine I need to deploy a process which uses non OS SCTP STACK.开发者_运维问答 (i.e. it opens a RAW socket and then handles transport level message on its own). When SCTP Init comes Linux gives the packet to both processes. Can this be avoided? I don't want Linux SCTP to handle message which are not used by it. (used by other Non OS SCTP Stack) Is this possible?
More generally when faced with this kind of issue there are three options:
1) Stop the Linux SCTP module from being loaded at boot time (Note: it cant be unloaded at run time) and just use the non-OS implementation. 2) Some how preconfigure each SCTP implementation to know which associations it owns and to ignore messages for others. 3) Port the non-OS system to use the Linux implementation.
Any actively supported Linux system using SCTP is going to have issues if it does not offer the third option.
Note: If you are using the Dialogic Non-OS SCTP implementation on Linux then you can easily switch to using their OS wrapped version 'SCTPN'.
Regards
This may not be an option, but having the non-lksctp process use UDP tunnelling of SCTP works very well for us. The (commercial) stack we use is configurable for SCTP over UDP, or SCTP over IP (with raw sockets, like you).
精彩评论