SlideShare una empresa de Scribd logo
1 de 36
Как обслужить 
60 миллионов 
абонентов? 
Артем Руфанов 
«Петер-Сервис»
Ход выступления 
Задача Архитектур Дизайн 
Истории 
успеха
Петер-Сервис - О компании
История
Задача 
Реализация узла 
PCRF согласно 3GPP 
спецификации для 
обслуживания 
60 миллионов 
абонентов оператора 
связи
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/
Место PCRF в 3GPP архитектуре 
IMS 
PCRF 
PCEF 
P-GW 
BBERF TDF 
S-GW 
UDR / 
GUP 
OCS/ 
OFCS 
AF 
Gy/Gz 
Sd 
Gxx 
Sy 
Ud / Rg 
Rx 
eNodeB 
Интернет 
Gx 
V-PCRF S9
Что такое 60 миллионов? 
Абонентская база оператора 
• Из них у ~100% подключена услуга мобильного интернета 
• Из них ~60%-80% пользуются услугой мобильного интернета 
• И ~12%-15% от ~60%-80% из них используют услугу сейчас 
Резюме 
• ~ 15% от ~80% это активные сессии абонента 
• ~ 80% это максимальный объем профилей абонентов в кэше
Требования 
Системные требования 
• Работа в режиме 24/7 
• Отсутствие единой точки отказа 
• Масштабирование, резервирование, гео-резервирование 
• Real-time время реакции 
• Скорость 10 000 req/sec 
• Поддержка vendor-specific интеграций (Cisco, Huawei, NSN 
и т.д.) без перекомпиляции приложения 
• Поддержка новых услуг без перекомпиляции приложения 
Функциональные требования 
• Соответствие стандартам 3GPP
Окружение 
• OS - Win32/64, Linux 5/6 
• Язык – C++, LUA 
• Собственные библиотеки 
• Типовое оборудование: CPU - Intel® Xeon® E5-2430 
2.2GHZ, Memory - 24Gb, Disk - 2x600GB
Архитектура решения 
• Масштабирование 
• Резервирование (избыточность - redundancy) 
• Гео-резервирование 
• Резервирование внешних систем 
• Расширение без перекомпиляции
Масштабирование 
• PCRF состоит из: 
– PCCM (Policy & Charging Control 
Manager) 
– DRA (Diameter Routing Agent) 
• Узел PCCM реализует 3GPP 
функциональность 
• Узел DRA характеризуется: 
– Быстротой за счет простоты 
– Различными алгоритмами 
распределения нагрузки 
PCRF 
PCCM 1 
PCCM 2 ... PCCM N 
DRA 
Gx 
PCEF
Резервирование 
• Обеспечение отказоустойчивости 
• Классические схемы: 
– N+1 
– 2N 
– 2(N+1)
Резервирование N+1 
N +1 
PCRF 1 PCRF 2 ... PCRF N Reserve 
• Плюсы резервирования N+1: 
– Затраты на оборудование незначительны 
• Минусы резервирования N+1: 
– Низкая надежность резервирования 
( 1 сервер) 
PCRF
Резервирование 2N 
• Плюсы резервирования 2N: 
– Резервирование каждого сервера 
• Минусы резервирования 2N: 
– Затраты на оборудование выше, чем 
в N+1 
PCRF 1 PCRF 2 PCRF N 
... 
Reserve 
PCRF 1 
Reserve 
PCRF 2 
Reserve 
PCRF N
Резервирование 2(N+1) 
N +1 
PCRF 1 PCRF 2 PCRF N 
... 
Reserve 
PCRF 1 
Reserve 
PCRF 2 
2N 
• Плюсы резервирования 2 (N+1): 
Reserve 
PCRF N 
Reserve 
PCRF 
Reserve 
PCRF N 
– Высокая отказоустойчивость (каждого + пары) 
• Минусы резервирования 2 (N+1): 
– Сложность реализации 
– Затраты на оборудование выше, чем в 2N
Резервирование 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
Резервирование DRA 
Успех, PCRF 
резервируется, так как: 
• PCCM - резервируется 
• DRA – резервируется, 
если PCEF 
поддерживает это 
PCRF 
DRA 2 
PCEF 
Gx 
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
Гео-резервирование 
Успех, PCRF 
гео-резервируется. 
Поддерживается 
восстановление сессии 
по частичным 
данным 
PCRF 1 
PCCM pool 
PCCM PCCM 
... 
Group 1 
Group 2 
DRA 1 DRA 2 
PCCM 
Group N 
PCRF 2 
PCCM pool 
PCCM ... 
Group 1 
DRA 1 DRA 2 
PCEF 1 PCEF 2 
PCCM 
Group 2 
PCCM 
Group N 
Gx 
Gx 
Gx 
Gx Gx 
Gx 
Gx Gx
Fault tolerance & load balancing 
Для отсутствия единой точки отказа 
комплекса целиком необходимо, 
чтобы PCRF имел функциональность 
резервировать внешние системы, 
например, хранилище профилей 
абонентов UDR 
UDR/ 
GUP 
1 
UDR/ 
GUP 
2 
PCRF 
Ud/Rg Ud/Rg 
PCCM Group s 
Diameter Routing Agent s
Расширение бизнес-логики 
• Вся изменяющаяся часть 
описана на метаязыке 
(профили, протоколы) 
• Вся бизнес-логика в LUA 
(будущие бизнес-услуги) 
• Статистика: 10% кода в 
динамике (LUA, Def) 
PCRF 
LUA 
Engine 
Мета-описание PCC-решение 
LUA скрипты
Реализация метаязыка 
Реализован метаязык (Def) 
• Статическая часть для работы в С++ 
& LUA (get, set) 
• Динамическая часть для работы в 
LUA (key–value) 
Компромисс между скоростью (вызов 
менеджера памяти) и потреблением 
памяти (выделение максимального 
размера) 
.def файлы 
Динамическ 
ая 
часть 
PCCM 
С++ 
Source 
Статическая 
часть 
Generator 
Runtime load 
LUA 
Engine
Дизайнерские решения 
• Обеспечение параллельного выполнения задач 
• Минимизация единых точек синхронизации 
• Разнесение получения и декодирования данных из сети 
• Использование собственного менеджера памяти
Параллелизация 
BBERF 
S-GW 
PCEF 
• Максимальное количество EvP ~= кол-во ядер 
• MOD(HASH(IMSI)/(кол-во EvP)) == номер EvP 
• IMSI 
• MSISDN 
• IMEI 
CPU 
PCRF 
TDF 
OCS/ 
OFCS 
Sd 
Gxx 
Sy 
Rx 
Gx 
V-PCRF 
S9 
Core 1 
Core 2 
Core 3 
Core 4 
IMS 
AF 
Ud / Rg 
P-GW 
UDR / 
GUP 
Обработчики событий 
EvP 
1 
EvP 
2 
EvP 
3 
EvP 
4
Отсутствие точки синхр-ции 
Пример хранилищ 
• Сессии абонента 
• Кэш (профили абонентов) 
• Справочники 
оборудования (IMEI/TAC) 
• Трассируемые абоненты 
• Статистика и диагностика 
PCRF 
Mutex 
PCRF 
EvP EvP EvP EvP 
Обработчики событий 
EvP EvP EvP EvP 
Обработчики событий 
Минусы 
• В некоторых случаях приходится дублировать 
данные, например, справочник оборудования 
• Не для всех хранилищ это возможно сделать
Декодирование 
Минусы 
• Сложность, требуется lookup 
для определения EvP 
• Дополнительное обращение 
к менеджеру памяти для 
создания сообщения 
декодирования в EvP 
Работа с сетью 
• Поток получения данных без 
их декодирования 
• Декодирование в EvP 
• No sleep! 
PCRF PCRF 
Обработчики событий 
Select/ 
Poll 
+ 
Decode 
Network 
Обработчики событий 
Select/ 
Poll 
+ 
lookup 
Network 
EvP EvP EvP EvP 
EvP 
+ 
Dec 
ode 
EvP 
+ 
Dec 
ode 
EvP 
+ 
Dec 
ode 
EvP 
+ 
Dec 
ode
Менеджер памяти 
Требования 
• Многопоточный (один - выделяет, второй - освобождает) 
• Помощь в поиске утечек памяти 
Анализ менеджеров памяти 
• Системный менеджер памяти 
• Собственная реализация 
• Библиотека tcmalloc (thread-caching malloc из gperftools) 
Эксперимент (N = 1-8, Size = 128b - 1Mb): 
• Распараллеливание одной задачи, например, создать 1000 
объектов на N потоках (N=1, Q=1000, N=2, Q=500) 
• Ожидаем: время выполнения обратно 
пропорционально количеству потоков
Результат эксперимента (1 Kb) 
Вывод 
• Характер графика tcmalloc и системного одинаков 
• tcmalloc быстрее системного в 16 раз (искусственный) 
• Наличие потокового кэширования – критично! 
• Tcmalloc (нужен контроль утечек) 
• Собственный (нужно потоковое кэширование)
Итог выполнения задачи 
Реализованные требования 
• Работа в режиме 24/7 
• Отсутствие единой точки отказа 
• Масштабирование, резервирование, гео-резервирование 
• Real-time время реакции 
• Скорость 10 000 req/sec 
• Поддержка vendor-specific интеграций (Huawei, NSN и т.д.) 
без перекомпиляции приложения 
• Поддержка новых услуг без перекомпиляции 
(= новая версия) приложения
Качество разработки (CI) 
Разработка UnitTests CodeReview 
Автотесты 
Нагрузочные 
тесты 
Рефакторинг, 
профилирован
Истории успеха 
Региональный 
оператор
Региональный оператор 
• Первая инсталляция 
• Бизнес в C++ 
• Rg-интерфейс к GUP-серверу 
Региональный 
оператор
Вайнах Телеком 
• Вторая инсталляция 
• Бизнес в LUA (meta-engine) 
• Rg-интерфейс к GUP-серверу 
Информацию о внедрении можно 
найти на сайте - http://www.vainahtelecom.ru/ 
news/press/54/
МегаФон 
• Обслуживает 100% трафика 
• Самая большая инсталляция (~200 узлов, ~15 дата-центрах) 
• Бизнес в LUA (meta-engine) 
• Ud-интерфейс к UDR 
Информацию о внедрении можно найти на сайте - 
http://www.tdaily.ru/news/ 
top-novosti/34006
Задавайте вопросы! 
Мы открыты к диалогу
Спасибо! 
Артем Руфанов 
Компания «Петер-Сервис» 
Artem.Rufanov@billing.ru 
www.billing.ru

