23 ноября 2024
Вам предстоит работать над самым сердцем Qrator системой высокоскоростной обработки трафика (десятки миллионов пакетов в секунду на сервер). Задача на этом уровне формулируется так: быстро принять все хорошее и так же быстро дропнуть все плохое.
Суть DDoS сводится к тому, чтобы найти слабую точку и ударить в нее, исчерпав какой-нибудь из ее ресурсов (сетевой канал, память, процессор, возможности сетевого чипа на свитче или сетевой карте и т.п.). Соответственно, основная стратегия защиты это распределение удара (горизонтальное масштабирование ресурса). Однако, во-первых, распределение нагрузки от некоторых умных атак это весьма нетривиальная задача, а во-вторых, бездумное масштабирование любого железа про запас было бы слишком дорогим. Поэтому одна из наших постоянных задач это изучение и тестирование всевозможного железа от свитчей и сетевых карточек до процессоров и памяти с целью сравнения железок между собой, выявления узких мест и понимания предельной производительности. И связанная задача модификация нашего софта так, чтобы подобраться к этому пределу. Про многое о работе железа и его эффективном использовании можем рассказать (и рассказываем на конференциях). Мы постоянно совершенствуем алгоритмы для вычленения вредоносного трафика, и о своих находках в этой области мы также стараемся рассказывать на конференциях и в публикациях.
Иногда нужно вылезать из низкоуровневого ядерного и сетевого программирования и погружаться в сервера приложений, которые также нужно поддерживать и улучшать (например, сделать новый алгоритм балансировки для основных серверов или придумать схему распределения нагрузки инфраструктурных приложений).
На чем пишем?
В ядре крайне сложно писать на чем-либо, кроме C, поэтому много пишется на C. Иногда появляется Python в тех местах, где удобство важнее производительности (например, сделать биндинги для наших верхнеуровневых модулей). В userspace используется как C, так и C++.
О вас:
- Опыт разработки ядра Linux и понимание основных концепций (SKB, RCU, you name it) или опыт разработки высокопроизводительных сетевых приложений на DPDK или других низкоуровневых стеках.
- Знакомство с базовыми алгоритмами, готовность разрабатывать, исследовать и реализовывать новые сложные алгоритмы. Если вас пугает матан или вы считаете, что все интересные и полезные алгоритмы уже придуманы, то вряд ли вам будет комфортно с нами.
- Опыт с многопоточным программированием.
- Базовое знание HTTP, DNS, BGP, TCP/IP.
- Git.
- Глубокое знание C/C++
Пожелания:
- Знакомство с шифрованием и опыт работы использования библиотек OpenSSL/LibreSSL в проектах.
- Знакомство с основами ИБ.
- Приветствуется знакомство с Python
Что предлагаем: