ЭрикссонСофт

+7 (953) 284-42-23

Программа «vPCRF» (Virtual Policy and Charging Rules Function) представляет собой программную реализацию виртуальной функции правил политик и тарификации, предназначенную для управления политиками доступа, ресурсами и зарядкой в сетях LTE/EPC. Продукт разработан на языке C++20 с применением многопоточной архитектуры и поддержкой Diameter-протокола.

Область применения

Программное обеспечение предназначено для использования в следующих сценариях:

Развертывание в тестовых и лабораторных средах для отработки сетевых взаимодействий

Обучение и повышение квалификации специалистов в области сетевых технологий LTE/EPC

Прототипирование новых сервисов и функций сети

Интеграционное тестирование смежного телекоммуникационного оборудования

Место в сетевой инфраструктуре

В архитектуре сетей мобильной связи vPCRF выполняет функции уровня управления политиками и зарядкой:

Взаимодействие с P-GW через интерфейс Gx для управления правилами PCC

Взаимодействие с AF (Application Function) через интерфейс Rx для управления сессиями приложений

Интеграция с OCS (Online Charging System) через интерфейс Sy для управления балансом

Интеграция с TDF (Traffic Detection Function) через интерфейс Sd для управления детектированием трафика

Интеграция с SPR (Subscription Profile Repository) через интерфейс Sp для управления абонентскими данными

Объединение этих функций в едином программном продукте позволяет создавать компактные стенды, моделирующие работу контроллера правил политик и тарификации без необходимости развертывания распределенной инфраструктуры.

Ключевые особенности

Основными особенностями данной реализации являются:

Многоуровневая архитектура с разделением функций по слоям: транспортный слой, слой управления сессиями, слой бизнес-решений и интеграционный слой

Поддержка полного набора Diameter-интерфейсов: Gx, Rx, Sy, Sd, Sp через real-time handler-классы

Управление сессиями с таймаутами, лимитами и персистентным хранением в БД

Возможность интеграции с биллингом, HSS, OCS и внешними API с проверкой HTTP-статуса и fallback-обработкой отказов

Параметризованные SQL-запросы для защиты от инъекций

Модульная структура, допускающая поэтапное наращивание функциональности

Программа vPCRF обеспечивает выполнение следующих основных функций:

Обработка Diameter-сообщений через интерфейсы Gx, Rx, Sy, Sd, Sp

Управление сессиями: создание, обновление, удаление, очистка по таймауту

Хранение сессий в персистентном хранилище (SQLite/PostgreSQL)

Интеграция с биллингом, HSS и OCS через HTTP-клиент с таймаутами и fallback-логикой

Валидация входных данных (IMSI, MSISDN, APN) на границе бизнес-логики

Предоставление интерфейсов оперативного управления (VTY/CTRL)

Сбор и экспорт метрик в формате Prometheus

Отправка security/audit-событий во внешнюю SIEM-систему по UDP/syslog

Graceful shutdown по сигналам SIGINT/SIGTERM

Программная реализация основана на многоуровневой архитектуре:

Слои исполнения:

Транспортный слой — инкапсуляция сетевого ввода-вывода (Diameter freeDiameter hooks, HTTP)

Слой управления сессиями — управление жизненным циклом сессий, синхронизация с БД

Слой бизнес-решений — валидация данных, выбор policy rules, интеграция с биллингом и внешними API

Слой наблюдаемости — логи, метрики, audit trail, SIEM-события

Общие структуры данных:

Хранилище конфигурационных параметров (потокобезопасное)

Контексты сессий (SessionManager)

Журнал событий и метрик

Audit log (таблица audit_log)

Программное обеспечение функционирует в следующих режимах:

Режим ожидания:

Основной поток управления ожидает входящих Diameter-сообщений

Встроенный HTTP-сервер прослушивает заданные порты (метрики, healthcheck, admin API)

Сессии загружены из БД и готовы к обработке запросов

Режим обработки сигнального трафика:

Прием и разбор входящих Diameter-сообщений (CCR, AAR, SDR, SPR, SIR)

