[Перевод] Интернет-провайдер космического базирования (интервью с разработчиками Starlink)

image


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

Такова мировая программа Starlink компании SpaceX, которая поставила перед собой цель обеспечить высокоскоростным широкополосным интернетом места, где доступ был ненадежным, дорогим или полностью отсутствовал.

Stack Overflow поговорил с двумя руководителями программного обеспечения Starlink — Акашем Бадшахом и Энди Боном — об их методах и практике разработки. Программное обеспечение делится на две части: 1) программное обеспечение необходимое для полета, и 2) программное обеспечение, которое поддерживает летающие компоненты, управляет сетями, контролирует «созвездие» спутников Starlink — спутники Starlink на орбите — и поддерживает связь между созвездием и обычным наземным Интернетом.

В настоящее время «созвездие» Starlink состоит из сотен небольших и недорогих спутников на низкой околоземной орбите, и компания планирует увеличить его до тысяч. Низкая высота необходима для обеспечения низкой задержки. Современные геостационарные спутники находятся на орбите на расстоянии 26 200 миль от центра Земли и 22 300 миль над поверхностью, что означает, что сигналу требуется примерно 0,240 секунды, чтобы совершить путешествие туда и обратно. В настоящее время Starlink находится на орбите на высоте 340 миль, что сокращает задержку почти до сотой доли.
Бон, менеджер группы сетевого программного обеспечения, сказал: «У нас есть наземный кластер служб, выясняющих, кто с кем общается в сети. Что интересно в наших спутниках, так это то, что они находятся очень близко. Поэтому спутник может находиться над вами всего несколько минут. Поэтому антенна на крыше клиента должна часто менять спутник, с которым она общается».

«Рассмотрим, как ваш сотовый телефон общается со стационарными вышками связи. Время от времени вашему телефону приходится переключаться с одной вышки на другую, но обычно связь стабильна», — говорит Бон. «Для Starlink одна из главных проблем заключается в том, что наши «вышки» вращаются вокруг Земли, и из-за этого приходится очень часто переподключаться к ним. Моя команда организует этот танец, вычисляя желаемые сетевые топологии, распространяя этот план среди ресурсов в сети и настраивая оборудование для его реализации».

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

«Комбинаторика проблемы делает масштабирование этой системы для многих миллионов людей непростой задачей», — говорит Бон. «При обслуживании пользователей спутникам Starlink необходимо окрашивать землю лучами данных разных частот, чтобы избежать помех. В итоге мы решаем проблему окраски и предотвращения помех в глобальном масштабе, что является еще одной из наших больших задач, которую необходимо решать в режиме реального времени».

Программное обеспечение Starlink, как на спутниках, так и на Земле, написано почти полностью на C++, с некоторыми разработками прототипов на Python. Программное обеспечение разрабатывается в среде непрерывной интеграции, при этом команды часто сливают изменения в основную ветвь разработки и каждую неделю развертываются на созвездии спутников в космосе.

«Мы используем C++ для большинства программ управления аппаратом. В SpaceX с ним связано много наследия, поскольку это очень низкоуровневый язык, который мы можем использовать на «голых» микроконтроллерах. Это позволяет нам использовать его на встроенных компьютерах с Linux, которые мы используем во всех наших различных аппаратах», — объясняет Бадшах. «Мы многое узнали благодаря Dragon и Falcon о том, как можно запустить самодостаточную архитектуру на трех компьютерах, которые обмениваются данными и решают одни и те же задачи».

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

«Для разработки и тестирования этих алгоритмов у нас есть полномасштабная сетевая симуляция, работающая в режиме непрерывной интеграции на высокопроизводительном вычислительном кластере. Эта симуляция способна выполнять продакшн код на C++, а также работать с кодом прототипа, написанным на Python», — говорит Бон. «Версия на Python позволяет быстро проводить итерации на этапе проектирования. Как только мы будем удовлетворены результатами алгоритма, мы перенесем его на C++, чтобы он эффективно работал в продакшене».

Одна из серьезных проблем для Starlink заключается в том, что сами спутники часто меняются. В Starlink говорят, что у них еще не было ни одного запуска, при котором спутники, входящие в созвездие, не изменились бы по сравнению с предыдущим запуском. В большинстве случаев это было бы серьезной проблемой (читай: рецептом катастрофы). Starlink решила эту проблему, внедрив разработчиков программного обеспечения непосредственно в производственный цикл.

Вместо того, чтобы новое оборудование «выбрасывалось за стену» разработчикам, разработчики программного обеспечения интегрируются в производственный процесс вплоть до того, что они находятся в цеху. Чтобы обеспечить синхронизацию аппаратного и программного обеспечения на протяжении всего процесса, программное обеспечение иногда тестируется на спутниках, сходящих с производственной линии и направляющихся на орбиту.

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

Еще одно преимущество C++ — в области управления памятью. Неважно, сколько раз вы проверяете код перед запуском, вы должны быть готовы к повреждению программного обеспечения, когда окажетесь на орбите. «Мы создали базовую инфраструктуру, которая позволяет нам знать, что мы выделяем всю нашу память во время инициализации. Если что-то не удается выделить, мы делаем это заранее», — говорит Бадшах. «У нас также есть различные инструменты для того, чтобы любое состояние, сохраняемое приложением, управлялось в определенном месте памяти. Это позволяет нам знать, что оно правильно распределяется между компьютерами. Чего вы не хотите, так это ситуации, когда один из компьютеров получает удар радиации, немного переворачивается, и он не находится в общей памяти с другими компьютерами, и он может как бы отключиться сам по себе».


image

Вакансии
НПП ИТЭЛМА всегда рада молодым специалистам, выпускникам автомобильных, технических вузов, а также физико-математических факультетов любых других высших учебных заведений.

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

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

Если вам интересно попробовать свои силы в решении тех задач, которые у нас есть, пишите в личку.



О компании ИТЭЛМА
Мы большая компания-разработчик automotive компонентов. В компании трудится около 2500 сотрудников, в том числе 650 инженеров.

Мы, пожалуй, самый сильный в России центр компетенций по разработке автомобильной электроники. Сейчас активно растем и открыли много вакансий (порядка 30, в том числе в регионах), таких как инженер-программист, инженер-конструктор, ведущий инженер-разработчик (DSP-программист) и др.

У нас много интересных задач от автопроизводителей и концернов, двигающих индустрию. Если хотите расти, как специалист, и учиться у лучших, будем рады видеть вас в нашей команде. Также мы готовы делиться экспертизой, самым важным что происходит в automotive. Задавайте нам любые вопросы, ответим, пообсуждаем.


Список полезных публикаций на Хабре

© Habrahabr.ru