首页 > 解决方案 > 直径堆栈重新启动时如何处理请求/应答/会话?

问题描述

我正在研究直径协议。当我的直径堆栈重新启动时,我有一个关于处理请求/应答/会话的问题,所以我想知道哪些参数存储在数据库中以便在我的直径堆栈重新启动时进一步使用?像 Session_ID、State 等参数。如果您对此有任何想法,请建议我感谢您的回复

标签: javadiameter-protocol

解决方案


您应该保留 Session-ID AVP 作为您应该返回的用户的索引。正如 RFC 3588 所说,它应该是唯一的:

Session-Id AVP(AVP 代码 263)是 UTF8String 类型,用于标识特定会话(参见第 8 节)。与特定会话有关的所有消息必须仅包含一个 Session-Id AVP,并且必须在会话的整个生命周期中使用相同的值。当存在时,Session-Id 应该紧跟在 Diameter Header 之后出现(参见第 3 节)。

Session-Id 必须是全局且永远唯一的,因为它旨在唯一标识用户会话而不参考任何其他信息,并且可能需要将历史认证信息与记帐信息相关联。Session-Id包括强制部分和实现定义部分;下面概述了实现定义部分的推荐格式。

您应该保留的其他参数是:

逐跳,端到端 - 应在标头中收到它们时返回

orig-host/orig-realn - 您应该考虑保留,因为有时您需要将它们更改为 dest-host/dest-realm

重要说明:有许多直径接口,可能是特定接口需要返回AVP而其他接口不会。例如:CC-Request-Type AVP 在 GY 接口的情况下,应该从请求复制到应答。

因此,我建议保留整个请求!如果您需要恢复,您将始终拥有所有 AVP,以防您需要返回答案,无论您使用什么界面。

其他更简单的选择是不保存任何东西。直径连接断开后,删除所有订阅者并等待重试(:


推荐阅读