直径堆栈重新启动时如何处理请求/应答/会话?

时间:2019-04-04 05:13:09

标签: java diameter-protocol

我正在研究直径协议。我在重新启动直径堆栈时遇到有关处理请求/应答/会话的问题,因此我想知道在我的直径堆栈重新启动时哪些参数存储在数据库中以供进一步使用?参数,例如Session_ID,State等。 如果您对高级回复有任何想法,请提出建议

1 个答案:

答案 0 :(得分:1)

您应将会话ID AVP保留为您应返回的用户的索引。正如RFC 3588所述,它应该是唯一的:

  

会话ID AVP(AVP代码263)的类型为UTF8String,用于      确定特定的会话(请参阅第8节)。所有讯息      与特定会话有关的务必仅包含一个会话ID AVP      并且在会话的整个生命周期中都必须使用相同的值。      如果存在的话,Session-Id应该在      直径标题(请参见第3节)。

     

Session-Id必须在全球范围内和永远是唯一的,这意味着      唯一地标识用户会话而无需参考任何其他会话      信息,可能需要关联历史认证      信息与会计信息。会话ID包括      强制性部分和实现定义的部分;一种      概述了实现定义部分的推荐格式      在下面。

您应保留的其他参数是:

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

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

重要说明: 直径接口有很多,可能是特定接口需要返回其他接口不会返回的AVP。例如:如果是GY接口,应将CC-Request-Type AVP从请求复制到答案。

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

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