Привет!
Эта статья о том, как собрать мобильного оператора «на столе» для тестов функциональности и взаимодействия компонентов ядра сети.
Меня зовут Алексей Червяков, я тимлид команды разработки мобильных продуктов в компании VAS Experts, и мы разрабатываем компоненты ядра сети, которые осуществляют контроль трафика, его подсчет, применяют правила тарификации для абонентов. Корректная работа этих элементов – залог прибыли и отсутствия убытков из-за неоплаченных услуг и трафика.
Приятного чтения!

Зачем нам понадобился собственный стенд
Работу всех элементов сети необходимо проверять в «боевых» условиях – с настоящим трафиком и в связке с настоящим биллингом. Но как это сделать и оценить функционирование модулей ядра EPC, пока мы не проверили свою работу в сети мобильного оператора? А после завершения тестов, стенд заказчика зачастую занят под другие задачи или может быть отключен в любой момент за ненадобностью.
Исходя из необходимости постоянно улучшать наши продукты, мы поняли, что собственный стенд даст нам независимость: мы сможем отрабатывать основные сценарии и устранять большинство проблем заранее – и к заказчику приходить с уже готовым, проверенным решением, за счет чего уменьшим время интеграции и нагрузку на его команду.
Архитектура ядра сети: что мы строили
Чтобы было понятно, что мы собирали, пара слов об архитектуре. Ядро сети – это несколько служб, каждая из которых отвечает за свой участок работы. MME принимает телефон в сеть и управляет его подключением. HSS – это база данных абонентов, где хранятся SIM-ключи и профили услуг. SGW пробрасывает пользовательский трафик между радиосетью и PGW, а PGW – это точка выхода абонента в интернет: именно здесь назначается IP-адрес, применяются правила тарификации и считается трафик.
Ключевой принцип, который мы применили – CUPS (Control and User Plane Separation). Это разделение «мозгов» и «трубы»: управляющая часть (SMF) решает, какой абонент какую услугу получает, а пользовательская часть (UPF или DPI) физически пропускает через себя гигабайты трафика. Такое разделение позволяет масштабировать data plane независимо от control plane и, что важно для нас, подключать наш DPI-модуль в качестве UPF – он не просто пропускает трафик, а классифицирует его по протоколам, считает объёмы по категориям и применяет правила оператора в реальном времени.
Решение казалось понятным и вполне реализуемым, а главное – имело перспективу стать реальной лабораторией для всех последующих доработок и релизов.
Мы связались с нашими партнерами из Медиа-Тел и предложили организовать совместную пилотную зону. Коллеги согласились и предоставили для тестов свои PCRF и OCS (компоненты биллинга и тарификации).
Интеграция с биллингом: где прячутся детали
Интеграция с компонентами Медиа-Тел потребовала отладки на стыке двух миров. Их PCRF отвечает за политики – решает, какой абоненту дать тариф, сколько трафика разрешить и на какой скорости. OCS (Online Charging System) – за онлайн-списание средств: когда абонент качает видео, OCS в реальном времени вычитает мегабайты из баланса. Наш PCEF, стоящий между ними и DPI, должен «разговаривать» на одном языке с обоими – по протоколу Diameter на интерфейсах Gx (политики) и Gy (тарификация). На практике это означало согласование десятков параметров: формат идентификаторов абонентов, кодировку PLMN (MCC/MNC), таймауты сессий и формат квотных правил. Каждое расхождение – а их было немало – приводило к отклонению запросов с загадочными кодами ошибок, которые приходилось расшифровывать по спецификациям 3GPP.
Выделили виртуальные машины, установили на них наши модули (PCEF, PGW, ePDG), поставили мощный DPI VAS Experts, добавили PCRF и OCS Медиа-Тел и получилась сеть мобильного оператора.
Отдельно стоит сказать про ePDG – компонент, который делает возможным VoWiFi, то есть звонки через обычный домашний или офисный Wi-Fi. Когда телефон подключен к Wi-Fi, он устанавливает защищенный IPSec-туннель через интернет к нашему ePDG, а тот уже соединяет абонента с ядром сети – так, будто телефон подключен к обычной соте. Для абонента разницы нет: те же звонки, тот же номер, та же тарификация. А для нас это еще один канал, который нужно корректно обрабатывать – трафик из Wi-Fi-туннеля тоже проходит через DPI и PCEF, тарифицируется по тем же правилам.
Теперь необходимо было настроить базовую станцию или ее эмулятор.
Базовые станции: программный эмулятор и промышленное железо
На стенде у нас работают две базовые станции – каждая со своими сильными сторонами.
Первая – программный эмулятор srsRAN на обычном сервере с SDR-радиомодулем (Software Defined Radio). Это open-source решение, которое превращает компьютер в полноценный eNodeB: мы настраиваем Band 20 (800 МГц), ширину канала 20 МГц, мощность сигнала – и получаем LTE-соту в радиусе нескольких метров. Главное преимущество srsRAN – гибкость: можно менять любые радиопараметры, экспериментировать с конфигурацией и логировать каждый бит на радиоинтерфейсе. Но есть нюанс – srsRAN не поддерживает создание выделенных каналов (dedicated bearers), которые нужны для VoLTE-звонков. Чтобы обойти это ограничение, мы научили IMS-сервер (Kamailio) работать хитрее: он отправляет запрос на выделенный канал, но если радиосеть его не создаёт – звонок всё равно проходит по основному каналу, пусть и без гарантированного качества. Для тестов тарификации и передачи данных этого достаточно.
Вторая станция – Baicells, полноценная промышленная small cell. Она компактная, но это настоящее «железо» оператора связи: поддерживает создание выделенных каналов для голоса, работает стабильно и предсказуемо. Из ограничений – поддерживается меньше частотных диапазонов, совместимость не со всеми моделями телефонов, и настройки гораздо менее гибкие, чем у программного эмулятора. Зато с ней мы тестируем VoLTE-звонки «по-настоящему» – с выделенным каналом QCI=1, как это происходит в реальной сети оператора.
Когда мы выбирали название для «карманного» оператора, сомнений не было – единогласно выбрали “VAS Expert Mobile Network”.
Что и как мы тестируем
Стенд наконец-то заработал и началось самое интересное – тесты сценариев тарификации мобильных операторов: получение квот, настройка безлимитов, определение роуминга и многое другое.
Что мы тестируем? Только то, что обычно ломается при интеграции у оператора – а ломается обычно всё. Первый класс тестов – квотирование: абоненту выделяется, скажем, 100 МБ, и мы проверяем, что DPI корректно считает трафик, PCEF вовремя запрашивает следующую порцию квоты у OCS, а при исчерпании лимита – блокирует доступ, но оставляет «белый список» (DNS, портал оператора). Второй – сценарии безлимитных тарифов и приоритизации: когда определенные приложения (мессенджеры, навигаторы) не расходуют основной пакет. DPI определяет тип трафика, PCEF решает, списывать с баланса или нет. Третий – роуминг: телефон подключается с «чужим» MCC/MNC, и вся цепочка – от HSS до OCS – должна корректно обработать визитера. Мы эмулируем такой сценарий, просто загружая на SIM-карту другой PLMN.
Отдельная категория – голосовые и видео-сценарии. Полный цикл VoLTE: от SIP-регистрации через IMS до установления медиаканала и передачи голоса – между двумя телефонами, обслуживаемыми нашей сетью. А благодаря ePDG мы проверяем и более сложный сценарий: один абонент звонит через LTE, другой – через Wi-Fi. Оба зарегистрированы в одной IMS-сети, звонок проходит, медиапоток идёт. Затем один из абонентов переключается с Wi-Fi на LTE – и звонок не прерывается: сеть выполняет handover, передавая сессию между стандартами доступа. Тот же IP-адрес, тот же PGW, тот же медиапоток – абонент даже не замечает переключения. Для видеоконференций это особенно критично: потеря соединения на полсекунды – и участники теряют контекст разговора. Наш стенд позволяет отлаживать именно такие пограничные сценарии, которые невозможно воспроизвести на бумаге.
Все эти тесты позволили нам как проверить работу нашего ПО в «боевых» условиях, так и улучшить наши продукты, ведь каждый выявленный и исправленный недочет еще немного приближал нас к цели создать отличный, реально работающий продукт.
На запущенном стенде мы проверили работу с биллингом Медиа-Тел, а также теперь готовы не только тестировать новые функциональности, но и проводить демонстрации для новых клиентов.
ссылка на оригинал статьи https://habr.com/ru/articles/1026680/