TL;DR

  • Cubesat Space Protocol(CSP)은 제한된 자원을 가진 임베디드 시스템용으로 설계된 소형 프로토콜 스택이며, TCP/IP와 유사한 기능을 낮은 오버헤드로 제공함.
  • CSP는 전송·라우팅 프로토콜과 여러 MAC 계층 인터페이스를 포함하며, libcsp 핵심에는 라우터, 연결 지향 소켓 API, 메시지·연결 풀(pool)이 있음.
  • GNU C로 구현됐으며 FreeRTOS, Zephyr, Linux(POSIX)로 이식돼 있음.
  • 멀티 마스터 네트워크에서 하위 시스템 간 통신을 지원하고, 서비스 지향 구조로 느슨한 결합·재사용·자율성·중복성을 제공함.
  • 스레드 안전 소켓, QoS 라우터 태스크, 연결 지향·비연결 통신, 제로 카피 버퍼·큐 등 기능을 갖춤.

개요

  • 이 문서는 develop 브랜치의 최신 libcsp 문서이며, 현재 HTML 형식으로만 제공됨.
  • Cubesat Space Protocol(CSP)은 소형 네트워크의 분산 임베디드 시스템, 예를 들어 큐브샛(CubeSat) 간 통신을 쉽게 하도록 설계된 C 기반 소형 프로토콜 스택임.
  • 설계는 TCP/IP 모델을 따르며 전송 프로토콜, 라우팅 프로토콜, 여러 매체 접근 제어(MAC) 계층 인터페이스를 포함함.
  • libcsp의 핵심은 라우터, 연결 지향 소켓 API, 메시지·연결 풀로 구성됨.
  • 프로토콜은 전송 계층과 네트워크 계층 정보를 함께 담는 매우 경량화된 헤더를 기반으로 함.
  • GNU C로 구현됐으며, CPU와 메모리 자원이 매우 제한된 임베디드 시스템을 대상으로 하지만 이에 한정되지는 않음. 현재 FreeRTOS, Zephyr, Linux(POSIX)에서 실행되도록 이식돼 있음.
  • 큐브샛 하위 시스템 개발자에게 IP 헤더의 큰 오버헤드 없이 TCP/IP 스택과 같은 기능을 제공하는 것이 목표임. 작은 코드·메모리 공간과 단순한 구현으로 8비트 시스템도 네트워크에 완전히 연결할 수 있음.
  • 모든 하위 시스템이 동일한 네트워크 수준에서 서비스를 제공할 수 있으며, 마스터 노드가 필요하지 않음. 서비스 지향 아키텍처는 여러 큐브샛에서 사용되는 전통적인 마스터·슬레이브 토폴로지에 비해 다음과 같은 이점이 있음.
  • 표준화된 네트워크 프로토콜: 모든 하위 시스템 간 통신이 가능한 멀티 마스터 구조
  • 서비스의 느슨한 결합: 하위 시스템 간 의존성을 최소화하는 관계 유지
  • 서비스 추상화: 서비스 계약의 설명 범위를 넘어 서비스 내부 로직을 외부에 감춤
  • 서비스 재사용성: 재사용을 촉진하도록 로직을 서비스 단위로 분리
  • 서비스 자율성: 서비스가 캡슐화한 로직을 자체적으로 제어
  • 서비스 중복성: 버스에 중복 서비스를 쉽게 추가
  • 단일 장애 지점 감소: 복잡성을 단일 마스터 노드에서 네트워크의 여러 명확히 정의된 서비스로 분산
  • libcsp 구현은 단순성을 염두에 두고 작성됐으며, 컴파일 시 설정을 통해 상당히 고급 기능도 제공함.

기능

  • 스레드 안전 소켓 API
  • 서비스 품질(QoS)을 지원하는 라우터 태스크
  • 연결 지향 동작(RFC 908 및 1151)
  • 연결 없는 동작(UDP와 유사)
  • 핑 및 버퍼 상태 확인과 같은 ICMP 유사 요청
  • 루프백 인터페이스
  • 코드 및 메모리 요구량이 매우 적음
  • 제로 카피 버퍼 및 큐 시스템
  • 모듈형 네트워크 인터페이스 시스템
  • 운영체제 추상화: 현재 FreeRTOS, Zephyr, Linux로 이식됨
  • 브로드캐스트 트래픽
  • 무차별 모드

문서

  • /doc 폴더의 최신 버전을 HTML로 컴파일해 다음 주소에서 호스팅함: libcsp.github.io/libcsp/

기여

  • libcsp 개선과 확장을 위한 커뮤니티 기여를 환영하며, 풀 리퀘스트(Pull Request)를 열기 전에 기여 지침을 검토할 것을 안내함.

소프트웨어 라이선스

  • 소스 코드는 MIT 라이선스로 제공되며, 라이선스 전문은 LICENSE에서 확인 가능함.