как обрабатывать запрос / ответ / сессию при перезапуске стека diameter?

#java #diameter-protocol

#java #diameter-протокол

Вопрос:

Я работаю над протоколом Diameter. У меня проблема с обработкой запроса / ответа / сеанса при перезапуске стека Diameter, поэтому я хочу знать, какие параметры сохраняются в базе данных для дальнейшего использования при перезапуске стека diameter?. такой параметр, как Session_ID, состояние и т.д. пожалуйста, предложите мне, если у вас есть какие-либо идеи по этому поводу, дополнительно спасибо за ваш ответ

Ответ №1:

Вы должны сохранить идентификатор сеанса AVP в качестве индекса для пользователей, к которым вы должны вернуться. Как сказано в RFC 3588, он должен быть уникальным:

Идентификатор сеанса AVP (код AVP 263) имеет тип UTF8String и используется для идентификации конкретного сеанса (см. Раздел 8). Все сообщения, относящиеся к определенному сеансу, ДОЛЖНЫ содержать только один идентификатор сеанса AVP, и одно и то же значение ДОЛЖНО использоваться на протяжении всего срока действия сеанса. При наличии идентификатор сеанса ДОЛЖЕН отображаться сразу после заголовка Diameter (см. Раздел 3).

Идентификатор сеанса ДОЛЖЕН быть глобально и вечно уникальным, поскольку он предназначен для уникальной идентификации сеанса пользователя без ссылки на какую-либо другую информацию и может потребоваться для сопоставления исторической информации аутентификации с учетной информацией. Идентификатор сеанса включает обязательную часть и часть, определяемую реализацией; рекомендуемый формат для части, определяемой реализацией, описан ниже.

Другими параметрами, которые вы должны сохранить, являются:

Переход за переходом, из конца в конец — должны быть возвращены в том виде, в каком они были получены в заголовке

origin-host / origin-realn — вам следует подумать о сохранении, потому что иногда вам нужно изменить их на dest-host / dest-realm

важное замечание: Существует множество интерфейсов diameter, может быть, этот конкретный интерфейс должен был бы возвращать AVP, чего не сделал бы другой интерфейс. Например: CC-Request-Type AVP в случае интерфейса GY, который должен быть скопирован из запроса в ответ.

Поэтому я предлагаю сохранить весь запрос! если вам нужно восстановить, у вас всегда будут все AVP на случай, если вам понадобится вернуть ответ, независимо от того, с каким интерфейсом вы работаете.

Другой более простой вариант — ничего не сохранять. После отключения соединения diameter удалите всех подписчиков и дождитесь повторной попытки (:

Комментарии:

1. спасибо за ваш ценный ответ, это полезно для меня. как насчет состояния?