使用 RestComm Jdiameter 实现 s6a 直径端点

Implementing s6a diameter endpoint using RestComm Jdiameter

我是 Diameter 的新手,我需要一个测试应用程序来模仿 HSS 行为并在 s6a 接口上向 MME 发送一些直径请求。

我已经检查了 seagull 工具,但它有一些问题,因为 seagull 假设客户端总是发起请求。但在我的例子中,有一个限制,即 MME 总是发起 CER 请求。

我正在检查替代品,我遇到了 RestComm JDiameter,但我不知道如何使用它。 github repo 没有提供任何关于使用它的信息,我也无法通过谷歌搜索找到任何信息。

请指导我如何在我的应用程序中使用 Jdiameter。

JDiameter 作为一个非常强大的框架,尽管理解起来相当复杂。您尤其需要仔细阅读直径规格以及消息及其值类型。

CER 和 CEA 是直径标准,out-of-the-box 适用于 JDiameter。所以你基本上需要做的是:

  • 设置您的项目并决定为其使用的服务器。我选择了 wildfly,但必须让它访问一些其他受保护的 internal java classes(仅 SCTP 需要)。其次,我怀疑 JDiameter 内螺纹处理是否真的符合 JEE 标准,但至少它是有效的。

  • 将 JDiameter 作为库包含在内。在 Maven 术语中,这看起来像这样:

    <dependency>
        <groupId>org.mobicents.diameter</groupId>
        <artifactId>jdiameter-api</artifactId>
        <version>1.7.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.mobicents.diameter</groupId>
        <artifactId>jdiameter-impl</artifactId>
        <version>1.7.0-SNAPSHOT</version>
        <exclusions>
            <exclusion> 
                <groupId>org.mobicents.protocols.sctp</groupId>
                <artifactId>sctp-impl</artifactId>
            </exclusion>
        </exclusions> 
    </dependency>        
    <dependency>
        <groupId>org.mobicents.diameter</groupId>
        <artifactId>mobicents-diameter-mux-jar</artifactId>
        <version>1.7.0-SNAPSHOT</version>
        <type>jar</type>
    </dependency>
    
  • 为配置创建工作 jdiameter-something.xml 文件。您可以将它放在资源目录中或应用程序外部,但它需要可访问。

  • 如果您的应用程序将 运行 在应用程序服务器中而不是独立的,请创建一个 java class 将在启动时实例化并初始化 JDiameter 堆栈那里。初始化包括使用例如

    读取 xml 配置

    stack = new StackImpl(); 配置 serverConfig = new org.jdiameter.server.impl.helpers.XMLConfiguration(serverConfigInputStream); 工厂 = stack.init(serverConfig);

之后,为您的自定义消息注册 NetWorkReqListeners 以及:

 stack.start();
 ISessionFactory isf = (ISessionFactory) factory;
 isf.registerAppFacory(ServerS6aSession.class, new S6aSessionFactory(1000, factory));