Проектировать и воплощать в коде функции блока аппаратной абстракции, обеспечивающего программирование состояния передающего уровня (Data Plane) Ethernet и IP в аппаратный компонент—специализированный обработчик передачи данных (network ASIC);
Разрабатывать и писать тесты, подтверждающие ожидаемое поведение Data Plane;
Исправлять ошибки (баги) и улучшать производительность системы;
Взаимодействовать с разработчиками других блоков, например, Control Plane;
Следить за развитием и тенденциями отрасли с целью реализации в нашем продукте функций, отвечающих запросам рынка;
Принимать участие в планировании развития итогового продукта (roadmap).
Требования:
Умение и опыт программирования на C — именно на этом языке написаны наши компоненты ОС программирующие сетевые процессоры и SDK, которые мы используем;
Умение работать с большим массивом кода: способность интерпретировать написанный чужой код и быстро вникать в логику, заложенную разработчиками;
Умение работать в отладчике;
Операционные системы Linux на уровне понимания архитектуры данного семейства ОС, способности заглянуть в код, например ядра Linux, когда необходимо улучшить свое понимание устройства какого-то смежного компонента. И, конечно, нужно быть уверенным пользователем этих ОС;
Принципы построения сетевых инфраструктур и функционирования использующихся в них протоколах (Ethernet, IP, control plane протоколы BGP, OSPF), с умением работать со стандартами IETF RFC, IEEE и пр.
Будет плюсом:
Опыт разработки ПО, непосредственно (через SDK производителя) взаимодействующего с аппаратными компонентами — программируемыми интегральными схемами, микроконтроллерами, специализированными процессорами;
Понимание современного устройства процесса разработки ПО:
работа с кодом в системе SCM (Git, GitLab);
работа с системами сборки autoconf, automake, make;
применение подходов DevOps и CI/CD;
работа с задачами в трекере (Jira и пр.), проектная работа Agile Scrum.
Знание архитектуры сетевого блока ядра Linux;
Опыт разработки многопоточных приложений;
Опыт разработки сервисов (daemons) в среде Linux;
Опыт разработки патчей для Linux Kernel или других больших Open Source проектов;
Опыт разработки и сопровождения решений с высокими требованиями к надежности;
Понимание принципов работы цифровой схемотехники;
Знание протокола связи I2C, интерфейсов SMBus и PMBus, интерфейса ACPI.