Введение

Приложение Diameter для контроля кредитов — это сетевой протокол Diameter, используемый для реализации контроля кредитов в реальном времени для различных услуг, предоставляемых конечным пользователям. Это стандарт IETF, впервые определенный в RFC 4006 и обновленный в RFC 8506.

Сборы за сеанс

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

Налогообложение на основе событий

Процесс управления кредитами, основанный на событиях, использует события как механизм тарификации. Тарификация на основе событий обычно применяется, когда потребление ресурсов не является непрерывным, например, при отправке пользователем MMS-сообщения.

Коды команд

Для поддержки кредитного контроля через Diameter используются два сообщения Diameter: CCR (Запрос на кредитный контроль) и CCA (Ответ на кредитный контроль). Код команды для CCR/CCA – 272, как определено в RFC 4006.

Для управления квотами клиент отправляет CCR на сервер, запрашивая единицы и сообщая об использовании. Сервер предоставляет единицы и списывает средства с пользователя. Для простого дебетования/кредитования клиент отправляет CCR, запрашивая сервер на дебетование/кредитование счета пользователя. Для получения информации о ценах клиент запрашивает у сервера стоимость единицы, а сервер отвечает ценой.

Потоки сообщений

Потоки сообщений, как правило, инициируются контрольной точкой, запрашивающей единицы, и сервером, предоставляющим их. Сообщение также может генерироваться другими приложениями Diameter, такими как NASREQ (RFC4005) для сессий, ограниченных по времени и/или объему использования. На следующей диаграмме показана упрощенная схема обмена сообщениями для сессии с использованием квот. Клиент начинает с запроса 10 единиц у сервера. Сервер проверяет, достаточно ли средств на счете пользователя/абонента для этого. В данном примере сервер предоставляет клиенту все запрошенные единицы. Если бы у абонента было недостаточно средств, сервер мог бы предоставить меньшее количество единиц или отклонить запрос полностью. Когда или до того, как абонентская сессия использует предоставленные единицы, клиент отправляет серверу сообщение об обновлении, указывая количество использованных единиц и количество, которое он хотел бы получить в этот раз. Клиенту разрешается запрашивать единицы до полного использования предыдущей квоты, чтобы избежать прерывания сеанса абонента во время связи с сервером. В этом примере клиент отправляет запрос, когда использовано 7 из 10 ранее предоставленных единиц, и запрашивает еще 10 единиц, которые сервер предоставляет. Сервер может использовать количество использованных единиц для списания средств со счета абонента (предоставление единиц не гарантирует их использования. Фактическое использование содержится в AVP Used Units). Сервер также может указать клиенту срок действия квоты, в этом случае клиент должен отправить сообщение об обновлении по истечении этого срока. В течение сеанса может быть отправлено множество сообщений об обновлении. Наконец, абонент завершает сессию, и клиент отправляет серверу сообщение о завершении, содержащее информацию о последних использованных единицах. Сервер может использовать сообщение о завершении для отмены любых связанных с этим резервов в системе управления балансом. Если абонент не завершил сессию самостоятельно, а исчерпал свой баланс, сервер ранее бы ответил отклонением на сообщение об обновлении, возможно, указав клиенту/контрольной точке перенаправить трафик (это обычно имеет смысл только для HTTP/WAP трафика).