Cubesat Space Protocol
From Wikipedia, the free encyclopedia
CubeSat Space Protocol (CSP) est un protocole réseau léger conçu pour la communication entre composants dans des satellites miniatures tels que les CubeSats.
| Fonction | CubeSat |
|---|---|
| Sigle | CSP |
| Date de création | 26 avril 2010 |
| Auteur(s) / Autrice(s) | Johan de Claville Christiansen |
| Créateur | Johan de Claville Christiansen |
|---|---|
| Développé par | SpaceInventor, GomSpace, Space Cubics |
| Première version | |
| Dernière version | 2.1 () |
| Dépôt | https://github.com/libcsp/libcsp |
| État du projet | actif |
| Écrit en | C, Python |
| Système d'exploitation | FreeRTOS, Linux, Zephyr, Mac OS X, Windows |
| Type | Protocole de communication |
| Licence | MIT License |
| Documentation | https://libcsp.github.io/libcsp/ |
| Site web | https://github.com/libcsp/libcsp |
L'idée a été développée par un groupe d'étudiants de l'Université d'Aalborg en 2008, et développée ultérieurement pour la mission AAUSAT3 CubeSat lancée en 2013.
Le protocole est basé sur un en-tête 32 bits contenant à la fois des informations sur la couche réseau et la couche transport. Son implémentation est conçue pour les systèmes embarqués tels que le microprocesseur AVR 8 bits et les ARM et AVR 32 bits d'Atmel.
L'implémentation est écrite en C et est portée pour fonctionner sur les systèmes d'exploitation FreeRTOS, Zephyr et POSIX et basés sur pthreads tels que Linux.
L'acronyme à trois lettres CSP a été adopté comme abréviation de CAN Space Protocol car le premier pilote de couche MAC a été écrit pour le bus CAN.
La couche physique a depuis été étendue pour inclure plusieurs autres technologies, et le nom a donc été étendu au protocole spatial CubeSat plus général sans changer l'abréviation.
Le protocole et son implémentation sont activement maintenus par Johan de Claville Christiansen, Space Inventor, GomSpace et Space Cubics. Le code source est disponible sous licence MIT et hébergé sur GitHub.
Description
CubeSat Space Protocol (CSP) est un protocole de transport au niveau réseau, conçu pour les CubeSats.
L’idée a été développée en 2008 par un groupe d’étudiants de l’Université d’Aalborg, puis perfectionnée pour la mission CubeSat AAUSAT3, lancée en 2013.
Le protocole repose sur un en-tête de 32 bits contenant des informations à la fois du niveau réseau et du niveau transport.
Son implémentation est pensée pour les systèmes embarqués, tels que les microprocesseurs 8 bits AVR, ainsi que les architectures 32 bits ARM et AVR d’Atmel.
Le code est écrit en C et a été porté pour fonctionner sur FreeRTOS, Zephyr, ainsi que sur des systèmes d’exploitation basés sur POSIX et pthreads, comme Linux.
L’acronyme à trois lettres CSP signifiait à l’origine CAN Space Protocol, car le premier pilote de couche MAC avait été développé pour le bus CAN.
La couche physique a depuis été étendue à plusieurs autres technologies, et le nom a donc évolué vers CubeSat Space Protocol, sans modifier l’abréviation.
Les principales caractéristiques comprennent :[réf. nécessaire]
- API simple similaire aux sockets Berkeley.
- Noyau de routeur avec routes statiques. Prend en charge la transmission transparente des paquets via, par exemple, Spacelink.
- Prise en charge du fonctionnement sans connexion (similaire à UDP ) et du fonctionnement orienté connexion (basé sur RUDP ).
- Gestionnaire de services qui implémente des requêtes de type ICMP telles que le ping et l'état du tampon.
- Prise en charge du trafic en boucle. Cela peut par exemple être utilisé pour la communication interprocessus entre les tâches du sous-système.
- Prise en charge facultative du trafic de diffusion si elle est prise en charge par l'interface physique.
- Prise en charge facultative du mode promiscuité si pris en charge par l'interface physique.
- Prise en charge facultative des paquets chiffrés avec XTEA en mode CTR.
- Prise en charge facultative des paquets authentifiés HMAC avec SHA-1 HMAC tronqué.
Systèmes d'exploitation pris en charge
CSP devrait pouvoir être compilé sur toutes les plateformes disposant d'une version récente du compilateur gcc. CSP nécessite la prise en charge des fonctionnalités C99 telles que les fonctions en ligne et les initialiseurs désignés.
Pilotes de couche physique
CSP prend en charge plusieurs technologies de couche physique. Le code source contient une implémentation d'une interface CAN fragmentée et des pilotes pour SocketCAN et les processeurs Atmel AT90CAN128, AT91SAM7A1 et AT91SAM7A3. À partir de la version 1.1, CSP inclut également des interfaces pour I2C et RS-232. Les interfaces doivent uniquement implémenter une fonction pour transmettre un paquet et insérer les paquets reçus dans la pile de protocoles avec la fonction csp_new_packet. Le CSP a été testé avec succès sur les couches suivantes :
En-tête de protocole
Version 1
La plage de ports est divisée en trois segments réglables. Les ports 0 à 7 sont utilisés pour les services généraux tels que le ping et l'état du tampon, et sont implémentés par le gestionnaire de services CSP. Les ports de 8 à 47 sont utilisés pour les services spécifiques au sous-système. Tous les ports restants, de 48 à 63, sont des ports éphémères utilisés pour les connexions sortantes. Les bits de 28 à 31 sont utilisés pour marquer les paquets avec le cryptage HMAC, XTEA, l'en-tête RDP et la somme de contrôle CRC-32.
| Décalage binaire | 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 | Priorité | Source | Destination | Destination Port |
Source Port |
Réservé | H M A C |
X T E A |
R D P |
C R C | ||||||||||||||||||||||
| 32 | Données (0 – 65 535 octets) | |||||||||||||||||||||||||||||||
Version 2
| Bit offset | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 | 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 | Priority | Destination | Source | Destination Port |
Source Port |
Reserved | H M A C |
X T E A |
R D P |
C R C | ||||||||||||||||||||||||||||||||||||||
| 48 | Data (0 – 65,535 bytes) | |||||||||||||||||||||||||||||||||||||||||||||||