Быстрый переход
Программа «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;
};
Информация
Адрес
242504
Брянская область
Карачевский район, Вишневка
Молодёжная улица, 33
Быстрый переход
Информация
Отдел продаж
+7 (953) 284-42-23
sales@ericssonsoftware.ru
Адрес
242504
Брянская область,
Карачевский район,
Вишневка, Молодёжная улица, 33