큐빗 스페이스 프로토콜
Cubesat Space Protocol원본 작성자 | 요한 드 클라빌 크리스천센 |
---|---|
개발자 | SpaceInventor, GomSpace |
초기 릴리즈 | 2010년 4월 26일 |
안정적 해제 | 1.6 / 2020년 4월 17일; 전 |
기록 위치 | C, 파이톤 |
운영 체제 | FreeRTOS, Linux, Mac OS X, Microsoft Windows |
유형 | 프로토콜 |
면허증 | GNU 약소 일반 공중 라이선스 |
웹사이트 | http://www.libcsp.org |
CubeSat 스페이스 프로토콜(CSP)은 CubeSats를 위해 설계된 작은 네트워크 계층 전송 프로토콜이다.[citation needed]이 아이디어는 2008년 알보리 대학 학생 그룹에 의해 개발되었으며, 2013년에 출범한 AAUSAT3 큐브사트 임무를 위해 더욱 발전되었다.프로토콜은 네트워크와 전송 계층 정보를 모두 포함하는 32비트 헤더를 기반으로 한다.8비트 AVR 마이크로프로세서와 32비트 ARM 및 AVR과 같은 임베디드 시스템을 위해 구현되었다.구현은 C로 작성되며, FreeRTOS와 POSIX, Linux와 같은 pthreads 기반 운영 체제에서 실행되도록 포팅되어 있다.최초의 MAC 레이어 드라이버가 CAN-bus용으로 작성되었기 때문에 3자 약어로 CSP가 채택되었다.그 후 물리 계층은 몇 가지 다른 기술을 포함하도록 확장되었고, 따라서 약자를 변경하지 않고 보다 일반적인 큐브샛 우주 프로토콜로 이름이 확장되었다.
이 프로토콜과 구현은 요한 드 클라빌 크리스천슨, 스페이스 Inventor, 곰스페이스에 의해 여전히 활발하게 유지되고 있다.소스 코드는 LGPL 라이센스로 사용할 수 있으며 GitHub에서 호스팅된다.
설명
CubeSat 스페이스 프로토콜은 분산형 임베디드 시스템이 서비스 지향 네트워크 토폴로지를 배치할 수 있도록 한다.[citation needed]CSP의 계층화는 TCP/IP 모델과 동일한 계층에 해당한다.이 구현은 연결 지향 전송 프로토콜(레이어 4)과 라우터 코어(레이어 3) 및 여러 네트워크 인터페이스(레이어 1-2)를 지원한다.서비스 지향 토폴로지는 통신 버스 자체가 다른 서브시스템과의 인터페이스이기 때문에 위성 서브시스템의 설계를 용이하게 한다.이것은 각 서브시스템 개발자가 서비스-계약과 그들의 시스템이 반응할 일련의 포트-넘버들을 정의하기만 하면 된다는 것을 의미한다.나아가 서브시스템 상호의존성이 감소하고, 통신버스에 유사한 노드를 여러 개 추가하면 중복성이 쉽게 추가된다.
주요 기능:[citation needed]
- 버클리 소켓과 유사한 간단한 API.
- 정적 경로가 있는 라우터 코어.스페이스링크 등을 통한 패킷의 투명한 전달 지원.
- (UDP와 유사) 무연결 작동과 (RUDP 기반) 연결 지향 작동에 대한 지원.
- ping 및 버퍼 상태와 같은 ICMP와 유사한 요청을 구현하는 서비스 처리기.
- 루프백 트래픽 지원.예를 들어, 서브시스템 작업 간의 프로세스 간 통신에 사용될 수 있다.
- 물리적 인터페이스에서 지원하는 경우 브로드캐스트 트래픽에 대한 선택적 지원.
- 물리적 인터페이스에서 지원하는 경우 비규칙(Promiscuous) 모드에 대한 선택적 지원.
- CTR 모드에서 XTEA로 암호화된 패킷에 대한 선택적 지원.
- SHA-1 HMAC가 잘린 HMAC 인증 패킷에 대한 선택적 지원.
지원되는 운영 체제
CSP는 gcc 컴파일러의 최신 버전이 있는 모든 플랫폼에서 컴파일해야 한다.CSP는 인라인 기능 및 지정 이니셜라이저와 같은 C99 기능에 대한 지원이 필요하다.
물리적 계층 드라이버
CSP는 몇 가지 물리적 계층 기술을 지원한다.LGPL 면허 소스 코드는 소켓CAN 및 Atmel AT90CAN128, AT91SAM7A1 및 AT91에 대한 단편적인 CAN 인터페이스와 드라이버를 구현하는 것을 포함한다.SAM7A3 프로세서.버전 1.1 이후부터 CSP에는 I2C 및 RS-232용 인터페이스도 포함된다.인터페이스는 패킷을 전송하는 기능만 구현하면 되고, 수신 패킷은 csp_new_packet 기능으로 프로토콜 스택에 삽입하면 된다.CSP는 다음과 같은 물리적 계층으로 성공적으로 테스트되었다.
프로토콜 헤더
버전 1
좌현 범위는 세 개의 조정 가능한 세그먼트로 나뉜다.포트 0~7은 ping, buffer status 등의 일반 서비스에 사용되며, CSP 서비스 취급자에 의해 구현된다.8 ~ 47의 포트는 서브시스템별 서비스에 사용된다.48에서 63까지 남은 모든 포트는 송신 연결에 사용되는 사용 후 삭제 포트다.28에서 31까지의 비트는 HMAC, XTEA 암호화, RDP 헤더 및 CRC32 체크섬으로 패킷을 표시하는 데 사용된다.
비트 오프셋 | 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바이트) |
버전 2
비트 오프셋 | 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 | 우선 순위 | 목적지 | 출처 | 목적지 항구 | 출처 항구 | 예약됨 | H M A C | X T E A | R D P | C R C | ||||||||||||||||||||||||||||||||||||||
48 | 데이터(0 – 65,535바이트) |
참조
외부 링크
- 프로젝트 웹 사이트 및 소스 코드 호스팅
- 알보리 대학, 학생 위성 활동
- Aalborg University, AAUSAT3 – CSP를 사용한 최초의 AAU 큐벳
- 곰스페이스 앱스