Сетевая инфраструктура

Наш отдел — одно из ключевых подразделений, которое отвечает за бесперебойную работу всего Яндекса.

Мы разрабатываем, строим и поддерживаем сетевую инфраструктуру компании: от сетевой топологии до Wi-Fi в офисах.

Пишем сервисы для управления трафиком и автоматизации работ над сетевым оборудованием.

О нас в цифрах

Десятки тысяч сетевых устройств

Автоматизируем больше 20'000 сетевых устройств.

Свитчи, роутеры, FPGA, ASIC.

Обработка трафика

Более восьми терабит трафика в секунду.

Или 600 миллионов пакетов в секунду.

Балансировка и фаервол

Балансируем более 20'000 сервисов.

Обрабатываем 300'000'000 правил фаервола.

Что мы разрабатываем

Чтобы понять, что представляет из себя разработка для современной сетевой инфраструктуры, нужно ответить на четыре основных вопроса:

  • Как автоматизировать ввод в эксплуатацию и обновление софта на десятках тысяч устройств?
  • Как обрабатывать огромные объёмы трафика в режиме реального времени?
  • Как предоставить сервисам функциональность фаервола, DNS, L3 балансировщика?
  • Как мониторить работоспособность разнообразного парка оборудования?

Автоматизация

Мы пишем сервис для автоматизации наливки, ввода в эксплуатацию и проведения работ над десятками тысяч сетевых устройств различных производителей.

Обработка трафика

В режиме реального времени обрабатываем терабиты трафика в секунду.

Пишем высокопроизводительные фаерволы, L3 балансировщики трафика и многое другое.

LB, FW, DNS as-a-service

Разрабатываем сервисы для настройки балансировки трафика, предоставления сетевых доступов и функциональности доменных имён для всех сервисов компании.

Мониторинг

Строим архитектуру для обработки миллионов разнообразных сигналов со всех сетевых устройств каждую секунду и следим за работоспособностью сети.

Команды и проекты

Существует несколько крупных продуктов и направлений, вокруг которых сформировались, либо сейчас формируются, команды разработчиков.

Каждое направление обладает своими уникальными особенностями, используемыми технологиями, а также вызовами, которые командам предстоит решить.

Предлагаем ознакомиться с некоторыми из наших направлений.

YANET

Фреймворк для высокопроизводительной программной обработки трафика со скоростью 200 Гбит/с.

Реализованы функциональности фаервола, L3 балансировщика, NAT64, туннелятора, декапсулятора.

Особенности

  • Работа с сетевой картой напрямую, минуя Linux Kernel.
  • Обработка трафика со скоростью более 4 Тбит/с и 600 миллионов сетевых пакетов в секунду.
  • Система реального времени.
  • Суммарное количество правил фаервола превышает 300'000'000. При этом поиск правила для отдельного сетевого пакета осуществляется за O(1).

Технологии

  • Написан на современном C++ с использованием фреймворка DPDK.
  • Разработка ведется в Open Source.

Автоматизация

Платформа для автоматизации сетевых устройств.

Из данных о дизайне сети и установленном оборудовании мы формируем низкоуровневую модель сети, которая предоставляется через единый API.

На основе этой модели системы автоматизации покрывают весь жизненный путь сетевого оборудования: от первоначальной настройки и обновления конфигурации до вывода из эксплуатации.

Особенности

  • Базовый слой работоспособности инфраструктуры.
  • Генерация vendor-agnostic модели и её преобразование в vendor-specific конфигурацию.

Технологии

  • Разработка на Go, Python и PHP.
  • GraphQL API как единый интерфейс для потребителей.

Инфраструктура фаерволов

Организация сетевых доступов для всего Яндекса.

Предоставляем пользователям и сервисам удобный и безопасный механизм управления сетевыми правилами.

Моделируем применение фаервольных правил, не позволяя инфраструктуре сломаться в случае отзыва доступов.

Особенности

  • Заказ сетевых доступов as-a-service в пару кликов.
  • CI/CD полокационной доставки правил, в которых каждые пять минут происходят изменения.
  • Распределенная система предварительной валидации, насчитывающая 40 узлов, объединённых в кластер.
  • Сборка сэмплов трафика со всего Яндекса для последующей валидации.
  • Визуальный аудит и возможность откатывать правила при необходимости.

Технологии

  • Разработка ведётся на Go.
  • Валидируем 2'000'000'000 сетевых пакетов напротив 100'000 уникальных правил за пять минут.
  • Кластер собирается через Zookeeper, нагрузка распределяется, используя консистентный hashring.
  • Интерфейс взаимодействия — HTTP и gRPC.

Мониторинг

Набор систем и компонентов для мониторинга сети Яндекса.

Развиваем интерфейс подключения к оборудованию любого вендора и предоставляем его внешним сервисам автоматизации, что сильно облегчает их разработку.

Разрабатываем компоненты для сбора, обработки информации и поставки нормализованных метрик в системы анализа.

Особенности

  • Разработка полного цикла сетевого мониторинга.
  • Унификация интерфейсов взаимодействия с устройствами.
  • Поставка 2'000'000 метрик в секунду в компоненты аналитики и визуализации.
  • Автоматическое поддержание актуальности 15'000'000 алертов.

Технологии

  • Разработка новых систем ведется на Go с использованием gRPC для межсервисного взаимодействия.
  • Осуществляется поддержка большинства способов взаимодействия с устройствами получения сетевых метрик: SNMP, netconf, gNMI.
  • Для части проектов разработка ведется в Open Source.

Технологии и подходы

Используем различный набор технологий и языков программирования.

Придерживаемся прагматичного подхода: выбираем тот способ, который позволит решить задачу эффективней и/или будет целесообразней.

Go

Очень любим его за читаемость, быстроту написания кода, лёгкость в распараллеливании, огромное количество готовых библиотек и приемлемую производительность.

Python

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

C/C++

Когда производительность стоит на первом месте, либо необходимо работать как можно ближе к «железу», а также при разработке ядра Linux или его модулей.

Rust

Когда важна не только максимальная производительность, но и гарантии надежности, которые этот язык предоставляет.

Технологии

gRPC

Основной способ построения API: быстро, производительно и без поломок обратной совместимости.

DPDK

Основа для нашего фреймворка высокопроизводительной обработки трафика.

eBPF

Используем для фильтрации, шейпинга и сборки трафика, а также расширяем ядерную функциональность по настройке сетевого стека.

GraphQL

Используем как основной API для инвентарных систем и данных, объединяющий разные инструменты.

Рассказываем о себе

Мы любим не только разрабатывать, но и делиться опытом о наших разработках на различных конференциях.

Про фаервол на YANET

Рассказываем на конференции NextHop 2021 о том, как мы реализовали фаервол на DPDK и чего нам это стоило.

Балансировка трафика на базе DPDK

Рассказываем на конференции NextHop 2022 о том, как мы реализовали L3 балансировщик на DPDK.

Как удобно жить на железе в 2к24 базовой инфраструктуре

Рассказываем на Yandex Infrastructure 2024 о том, как мы организовываем инфраструктуру без циклических зависимостей на k8s.

Как к нам попасть

В нашем отделе есть задачи для разных технических специалистов.

Нужны как амбициозные middle-разработчики и опытные ведущие инженеры, так и активные технические менеджеры.

У нас также есть формат буткемпа в Core Infrastructure, где вы можете попробовать себя в трёх различных командах.