Más contenido relacionado

La actualidad más candente

Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Ontico
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Ontico
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Ontico
 
RootConf 2015
RootConf 2015RootConf 2015
RootConf 2015
Evgeny Uskov
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Ontico
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Ontico
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
Ontico
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Ontico
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
Andrey Smirnov
 

La actualidad más candente (20)

Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
 
Скорость с доставкой до пользователя
Скорость с доставкой до пользователяСкорость с доставкой до пользователя
Скорость с доставкой до пользователя
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)Реализация восстановления после аварий / Сергей Бурладян (Avito)
Реализация восстановления после аварий / Сергей Бурладян (Avito)
 
RootConf 2015
RootConf 2015RootConf 2015
RootConf 2015
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
 
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
 

Similar a Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)

High performance computing - принципы проектирования сети
High performance computing - принципы проектирования сетиHigh performance computing - принципы проектирования сети
High performance computing - принципы проектирования сети
MUK
 
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктурыГидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Vsevolod Shabad
 
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктурыОбработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Vsevolod Shabad
 
Лекция №6 Организация ЭВМ и систем
Лекция №6 Организация ЭВМ и системЛекция №6 Организация ЭВМ и систем
Лекция №6 Организация ЭВМ и систем
pianist2317
 
High performance computing принципы проектирования сети
High performance computing принципы проектирования сетиHigh performance computing принципы проектирования сети
High performance computing принципы проектирования сети
MUK Extreme
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
Andrey Smirnov
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
Andrey Smirnov
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Ontico
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted Python
HighLoad2009
 
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
rit2011
 

