Cubesat Space Protocol

Перейти к навигацииПерейти к поиску
Космический протокол CubeSat
ТипПротокол
АвторAAUSAT3
РазработчикиAAUSAT3, GomSpace
Написана наC, Python
Операционные системы FreeRTOS, Linux, Mac OS X, Microsoft Windows
Первый выпуск26 апреля 2010г.
Последняя версия1.4 (7 апреля 2015; 9 лет назад (2015-04-07))
ЛицензияGNU Lesser General Public License
Сайтhttp://www.libcsp.org

Космический протокол CubeSat (CSP) — это протокол доставки сетевого уровня, разработанный для CubeSats. Идея была разработана группой студентов из Ольборгского университета в 2008 году и получила дальнейшее развитие для использования в миссии AAUSAT3 CubeSat, которая стартовала в 2013 году. Протокол основан на 32-битном заголовке, содержащем информацию о сетевом и транспортном уровнях. Он предназначен для встроенных систем, таких как 8-битный микропроцессор AVR и 32-битный ARM и AVR от Atmel. Реализован на языке C и перенесен для работы на FreeRTOS и POSIX и потоконаправленные операционные системы, такие как Linux. Поддержка Mac OS X и Microsoft Windows будет доступна в версии 1.1.

Аббревиатура CSP также расшифровывается как аббревиатура CAN Space Protocol, потому что первый драйвер уровня MAC был написан для CAN шин. С тех пор в физический уровень было включено несколько других технологий, и поэтому наиболее часто используемым названием стало — «космический протокол CubeSat», которое позволило не менять аббревиатуру.

Протокол активно поддерживается студентами в Ольборгском университете и побочной компанией GomSpace. Исходный код доступен под лицензией LGPL и размещен на GitHub.

Описание

Космический протокол CubeSat позволяет распределенным встроенным системам развертывать сервис-ориентированную топологию сети. Уровни CSP соответствует уровням модели TCP/IP. Он поддерживает ориентированный на соединение Транспортный протокол (уровень 4), маршрутизатор-ядро (уровень 3) и несколько сетевых интерфейсов (уровень 1-2). Сервис-ориентированная топология упрощает проектирование спутниковых подсистем, поскольку сама коммуникационная шина является интерфейсом для других подсистем. Это означает, что каждому разработчику подсистемы нужно только определить контракт на обслуживание и набор номеров портов, на которые будет реагировать их система. Кроме того, подсистемные взаимозависимости сокращаются, и резервирование легко обеспечивается добавлением нескольких похожих узлов в коммуникационную шину.

Ключевые особенности:

  • Простой API, похожий на сокеты Berkeley.
  • Ядро маршрутизатора со статическими маршрутами. Поддерживает прозрачную пересылку пакетов, например, spacelink.
  • Поддержка работы без установления соединения (аналогично UDP) и операций с соединением (на основе RUDP).
  • Служебный обработчик, который реализует ICMP — запросы, такие как пинг и состояние буфера.
  • Поддержка циклического трафика. Это может быть использовано, например, для межпроцессорного взаимодействия задач подсистемы.
  • Дополнительная поддержка широковещательного трафика, если поддерживается физическим интерфейсом.
  • Дополнительная поддержка режима promiscuous(беспорядочный), если поддерживается физическим интерфейсом.
  • Дополнительная поддержка зашифрованных пакетов с XTEA в режиме CTR.
  • Дополнительная поддержка HMAC — аутентифицированных пакетов с усеченным SHA-1 HMAC.

Поддерживаемые операционные системы

CSP должен компилироваться на всех платформах с последней версией gcc — компилятора. CSP требует поддержки функций C99, таких как встроенные функции и назначенные инициализаторы.

Драйверы физического уровня

CSP поддерживает несколько технологий физического уровня. Лицензионный исходный код LGPL содержит реализацию фрагментирующего интерфейса CAN и драйверов для процессоров SocketCAN и Atmel AT90CAN128, AT91SAM7A1 и AT91SAM7A3. Начиная с версии 1.1, CSP также включает интерфейсы для I2C и RS-232. Интерфейсам требуется только реализовать функцию для передачи пакета и вставить полученные пакеты в стек протокола с помощью функции csp_new_packet. CSP успешно протестирован со следующими физическими уровнями.

  • CAN
  • I2C
  • RS-232 с использованием протокола KISS[1]
  • CCSDS 131.0-B-1-S[2]/131.0-B-2[3] протокол космической связи
  • TCP/IP

Заголовок протокола

Версия 1

Диапазон портов разделен на три регулируемых сегмента. Порты от 0 до 7 используются для общих служб, таких как статус пинга и буфера, и реализуются обработчиком службы CSP. Порты с 8 до 47 используются для конкретных служб подсистем. Все остальные порты, от 48 до 63, являются эфемерными портами, используемыми для исходящих соединений. Биты от 28 до 31 используются для маркировки пакетов с помощью HMAC, XTEA-шифрования, заголовка RDP и контрольной суммы CRC32.

Заголовок CSP 1.0+
Bit offset31302928272625242322212019181716151413121110 9 8 7 6 5 4 3 2 1 0
0ПриоритетИсточникМесто

Назначения

Порт
Назначения
Исходный

Порт

Зарезервирован-

ный

H
M
A
C
X
T
E
A
R
D
P
C
R
C
32Данные (0 — 65,535 байт)

Источники

Ссылки