惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Check Point Blog
GbyAI
GbyAI
D
Docker
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
T
Troy Hunt's Blog
博客园 - Franky
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Security Blog
Microsoft Security Blog
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
The Cloudflare Blog
S
SegmentFault 最新的问题
Latest news
Latest news
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
I
InfoQ
博客园 - 【当耐特】
NISL@THU
NISL@THU
A
About on SuperTechFans
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Scott Helme
Scott Helme
雷峰网
雷峰网
C
CXSECURITY Database RSS Feed - CXSecurity.com
Security Latest
Security Latest
V
Vulnerabilities – Threatpost
Security Archives - TechRepublic
Security Archives - TechRepublic
A
Arctic Wolf
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
IT之家
IT之家
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
aimingoo的专栏
aimingoo的专栏
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
SecWiki News
SecWiki News
大猫的无限游戏
大猫的无限游戏
S
Security Affairs
The Register - Security
The Register - Security
www.infosecurity-magazine.com
www.infosecurity-magazine.com
L
LINUX DO - 热门话题
T
Tor Project blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Как мы собрали сеть мобильного оператора у себя в лаборатории и зачем нам это понадобилось
VAS_Experts_ · 2026-04-22 · via Все публикации подряд на Хабре

Как мы собрали сеть мобильного оператора у себя в лаборатории и зачем нам это понадобилось

Уровень сложностиСредний

Время на прочтение5 мин

Охват и читатели276

Кейс

Привет!

Эта статья о том, как собрать мобильного оператора «на столе» для тестов функциональности и взаимодействия компонентов ядра сети.

Меня зовут Алексей Червяков, я тимлид команды разработки мобильных продуктов в компании 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 – он не просто пропускает трафик, а классифицирует его по протоколам, считает объёмы по категориям и применяет правила оператора в реальном времени.

Схема реализации согласно концепции CUPS

Схема реализации согласно концепции CUPS

Решение казалось понятным и вполне реализуемым, а главное – имело перспективу стать реальной лабораторией для всех последующих доработок и релизов.

Мы связались с нашими партнерами из Медиа-Тел и предложили организовать совместную пилотную зону. Коллеги согласились и предоставили для тестов свои 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.

Cхема Call Flow, подключение и отключение

Cхема Call Flow, подключение и отключение

Отдельная категория – голосовые и видео-сценарии. Полный цикл VoLTE: от SIP-регистрации через IMS до установления медиаканала и передачи голоса – между двумя телефонами, обслуживаемыми нашей сетью. А благодаря ePDG мы проверяем и более сложный сценарий: один абонент звонит через LTE, другой – через Wi-Fi. Оба зарегистрированы в одной IMS-сети, звонок проходит, медиапоток идёт. Затем один из абонентов переключается с Wi-Fi на LTE – и звонок не прерывается: сеть выполняет handover, передавая сессию между стандартами доступа. Тот же IP-адрес, тот же PGW, тот же медиапоток – абонент даже не замечает переключения. Для видеоконференций это особенно критично: потеря соединения на полсекунды – и участники теряют контекст разговора. Наш стенд позволяет отлаживать именно такие пограничные сценарии, которые невозможно воспроизвести на бумаге.

Все эти тесты позволили нам как проверить работу нашего ПО в «боевых» условиях, так и улучшить наши продукты, ведь каждый выявленный и исправленный недочет еще немного приближал нас к цели создать отличный, реально работающий продукт. 

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