Чем предстоит заниматься: Проектирование, сборка, конфигурирование и отладка сложных сетевых схем более, чем из 10 устройств (маршрутизаторы ESR, коммутаторы MES).
Написание программного обеспечения для маршрутизаторов ESR.
Программное обеспечение, которым мы занимаемся: Linux userspace приложения (демоны), библиотеки, утилиты - основная часть работы.
Драйвера устройств, модули ядра - реже, но занимаемся.
Начальные загрузчики устройства - реже, но занимаемся.
Функционал нашего программного обеспечения: Конфигурирование и управление группой устройств как одним устройством через единый командный интерфейс.
Обработка пакетов и балансировка трафика между узлами кластера.
Масштабирование производительности за счет автоматического добавления устройств в кластер.
Резервирование всех элементов, автоматическое перераспределение функциональности в кластере в случае выхода из строя какого-либо устройства, линка и т.д.
Сервисы, которые предоставляет маршрутизатор ESR сам по себе (не в кластере): BRAS, NAT, Firewall, IPS/IDS и множество других.
Требования
Что требуется от кандидата: Программирование: Язык программирования C на уровне не ниже middle.
Иногда bash.
Знание структур данных и алгоритмов.
Опыт разработки многопоточных приложений на языке C.
Опыт разработки сетевых приложений.
Опыт разработки модулей ядра Linux будет плюсом.
Опыт использования XML/JSON.
Linux: Знание основных команд для работы с файлами, процессами и т.д.
Знание основных утилит для диагностики: ps, top, free, netstat, ss, lsof и т.д.
Сети: Понимание принципов работы L3 и L2 сетей, OSI, TCP/IP.
Опыт работы с сетевым оборудованием, конфигурирования, отладки сетевых схем.
Опыт работы с wireshark, tcpdump.
Знание сетевых протоколов и функционала сетевых устройств: каждый день работаем с BGP, VRF Lite, VRRP, VLAN, QinQ, SNMP, DHCP, ICMP, RADIUS, GRE и т.д.
Инструменты разработки: Опыт работы с git (используем Gitlab).
Redmine.
Большим плюсом будет опыт работы с сетевым стеком Linux, DPDK, XDP, netmap, и всем, что связано с обработкой сетевых пакетов.