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 offset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10  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 байт)

Источники[править | править код]

Ссылки[править | править код]