1261.50 DDS(Data Distribution Service)의 기본 개념

1. DDS의 정의와 표준화 배경

DDS(Data Distribution Service)는 OMG(Object Management Group)에서 표준화한 데이터 중심 발행-구독(Data-Centric Publish-Subscribe, DCPS) 미들웨어 표준이다. DDS 사양의 최초 채택은 2004년이며, 현재 공식 사양은 DDS Version 1.4(formal/15-04-10)이다. DDS는 분산 시스템에서 실시간 데이터 교환을 위한 통신 인프라를 제공하며, 국방, 항공우주, 의료, 산업 자동화, 자율 차량 등 높은 신뢰성과 실시간성이 요구되는 영역에서 광범위하게 적용되어 왔다.

ROS2가 DDS를 미들웨어로 채택한 설계 결정은 ROS1의 자체 통신 계층(TCPROS/UDPROS)이 갖고 있던 단일 장애점(single point of failure), 발견(discovery) 메커니즘의 취약성, QoS 정책의 부재 등의 한계를 극복하기 위한 것이다.

2. 데이터 중심 패러다임(Data-Centric Paradigm)

DDS의 핵심적 설계 철학은 데이터 중심(data-centric) 패러다임이다. 전통적인 메시지 중심(message-centric) 미들웨어에서는 애플리케이션이 메시지의 송수신 경로를 명시적으로 관리하는 반면, DDS에서는 데이터 자체가 1급 객체(first-class object)로 취급된다.

데이터 중심 패러다임과 메시지 중심 패러다임의 차이는 다음과 같이 정리된다.

특성메시지 중심 미들웨어데이터 중심 미들웨어 (DDS)
추상화 대상메시지의 송수신공유 데이터 공간(Global Data Space)
전달 모델큐(queue) 기반 메시지 전달키(key) 기반 데이터 인스턴스 갱신
데이터 생명주기수신 즉시 소멸데이터 인스턴스별 생명주기 관리
필터링토픽 기반콘텐츠 기반 필터링(Content-Filtered Topic) 지원
QoS 제어전송 수준의 제한적 제어22개 이상의 세분화된 QoS 정책

DDS에서 모든 참여자(participant)는 논리적으로 하나의 **글로벌 데이터 공간(Global Data Space)**을 공유한다. 데이터 기록자(DataWriter)는 이 공간에 데이터를 기록하고, 데이터 독자(DataReader)는 이 공간에서 데이터를 읽는다. 실제 구현에서 글로벌 데이터 공간은 분산 캐시(distributed cache)로 실현된다.

3. DDS의 핵심 엔티티

DDS의 아키텍처는 다음의 핵심 엔티티로 구성된다.

3.1 도메인(Domain)과 도메인 참여자(DomainParticipant)

도메인은 DDS 통신이 이루어지는 논리적 분할 단위이다. 도메인은 0~232-1 범위의 정수 ID로 식별되며, 같은 도메인 ID를 사용하는 참여자들만 상호 통신이 가능하다. 도메인 참여자(DomainParticipant)는 애플리케이션이 도메인에 참여하기 위해 생성하는 최상위 엔티티이다.

ROS2에서 도메인 ID는 환경 변수 ROS_DOMAIN_ID를 통해 설정되며, 기본값은 0이다. 서로 다른 도메인 ID를 사용하는 ROS2 노드들은 서로 통신할 수 없다.

3.2 토픽(Topic)

토픽은 데이터의 논리적 채널이다. 토픽은 이름(name)과 데이터 타입(data type)의 쌍으로 정의된다. 동일한 이름의 토픽에 연결된 데이터 기록자와 데이터 독자는 자동으로 매칭되어 데이터 교환이 이루어진다. 토픽의 데이터 타입은 IDL(Interface Definition Language) 또는 ROS2의 .msg 파일로 정의된다.

3.3 발행자(Publisher)와 데이터 기록자(DataWriter)

발행자(Publisher)는 데이터 기록자(DataWriter)의 논리적 그룹이다. 데이터 기록자는 특정 토픽에 데이터를 발행하는 엔티티이며, ROS2의 발행자(Publisher) 객체에 대응한다. 데이터 기록자는 토픽에 연결될 때 QoS 정책을 선언하며, 선언된 QoS가 구독측의 QoS와 호환되어야 매칭이 성립한다.

3.4 구독자(Subscriber)와 데이터 독자(DataReader)

구독자(Subscriber)는 데이터 독자(DataReader)의 논리적 그룹이다. 데이터 독자는 특정 토픽에서 데이터를 수신하는 엔티티이며, ROS2의 구독자(Subscription) 객체에 대응한다. 데이터 독자는 수신된 데이터를 내부 버퍼에 저장하며, 리스너(Listener) 또는 대기 집합(WaitSet) 메커니즘을 통해 애플리케이션에 데이터 도착을 통보한다.

3.5 엔티티 간 관계

DDS 엔티티의 계층적 관계는 다음과 같이 구조화된다.

DomainParticipant
├── Publisher
│   ├── DataWriter (Topic A)
│   └── DataWriter (Topic B)
├── Subscriber
│   ├── DataReader (Topic A)
│   └── DataReader (Topic C)
└── Topic
    ├── Topic A (type: SensorData)
    ├── Topic B (type: ControlCommand)
    └── Topic C (type: StatusReport)

4. 데이터 인스턴스와 키(Key)

DDS에서 데이터 인스턴스(data instance)는 토픽 내에서 키(key) 필드에 의해 구분되는 개별 데이터 개체이다. 키는 관계형 데이터베이스의 기본 키(primary key)에 유사한 개념이며, 동일 토픽 내에서 복수의 데이터 인스턴스를 구분하는 데 사용된다.

