Легкие двухточечные протоколы связи

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

На мой взгляд, необходимо иметь только функциональные возможности физического уровня и уровня канала передачи данных. Зачем нам нужен IP-адрес или транспортный уровень для одноточечной связи? Но, возможно, есть проблемы, о которых я не знаю. Я понимаю, что нам нужно иметь возможность отслеживать пакеты, которые приходят не по порядку или вообще не приходят. Это, очевидно, чрезвычайно сложная проблема для большой сети, такой как Интернет, но для одноточечной связи кажется разумным реализовать простую схему повторной сборки пакетов для себя.

Наша миссия заключается в наблюдении за арктическим морским льдом с использованием данных рефлектометрии GNSS по сигналам GPS, отраженным от поверхности земли. Чем больше данных мы сможем передать, тем лучше. Следовательно, мы заинтересованы в использовании протоколов с минимальными накладными расходами.

Наш трансивер представляет собой трансивер microhard n290 , который в прошлом использовался на спутниках. Он не совместим с существующими любительскими спутниковыми станциями, у нас не было намерения взаимодействовать с этими существующими сетями. Он обеспечивает FEC на аппаратном уровне и скорость восходящего или нисходящего канала до 1,2 Мбит/с.

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

Поскольку у нас нет никакой сети, нам не нужен уровень IP. Что касается транспортного уровня, нам нужно иметь возможность собирать пакеты данных в правильном порядке и запрашивать повторные передачи. Можно ли поставить что-то вроде TCP прямо поверх канального уровня и вырезать IP? Хотя мне это все равно кажется излишеством. Наши данные телеметрии и состояния будут помещаться в один пакет. Что касается данных полезной нагрузки, AFAICT все, что нам нужно сделать, это разбить их, пометить данные и предоставить поле заказа. Есть ли причина не делать это самим? Это не кажется сложной задачей. Я сделал это на Python, используя буферы протокола Google — я могу сериализовать файл, перетасовать порядок, а затем собрать его заново. Мне нужно было бы добавить повторные запросы поверх этого, но все остальное должно обрабатываться на уровне ссылок.

Я смотрел на протокол Saratoga ( http://saratoga.sourceforge.net/ ), но это транспортный уровень. Так что не похоже на хороший выбор.

Протокол точка-точка ( https://en.wikipedia.org/wiki/Point-to-Point_Protocol ) кажется наиболее разумным способом. Верно? Он настолько легкий, насколько это возможно.

Спасибо за любое руководство :)

Не могли бы вы дать более подробную информацию о том, что это за куб сидел?
Отредактировано, чтобы добавить ссылку. Это маленький спутник. На самом деле у нас куб 3U, то есть 10 см x 10 см x 30 см. Таким образом, доступность ссылки будет периодической.
вы можете использовать ipx, как и udp, но с меньшим количеством заголовков и существующим протоколом. и точка-точка, не проходит через маршрутизаторы ... на самом деле, если вы контролируете оба конца, это должно быть несколько тривиально, шаблон синхронизации (возможно, не требуется, зависит от физического уровня), длина, контрольная сумма данных ...
при необходимости добавьте номер пакета. посмотрите на xmodem например.
Почему вы пишете: «Мы знаем, что нам нужен протокол, который предоставит нам «пакетный интерфейс». То есть нам нужен протокол канального уровня для пакетирования последовательного потока данных»? Разве безошибочный поток не был бы более полезным, или происходит что-то еще, что я пропустил?

Ответы (3)

Почему вы не собираетесь использовать существующий протокол?

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

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

Это коммерческий, исследовательский или любительский проект?

Я знаю, что любители построили эквивалент глобальной сети наземных станций, которые переключаются на следующую станцию ​​по мере движения спутника по орбите (немного похоже на сеть наземных станций, которая есть у НАСА или других космических агентств, но с использованием оборудования, доступного для части суток [владельцы оборудования тоже используют его сами, в своих целях] увлеченными любителями). Вы пытаетесь решить эту проблему?

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

Если это любительский проект, свяжитесь с группами напрямую. Британская группа любительских спутников дружна, и ее члены сотрудничали с коллегами из AMSAT-NL в создании программного обеспечения и сети для международной сети наземных станций на основе любительского радио. Они также построили недорогое радиооборудование, используемое для отслеживания их FUNCube CubeSat.

Одна из первых пакетных беспроводных сетей ALOHnet повлияла на Ethernet и Inmarsat. Так, например, некоторые удачные идеи могут быть сохранены из этой работы. Пока он работает, не имеет существенных недостатков, доказал свою работоспособность в космосе и имеет доступное аппаратное обеспечение, которое протестировано и «сертифицировано» для использования в космосе, какая мотивация для изменений?

Редактировать:

Есть несколько статей о высокой задержке и даже вопрос о переполнении стека. Сеть с чрезвычайно высокой задержкой , которая может вдохновить.

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

Например, протокол Кермита . В этой статье в Википедии говорится: «Программное обеспечение Kermit использовалось для решения самых разных задач, от простых студенческих заданий до решения проблем совместимости на борту Международной космической станции». Так что у него есть полезная родословная :-)

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

