【问题标题】:building an M3UA association with SCTP与 SCTP 建立 M3UA 关联
【发布时间】:2015-06-19 18:51:02
【问题描述】:

我想使用 Lksctp linux 开发一个 M3UA 关联,我也认为可以使用 openSS7 M3UA,但我不知道该怎么做。还有什么想法??? 感谢您的帮助。

【问题讨论】:

    标签: c linux fedora sctp


    【解决方案1】:

    您可以在 jdk-7(及更高版本)上将 lk-sctp 与 Netty 框架结合使用来实现 M3UA (RFC 4666)。 Netty-4.0.25-FINAL 是 SCTP 支持的稳定版本。

    所以组合是:

    • SCTP 堆栈:lk-sctp-1.0.16(基于 Red Hat Enterprise Linux Server 6.5 版(圣地亚哥))
    • JDK-7 或以上
    • Netty-4.0.25-FINAL

    还有你的应用程序。 SCTPClientHandler 的示例代码可以是:

        public class SctpClientHandler extends ChannelDuplexHandler {
    @Override
        public void userEventTriggered(ChannelHandlerContext ctx, Object evt)
                throws Exception {
            SctpChannel sctpChannel = (SctpChannel) ctx.channel();
            if (evt instanceof AssociationChangeNotification) {
                AssociationChangeNotification associationChangeNotification = (AssociationChangeNotification) evt;
                switch (associationChangeNotification.event()) {
                case CANT_START:
                //Do something
                break;
                case COMM_LOST:
               //
                case COMM_UP:
    
    
      } else if (evt instanceof PeerAddressChangeNotification) {
                    PeerAddressChangeNotification peerAddressChangeNotification = (PeerAddressChangeNotification) evt;
                int associationId = sctpChannel.association().associationID();
                switch (peerAddressChangeNotification.event()) {
                case ADDR_ADDED:
    }
    } else if (evt instanceof SendFailedNotification) {
    }
    
    @Override
        public void channelRead(ChannelHandlerContext ctx, Object msg)
                throws Exception {
            SctpMessage sctpMessage = (SctpMessage) msg;
            // Check if this is a M3UA message
            if (sctpMessage.protocolIdentifier() == 3) {
                // Send upstream - to M3UA
                ctx.fireChannelRead(sctpMessage);
            }
    
        }
    
    public void send(ByteBuf buffer, int streamId) {
            SctpMessage message = new SctpMessage(3, streamId, buffer);
            ctx.writeAndFlush(message);
        }
    
    public void send(ByteBuf buffer, int streamId, SocketAddress remoteAddress) {
            MessageInfo msgInfo = MessageInfo.createOutgoing(remoteAddress,
                    streamId);
            SctpMessage message = new SctpMessage(msgInfo, buffer);
            ctx.writeAndFlush(message);
        }
    
    public void send(ByteBuf buffer, int streamId, boolean unOrderedFlag) {
            SctpMessage message = new SctpMessage(3, streamId, buffer);
            message.messageInfo().unordered(unOrderedFlag);
            ctx.writeAndFlush(message);
    
        }
    
    public void send(ByteBuf buffer, int streamId, SocketAddress remoteAddress,
                boolean unOrderedFlag) {
            MessageInfo msgInfo = MessageInfo.createOutgoing(remoteAddress,
                    streamId);
            msgInfo.unordered(unOrderedFlag);
            SctpMessage message = new SctpMessage(msgInfo, buffer);
            ctx.writeAndFlush(message);
        }
        }
    

    SCTPServerHandler 也可以像上面那样创建。

    用于初始化 Bootstrap:

    bootstrap.group(worker)
                .channel(NioSctpChannel.class)
                 .option(SctpChannelOption.SCTP_NODELAY,true)
                  .handler(new ChannelInitializer<SctpChannel>() {
                    @Override
                    public void initChannel(SctpChannel ch) throws Exception {
                        ch.pipeline().addLast(
                                new SctpClientHandler());
                        ch.pipeline().addLast(new M3UAAspHandler());
                    }
                });
    

    这种组合的规模也很大。快乐编码。

    【讨论】:

      【解决方案2】:

      我觉得还是用 Mobicents jSS7 比较好

      【讨论】:

        猜你喜欢
        • 2015-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多