예를 들어, 다중 로봇 시스템에서 각 로봇의 위치 데이터를 동일한 robot_pose 토픽으로 발행할 때, 로봇 ID를 키로 지정하면 DDS는 각 로봇의 위치를 독립적인 데이터 인스턴스로 관리한다.

struct RobotPose {
  @key long robot_id;
  double x;
  double y;
  double theta;
};

데이터 인스턴스는 자체적인 생명주기(lifecycle)를 가지며, ALIVE, NOT_ALIVE_DISPOSED, NOT_ALIVE_NO_WRITERS의 상태를 갖는다.

5. 자동 발견 프로토콜(Discovery Protocol)

DDS의 중요한 특징 중 하나는 중앙 브로커(broker) 없이 참여자들을 자동으로 발견하는 탈중앙화(decentralized) 발견 프로토콜이다. DDS 발견은 두 단계로 수행된다.

5.1 SPDP(Simple Participant Discovery Protocol)

참여자 수준의 발견 프로토콜이다. 각 참여자는 주기적으로 멀티캐스트(multicast) 메시지를 전송하여 자신의 존재를 알리며, 다른 참여자의 존재를 감지한다.

5.2 SEDP(Simple Endpoint Discovery Protocol)

엔드포인트(DataWriter/DataReader) 수준의 발견 프로토콜이다. SPDP를 통해 상대 참여자를 발견한 후, SEDP를 통해 각 참여자가 보유한 데이터 기록자와 데이터 독자의 정보(토픽 이름, 데이터 타입, QoS 정책)를 교환한다. 토픽 이름과 데이터 타입이 일치하고 QoS 정책이 호환되면 자동으로 통신이 연결된다.

ROS1에서는 마스터 노드(rosmaster)가 중앙 집중식 발견을 담당하였으며, 마스터의 장애가 전체 시스템의 장애로 이어지는 단일 장애점 문제가 존재하였다. DDS의 탈중앙화 발견은 이 문제를 구조적으로 해결한다.

6. RTPS(Real-Time Publish-Subscribe) 유선 프로토콜

RTPS는 DDS의 상호 운용성(interoperability)을 보장하기 위한 유선 프로토콜(wire protocol) 표준이다. RTPS는 서로 다른 제조사의 DDS 구현체 간에도 통신이 가능하도록 패킷 형식, 발견 절차, 상태 관리 방식을 표준화한다.

RTPS는 UDP 기반으로 동작하며, 다음의 특성을 갖는다.

특성설명
무연결성TCP의 연결 설정/해제 오버헤드가 없다.
멀티캐스트 지원일대다 통신에서 네트워크 효율이 높다.
신뢰성 계층UDP 위에 선택적 신뢰성(ACK/NACK 기반 재전송)을 구현한다.
정렬된 전달메시지 시퀀스 번호를 통해 순서 보장이 가능하다.

7. QoS 정책 체계

DDS의 QoS(Quality of Service) 정책은 통신의 품질 특성을 22개 이상의 독립적인 차원에서 제어한다. ROS2에서 빈번하게 사용되는 QoS 정책은 다음과 같다.

QoS 정책설정값의미
ReliabilityRELIABLE / BEST_EFFORT메시지 전달 보장 여부
DurabilityVOLATILE / TRANSIENT_LOCAL늦은 참여자에 대한 데이터 제공 여부
HistoryKEEP_LAST(n) / KEEP_ALL수신 버퍼의 데이터 보존 정책
Depth정수값KEEP_LAST 정책에서 보존할 샘플 수
Deadline시간값데이터 갱신의 최대 허용 주기
LivelinessAUTOMATIC / MANUAL_BY_TOPIC데이터 기록자의 활성 상태 판별 방식
Lifespan시간값데이터 샘플의 유효 수명

QoS 정책은 “제의-요청(Offered-Requested)” 모델을 따른다. 데이터 기록자가 제의하는 QoS와 데이터 독자가 요청하는 QoS가 호환(compatible)되어야 매칭이 성립한다. 예를 들어, 데이터 독자가 RELIABLE을 요청하였으나 데이터 기록자가 BEST_EFFORT만 제의하면 매칭이 실패한다.

8. DDS와 ROS2의 매핑 관계

ROS2의 통신 개념은 DDS의 엔티티에 다음과 같이 매핑된다.

ROS2 개념DDS 엔티티
노드(Node)DomainParticipant (또는 Participant 내 엔드포인트 그룹)
발행자(Publisher)DataWriter
구독(Subscription)DataReader
서비스(Service)요청/응답 토픽 쌍의 DataWriter + DataReader
액션(Action)목표/피드백/결과/상태 토픽 및 서비스의 조합
토픽 이름DDS 토픽 이름 (네임스페이스 접두사 포함)
메시지 타입DDS 데이터 타입 (IDL 자동 생성)
QoS 프로파일DDS QoS 정책 집합

9. 참고 문헌

  • Object Management Group, “Data Distribution Service (DDS) Version 1.4,” OMG Standard, formal/15-04-10, 2015.
  • Object Management Group, “The Real-Time Publish-Subscribe Protocol (RTPS) DDS Interoperability Wire Protocol Specification,” Version 2.3, 2019.
  • G. Pardo-Castellote, “OMG Data-Distribution Service: architectural overview,” in Proceedings of the 23rd International Conference on Distributed Computing Systems Workshops, 2003.
  • S. Macenski, T. Foote, B. Gerkey, C. Lalancette, W. Woodall, “Robot Operating System 2: Design, architecture, and uses in the wild,” Science Robotics, vol. 7, no. 66, eabm6074, 2022.
  • Open Robotics, “About DDS and ROS middleware implementations,” ROS 2 Documentation, https://docs.ros.org/en/rolling/Concepts/Intermediate/About-Different-Middleware-Vendors.html.