Космический протокол 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, похожий на сокеты Беркли. Ядро маршрутизатора со статическими маршрутами. Поддерживает прозрачную пересылку пакетов, например, spacelink. Поддержка работы без установления соединения (аналогично UDP) и операций с соединением (на основе RUDP). Служебный обработчик, который реализует ICMP — запросы, такие как пинг и состояние буфера. Поддержка циклического трафика. Это может быть использовано, например, для межпроцессорного взаимодействия задач подсистемы. Дополнительная поддержка широковещательного трафика, если поддерживается физическим интерфейсом. Дополнительная поддержка режима promiscuous(беспорядочный), если поддерживается физическим интерфейсом. Дополнительная поддержка зашифрованных пакетов с XTEA в режиме CTR. Дополнительная поддержка HMAC — аутентифицированных пакетов с усеченным SHA-1 HMAC.
Поддерживаемые операционные системы CSP должен компилироваться на всех платформах с последней версией gcc — компилятора. CSP требует поддержки функций C99, таких как встроенные функции и назначенные инициализаторы.
FreeRTOS — протестирован на AVR8, AVR32 и ARM7. Linux — протестирован на x86, x86-64 и Blackfin. Mac OS X Microsoft Windows
Драйверы физического уровня CSP поддерживает несколько технологий физического уровня. Лицензионный исходный код LGPL содержит реализацию фрагментирующего интерфейса CAN и драйверов для процессоров SocketCAN и Atmel AT90CAN128, AT91SAM7A1 и AT91SAM7A3. Начиная с версии 1.1, CSP также включает интерфейсы для I2C и RS-232. Интерфейсам требуется только реализовать функцию для передачи пакета и вставить полученные пакеты в стек протокола с помощью функции csp_new_packet. CSP успешно протестирован со следующими физическими уровнями.
CAN I2C RS-232 с использованием протокола KISS CCSDS 131.0-B-1-Shttp://public.ccsds.org/publications/archive/131x0b1s.pdf (недоступная+ссылка)/131.0-B-2http://public.ccsds.org/publications/archive/131x0b2.pdf (недоступная+ссылка) протокол космической связи TCP/IP
Заголовок протокола
Версия 1 Диапазон портов разделен на три регулируемых сегмента. Порты от 0 до 7 используются для общих служб, таких как статус пинга и буфера, и реализуются обработчиком службы CSP. Порты с 8 до 47 используются для конкретных служб подсистем. Все остальные порты, от 48 до 63, являются эфемерными портами, используемыми для исходящих соединений. Биты от 28 до 31 используются для маркировки пакетов с помощью HMAC, XTEA-шифрования, заголовка RDP и контрольной суммы CRC32. +Заголовок CSP 1.0+ Bit offset 31302928272625242322212019181716151413121110 9 8 7 6 5 4 3 2 1 0 0 Приоритет Источник Место Назначения ПортНазначения Исходный ПортЗарезервирован- ныйHMACXTEA RDP CRC 32 Данные (0 — 65,535 байт)
Примечания
Ссылки Project Website and source code hosting Aalborg University, Student Satellite Activities Aalborg University, AAUSAT3 — первый cubase AAU для использования CSP GomSpace ApS space-inventor