SlideShare a Scribd company logo
1 of 50
TopGun
архитектура терабитной
платформы DPI
Леонид Юрьев
Петер-Сервис R&D
Леонид Юрьев
•
•

20 лет программирую
изобретаю, иногда не велосипеды

leo@yuriev.ru
leonid.yuriev@billing.ru
Петер-Сервис
– HighLoad c 1992 года
– принципы: взялись → дожимаем, качество, модульность

• решения для крупных операторов связи – BSS, Telco, BigData,
High Availability & High Load
• полный цикл – разработка, внедрение и обслуживание
• более 100 миллионов абонентов – при участии наших систем
• 900 сотрудников, из них – 400 разработка, 250 внедрение и
саппорт
• 450 фич/год
Agenda
• Что такое и для чего DPI?
• TopGun – зачем и почему?

25
СЛАЙДОВ

• Основные плюшки 3+1
• Круто!
• Будет Event…
• Вопросы
Agenda
• Что такое и для чего DPI?
• TopGun – зачем и почему?

25
СЛАЙДОВ

• Основные плюшки 3+1
• Круто!
• Будет Event…
• Вопросы
Что такое DPI?
– Технология анализа полного содержимого трафика выше L2 по OSI
http://ru.wikipedia.org/wiki/Deep_packet_inspection

Сеть

•
•
•
•

DPI

Интернет

устанавливается у оператора
работает с «сырыми» пакетами
включение «в разрыв» – может вмешиваться в трафик
подключение «на копию» – просто наблюдает

FLOW – примерно/грубо соответствует соединению TCP/UDP
Кому и зачем нужен DPI?
– Государству и Бизнесу, Usecases очень много…

Защита
• Блокировка вторжений (IDS, IPS)
• Отсечение DoS-атак

Качество обслуживания,
Гибкие тарифы
• QoS и шейпинг с управлением
потоком (торренты не мешают)
• Subscriber Management

Фильтрация
• Родительский контроль, Антивирус
• РОСКОМНАДЗОР

Информативность
• Customer Experience Management
• Данные для таргетирования
рекламы
• Статистика и оперативный
Мониторинг сети

Требования законодательства
и регулирование
• В мире: СОРМ и PRISM
• В России: 114-ФЗ, 139-ФЗ, ПП-538
• Предотвращение утечек (DLP)

+100500…
Насколько законно и этично?
– Зависит от usecase, а они очень разные…

Законно, если…
• Госорганы – в соответствии с
законами:
114-ФЗ, 139-ФЗ, ПП-538
• Бизнес – в соответствии с
договором с пользователем
• Бизнес – в соответствии с
договором с работником (DLP)
• Если заказана соответствующая
услуга

Этично, когда…
• Открыто, не подпольно
• Анализирует машина, не
человек
• Важно как используется
результат
• Обеспечить корректное
использование – задача
государства и общества
Сложность задачи
– Какие проблемы, Captain?
1. Wire Speed
• 14.8 × 2 миллионов пакетов в секунду на каждые 10Gb

2. Отказоустойчивость
• иначе «интернет не работает» и потеря денег

3. Много N×10 GbE
• требуется масштабирование и балансировка
• миллионы flow, сотни тысяч каждую секунду
• защита от DDoS, родительский контроль,
тарифы «торренты в фоне»

4. Готовность к разным задачам
• иначе переделывать или отказываться

– Аaaа… but the Challenge!
Зачем нужен 101-й DPI?
– у конкурентов есть проблемы
Зачем нужен 101-й DPI?
– у конкурентов есть проблемы
1. Зависимость от оборудования
• hardware vendor lock-in
– выгодно вендору, но не оператору
• не-тиражная электроника
– стоимость, риски незаменимости и уникальности
• нет маневра от закладок
– выше риски их обнаружить (shit happens)
Зачем нужен 101-й DPI?
– у конкурентов есть проблемы
1. Зависимость от оборудования
• hardware vendor lock-in
– выгодно вендору, но не оператору
• не-тиражная электроника
– стоимость, риски незаменимости и уникальности
• нет маневра от закладок
– выше риски их обнаружить (shit happens)

2. Нет готовности к «разным задачам»
• сложно/невозможно доработать систему под новые задачи
– как пример, добавить распаковку gzip к акселератору regex
• нет эластичности вычислительной сложности обработки
– дальше поясню
Зачем нужен 101-й DPI?
– у конкурентов есть проблемы
1. Зависимость от оборудования

• «просто так» никто
не сознается

• hardware vendor lock-in
– выгодно вендору, но не оператору
• аппаратный DPI
• не-тиражная электроника
х
–
– стоимость, риски незаменимости и уникальностиэто ерунда из 90
• нет маневра от закладок
– выше риски их обнаружить (shit happens)

2. Нет готовности к «разным задачам»
• сложно/невозможно доработать систему под новые задачи
– как пример, добавить распаковку gzip к акселератору regex
• нет эластичности вычислительной сложности обработки
– дальше поясню
Нет эластичности вычислительной сложности
– де-факто имеем два варианта «софтверной архитектуры»
Нет эластичности вычислительной сложности
– де-факто имеем два варианта «софтверной архитектуры»
OLD SCHOOL
•
•
•
•

generic interface & large i/o overhead
от наших 5 копеек ничего не зависит
делаем гибко и удобно, это навсегда
подходит для задач где,
много вычислений
• иначе – 90% в накладных расходах
≈ 500`000
попугаев в секунду
Нет эластичности вычислительной сложности
– де-факто имеем два варианта «софтверной архитектуры»
OLD SCHOOL

А ТЕПЕРЬ PPS

•
•
•
•

•
•
•
•

generic interface & large i/o overhead
от наших 5 копеек ничего не зависит
делаем гибко и удобно, это навсегда
подходит для задач где,
много вычислений
• иначе – 90% в накладных расходах
≈ 500`000
попугаев в секунду

работаем с DMA-RING или рядом
считаем такты, рекордный PPS
hardcode, трудно и неудобно
подходит для задач где,
мало вычислений
• иначе – экономия на спичках
≈ 50`000`000
попугаев в секунду
Нет эластичности вычислительной сложности
– де-факто имеем два варианта «софтверной архитектуры»
OLD SCHOOL

А ТЕПЕРЬ PPS

•
•
•
•

