Как обслужить 60 миллионов абонентов, Артем Руфанов...
DESCRIPTION
Доклад Артёма Руфанова на HighLoad++ 2014.TRANSCRIPT
![Page 1: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/1.jpg)
Как обслужить 60 миллионов абонентов?Артем Руфанов«Петер-Сервис»
![Page 2: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/2.jpg)
Ход выступления
Задача
Архитектура
Дизайн
Истории успеха
![Page 3: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/3.jpg)
Петер-Сервис - О компании
![Page 4: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/4.jpg)
История
![Page 5: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/5.jpg)
Задача
Реализация узла PCRF согласно 3GPP спецификации для обслуживания 60 миллионов абонентов оператора связи
![Page 6: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/6.jpg)
3GPP стандарты для PCRF• 3GPP TS 23.203 PCC-Architecture• 3GPP TS 29.212 Gx, Gxx, Sd• 3GPP TS 29.214 Rx• 3GPP TS 29.215 S9• 3GPP TS 29.219 Sy
Подробную информацию можно найти на официальном сайте - http://www.3gpp.org/
![Page 7: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/7.jpg)
Место PCRF в 3GPP архитектуре
IMS
PCRF
P-GW
PCEF
S-GW
BBERF TDF
UDR /GUP
OCS/OFCS
AF
Gy/GzSd
Gxx
Sy
Ud / Rg
Rx
eNodeBИнтернет
Gx
V-PCRF S9
![Page 8: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/8.jpg)
Что такое 60 миллионов?Абонентская база оператора
• Из них у ~100% подключена услуга мобильного интернета
• Из них ~60%-80% пользуются услугой мобильного интернета
• И ~12%-15% от ~60%-80% из них используют услугу сейчас
Резюме• ~ 15% от ~80% это активные сессии абонента• ~ 80% это максимальный объем профилей абонентов
в кэше
![Page 9: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/9.jpg)
ТребованияСистемные требования
• Работа в режиме 24/7• Отсутствие единой точки отказа• Масштабирование, резервирование, гео-
резервирование• Real-time время реакции• Скорость 10 000 req/sec• Поддержка vendor-specific интеграций (Cisco, Huawei,
NSN и т.д.) без перекомпиляции приложения• Поддержка новых услуг без перекомпиляции
приложенияФункциональные требования
• Соответствие стандартам 3GPP
![Page 10: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/10.jpg)
Окружение• OS - Win32/64, Linux 5/6 • Язык – C++, LUA• Собственные библиотеки• Типовое оборудование: CPU - Intel® Xeon® E5-2430
2.2GHZ, Memory - 24Gb, Disk - 2x600GB
![Page 11: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/11.jpg)
Архитектура решения• Масштабирование• Резервирование (избыточность - redundancy)• Гео-резервирование• Резервирование внешних систем• Расширение без перекомпиляции
![Page 12: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/12.jpg)
Масштабирование• PCRF состоит из:
– PCCM (Policy & Charging Control Manager)
– DRA (Diameter Routing Agent)• Узел PCCM реализует 3GPP
функциональность• Узел DRA характеризуется:
– Быстротой за счет простоты– Различными алгоритмами
распределения нагрузки
PCRF
PCCM 1
DRA
PCCM 2 PCCM N...
PCEF
Gx
![Page 13: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/13.jpg)
Резервирование• Обеспечение отказоустойчивости • Классические схемы:
– N+1– 2N– 2(N+1)
![Page 14: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/14.jpg)
Резервирование N+1
• Плюсы резервирования N+1:– Затраты на оборудование незначительны
• Минусы резервирования N+1:– Низкая надежность резервирования
( 1 сервер)
PCRF 1 PCRF 2 PCRF N... Reserve PCRF
N +1
![Page 15: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/15.jpg)
Резервирование 2N
• Плюсы резервирования 2N:– Резервирование каждого сервера
• Минусы резервирования 2N:– Затраты на оборудование выше, чем
в N+1
PCRF 1 PCRF 2 PCRF N
...
Reserve PCRF 1
Reserve PCRF 2
Reserve PCRF N
![Page 16: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/16.jpg)
Резервирование 2(N+1)
• Плюсы резервирования 2 (N+1):– Высокая отказоустойчивость (каждого + пары)
• Минусы резервирования 2 (N+1):– Сложность реализации– Затраты на оборудование выше, чем в 2N
PCRF 1 PCRF 2 PCRF N
...
Reserve PCRF 1
Reserve PCRF 2
Reserve PCRF N
Reserve PCRF
Reserve PCRF N
N +1
2N
![Page 17: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/17.jpg)
Резервирование PCCM 2N• Инкапсулируем
алгоритмы в DRA • Для реализации
выбрали схему резервирования 2N
• DRA – единая точка отказа
PCRF
PCEF
PCCM Group 1
PCCM(Master/Slave)
PCCM(Slave/Master)
PCCM Group 2
PCCM(Master/Slave)
PCCM(Slave/Master)
PCCM Group N
PCCM(Master/Slave)
PCCM(Slave/Master)
...
DRA 1
Gx
![Page 18: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/18.jpg)
Резервирование DRAУспех, PCRF резервируется, так как:• PCCM -
резервируется• DRA – резервируется,
если PCEF поддерживает это
PCRF
DRA 2
PCEF
Gx
PCCM Group 1PCCM
(Master/Slave)
PCCM(Slave/Master)
PCCM Group 2PCCM
(Master/Slave)
PCCM(Slave/Master)
PCCM Group NPCCM
(Master/Slave)
PCCM(Slave/Master)
...
DRA 1
Gx
![Page 19: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/19.jpg)
Гео-резервированиеУспех, PCRF гео-резервируется.
Поддерживается восстановление сессии по частичным данным
PCRF 1
PCCM pool
DRA 2DRA 1
...PCCM Group 1
PCCM Group 2
PCCM Group N
PCEF 1 PCEF 2
PCRF 2
PCCM pool
DRA 2DRA 1
...PCCM Group 1
PCCM Group 2
PCCM Group N
Gx
Gx
GxGx Gx
Gx
Gx Gx
![Page 20: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/20.jpg)
Fault tolerance & load balancing
Для отсутствия единой точки отказа комплекса целиком необходимо, чтобы PCRF имел функциональность резервировать внешние системы, например, хранилище профилей абонентов UDR
UDR/ GUP
1 UDR/ GUP
2
PCRFPCCM Group¶s
Ud/Rg Ud/Rg
Diameter Routing Agent¶s
![Page 21: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/21.jpg)
Расширение бизнес-логики• Вся изменяющаяся часть
описана на метаязыке (профили, протоколы)
• Вся бизнес-логика в LUA (будущие бизнес-услуги)
• Статистика: 10% кода в динамике (LUA, Def)
PCRF
PCC-решение Мета-описаниеLU
A ск
рипт
ыLUAEngine
![Page 22: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/22.jpg)
Реализация метаязыкаРеализован метаязык (Def)• Статическая часть для работы в
С++ & LUA (get, set)• Динамическая часть для работы
в LUA (key–value)Компромисс между скоростью (вызов менеджера памяти) и потреблением памяти (выделение максимального размера)
.def файлы
Динамическая
часть
PCCM
С++Source
Статическаячасть
Runtime load
Generator
LUAEngine
![Page 23: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/23.jpg)
Дизайнерские решения• Обеспечение параллельного выполнения задач• Минимизация единых точек синхронизации• Разнесение получения и декодирования данных из сети• Использование собственного менеджера памяти
![Page 24: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/24.jpg)
Параллелизация
• Максимальное количество EvP ~= кол-во ядер• MOD(HASH(IMSI)/(кол-во EvP)) == номер EvP
• IMSI• MSISDN• IMEI
CPU
PCRF
TDF
OCS/OFCS
Sd
GxxSy
Rx
Gx
V-PCRF
S9
Co
re 1
Co
re 2
Co
re 3
Co
re 4
IMS
AF
S-GW
BBERF
Ud / Rg
P-GW
PCEF
UDR /GUP
Обработчики событий
EvP1
EvP2
EvP3
EvP4
![Page 25: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/25.jpg)
Отсутствие точки синхр-ции
Минусы• В некоторых случаях приходится
дублировать данные, например, справочник оборудования
• Не для всех хранилищ это возможно сделать
Пример хранилищ• Сессии абонента • Кэш (профили абонентов)• Справочники
оборудования (IMEI/TAC)• Трассируемые абоненты• Статистика и
диагностика
PCRFMutex
PCRF
EvP EvP EvP EvPОбработчики событий
EvP EvP EvP EvPОбработчики событий
![Page 26: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/26.jpg)
ДекодированиеМинусы• Сложность, требуется
lookup для определения EvP
• Дополнительное обращение к менеджеру памяти для создания сообщения декодирования в EvP
Работа с сетью• Поток получения данных
без их декодирования• Декодирование в EvP• No sleep!
PCRF PCRF
Network
Select/Poll+
Decode
Network
Select/Poll+
lookup
EvP EvP EvP EvP
Обработчики событий
EvP+
Decode
Обработчики событий
EvP+
Decode
EvP+
Decode
EvP+
Decode
![Page 27: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/27.jpg)
Менеджер памятиТребования
• Многопоточный (один - выделяет, второй - освобождает)
• Помощь в поиске утечек памятиАнализ менеджеров памяти
• Системный менеджер памяти• Собственная реализация• Библиотека tcmalloc (thread-caching malloc из gperftools)
Эксперимент (N = 1-8, Size = 128b - 1Mb):• Распараллеливание одной задачи, например, создать
1000 объектов на N потоках (N=1, Q=1000, N=2, Q=500)• Ожидаем: время выполнения обратно
пропорционально количеству потоков
![Page 28: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/28.jpg)
Результат эксперимента (1 Kb)
Вывод• Характер графика tcmalloc и системного одинаков• tcmalloc быстрее системного в 16 раз (искусственный)• Наличие потокового кэширования – критично!• Tcmalloc (нужен контроль утечек) • Собственный (нужно потоковое кэширование)
![Page 29: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/29.jpg)
Реализованные требования• Работа в режиме 24/7• Отсутствие единой точки отказа• Масштабирование, резервирование, гео-
резервирование• Real-time время реакции• Скорость 10 000 req/sec• Поддержка vendor-specific интеграций (Huawei, NSN и
т.д.) без перекомпиляции приложения• Поддержка новых услуг без перекомпиляции
(= новая версия) приложения
Итог выполнения задачи
![Page 30: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/30.jpg)
Качество разработки (CI)
Разработка
UnitTests
CodeReview
Автотесты
Нагрузочные тесты
![Page 31: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/31.jpg)
Истории успеха
Региональный оператор
![Page 32: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/32.jpg)
Региональный оператор• Первая инсталляция• Бизнес в C++• Rg-интерфейс к GUP-серверу
Региональный оператор
![Page 33: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/33.jpg)
Вайнах Телеком• Вторая инсталляция• Бизнес в LUA (meta-engine)• Rg-интерфейс к GUP-серверу
Информацию о внедрении можнонайти на сайте - http://www.vainahtelecom.ru/news/press/54/
![Page 34: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/34.jpg)
МегаФон• Обслуживает 100% трафика• Самая большая инсталляция (~200 узлов, ~15 дата-
центрах)• Бизнес в LUA (meta-engine)• Ud-интерфейс к UDR
Информацию о внедрении можно найти на сайте - http://www.tdaily.ru/news/top-novosti/34006
![Page 35: Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)](https://reader035.vdocuments.net/reader035/viewer/2022062319/5585ba3ad8b42a695a8b4c61/html5/thumbnails/35.jpg)
Задавайте вопросы! Мы открыты к диалогу