1. Вещание видео
на 10 гбит/с
Макс Лапшин,
CTO Flussonic LLC.
Sunday, October 27, 13
2. Стриминг видеофайлов
•
•
•
•
•
Sunday, October 27, 13
Пользователь хочет посмотреть видео
Надо показать ему в реальном времени
Пользователь хочет управлять просмотром
Уникальные данные для каждого пользователя
Для каждого из 10 000 пользователей онлайн
3. Седая древность в IPTV
•
•
•
•
•
Sunday, October 27, 13
Constant bitrate
каждая секунда — фиксированное количество байт
легкая перемотка и т.п.
планирование capacity сервиса (на всех 50 абонентов)
многие так живут до сих пор
4. Хайтек от IPTV (RTSP)
•
•
•
•
Sunday, October 27, 13
Контроль по TCP с поддержкой реконнекта
Данные по UDP с возможностью ретрансмита
Энтерпрайзно и неподъёмно
Доживает свой век у 3G операторов
5. Псевдостриминг
•
•
•
•
•
•
Sunday, October 27, 13
variable bitrate в видео и аудио
примитивный flv контейнер и ещё примитивнее flash player
mod_flv в nginx — основное средство вещания
никакого мультибитрейта или мультиязыка
примитивное управление проигрыванием
популярно и сегодня (весь «html5 video»)
6. Хайтек от Адоби (RTMP)
•
•
•
•
•
Sunday, October 27, 13
Закрытый недокументированный протокол
Не получилось ничего
Попытка решить и риалтайм доставку и широковещание
Сумрачный индусский гений придумал делать уникальный поток
для каждого пользователя
Адоб закрыли программу RTMP, но не все ещё догадались
7. Потребности сегодня
•
•
•
•
Sunday, October 27, 13
FullHD, а следовательно и мультибитрейт
Выбор языков, субтитров. За что и любим torrents.ru
Управление проигрыванием (пауза, перемотка и т.п.)
3D, больше FPS и т.п.
8. Возможности сегодня
•
•
•
•
Sunday, October 27, 13
Процессоры за 5 лет особо быстрее не стали
Подешевели 10G линки (до 200 тыс рублей в месяц)
SSD бегут по планете и спотыкаются об трупы HDD
Стремительный переход на HTTP стриминг (HDS/HLS)
9. Экономика проблемы
•
•
•
•
•
Sunday, October 27, 13
1G линк — 25 000 рублей в месяц
10G линк — 200 000 рублей в месяц
сервер — 10-20 000 рублей в месяц
каждый сервер требует обслуживания
больше линков, меньше серверов
10. Цифры при 10G вещании
•
•
•
•
Sunday, October 27, 13
1 мбит/с контент
10 000 онлайн пользователей
5 000 запросов в секунду за 200 Кб сегментами
ощущаются проседания на международных каналах
12. Память
•
•
•
•
Sunday, October 27, 13
Под кеш всё равно не хватит
LRU пищит и всё портит
Изредка влезает самый свежак, но всё ломает LRU
32 Гб за глаза хватает под сетевые буферы
13. Процессор
•
•
•
Sunday, October 27, 13
Хватит масштабироваться, работать надо
Гигагерцы лучше ядер
Одного процессора хватает для чтения, перепаковки, посылки и
учета пользователей на 10 Гбит/с
14. Сеть
•
•
•
Sunday, October 27, 13
Intel, как будто бы есть другие варианты
Самые свежие драйвера
Балансировка прерываний по ядрам
15. Диски
•
•
•
•
•
Sunday, October 27, 13
Основная нагруженная часть
10 Гбит без SSD не потянуть, но HDD дешевле
Лучше меньше да больше: у SSD есть предел скорости
Аппаратные рейды оставьте продавцам
Спасибо Unix за удобное управление очередью диска
16. Проблемы с софтом
•
•
•
•
•
Sunday, October 27, 13
Псевдостриминг дает перерасход трафика до 30%
Для переключения контента нужен стриминг, причем HTTP
HDS/HLS для флеш-плеера и остальных
Предсегментация ломает префетч и перерасходует диск
Сегментация на лету — вариант
17. Выбранные решения
•
•
•
•
•
•
Sunday, October 27, 13
JBOD HDD для хранения контента
или HTTP сетевое хранилище (Swift)
SSD для промежуточного кеша
старые новые рекомендации по упаковке mp4
сегментация на лету
постоянный самоконтроль
18. Flussonic
(эрливидео)
•
•
•
•
Sunday, October 27, 13
Быстрое mp4 чтение: распаковка индекса только на лету
Никакого покадрового чтения: только GOP
Агрегация дисковых запросов
Контроль за использованием ресурсов
19. Дисковое чтение
•
•
•
•
Sunday, October 27, 13
Открытый файл держит в памяти весь moov (индекс данных)
У каждого файла плавающий пул воркеров на чтение
Все воркеры проходят через единую очередь чтения с диска
На любом запросе может прийти HTTP 503 Overloaded
20. Нерешенные проблемы
•
•
•
•
Sunday, October 27, 13
Правильное вычисление дискового устройства по имени файла
Автобалансировка между HDD при чтении одного файла
Кластерная балансировка пользователей
40G
21. Резюме
•
•
•
•
•
Sunday, October 27, 13
Вещание более 2G с сервера стало рентабельным
Старые техники не годятся, нужны новые (HTTP стриминг, SSD)
Новые подходы есть, отлажены и пинают трупы старых
Важно не только работать, но и не перерабатывать
Flussonic (эрливидео) прекрасно справляется