it meetup: отчитываюсь!
Всем привет!
Недавно меня затащили с выступлением на одно любопытное мероприятие — IT Global Meetup.
На Петроградской в культурно-деловом центре «Club House» собралось больше 600 человек. Вся территория — а это где-то 5 залов — была поделена на так называемые «островки». Их было довольно много, разных, например IT Hr, DevOps, etc… На каждом островке собиралось примерно от 20 до 40 человек.
Презентация проектировалась либо на ближайшую стенку, либо для докладов использовались бумажные стенды.
Атмосфера очень уютная, есть возможность без лишнего пафоса поделиться с разработчиками своими мыслями, опытом, проблемами. Времени на доклад выделялось много — мой занял минут 45.
Я в первый раз выступал с темой «Разработка highload-системы мониторинга для 50000 (и более) видео-потоков RTP с применением 10G Ethernet пробников на базе FPGA». На самом деле я рассказывал про продукт, который у нас фигурирует под кодовым названием BERcut-MX/RTP
Основной целью моего доклада было поделиться опытом с сообществом, рассказать про грабли, на которые мы наступили, про проблемы, возникшие в ходе разработки и способы их решения. Когда мы взялись за этот проект, мы не ожидали, во что он выльется. Трудно было предсказать, что для доставки видео вместо UDP будет выбран TCP, что нагрузка на наш сервер возрастёт в разы, что нам придётся использовать hash-балансировку для «перебалансировки» входного трафика и выравнивания нагрузки на ядра процессора.
Я рассказал про технику определения видео-потока, про то, как его найти в трубе с пакетами. Рассказал про отличия в обработке UDP и TCP пакетов и про все проблемы, которые в этой обработке присутствуют. А именно — в UDP-пакете RTP-заголовок всегда находится по известному смещению, в начале пакета. А в TCP заголовок может находиться в любом месте, при этом — даже быть «разрезанным» на части.
Первый и основной вопрос, который мне задали слушатели — а зачем вы взяли FPGA, можно же было на сервере всё сделать (особенно, если у программистов руки из нужного места — это было главной оговоркой ;))? Не спорю — наверняка можно. Есть же и DPDK, и netmap, и суперские карточки от Intel (типа 82599), и сервера с невероятной частотой и кучей ядер. Но при проектировании архитектуры нашей системы мы ставили задачу распределения нагрузки: сервер в нашем случае не получает лишней информации в любом случае, сколько бы ресурсов он не имел. Поэтому наша система имеет гораздо больший запас по нагрузке. Собственная реализация обработки пакетов на ПЛИС обеспечивает гарантию zero frame loss.
Мне повезло с аудиторией, они задавали вопросы, критиковали решения и у меня создалось очень приятное ощущение, что доклад был понят, как следует. Я встретил на meetup’е знакомых и заfriend’ил ещё несколько разработчиков из других компаний. Будем налаживать контакты и пилить новые проекты :)
Так или иначе, мы очень многому научились при разработке MX/RTP и получился классный продукт. Надеюсь, что мне и моим коллегам ещё представится возможность выступить с рассказами про внутренности и грабли.
Большое спасибо организаторам за мероприятие, и огромное —
Санкт-Петербургской группе пользователей GNU/Linux за приглашение выступить на островке сообщества на IT Global Meetup.