Нормализация AVP-полей в общий request-контекст

Передача контекста в слой бизнес-логики

Формирование ответов (CCA, AAA, SDA, SPA, SIA) с актуальными кодами результата

Режим конфигурирования:

Изменение параметров работы в реальном времени через admin API (при наличии admin_api_token)

Динамическая перезагрузка конфигурации без остановки основного процесса

Текущая реализация:

Diameter-интерфейс между PCRF и P-GW (PCEF)

Обработка сообщений CCR (Credit-Control-Request) и CCA (Credit-Control-Answer)

Управление PCC-правилами

Нормализация AVP-полей: Session-Id, User-Name/IMSI, MSISDN

Формирование ответов с Result-Code, Policy-Rule, Balance

Текущая реализация:

Diameter-интерфейс между PCRF и AF (Application Function)

Обработка сообщений AAR (AA-Request) и AAA (AA-Answer)

Управление сессиями приложений

Интеграция с SessionManager для отслеживания состояния сессии Rx

Текущая реализация:

Diameter-интерфейс между PCRF и OCS (Online Charging System)

Обработка сообщений SPR (Spending-Status-Request) и SPA (Spending-Status-Answer)

Управление балансом абонента

Fallback-обработка при недоступности OCS

Текущая реализация:

Diameter-интерфейс между PCRF и TDF (Traffic Detection Function)

Обработка сообщений SDR (TDF-Session-Request) и SDA (TDF-Session-Answer)

Управление детектированием трафика и применением правил

Реальное удаление сессий через SessionManager

Текущая реализация:

Diameter-интерфейс между PCRF и SPR (Subscription Profile Repository)

Обработка сообщений SPR (Profile-Update-Request) и SPA (Profile-Update-Answer)

Получение абонентских данных и подписок

Текущая реализация:

VTY (Virtual Teletype) — текстовый интерфейс управления, аналогичный Cisco CLI

CTRL (Control Interface) — API для сбора статистики и управления через текстовые команды

Команды для мониторинга состояния сессий, метрик и конфигурации

Программное обеспечение предоставляет VTY (Virtual Teletype) интерфейс с поддержкой следующих команд:

Команды мониторинга состояния:

show sessions — отображение активных сессий с временем последней активности

show stats — вывод всех счетчиков производительности

show config — отображение текущей конфигурации

show metrics — вывод метрик в Prometheus-формате

Команды управления:

session cleanup — принудительная очистка просроченных сессий

logging — управление уровнем логирования

write — запись конфигурации в файл

Программное обеспечение поддерживает следующие параметры настройки в файле конфигурации (формат JSON):

Параметры сети и идентификации:

origin_host — FQDN хоста PCRF

origin_realm — домен PCRF

destination_host — FQDN целевого узла (PGW)

destination_realm — домен целевого узла

Параметры базы данных:

db_type — тип БД (sqlite / postgresql)

db_conn — строка подключения к БД

Параметры внешних систем:

hss_address / hss_probe_url — адрес HSS и URL для probe-запроса

ocs_address / ocs_probe_url — адрес OCS и URL для probe-запроса

billing_url / billing_token — URL биллингового API и токен

external_api_url / external_api_token — URL внешнего API и токен

Параметры времени жизни:

session_timeout — таймаут сессии (секунды)

max_sessions — максимальное количество сессий

При запуске программа автоматически загружает конфигурацию из файла config.json в рабочей директории.

Поддерживается динамическая перезагрузка конфигурации без остановки процесса через admin API (POST /admin/runtime/config/reload).

Программное обеспечение поддерживает уровни серьезности сообщений:

DEBUG — детальная отладочная информация

INFO — информирование о штатных событиях работы системы

WARNING — предупреждения о нештатных ситуациях, не приводящих к отказу

ERROR — ошибки, влияющие на отдельные функции

CRITICAL — критические отказы подсистем

Формат строки вывода содержит временную метку с точностью до миллисекунды (UTC), уровень серьезности, наименование компонента-источника и текст сообщения.

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