Similar a Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС) (20)

Архитектура и уникальные особенности магистральной платформы Cisco NCS 6000
Архитектура и уникальные особенности магистральной платформы Cisco NCS 6000Архитектура и уникальные особенности магистральной платформы Cisco NCS 6000
Архитектура и уникальные особенности магистральной платформы Cisco NCS 6000
 
High performance computing - принципы проектирования сети
High performance computing - принципы проектирования сетиHigh performance computing - принципы проектирования сети
High performance computing - принципы проектирования сети
 
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктурыГидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктурыОбработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
 
3
33
3
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Aппаратное обеспечения для решения задач механики сыпучих сред
Aппаратное обеспечения для решения задач механики сыпучих средAппаратное обеспечения для решения задач механики сыпучих сред
Aппаратное обеспечения для решения задач механики сыпучих сред
 
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPВебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
 
Опыт внедрения OpenStack
Опыт внедрения OpenStackОпыт внедрения OpenStack
Опыт внедрения OpenStack
 
Лекция №6 Организация ЭВМ и систем
Лекция №6 Организация ЭВМ и системЛекция №6 Организация ЭВМ и систем
Лекция №6 Организация ЭВМ и систем
 
High performance computing принципы проектирования сети
High performance computing принципы проектирования сетиHigh performance computing принципы проектирования сети
High performance computing принципы проектирования сети
 
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchipРазработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
 