generic interface & large i/o overhead • работаем с DMA-RING или рядом
– выбрать один из вариантов
от наших 5 копеек ничего не зависит • считаем такты, рекордный PPS
делаем гибко ии не посягать на задачи другогои неудобно
удобно, это навсегда • hardcode, трудно ?
подходит для задач где,
• подходит для задач где,
много вычислений
мало вычислений
• иначе – 90% в накладных расходах
• иначе – экономия на спичках
≈ 500`000
попугаев в секунду

≈ 50`000`000
попугаев в секунду
Наши цели, что хотим сделать?
– JFK: Американец, Первым, на Луне, Вернуться, Живой

Свободно
• без привязки к конкретному
«железу»
• на оборудовании максимально
широкого спектра

Эластично
• чтобы просто «добавлять
серверы», без революций в коде
• масштабируемо,
без неустранимых внутренних
ограничений

Эффективно
• с потерей на универсальности
порядка 10%

Конкурентно
• с отказоустойчивостью
• с низкой стоимостью владения

Платформа
• для DPI-приложений широкого
спектра
Что сделано, каков продукт?
– запилили прототип и решили поделиться мыслями

Скромничаем…

А если померяться?

• 90% зависит от usecase/FL

• ширина канала ≈ сколько потребуется

• раскрывать детали не готовы

• пакетов в секунду ≈ wire speed

• приходите, расскажем подробнее

• задержка ≈ 100 μs

• простые метрики – для простых
задач

• на ядро ≈ 90% от рекордов:
– платим 10% за совершенство архитектуры
– в сравнении с Intel DPDK
– без prefetch, спрашивайте почему…
TopGun
– I feel the need... The need for speed!
Scope платформы
Платформа = TopGun
Не входит:
• Переключатель (bypass)
• Управление и мониторинг
• Внешние подсистемы

FUSE

Управление
и
мониторинг

TOPGUN

Внешние
системы
Основные слагаемые: 3+1=4
– плюшек больше, некоторые успеем распробовать

Распределение трафика
• mac rewrite и раздаем коммутаторами
• управляется роем

Рой обработчиков
• оцениваем здоровье и связанность
• виртуальные микро-машины

Табло
• контексты как наборы key-value
• контролируем объем трафика и размер реплик

Транспорт событий
• замысел и что внутри
Анатомия скелета

1

– что-куда подключено

ПЕРЕКЛЮЧАТЕЛЬ

Схеме около 50 лет…

ВКЛЮЧЕНО

1. Переключатель

2

РАСПРЕДЕЛЕНИЕ

РАСПРЕДЕЛЕНИЕ

3

DATA PLANE

DATA PLANE

2. Распределение трафика

3. Data Plane (Switch)

ГОРЯЧИЙ РЕЗЕРВ

6. Супервизор

7. Перешеек для репликации
между копиями – наш addition

5

7
CONTROL PLANE

6

ЗЕРКАЛИРОВАНИЕ требуется ТОЛЬКО
для failover «СОВСЕМ БЕЗ ПОТЕРЬ»

CONTROL PLANE

SUPERVISOR

BLADE

BLADE

BLADE

BLADE

BLADE

BLADE

BLADE

BLADE

4

BLADE

5. Control Plane (Switch)

BLADE

4. Обрабатывающие серверы
Что есть «Балансировка»?

БАЛАНСИРОВКА

РАСПРЕДЕЛЕНИЕ

УПРАВЛЕНИЕ
Распределение трафика

ПЕРЕКЛЮЧАТЕЛЬ

– MAC rewrite + коммутаторы

лучше раздавать коммутаторами,
они быстрые и…

•

ассоциативная таблица MAC → ПОРТ
отлично подходит

?
MAC → PORT#

?
BLADE

DATA PLANE
(Коммутатор)
BLADE

•

РАСПРЕДЕЛЕНИЕ

BLADE

для балансировки трафик нужно нарезать

BLADE

•

BLADE

Замысел
Распределение трафика

ПЕРЕКЛЮЧАТЕЛЬ

– MAC rewrite + коммутаторы

Замысел

ассоциативная таблица MAC → ПОРТ
отлично подходит

Магия
1.

посчитаем HASH от IP и запишем два
байта в MAC, получаем 65536 сегментов
трафика

2.

распределим сегменты по обработчикам

3.

пусть обработчики пингуют DATA PLANE
от имени MAC нужных им сегментов

MAC → PORT#

SEG #
BLADE

DATA PLANE
(Коммутатор)
BLADE

•

dst-MAC[0,1,2,3] = 0x77
dst-MAC[4,5] = Hash(IP)

BLADE

лучше раздавать коммутаторами,
они быстрые и…

BLADE

•

РАСПРЕДЕЛЕНИЕ

для балансировки трафик нужно нарезать

BLADE

•
Распределение трафика

ПЕРЕКЛЮЧАТЕЛЬ

– MAC rewrite + коммутаторы

Плюсы
• молниеносная управляемость
при статической конфигурации

РАСПРЕДЕЛЕНИЕ
dst-MAC[0,1,2,3] = 0x77
dst-MAC[4,5] = Hash(IP)

• мгновенный failover
– при сбое broadcast и активация

BLADE

BLADE

BLADE

SEG #

DATA PLANE
(Коммутатор)
BLADE

• на нас работает весь Ethernet:
– Pause Frame, Spanning Tree, LAG…

MAC → PORT#

BLADE

• простое расширение
– достаточно подключить оборудование
MAC rewrite
– есть подводные камни
MAC rewrite
– есть подводные камни
OpenFlow
• Таблица вместо Hash и не везде есть SetField
• Требуются ACL и TCAM
• Вместо 65K получаем порядка 1000
MAC rewrite
– есть подводные камни
OpenFlow
• Таблица вместо Hash и не везде есть SetField
• Требуются ACL и TCAM
• Вместо 65K получаем порядка 1000

Arista 7124FX и всяческие FPGA
• Да, но не удобно и vendor lock-in
MAC rewrite
– есть подводные камни
OpenFlow
• Таблица вместо Hash и не везде есть SetField
• Требуются ACL и TCAM
• Вместо 65K получаем порядка 1000

Arista 7124FX и всяческие FPGA
• Да, но не удобно и vendor lock-in

POF – серебряная пуля?
• Предложения по расширению OpenFlow
• Позволяет посчитать CRC и записать в MAC
• Protocol-Oblivious Forwarding, http://www.poforwarding.org/
MAC rewrite
– есть подводные камни
OpenFlow
• Таблица вместо Hash и не везде есть SetField
• Требуются ACL и TCAM
• Вместо 65K получаем порядка 1000

Arista 7124FX и всяческие FPGA
• Да, но не удобно и vendor lock-in

POF – серебряная пуля?
• Предложения по расширению OpenFlow
• Позволяет посчитать CRC и записать в MAC
• Protocol-Oblivious Forwarding, http://www.poforwarding.org/

– продержаться
можно, ожидаем
подкрепление
Swarm Arrives!

Роевой Интеллект – эффект коллективного поведения
децентрализованной самоорганизующейся системы

Цель общая, действия локальны
• все получают одну инструкцию, но действуют
самостоятельно
• избавляемся от микро-менеджмента

Каждый знает о каждом
• информация для согласованных решений
• пример – поезда и смена расписания
• можем балансировать децентрализовано

Один ничто, рой все
• потеря единицы не должна влиять на результат
• не храним ценного внутри, реплицируем
• идеальный failover
Балансировка – управляем роем

ПЕРЕКЛЮЧАТЕЛЬ

Оцениваем обработчики
РАСПРЕДЕЛЕНИЕ

• производим перекрестную оценку каждого
• оцениваем здоровье и связанность с роем

?

BLADE

BLADE

BLADE
SEG#

DATA PLANE
BLADE

MAC → PORT#

MAC → PORT#

BLADE

• проверяем Data Plane и Control Plane

SEG#

SEG#

SEG#

SEG#

?

?

?

?

CONTROL PLANE
(Коммутатор)
Балансировка – управляем роем

ПЕРЕКЛЮЧАТЕЛЬ

Оцениваем обработчики
РАСПРЕДЕЛЕНИЕ

• производим перекрестную оценку каждого
• оцениваем здоровье и связанность с роем

BLADE

• используем NTP и timestamps

SEG#

• много деталей и know how

LIST

BLADE

• у каждого обработчика свой список роя

BLADE

Ведем перепись

DATA PLANE
BLADE

MAC → PORT#

MAC → PORT#

BLADE

• проверяем Data Plane и Control Plane

SEG#

SEG#

SEG#

SEG#

LIST

LIST

LIST

LIST

CONTROL PLANE
(Коммутатор)
Балансировка – управляем роем

ПЕРЕКЛЮЧАТЕЛЬ

Оцениваем обработчики
РАСПРЕДЕЛЕНИЕ

• производим перекрестную оценку каждого
• оцениваем здоровье и связанность с роем

BLADE

• используем NTP и timestamps

SEG#

• много деталей и know how

LIST

SEG#

SEG#

SEG#

SEG#

LIST

LIST

LIST

LIST

Балансирует каждый !
• по своему списку выбирает себе Сегменты

• hash ring не используем – мало Сегментов
• балансируем по ядрам, не по серверам

BLADE

• у каждого обработчика свой список роя

BLADE

Ведем перепись

DATA PLANE
BLADE

MAC → PORT#

MAC → PORT#

BLADE

• проверяем Data Plane и Control Plane

CONTROL PLANE
(Коммутатор)
Балансировка – управляем роем

ПЕРЕКЛЮЧАТЕЛЬ

Плюсы

• Легко мониторить и интегрировать
– просто слушаем Control Plane

LIST

BLADE

SEG#

BLADE

BLADE

DATA PLANE
BLADE

• Отказоустойчиво
– децентрализовано
– нет единой точки отказа

MAC → PORT#

MAC → PORT#

BLADE

• Самодиагностика
– постоянная и встроенная

РАСПРЕДЕЛЕНИЕ

SEG#

SEG#

SEG#

SEG#

LIST

LIST

LIST

LIST

CONTROL PLANE
(Коммутатор)
Табло для роя

ПЕРЕКЛЮЧАТЕЛЬ

– оперативное общедоступное хранилище

Табло

РАСПРЕДЕЛЕНИЕ

• простое key-value хранилище

реплика
ТАБЛО

CONTROL PLANE

BLADE

BLADE

• unordered map + shared memory + lockfree

key1 = value + version
key2 = value + version
…
key# = value + version

BLADE

• заточено под zerocopy & DMA

BLADE

• как-то все записи версионированы

BLADE

DATA PLANE
Табло для роя

ПЕРЕКЛЮЧАТЕЛЬ

– оперативное общедоступное хранилище

Табло

РАСПРЕДЕЛЕНИЕ

• простое key-value хранилище

Реплицируем
• реплика на каждом сервере

реплика
ТАБЛО

• при локальном изменении
отправляется уведомление в Control Plane
• получаемые обновления вливаются
с учетом версионности
• нет единого формата версии, зависит от
данных и задачи

CONTROL PLANE

BLADE

BLADE

• unordered map + shared memory + lockfree

key1 = value + version
key2 = value + version
…
key# = value + version

BLADE

• заточено под zerocopy & DMA

BLADE

• как-то все записи версионированы

BLADE

DATA PLANE
Обработка роем

ПЕРЕКЛЮЧАТЕЛЬ

– это и есть самое главное

Трансформируем задачи

РАСПРЕДЕЛЕНИЕ

• сводим к виртуальной микро-машине

from=10.0.0.1:4629
to=199.32.42.3:80
…

реплика
ТАБЛО

CONTROL PLANE

BLADE

BLADE

ОБРАБОТЧИК

BLADE

BLADE

• состояние представляем как набор key-value

BLADE

DATA PLANE
Обработка роем

ПЕРЕКЛЮЧАТЕЛЬ

– это и есть самое главное

Трансформируем задачи

РАСПРЕДЕЛЕНИЕ

• сводим к виртуальной микро-машине

• находим способ версионировать

СОСТОЯНИЕ
from=10.0.0.1:4629
to=199.32.42.3:80
node={A.5, Green}
…
inbound=200
outbound=6346

реплика
ТАБЛО

CONTROL PLANE

BLADE

BLADE

BLADE

ОБРАБОТЧИК

Версионируем состояние
• пакеты – события,
обработка которых меняет состояние

BLADE

• состояние представляем как набор key-value

BLADE

DATA PLANE
Обработка роем

ПЕРЕКЛЮЧАТЕЛЬ

– это и есть самое главное

Трансформируем задачи

РАСПРЕДЕЛЕНИЕ

• сводим к виртуальной микро-машине

• находим способ версионировать

Обработчики – Stateless
• хранят состояние на Табло

СОСТОЯНИЕ
from=10.0.0.1:4629
to=199.32.42.3:80
node={A.5, Green}
…
inbound=200
outbound=6346

• не хранят ценного внутри, только кэшируют
• работают в цикле
– receive event, get state, handle, put state

реплика
ТАБЛО

CONTROL PLANE

BLADE

BLADE

BLADE

ОБРАБОТЧИК

Версионируем состояние
• пакеты – события,
обработка которых меняет состояние

BLADE

• состояние представляем как набор key-value

BLADE

DATA PLANE
Рой – обработка и «Табло»

ПЕРЕКЛЮЧАТЕЛЬ

Tradeoff

РАСПРЕДЕЛЕНИЕ

• Уменьшаем трафик по Control Plane
отправляя оповещения реже

Тонкости
• TCP Window – носим «чемодан с
батарейками»
• TCP Sequences – дуплексный маркер
направления потока данных

from=10.0.0.1:4629
to=199.32.42.3:80
node={A.5, Green}
…
inbound=200
outbound=6346

• у обработчика локальный writeback
cache, запись в реплику через отдельную
очередь

WRITEBACK
FIFO

реплика
ТАБЛО

CONTROL PLANE

BLADE

BLADE

BLADE

ОБРАБОТЧИК

BLADE

• Уменьшаем объем реплик,
храня только свое или 1-ю линию failover

BLADE

DATA PLANE
Свой «Транспорт»

C/C++

Неплохо бы…

POD

Java
PAIR LIST

• единообразно: in-process, in-server,
over-network, плюс со-процессоры

• мега-эффективный обмен сообщениями

Go

D

STREAMING

MQ

Erlang

safemode
zerocopy

• автоматические запятые – копировать
нельзя шарить DMA

priority
inheritance

КАКАЯ-ТО МАГИЯ
lockfree

…

DMA

Дизайн
• zerocopy + shared memory + lockfee + PI
• разные «транспорты» под один фасад
• операции со «строками» и итераторы

• ensure & asserts, safemode…
• сложности – в отдельный процесс

DPDK

MPI

ØMQ

netmap

SHARED RAM

NETWORK

CONTROL PLANE

DATA PLANE

IPC
Свой «Транспорт»

C/C++

Внутри

POD

• действительно эффективные итераторы и
операции с цепочками

PAIR LIST

Планы
• LGPL ≈ 1Hippeus, this is SPARTA!
• Думаем о Erlang, Go, D, Java, Xeon Phi, CUDA,
Tilera…

STREAMING

MQ

MESSAGE = a list of chunks
chunk

chunk

DATA

INPLACE

• очередь сообщений и диспетчер с пулом
потоков
• providers: Intel DPDK, netmap, 0mq, MPI...

D

FIFO

• чистый lockfree (CAS & retry-on-fail),
либо checked busyloop с выходом на PI-futex

Go

Erlang

chunk

WEAK

• концепт буфера как куска памяти и
offset_ptr (для сопроцессоров…)

Java

external
data

PROVIDER INTERFACE

DPDK

MPI

ØMQ

netmap

SHARED RAM

NETWORK

CONTROL PLANE

DATA PLANE

IPC
Свой «Транспорт»

C/C++

Внутри

POD

Java
PAIR LIST

• концепт буфера как куска памяти и
offset_ptr (для сопроцессоров…)

• чистый lockfree (CAS & retry-on-fail),
либо checked busyloop с выходом на PI-futex
• действительно эффективные итераторы и
операции с цепочками

Go

D

STREAMING

MQ

Erlang

to be continued…

HighLoad++
2014

• очередь сообщений и диспетчер с пулом
потоков
• providers: Intel DPDK, netmap, 0mq, MPI...

Планы
• LGPL ≈ 1Hippeus, this is SPARTA!
• Думаем о Erlang, Go, D, Java, Xeon Phi, CUDA,
Tilera…

DPDK

MPI

ØMQ

netmap

SHARED RAM

NETWORK

CONTROL PLANE

DATA PLANE

IPC
У нас получается, круто!
Масштабируемость

Эластичность и эффективность

• распределение коммутаторами

• «транспорт» дает гибкость за 10%

• MAC rewrite – OpenFlow & Arista,
на подходе POF

• при нехватке CPU/RAM можем просто
подключить еще

• децентрализованное управление
распределением трафика

• доступен safemode или непосредственно
shared memory

Надежность / Стоимость

Платформа

• нет единой точки отказа

• распределенное Табло для данных

• прореживаем репликации Табло –
уменьшаем трафик Control Plane

• микро-машины с версионируемым
состоянием

• храним в репликах Табло меньше чужих
данных – уменьшаем требования RAM

• обмен сообщениями
вне зависимости от среды передачи

• нужна полная гарантия «без потерь» –
ставим зеркало
Checkpoint: Подведем итоги
DPI нужен – как Бизнесу, так и Государству
TopGun – интересная и сложная задача
• Масштабируемо с роевым интеллектом
• Эластично и независимо от «железа»
• Стоимость/надежность – можно балансировать
• Легко развивать, терабит, задержка 100 μs
Много нераскрытых тем,
будет семинар 03.12.2013

• Законность и этика, конфиденциальность, сетевой нейтралитет
• Технология как стратегическое преимущество
• Больше usecases и Бизнеса
• Что уже сделано, пилотные проекты и внедрения
• Больше технических подробностей
• http://www.billing.ru/events/560
TopGun: Вопросы?
Сейчас – HighLoad
• Предпосылки и цели TopGun
• MAC rewrite и распределение
трафика
• Рой – управление
балансировкой
• Рой – обработчики
• Рой – поддержка Табло
• Транспорт, zerocopy, lockfree, PI,
диспетчеризация

На встрече
в Петер-Сервис
•
•
•
•

Usecases и Бизнес
http://www.billing.ru/events/560
Когда релиз?
Законность и этика
Свобода и конфиденциальность,
компромисс с реальностью
• Технология как стратегическое
преимущество
• Поддерживаемые протоколы
• Пилотные проекты и внедрения

More Related Content

What's hot

Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Ontico
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)Ontico
 
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Ontico
 
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...Ontico
 
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Ontico
 
Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Ontico
 
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)Ontico
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Ontico
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Ontico
 
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...Ontico
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииNikolay Sivko
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Николай Лавлинский
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015Alex Chistyakov
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ontico
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Ontico
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на productionNikolay Sivko
 

What's hot (20)

Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
 
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
 
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
 
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
 
Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)
 
Потенциал метода ББК
Потенциал метода ББКПотенциал метода ББК
Потенциал метода ББК
 
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
 
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на production
 

Similar to Highload++2013: TopGun - архитектура терабитной платформы DPI

Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Ontico
 
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)Ontico
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
 
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...Ontico
 
Разбор реального кейса построения гибридного облака.
Разбор реального кейса построения гибридного облака.Разбор реального кейса построения гибридного облака.
Разбор реального кейса построения гибридного облака.Максим Захаренко
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)Ontico
 
Как сделать веб-карту, сохранить здоровье и возненавидеть IE
Как сделать веб-карту, сохранить здоровье и возненавидеть IEКак сделать веб-карту, сохранить здоровье и возненавидеть IE
Как сделать веб-карту, сохранить здоровье и возненавидеть IEАртём Кудзев
 
11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...
11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...
11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...HappyDev
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsDaniel Podolsky
 
Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...
Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...
Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...Evgeny Kokovikhin
 
WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...
WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...
WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...Procontent.Ru Magazine
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Fwdays
 
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...Fwdays
 
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)Ontico
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...it-people
 
OSSDEV-2015: ReOpenLDAP
OSSDEV-2015: ReOpenLDAPOSSDEV-2015: ReOpenLDAP
OSSDEV-2015: ReOpenLDAPLeonid Yuriev
 

Similar to Highload++2013: TopGun - архитектура терабитной платформы DPI (20)

Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
Считаем Рунет или миллион pps в секунду / Дмитрий Смирнов (TNS Russia)
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
 
Разбор реального кейса построения гибридного облака.
Разбор реального кейса построения гибридного облака.Разбор реального кейса построения гибридного облака.
Разбор реального кейса построения гибридного облака.
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
 
Как сделать веб-карту, сохранить здоровье и возненавидеть IE
Как сделать веб-карту, сохранить здоровье и возненавидеть IEКак сделать веб-карту, сохранить здоровье и возненавидеть IE
Как сделать веб-карту, сохранить здоровье и возненавидеть IE
 
11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...
11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...
11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...
 
Sivko
SivkoSivko
Sivko
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
 
Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...
Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...
Как показывать 200 миллионов баннеров ежедневно и быть готовым показать милли...
 
WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...
WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...
WapStart: Как показывать 200 миллионов баннеров ежедневно и быть готовым пока...
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
 
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
 
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
OSSDEV-2015: ReOpenLDAP
OSSDEV-2015: ReOpenLDAPOSSDEV-2015: ReOpenLDAP
OSSDEV-2015: ReOpenLDAP
 

More from Leonid Yuriev

libfpta: в памяти, с персистентностью, быстрее хайпа
libfpta: в памяти, с персистентностью, быстрее хайпаlibfpta: в памяти, с персистентностью, быстрее хайпа
libfpta: в памяти, с персистентностью, быстрее хайпаLeonid Yuriev
 
Сегментация и поиск совпадений в бинарном потоке
Сегментация и поиск совпадений в бинарном потокеСегментация и поиск совпадений в бинарном потоке
Сегментация и поиск совпадений в бинарном потокеLeonid Yuriev
 
Движок LMDB - особенный чемпион
Движок LMDB - особенный чемпионДвижок LMDB - особенный чемпион
Движок LMDB - особенный чемпионLeonid Yuriev
 
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen ITDevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen ITLeonid Yuriev
 
Highload++2014: 1Hippeus - zerocopy messaging in the spirit of Sparta!
Highload++2014: 1Hippeus - zerocopy messaging in the spirit of Sparta!Highload++2014: 1Hippeus - zerocopy messaging in the spirit of Sparta!
Highload++2014: 1Hippeus - zerocopy messaging in the spirit of Sparta!Leonid Yuriev
 
Devconf-2014: Ноотропы для BigData
Devconf-2014: Ноотропы для BigDataDevconf-2014: Ноотропы для BigData
Devconf-2014: Ноотропы для BigDataLeonid Yuriev
 
РИТ-2014: Ноотропы RDF для BigData
РИТ-2014: Ноотропы RDF для BigDataРИТ-2014: Ноотропы RDF для BigData
РИТ-2014: Ноотропы RDF для BigDataLeonid Yuriev
 

More from Leonid Yuriev (7)

libfpta: в памяти, с персистентностью, быстрее хайпа
libfpta: в памяти, с персистентностью, быстрее хайпаlibfpta: в памяти, с персистентностью, быстрее хайпа
libfpta: в памяти, с персистентностью, быстрее хайпа
 
Сегментация и поиск совпадений в бинарном потоке
Сегментация и поиск совпадений в бинарном потокеСегментация и поиск совпадений в бинарном потоке
Сегментация и поиск совпадений в бинарном потоке
 
Движок LMDB - особенный чемпион
Движок LMDB - особенный чемпионДвижок LMDB - особенный чемпион
Движок LMDB - особенный чемпион
 
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen ITDevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
 
Highload++2014: 1Hippeus - zerocopy messaging in the spirit of Sparta!
Highload++2014: 1Hippeus - zerocopy messaging in the spirit of Sparta!Highload++2014: 1Hippeus - zerocopy messaging in the spirit of Sparta!
Highload++2014: 1Hippeus - zerocopy messaging in the spirit of Sparta!
 
Devconf-2014: Ноотропы для BigData
Devconf-2014: Ноотропы для BigDataDevconf-2014: Ноотропы для BigData
Devconf-2014: Ноотропы для BigData
 
РИТ-2014: Ноотропы RDF для BigData
РИТ-2014: Ноотропы RDF для BigDataРИТ-2014: Ноотропы RDF для BigData
РИТ-2014: Ноотропы RDF для BigData
 

Highload++2013: TopGun - архитектура терабитной платформы DPI

  • 2. Леонид Юрьев • • 20 лет программирую изобретаю, иногда не велосипеды leo@yuriev.ru leonid.yuriev@billing.ru
  • 3. Петер-Сервис – HighLoad c 1992 года – принципы: взялись → дожимаем, качество, модульность • решения для крупных операторов связи – BSS, Telco, BigData, High Availability & High Load • полный цикл – разработка, внедрение и обслуживание • более 100 миллионов абонентов – при участии наших систем • 900 сотрудников, из них – 400 разработка, 250 внедрение и саппорт • 450 фич/год
  • 4. Agenda • Что такое и для чего DPI? • TopGun – зачем и почему? 25 СЛАЙДОВ • Основные плюшки 3+1 • Круто! • Будет Event… • Вопросы
  • 5. Agenda • Что такое и для чего DPI? • TopGun – зачем и почему? 25 СЛАЙДОВ • Основные плюшки 3+1 • Круто! • Будет Event… • Вопросы
  • 6. Что такое DPI? – Технология анализа полного содержимого трафика выше L2 по OSI http://ru.wikipedia.org/wiki/Deep_packet_inspection Сеть • • • • DPI Интернет устанавливается у оператора работает с «сырыми» пакетами включение «в разрыв» – может вмешиваться в трафик подключение «на копию» – просто наблюдает FLOW – примерно/грубо соответствует соединению TCP/UDP
  • 7. Кому и зачем нужен DPI? – Государству и Бизнесу, Usecases очень много… Защита • Блокировка вторжений (IDS, IPS) • Отсечение DoS-атак Качество обслуживания, Гибкие тарифы • QoS и шейпинг с управлением потоком (торренты не мешают) • Subscriber Management Фильтрация • Родительский контроль, Антивирус • РОСКОМНАДЗОР Информативность • Customer Experience Management • Данные для таргетирования рекламы • Статистика и оперативный Мониторинг сети Требования законодательства и регулирование • В мире: СОРМ и PRISM • В России: 114-ФЗ, 139-ФЗ, ПП-538 • Предотвращение утечек (DLP) +100500…
  • 8. Насколько законно и этично? – Зависит от usecase, а они очень разные… Законно, если… • Госорганы – в соответствии с законами: 114-ФЗ, 139-ФЗ, ПП-538 • Бизнес – в соответствии с договором с пользователем • Бизнес – в соответствии с договором с работником (DLP) • Если заказана соответствующая услуга Этично, когда… • Открыто, не подпольно • Анализирует машина, не человек • Важно как используется результат • Обеспечить корректное использование – задача государства и общества
  • 9. Сложность задачи – Какие проблемы, Captain? 1. Wire Speed • 14.8 × 2 миллионов пакетов в секунду на каждые 10Gb 2. Отказоустойчивость • иначе «интернет не работает» и потеря денег 3. Много N×10 GbE • требуется масштабирование и балансировка • миллионы flow, сотни тысяч каждую секунду • защита от DDoS, родительский контроль, тарифы «торренты в фоне» 4. Готовность к разным задачам • иначе переделывать или отказываться – Аaaа… but the Challenge!
  • 10. Зачем нужен 101-й DPI? – у конкурентов есть проблемы
  • 11. Зачем нужен 101-й DPI? – у конкурентов есть проблемы 1. Зависимость от оборудования • hardware vendor lock-in – выгодно вендору, но не оператору • не-тиражная электроника – стоимость, риски незаменимости и уникальности • нет маневра от закладок – выше риски их обнаружить (shit happens)
  • 12. Зачем нужен 101-й DPI? – у конкурентов есть проблемы 1. Зависимость от оборудования • hardware vendor lock-in – выгодно вендору, но не оператору • не-тиражная электроника – стоимость, риски незаменимости и уникальности • нет маневра от закладок – выше риски их обнаружить (shit happens) 2. Нет готовности к «разным задачам» • сложно/невозможно доработать систему под новые задачи – как пример, добавить распаковку gzip к акселератору regex • нет эластичности вычислительной сложности обработки – дальше поясню
  • 13. Зачем нужен 101-й DPI? – у конкурентов есть проблемы 1. Зависимость от оборудования • «просто так» никто не сознается • hardware vendor lock-in – выгодно вендору, но не оператору • аппаратный DPI • не-тиражная электроника х – – стоимость, риски незаменимости и уникальностиэто ерунда из 90 • нет маневра от закладок – выше риски их обнаружить (shit happens) 2. Нет готовности к «разным задачам» • сложно/невозможно доработать систему под новые задачи – как пример, добавить распаковку gzip к акселератору regex • нет эластичности вычислительной сложности обработки – дальше поясню
  • 14. Нет эластичности вычислительной сложности – де-факто имеем два варианта «софтверной архитектуры»
  • 15. Нет эластичности вычислительной сложности – де-факто имеем два варианта «софтверной архитектуры» OLD SCHOOL • • • • generic interface & large i/o overhead от наших 5 копеек ничего не зависит делаем гибко и удобно, это навсегда подходит для задач где, много вычислений • иначе – 90% в накладных расходах ≈ 500`000 попугаев в секунду
  • 16. Нет эластичности вычислительной сложности – де-факто имеем два варианта «софтверной архитектуры» OLD SCHOOL А ТЕПЕРЬ PPS • • • • • • • • generic interface & large i/o overhead от наших 5 копеек ничего не зависит делаем гибко и удобно, это навсегда подходит для задач где, много вычислений • иначе – 90% в накладных расходах ≈ 500`000 попугаев в секунду работаем с DMA-RING или рядом считаем такты, рекордный PPS hardcode, трудно и неудобно подходит для задач где, мало вычислений • иначе – экономия на спичках ≈ 50`000`000 попугаев в секунду
  • 17. Нет эластичности вычислительной сложности – де-факто имеем два варианта «софтверной архитектуры» OLD SCHOOL А ТЕПЕРЬ PPS • • • • generic interface & large i/o overhead • работаем с DMA-RING или рядом – выбрать один из вариантов от наших 5 копеек ничего не зависит • считаем такты, рекордный PPS делаем гибко ии не посягать на задачи другогои неудобно удобно, это навсегда • hardcode, трудно ? подходит для задач где, • подходит для задач где, много вычислений мало вычислений • иначе – 90% в накладных расходах • иначе – экономия на спичках ≈ 500`000 попугаев в секунду ≈ 50`000`000 попугаев в секунду
  • 18. Наши цели, что хотим сделать? – JFK: Американец, Первым, на Луне, Вернуться, Живой Свободно • без привязки к конкретному «железу» • на оборудовании максимально широкого спектра Эластично • чтобы просто «добавлять серверы», без революций в коде • масштабируемо, без неустранимых внутренних ограничений Эффективно • с потерей на универсальности порядка 10% Конкурентно • с отказоустойчивостью • с низкой стоимостью владения Платформа • для DPI-приложений широкого спектра
  • 19. Что сделано, каков продукт? – запилили прототип и решили поделиться мыслями Скромничаем… А если померяться? • 90% зависит от usecase/FL • ширина канала ≈ сколько потребуется • раскрывать детали не готовы • пакетов в секунду ≈ wire speed • приходите, расскажем подробнее • задержка ≈ 100 μs • простые метрики – для простых задач • на ядро ≈ 90% от рекордов: – платим 10% за совершенство архитектуры – в сравнении с Intel DPDK – без prefetch, спрашивайте почему…
  • 20. TopGun – I feel the need... The need for speed!
  • 21. Scope платформы Платформа = TopGun Не входит: • Переключатель (bypass) • Управление и мониторинг • Внешние подсистемы FUSE Управление и мониторинг TOPGUN Внешние системы
  • 22. Основные слагаемые: 3+1=4 – плюшек больше, некоторые успеем распробовать Распределение трафика • mac rewrite и раздаем коммутаторами • управляется роем Рой обработчиков • оцениваем здоровье и связанность • виртуальные микро-машины Табло • контексты как наборы key-value • контролируем объем трафика и размер реплик Транспорт событий • замысел и что внутри
  • 23. Анатомия скелета 1 – что-куда подключено ПЕРЕКЛЮЧАТЕЛЬ Схеме около 50 лет… ВКЛЮЧЕНО 1. Переключатель 2 РАСПРЕДЕЛЕНИЕ РАСПРЕДЕЛЕНИЕ 3 DATA PLANE DATA PLANE 2. Распределение трафика 3. Data Plane (Switch) ГОРЯЧИЙ РЕЗЕРВ 6. Супервизор 7. Перешеек для репликации между копиями – наш addition 5 7 CONTROL PLANE 6 ЗЕРКАЛИРОВАНИЕ требуется ТОЛЬКО для failover «СОВСЕМ БЕЗ ПОТЕРЬ» CONTROL PLANE SUPERVISOR BLADE BLADE BLADE BLADE BLADE BLADE BLADE BLADE 4 BLADE 5. Control Plane (Switch) BLADE 4. Обрабатывающие серверы
  • 25. Распределение трафика ПЕРЕКЛЮЧАТЕЛЬ – MAC rewrite + коммутаторы лучше раздавать коммутаторами, они быстрые и… • ассоциативная таблица MAC → ПОРТ отлично подходит ? MAC → PORT# ? BLADE DATA PLANE (Коммутатор) BLADE • РАСПРЕДЕЛЕНИЕ BLADE для балансировки трафик нужно нарезать BLADE • BLADE Замысел
  • 26. Распределение трафика ПЕРЕКЛЮЧАТЕЛЬ – MAC rewrite + коммутаторы Замысел ассоциативная таблица MAC → ПОРТ отлично подходит Магия 1. посчитаем HASH от IP и запишем два байта в MAC, получаем 65536 сегментов трафика 2. распределим сегменты по обработчикам 3. пусть обработчики пингуют DATA PLANE от имени MAC нужных им сегментов MAC → PORT# SEG # BLADE DATA PLANE (Коммутатор) BLADE • dst-MAC[0,1,2,3] = 0x77 dst-MAC[4,5] = Hash(IP) BLADE лучше раздавать коммутаторами, они быстрые и… BLADE • РАСПРЕДЕЛЕНИЕ для балансировки трафик нужно нарезать BLADE •
  • 27. Распределение трафика ПЕРЕКЛЮЧАТЕЛЬ – MAC rewrite + коммутаторы Плюсы • молниеносная управляемость при статической конфигурации РАСПРЕДЕЛЕНИЕ dst-MAC[0,1,2,3] = 0x77 dst-MAC[4,5] = Hash(IP) • мгновенный failover – при сбое broadcast и активация BLADE BLADE BLADE SEG # DATA PLANE (Коммутатор) BLADE • на нас работает весь Ethernet: – Pause Frame, Spanning Tree, LAG… MAC → PORT# BLADE • простое расширение – достаточно подключить оборудование
  • 28. MAC rewrite – есть подводные камни
  • 29. MAC rewrite – есть подводные камни OpenFlow • Таблица вместо Hash и не везде есть SetField • Требуются ACL и TCAM • Вместо 65K получаем порядка 1000
  • 30. MAC rewrite – есть подводные камни OpenFlow • Таблица вместо Hash и не везде есть SetField • Требуются ACL и TCAM • Вместо 65K получаем порядка 1000 Arista 7124FX и всяческие FPGA • Да, но не удобно и vendor lock-in
  • 31. MAC rewrite – есть подводные камни OpenFlow • Таблица вместо Hash и не везде есть SetField • Требуются ACL и TCAM • Вместо 65K получаем порядка 1000 Arista 7124FX и всяческие FPGA • Да, но не удобно и vendor lock-in POF – серебряная пуля? • Предложения по расширению OpenFlow • Позволяет посчитать CRC и записать в MAC • Protocol-Oblivious Forwarding, http://www.poforwarding.org/
  • 32. MAC rewrite – есть подводные камни OpenFlow • Таблица вместо Hash и не везде есть SetField • Требуются ACL и TCAM • Вместо 65K получаем порядка 1000 Arista 7124FX и всяческие FPGA • Да, но не удобно и vendor lock-in POF – серебряная пуля? • Предложения по расширению OpenFlow • Позволяет посчитать CRC и записать в MAC • Protocol-Oblivious Forwarding, http://www.poforwarding.org/ – продержаться можно, ожидаем подкрепление
  • 33. Swarm Arrives! Роевой Интеллект – эффект коллективного поведения децентрализованной самоорганизующейся системы Цель общая, действия локальны • все получают одну инструкцию, но действуют самостоятельно • избавляемся от микро-менеджмента Каждый знает о каждом • информация для согласованных решений • пример – поезда и смена расписания • можем балансировать децентрализовано Один ничто, рой все • потеря единицы не должна влиять на результат • не храним ценного внутри, реплицируем • идеальный failover
  • 34. Балансировка – управляем роем ПЕРЕКЛЮЧАТЕЛЬ Оцениваем обработчики РАСПРЕДЕЛЕНИЕ • производим перекрестную оценку каждого • оцениваем здоровье и связанность с роем ? BLADE BLADE BLADE SEG# DATA PLANE BLADE MAC → PORT# MAC → PORT# BLADE • проверяем Data Plane и Control Plane SEG# SEG# SEG# SEG# ? ? ? ? CONTROL PLANE (Коммутатор)
  • 35. Балансировка – управляем роем ПЕРЕКЛЮЧАТЕЛЬ Оцениваем обработчики РАСПРЕДЕЛЕНИЕ • производим перекрестную оценку каждого • оцениваем здоровье и связанность с роем BLADE • используем NTP и timestamps SEG# • много деталей и know how LIST BLADE • у каждого обработчика свой список роя BLADE Ведем перепись DATA PLANE BLADE MAC → PORT# MAC → PORT# BLADE • проверяем Data Plane и Control Plane SEG# SEG# SEG# SEG# LIST LIST LIST LIST CONTROL PLANE (Коммутатор)
  • 36. Балансировка – управляем роем ПЕРЕКЛЮЧАТЕЛЬ Оцениваем обработчики РАСПРЕДЕЛЕНИЕ • производим перекрестную оценку каждого • оцениваем здоровье и связанность с роем BLADE • используем NTP и timestamps SEG# • много деталей и know how LIST SEG# SEG# SEG# SEG# LIST LIST LIST LIST Балансирует каждый ! • по своему списку выбирает себе Сегменты • hash ring не используем – мало Сегментов • балансируем по ядрам, не по серверам BLADE • у каждого обработчика свой список роя BLADE Ведем перепись DATA PLANE BLADE MAC → PORT# MAC → PORT# BLADE • проверяем Data Plane и Control Plane CONTROL PLANE (Коммутатор)
  • 37. Балансировка – управляем роем ПЕРЕКЛЮЧАТЕЛЬ Плюсы • Легко мониторить и интегрировать – просто слушаем Control Plane LIST BLADE SEG# BLADE BLADE DATA PLANE BLADE • Отказоустойчиво – децентрализовано – нет единой точки отказа MAC → PORT# MAC → PORT# BLADE • Самодиагностика – постоянная и встроенная РАСПРЕДЕЛЕНИЕ SEG# SEG# SEG# SEG# LIST LIST LIST LIST CONTROL PLANE (Коммутатор)
  • 38. Табло для роя ПЕРЕКЛЮЧАТЕЛЬ – оперативное общедоступное хранилище Табло РАСПРЕДЕЛЕНИЕ • простое key-value хранилище реплика ТАБЛО CONTROL PLANE BLADE BLADE • unordered map + shared memory + lockfree key1 = value + version key2 = value + version … key# = value + version BLADE • заточено под zerocopy & DMA BLADE • как-то все записи версионированы BLADE DATA PLANE
  • 39. Табло для роя ПЕРЕКЛЮЧАТЕЛЬ – оперативное общедоступное хранилище Табло РАСПРЕДЕЛЕНИЕ • простое key-value хранилище Реплицируем • реплика на каждом сервере реплика ТАБЛО • при локальном изменении отправляется уведомление в Control Plane • получаемые обновления вливаются с учетом версионности • нет единого формата версии, зависит от данных и задачи CONTROL PLANE BLADE BLADE • unordered map + shared memory + lockfree key1 = value + version key2 = value + version … key# = value + version BLADE • заточено под zerocopy & DMA BLADE • как-то все записи версионированы BLADE DATA PLANE
  • 40. Обработка роем ПЕРЕКЛЮЧАТЕЛЬ – это и есть самое главное Трансформируем задачи РАСПРЕДЕЛЕНИЕ • сводим к виртуальной микро-машине from=10.0.0.1:4629 to=199.32.42.3:80 … реплика ТАБЛО CONTROL PLANE BLADE BLADE ОБРАБОТЧИК BLADE BLADE • состояние представляем как набор key-value BLADE DATA PLANE
  • 41. Обработка роем ПЕРЕКЛЮЧАТЕЛЬ – это и есть самое главное Трансформируем задачи РАСПРЕДЕЛЕНИЕ • сводим к виртуальной микро-машине • находим способ версионировать СОСТОЯНИЕ from=10.0.0.1:4629 to=199.32.42.3:80 node={A.5, Green} … inbound=200 outbound=6346 реплика ТАБЛО CONTROL PLANE BLADE BLADE BLADE ОБРАБОТЧИК Версионируем состояние • пакеты – события, обработка которых меняет состояние BLADE • состояние представляем как набор key-value BLADE DATA PLANE
  • 42. Обработка роем ПЕРЕКЛЮЧАТЕЛЬ – это и есть самое главное Трансформируем задачи РАСПРЕДЕЛЕНИЕ • сводим к виртуальной микро-машине • находим способ версионировать Обработчики – Stateless • хранят состояние на Табло СОСТОЯНИЕ from=10.0.0.1:4629 to=199.32.42.3:80 node={A.5, Green} … inbound=200 outbound=6346 • не хранят ценного внутри, только кэшируют • работают в цикле – receive event, get state, handle, put state реплика ТАБЛО CONTROL PLANE BLADE BLADE BLADE ОБРАБОТЧИК Версионируем состояние • пакеты – события, обработка которых меняет состояние BLADE • состояние представляем как набор key-value BLADE DATA PLANE
  • 43. Рой – обработка и «Табло» ПЕРЕКЛЮЧАТЕЛЬ Tradeoff РАСПРЕДЕЛЕНИЕ • Уменьшаем трафик по Control Plane отправляя оповещения реже Тонкости • TCP Window – носим «чемодан с батарейками» • TCP Sequences – дуплексный маркер направления потока данных from=10.0.0.1:4629 to=199.32.42.3:80 node={A.5, Green} … inbound=200 outbound=6346 • у обработчика локальный writeback cache, запись в реплику через отдельную очередь WRITEBACK FIFO реплика ТАБЛО CONTROL PLANE BLADE BLADE BLADE ОБРАБОТЧИК BLADE • Уменьшаем объем реплик, храня только свое или 1-ю линию failover BLADE DATA PLANE
  • 44. Свой «Транспорт» C/C++ Неплохо бы… POD Java PAIR LIST • единообразно: in-process, in-server, over-network, плюс со-процессоры • мега-эффективный обмен сообщениями Go D STREAMING MQ Erlang safemode zerocopy • автоматические запятые – копировать нельзя шарить DMA priority inheritance КАКАЯ-ТО МАГИЯ lockfree … DMA Дизайн • zerocopy + shared memory + lockfee + PI • разные «транспорты» под один фасад • операции со «строками» и итераторы • ensure & asserts, safemode… • сложности – в отдельный процесс DPDK MPI ØMQ netmap SHARED RAM NETWORK CONTROL PLANE DATA PLANE IPC
  • 45. Свой «Транспорт» C/C++ Внутри POD • действительно эффективные итераторы и операции с цепочками PAIR LIST Планы • LGPL ≈ 1Hippeus, this is SPARTA! • Думаем о Erlang, Go, D, Java, Xeon Phi, CUDA, Tilera… STREAMING MQ MESSAGE = a list of chunks chunk chunk DATA INPLACE • очередь сообщений и диспетчер с пулом потоков • providers: Intel DPDK, netmap, 0mq, MPI... D FIFO • чистый lockfree (CAS & retry-on-fail), либо checked busyloop с выходом на PI-futex Go Erlang chunk WEAK • концепт буфера как куска памяти и offset_ptr (для сопроцессоров…) Java external data PROVIDER INTERFACE DPDK MPI ØMQ netmap SHARED RAM NETWORK CONTROL PLANE DATA PLANE IPC
  • 46. Свой «Транспорт» C/C++ Внутри POD Java PAIR LIST • концепт буфера как куска памяти и offset_ptr (для сопроцессоров…) • чистый lockfree (CAS & retry-on-fail), либо checked busyloop с выходом на PI-futex • действительно эффективные итераторы и операции с цепочками Go D STREAMING MQ Erlang to be continued… HighLoad++ 2014 • очередь сообщений и диспетчер с пулом потоков • providers: Intel DPDK, netmap, 0mq, MPI... Планы • LGPL ≈ 1Hippeus, this is SPARTA! • Думаем о Erlang, Go, D, Java, Xeon Phi, CUDA, Tilera… DPDK MPI ØMQ netmap SHARED RAM NETWORK CONTROL PLANE DATA PLANE IPC
  • 47. У нас получается, круто! Масштабируемость Эластичность и эффективность • распределение коммутаторами • «транспорт» дает гибкость за 10% • MAC rewrite – OpenFlow & Arista, на подходе POF • при нехватке CPU/RAM можем просто подключить еще • децентрализованное управление распределением трафика • доступен safemode или непосредственно shared memory Надежность / Стоимость Платформа • нет единой точки отказа • распределенное Табло для данных • прореживаем репликации Табло – уменьшаем трафик Control Plane • микро-машины с версионируемым состоянием • храним в репликах Табло меньше чужих данных – уменьшаем требования RAM • обмен сообщениями вне зависимости от среды передачи • нужна полная гарантия «без потерь» – ставим зеркало
  • 48. Checkpoint: Подведем итоги DPI нужен – как Бизнесу, так и Государству TopGun – интересная и сложная задача • Масштабируемо с роевым интеллектом • Эластично и независимо от «железа» • Стоимость/надежность – можно балансировать • Легко развивать, терабит, задержка 100 μs
  • 49. Много нераскрытых тем, будет семинар 03.12.2013 • Законность и этика, конфиденциальность, сетевой нейтралитет • Технология как стратегическое преимущество • Больше usecases и Бизнеса • Что уже сделано, пилотные проекты и внедрения • Больше технических подробностей • http://www.billing.ru/events/560
  • 50. TopGun: Вопросы? Сейчас – HighLoad • Предпосылки и цели TopGun • MAC rewrite и распределение трафика • Рой – управление балансировкой • Рой – обработчики • Рой – поддержка Табло • Транспорт, zerocopy, lockfree, PI, диспетчеризация На встрече в Петер-Сервис • • • • Usecases и Бизнес http://www.billing.ru/events/560 Когда релиз? Законность и этика Свобода и конфиденциальность, компромисс с реальностью • Технология как стратегическое преимущество • Поддерживаемые протоколы • Пилотные проекты и внедрения