SCTP association

2019-08-28 04:26发布

问题:

I'm trying to build an SS7 network entity that uses sctp, my question is how should I design the routing table used to route to each association in both route on GT or route on PC.

So for example let's say that this entity is connected to 2 STPs, 2 associations to each STP

node1 (thread 1)  ----association 1---->STP1
node1 (thread 2)  ----association 2---->STP1

node1 (thread 3)  ----association 1---->STP2
node1 (thread 4)  ----association 2---->STP2

As shown above each thread has one association, so I was thinking of sharing the file descriptor of each association with all threads, then I can send the traffic to any association(of course with a lock mechanism),as the association is treated here as link-set, again based on the point code or the GT.

Or create all association in one process and just send to each association based on it's descriptor with no multi-threading of course.

The environment is Linux and language is C And please note I can use any other idea other than the above 2.

回答1:

On the assumption that your goal is to achieve even load sharing and resilience against STP or network failures then each thread needs an association to each STP. Therefore I would share the file descriptors between threads.

Remember that SS7 expects load sharing to be performed on the MTP SLS to ensure in-sequence delivery through the network.

If I were developing an SS7 application I would look at third party protocol stacks such as that available from Dialogic which you can download and trial from their web site. This is available in Linux (or Solaris and Windows) and provides a message based API which allows your application to be multi-threaded or single threaded etc. They support SCTP, M3UA, M2PA, SUA, MTP3, SCCP, TCAP, INAP, MAP, ISUP and more.