Методики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сетиМетодики и инструменты для самостоятельного решения проблем в сети
Методики и инструменты для самостоятельного решения проблем в сети
 
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted Python
 
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
как написать масштабируемую баннерокрутилку. денис бирюков, артем гавриченков...
 

Más de Ontico

Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 

Más de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)

  • 1. Как обслужить 60 миллионов абонентов? Артем Руфанов «Петер-Сервис»
  • 2. Ход выступления Задача Архитектур Дизайн Истории успеха
  • 3. Петер-Сервис - О компании
  • 5. Задача Реализация узла PCRF согласно 3GPP спецификации для обслуживания 60 миллионов абонентов оператора связи
  • 6. 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/
  • 7. Место PCRF в 3GPP архитектуре IMS PCRF PCEF P-GW BBERF TDF S-GW UDR / GUP OCS/ OFCS AF Gy/Gz Sd Gxx Sy Ud / Rg Rx eNodeB Интернет Gx V-PCRF S9
  • 8. Что такое 60 миллионов? Абонентская база оператора • Из них у ~100% подключена услуга мобильного интернета • Из них ~60%-80% пользуются услугой мобильного интернета • И ~12%-15% от ~60%-80% из них используют услугу сейчас Резюме • ~ 15% от ~80% это активные сессии абонента • ~ 80% это максимальный объем профилей абонентов в кэше
  • 9. Требования Системные требования • Работа в режиме 24/7 • Отсутствие единой точки отказа • Масштабирование, резервирование, гео-резервирование • Real-time время реакции • Скорость 10 000 req/sec • Поддержка vendor-specific интеграций (Cisco, Huawei, NSN и т.д.) без перекомпиляции приложения • Поддержка новых услуг без перекомпиляции приложения Функциональные требования • Соответствие стандартам 3GPP
  • 10. Окружение • OS - Win32/64, Linux 5/6 • Язык – C++, LUA • Собственные библиотеки • Типовое оборудование: CPU - Intel® Xeon® E5-2430 2.2GHZ, Memory - 24Gb, Disk - 2x600GB
  • 11. Архитектура решения • Масштабирование • Резервирование (избыточность - redundancy) • Гео-резервирование • Резервирование внешних систем • Расширение без перекомпиляции
  • 12. Масштабирование • PCRF состоит из: – PCCM (Policy & Charging Control Manager) – DRA (Diameter Routing Agent) • Узел PCCM реализует 3GPP функциональность • Узел DRA характеризуется: – Быстротой за счет простоты – Различными алгоритмами распределения нагрузки PCRF PCCM 1 PCCM 2 ... PCCM N DRA Gx PCEF
  • 13. Резервирование • Обеспечение отказоустойчивости • Классические схемы: – N+1 – 2N – 2(N+1)
  • 14. Резервирование N+1 N +1 PCRF 1 PCRF 2 ... PCRF N Reserve • Плюсы резервирования N+1: – Затраты на оборудование незначительны • Минусы резервирования N+1: – Низкая надежность резервирования ( 1 сервер) PCRF
  • 15. Резервирование 2N • Плюсы резервирования 2N: – Резервирование каждого сервера • Минусы резервирования 2N: – Затраты на оборудование выше, чем в N+1 PCRF 1 PCRF 2 PCRF N ... Reserve PCRF 1 Reserve PCRF 2 Reserve PCRF N
  • 16. Резервирование 2(N+1) N +1 PCRF 1 PCRF 2 PCRF N ... Reserve PCRF 1 Reserve PCRF 2 2N • Плюсы резервирования 2 (N+1): Reserve PCRF N Reserve PCRF Reserve PCRF N – Высокая отказоустойчивость (каждого + пары) • Минусы резервирования 2 (N+1): – Сложность реализации – Затраты на оборудование выше, чем в 2N
  • 17. Резервирование 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
  • 18. Резервирование DRA Успех, PCRF резервируется, так как: • PCCM - резервируется • DRA – резервируется, если PCEF поддерживает это PCRF DRA 2 PCEF Gx 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
  • 19. Гео-резервирование Успех, PCRF гео-резервируется. Поддерживается восстановление сессии по частичным данным PCRF 1 PCCM pool PCCM PCCM ... Group 1 Group 2 DRA 1 DRA 2 PCCM Group N PCRF 2 PCCM pool PCCM ... Group 1 DRA 1 DRA 2 PCEF 1 PCEF 2 PCCM Group 2 PCCM Group N Gx Gx Gx Gx Gx Gx Gx Gx
  • 20. Fault tolerance & load balancing Для отсутствия единой точки отказа комплекса целиком необходимо, чтобы PCRF имел функциональность резервировать внешние системы, например, хранилище профилей абонентов UDR UDR/ GUP 1 UDR/ GUP 2 PCRF Ud/Rg Ud/Rg PCCM Group s Diameter Routing Agent s
  • 21. Расширение бизнес-логики • Вся изменяющаяся часть описана на метаязыке (профили, протоколы) • Вся бизнес-логика в LUA (будущие бизнес-услуги) • Статистика: 10% кода в динамике (LUA, Def) PCRF LUA Engine Мета-описание PCC-решение LUA скрипты
  • 22. Реализация метаязыка Реализован метаязык (Def) • Статическая часть для работы в С++ & LUA (get, set) • Динамическая часть для работы в LUA (key–value) Компромисс между скоростью (вызов менеджера памяти) и потреблением памяти (выделение максимального размера) .def файлы Динамическ ая часть PCCM С++ Source Статическая часть Generator Runtime load LUA Engine
  • 23. Дизайнерские решения • Обеспечение параллельного выполнения задач • Минимизация единых точек синхронизации • Разнесение получения и декодирования данных из сети • Использование собственного менеджера памяти
  • 24. Параллелизация BBERF S-GW PCEF • Максимальное количество EvP ~= кол-во ядер • MOD(HASH(IMSI)/(кол-во EvP)) == номер EvP • IMSI • MSISDN • IMEI CPU PCRF TDF OCS/ OFCS Sd Gxx Sy Rx Gx V-PCRF S9 Core 1 Core 2 Core 3 Core 4 IMS AF Ud / Rg P-GW UDR / GUP Обработчики событий EvP 1 EvP 2 EvP 3 EvP 4
  • 25. Отсутствие точки синхр-ции Пример хранилищ • Сессии абонента • Кэш (профили абонентов) • Справочники оборудования (IMEI/TAC) • Трассируемые абоненты • Статистика и диагностика PCRF Mutex PCRF EvP EvP EvP EvP Обработчики событий EvP EvP EvP EvP Обработчики событий Минусы • В некоторых случаях приходится дублировать данные, например, справочник оборудования • Не для всех хранилищ это возможно сделать
  • 26. Декодирование Минусы • Сложность, требуется lookup для определения EvP • Дополнительное обращение к менеджеру памяти для создания сообщения декодирования в EvP Работа с сетью • Поток получения данных без их декодирования • Декодирование в EvP • No sleep! PCRF PCRF Обработчики событий Select/ Poll + Decode Network Обработчики событий Select/ Poll + lookup Network EvP EvP EvP EvP EvP + Dec ode EvP + Dec ode EvP + Dec ode EvP + Dec ode
  • 27. Менеджер памяти Требования • Многопоточный (один - выделяет, второй - освобождает) • Помощь в поиске утечек памяти Анализ менеджеров памяти • Системный менеджер памяти • Собственная реализация • Библиотека tcmalloc (thread-caching malloc из gperftools) Эксперимент (N = 1-8, Size = 128b - 1Mb): • Распараллеливание одной задачи, например, создать 1000 объектов на N потоках (N=1, Q=1000, N=2, Q=500) • Ожидаем: время выполнения обратно пропорционально количеству потоков
  • 28. Результат эксперимента (1 Kb) Вывод • Характер графика tcmalloc и системного одинаков • tcmalloc быстрее системного в 16 раз (искусственный) • Наличие потокового кэширования – критично! • Tcmalloc (нужен контроль утечек) • Собственный (нужно потоковое кэширование)
  • 29. Итог выполнения задачи Реализованные требования • Работа в режиме 24/7 • Отсутствие единой точки отказа • Масштабирование, резервирование, гео-резервирование • Real-time время реакции • Скорость 10 000 req/sec • Поддержка vendor-specific интеграций (Huawei, NSN и т.д.) без перекомпиляции приложения • Поддержка новых услуг без перекомпиляции (= новая версия) приложения
  • 30. Качество разработки (CI) Разработка UnitTests CodeReview Автотесты Нагрузочные тесты Рефакторинг, профилирован
  • 32. Региональный оператор • Первая инсталляция • Бизнес в C++ • Rg-интерфейс к GUP-серверу Региональный оператор
  • 33. Вайнах Телеком • Вторая инсталляция • Бизнес в LUA (meta-engine) • Rg-интерфейс к GUP-серверу Информацию о внедрении можно найти на сайте - http://www.vainahtelecom.ru/ news/press/54/
  • 34. МегаФон • Обслуживает 100% трафика • Самая большая инсталляция (~200 узлов, ~15 дата-центрах) • Бизнес в LUA (meta-engine) • Ud-интерфейс к UDR Информацию о внедрении можно найти на сайте - http://www.tdaily.ru/news/ top-novosti/34006
  • 35. Задавайте вопросы! Мы открыты к диалогу
  • 36. Спасибо! Артем Руфанов Компания «Петер-Сервис» Artem.Rufanov@billing.ru www.billing.ru

