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에서 확인 가능함.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요