Уровень логирования задается в файле конфигурации.

Программное обеспечение поддерживает отправку security и audit-событий во внешнюю SIEM-систему:

Протокол UDP/syslog

JSON-формат событий

Потокобезопасная реализация с RAII WSA (для Windows)

Отдельные события для startup, shutdown, интеграций и security-нарушений

Хранилище контекстов сессий предназначено для отслеживания состояния абонентских сессий. В текущей реализации структура контекста включает:

Идентификатор сессии (session_id)

Время последней активности (last_active)

Ассоциированные с сессией IMSI, MSISDN (при наличии)

SessionManager обеспечивает:

Добавление новой сессии

Обновление времени активности (touch)

Удаление сессии

Очистку просроченных сессий (cleanup)

Загрузку персистентных сессий из БД при старте

Синхронизацию изменений с таблицей sessions

Проверку лимита максимального количества сессий

Хранилище контекстов для процедур управления политиками:

Выбранные policy rules

Баланс абонента (из OCS или биллинга)

Состояние интеграции с внешними системами (degraded / hard-failure)

В рамках работы с внешними системами поддерживаются:

Состояние HSS probe (доступен / недоступен / degraded)

Состояние OCS probe

Retry/backoff-статусы для ExternalSystemHttp

Fallback-режимы при недоступности внешних сервисов

Программное обеспечение поддерживает сборку через CMake:

Минимальная сборка — компилируется без внешних зависимостей (требуется C++20 toolchain), используется для проверки цепочки инструментов

Полная сборка — включает все модули (Diameter handling через freeDiameter, поддержка PostgreSQL, HTTP-клиент, SIEM) и требует соответствующие библиотеки

Программное обеспечение проходит следующие виды тестирования:

Модульные тесты (unit tests) для BusinessLogic, SessionManager, ConfigManager, DatabaseBackends, DiameterHandlerSupport, RuntimeObservability, SIEMLogger

Интеграционные тесты для сценариев жизненного цикла сессий, fallback при ошибках БД, HTTP timeout, retry/backoff

VTY транскрипт-тесты для проверки интерфейса управления

Тесты с реальным freeDiameter runtime (Rx ingress, Gx ingress, Sy ingress, Sp ingress, Sd ingress)

Smoke-скрипты для взаимодействия с Open5GS (MME/SGW/PGW)

Набор эталонных трасс (pcap) для регрессионной проверки

Воспроизводимые сценарии с документированными командами запуска

Матрица сборок для Windows (MSVC/MinGW) и Linux

Публикация тестовых логов и артефактов при падениях

Конвейер статического анализа (clang-tidy/format/lint)

Бенчмарки латентности планировщика и сквозного пути передачи данных

Расширенные метрики (гистограммы латентности, счетчики ошибок на интерфейс)

Автоматическая проверка регрессий производительности

Валидация и лимиты для VTY/CTRL интерфейсов (размер полезной нагрузки, частота запросов)

Негативные и fuzz-тесты для путей парсеров и кодеков

Модель угроз и документация

Текущая реализация (C++):

struct SessionContext {
    std::string session_id;
    std::time_t last_active;
    std::string imsi;
    std::string msisdn;
};

Текущая реализация (C++):

struct IntegrationState {
    bool available;
    bool degraded;
    int failure_count;
    std::chrono::steady_clock::time_point next_retry;
};

Текущая реализация (C++):

struct InterfaceMetrics {
    std::atomic<uint64_t> requests;
    std::atomic<uint64_t> permits;
    std::atomic<uint64_t> rejects;
    std::atomic<uint64_t> errors;
};

Отдел продаж

+7 (953) 284-42-23

+7 (953) 284-47-36

sales@ericssonsoftware.ru

Мы в соц.сетях

Информация

Адрес

242504
Брянская область
Карачевский район, Вишневка
Молодёжная улица, 33

Информация

Отдел продаж

+7 (953) 284-42-23

sales@ericssonsoftware.ru

Адрес

242504
Брянская область,
Карачевский район,
Вишневка, Молодёжная улица, 33