Notas del editor

  1. -1.Петере сервим разработчик ПО в области телекоммуникации и в ходит входит в ТОП 50 крупнейших компании РФ. (по доходу согласно cnews).
  2. -1.Операторы строяст свою сеть согласно стандартам. Это дает возможность им в будущем разсширтяь ее и заменять вендоров. Последнее видение построение сети определяется стандартом LTE которя описана 3GPP
  3. -1.Одним из узлов в сети LTE стандрата 3GPP это PCRF (Policy Control & Charging Rules Function) -2.Упрощенно PCRF – это приложение, которое принимает решение о скорости предоставления услуги абоненту. При принятии решения учитываются такие факторы, как тарифный план абонента с его опциями и турбо-кнопкой, его местоположение в сети, перегруженность сети и другие. -3.Привести пример чувака на стадионе, который смотрит фильм/ мужика который находится в переполненном торговом центре и смотрит фильм пока жена выбирает что то там.
  4. -1.Все ти протокола основаны на диамтре и в качестве транспорта используется TCP & SCTP
  5. -1.Рассказывать на примере получения доступа в интернет. В простейшем случае абонент устанавливает интернет сессию для просмотра данных. В более сложном случае… -2.Обозначить каждую из сушность, например OCS можно мыслить в простейшему случае как биллинг, TDF второе его название DPI… -2. -1.Обозначить сложность: много сущностей, всех синхронизировать
  6. -1.Традициаонный требования для телекома. В нашем случае были дополнительные требования.
  7. -1.Обозначить почему собственные библиотеки -2.Обозначить что используется общее железон, но не дома.
  8. -1.Перечислить алгоритмы максштабирования: round robin, посылка с весами
  9. -1.Обозначить что резервируем данные между PCRF, например состояние диаметральной сессии для отсутствия единой точки отказа
  10. -1.Слова мастер и слейв, говорить человечески -2.Про гор связь не говорить, но сказать о синхр контекстов
  11. -1. Сказать про важность гео-резервирования для оператора свяиз -2.Привести пример, напримен целый дата центр обесточился и площадка вышла из строя, то данные…  
  12. -1.Для расширения ввели мета язык. Данные и изменяющие сущности описаны на метаязыка, а обработки их отдали LUA-скриптам
  13. -Задачи требующие процессорного времени -Уникальный идентификатор абонента
  14. -1.В некоторый случая приходится сделаь 2 прохода
  15. -1.На текущий момент мы используем собвственный менедрже памяти. Он предоставляем помощь при поиске утечек памяти… -2.
  16. -1.Инструменты ReviewBoard, Jenkins -2.Расказать про jenkins -3.Автотесты покрили 70% -4.В предыдущей части презентации я расказал про PCRF и ее реализацию в компании Петер-Сервис. Очевидно что данная система большая, сложная и необходимо обеспечить ее адекватное качества. Для достижения этой цели мы встроили качествао в процесс.