我正在尝试构建一个使用sctp的SS7网络实体,我的问题是我应该如何设计用于路由到GT或PC上的每个关联的路由表。
例如,假设这个实体连接到2个STP,每个STP有2个关联
node1 (thread 1) ----association 1---->STP1
node1 (thread 2) ----association 2---->STP1
node1 (thread 3) ----association 1---->STP2
node1 (thread 4) ----association 2---->STP2
如上所示,每个线程都有一个关联,因此我正在考虑与所有线程共享每个关联的文件描述符,然后可以将流量发送到任何关联(当然具有锁定机制),因为该关联在这里被视为链接集,同样基于点代码或GT。
或在一个进程中创建所有关联,然后仅基于其描述符发送给每个关联,而无需多线程处理。
环境是Linux,语言是C
另外请注意,除了上述2种方法外,我还可以使用其他任何方法。
最佳答案
假设您的目标是实现均匀的负载共享和针对STP或网络故障的弹性,则每个线程都需要与每个STP关联。因此,我将在线程之间共享文件描述符。
请记住,SS7期望在MTP SLS上执行负载共享,以确保通过网络按顺序交付。
如果我正在开发SS7应用程序,那么我将研究第三方协议栈,例如Dialogic提供的协议栈,您可以从其网站下载和试用。这在Linux(或Solaris和Windows)中可用,并提供基于消息的API,该API允许您的应用程序为多线程或单线程等。它们支持SCTP,M3UA,M2PA,SUA,MTP3,SCCP,TCAP,INAP,MAP ,ISUP等。
关于c - SCTP协会,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13832273/