Это с открытым исходным кодом и имеет реализации C. Таким образом, вы можете получить исходный код и портировать его. Kermit работал на машинах с адресным пространством менее 64 КБ. Так что это может подойти для вашего оборудования.

Даже если Kermit не подходит, я бы порекомендовал взглянуть на старые (около 1980-х годов) протоколы и реализации, потому что машинные ограничения могут быть сопоставимы с ограничениями вашего оборудования в полете; даже если ваше оборудование менее ограничено, чем в 1980-х годах, ваш бюджет мощности может помочь реализации протокола с низким уровнем ресурсов.

Это любительский проект, мы команда университета. ---------- У нас нет рабочей силы для разработки наших собственных приемопередатчиков, поэтому мы используем устройства COTS, которые несовместимы с существующими любительскими спутниковыми станциями. ---------- Мы планируем использовать уже реализованный протокол: протокол точка-точка. Мы хотим избежать использования протоколов IP и транспортного уровня, потому что это просто добавит тонну в основном бесполезных накладных расходов. Я надеюсь, что приложение сможет отслеживать, как оно разбивает свои данные на пакеты, а затем собирает их заново. Телеметрия и т. д. поместятся в 1 пакет.
@RJTK - так эти COTS-устройства «сертифицированы» как пригодные для использования в космосе? По какому протоколу они «летали» в своих предыдущих экспедициях? Я ожидаю, что проект с ограниченными ресурсами будет использовать как можно больше проверенных технологий. так что это может помочь нам дать ответы, если вы обновите свой вопрос и объясните, почему вы хотите использовать другой протокол. (Я предполагаю, что реализация протокола, которая ранее использовалась с передатчиками COTS, доступна для обоих концов)
Я добавил детали. Используемый нами модем n290 уже летал в космос. Я не знаю, какой программный стек использовался с ним.
@RJTK - Спасибо. Надеюсь, это поможет людям предлагать лучшие ответы. Я немного обновил свой ответ. Я думаю, что, возможно, покопавшись в нескольких старых проектах с открытым исходным кодом (для сети или передачи файлов), вы сможете найти готовое, протестированное решение.

У вас ДЕЙСТВИТЕЛЬНО есть сеть, признаете вы это или нет. Ваш кубсат будет не единственным на орбите и вряд ли будет единственным на выделенном вам канале. Каким-то образом сообщения вашего кубсата должны быть отличимы от других, а полагаться на эфемеридные данные (ваши должны быть над головой о... сейчас...) небезопасно.

То же самое с наземной станцией. Особенно, если вы хотите обрабатывать большие объемы данных, вам понадобится более одной наземной станции. Кубсаты часто используют сеть любительских наземных станций, и если какой-нибудь парень в Вумере или Якутске подобрал пакеты, которые вы потеряли из-за замирания, отлично! Но вы, вероятно, хотите, чтобы ваша собственная наземная станция управляла спутником, поэтому вам нужно идентифицировать наземные станции, а также спутники.

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

Я думаю, вам понадобится больше, чем PPP - возможно, TCP (без IP) был бы хорошим кандидатом.

тфтп? - маленький, легкий и известный.

(Простые) методы сжатия могут сэкономить достаточную длину пакета, чтобы сделать IP возможным, и позволить вам перераспределить рабочую силу на более интересные части проекта.

Вернитесь к удалению IP-адресов после того, как протокол, устройство и приложение будут работать и полностью протестированы с использованием существующих стеков.