SW/네트워크

DDS와 SOME/IP의 차이점에 대해 알아볼까요?

얇은생각 2018. 11. 29. 12:00
반응형

안녕하세요. 글쓴이입니다. 전장 SW 관련 공부를 하게 되면서 SOME/IP와 DDS에 대한 개념에 대해 많이 들어보게 되었습니다. SOME/IP는 제어 메시지에 사용할 수 있는 자동차 미들웨어 솔루션입니다. DDS는 또한 통신을 위한 자동차 미들웨어입니다. 이 둘의 차이점은 무엇이고 왜 그리고 언제 그 중 하나를 선택해야 하는 지에 대해 알아보겠습니다.


SOME/IP 및 DDS는 모두 publish/subscribe 패턴과 서비스 request/reply 패턴(RPC)을 사용하여 분산 애플리케이션을 통신할 수 있도록 합니다. 하지만 중요한 차이점도 있습니다. SOME/IP는 자동차 산업을 위해 특별히 설계되었습니다. SOME/IP는 AUTOAR의 일련화 프로토콜, Service Discovery및 클래식 AUTOAR과의 통합을 위한 Transformer를 설명하는 AUTOAR의 일부로 개발된 사양의 모음입니다.


DDS(Data Distribution Service)는 광범위한 산업 IoT 도메인을 목표로 합니다. OMG(Object Management Group)에서 게시한 개방형 표준 제품군입니다. 이것은 분산형 실시간 시스템을 위해 특별히 설계되었으며, 교통, 에너지, 의료 시스템, 산업 자동화, 항공우주 및 방어를 포함한 많은 산업에서 사용되고 있습니다. 상업 및 오픈 소스 모두 많은 독립적인 구현이 있습니다. DDS 제품군의 첫 번째 사양은 2004년에 릴리즈되었으며, 이후 표준 wire-protocol(DDS-RTPS), API(DDS-PSM-XXC) 등을 포함하는 12개의 DDS 표준으로 확장되었습니다. 


기술적으로도 개념적으로도 많은 차이가 있기 때문에 별도의 범주로 정리했습니다.

• Communication Patterns

• Application Programming Interfaces (APIs)

• Network Transports

• Approach to Security

• QoS

• Use from other specifications



Communication Patterns

SOME/IP는 객체 기반 서비스 지향 아키텍처로 볼 수 있습니다. 서비스 개체를 인스턴스화하여 시스템에 정보가 제공되며, 이러한 정보는 액세스하려는 각 서비스 인스턴스에 해당하는 "프록시" 개체를 인스턴스화하는 클라이언트 애플리케이션에 의해 액세스됩니다. 클라이언트 응용 프로그램은 서비스 개체에 프록시 개체를 연결하고 이를 사용하여 이벤트 및 필드 변경 사항을 모니터링하여 정보를 구독합니다. 또한 서비스 개체에 대한 작업을 호출하여 Remote Procedure Call을 수행하거나 특정 필드를 읽거나 쓸 수도 있습니다.


DDS는 기본적으로 분리된 데이터 중심 publish subscribe 모델을 제공합니다.  "데이터버스" 패턴이라고도 합니다. 애플리케이션은 DataBus에 참여하며 모든 데이터(DDS-Topic 이름으로 식별됨)를 publish/subscribe하고 모든 서비스 작업(DDS-서비스 이름으로 식별)을 실행할 수 있습니다. DDS는 완전히 피어 투 피어입니다. 중간에 어떤 브로커도 필요하지 않습니다. 동일한 주제 이름을 참조하는 호환되는 publisher 및 subscriber를 검색하기 위해 지속적으로 실행되는 검색 메커니즘이 있습니다. 이 메커니즘은 검색되는 즉시 정보를 직접 교환하기 시작합니다. subscriber 응용 프로그램은 수신하려는 정보를 나타내는 필터(콘텐츠 또는 시간 기반)를 지정할 수 있습니다. publisher 측에서는 전화선을 통해 전송되는 정보를 줄일 수 있습니다.


DDS와 SOME/IP의 중요한 차이점은 DDS를 사용하면 애플리케이션이 특정 서비스 구현에 바인딩될 필요가 없다는 점입니다. 간단히 Topics 및 서비스를 참조하고 애플리케이션 코드를 변경하지 않고 완전히 투명하게 일대일 또는 일대다 통신을 수행할 수 있습니다. 또한 피어 참여 또는 탈퇴에 대응하여 별도의 피어 존재 여부를 추적하거나 새로운 개체를 관리해야 합니다. 자동으로 처리되므로 이러한 의미에서 SOME/IP보다 훨씬 더 역동적입니다.



Application Programming Interfaces

SOME/IP는 표준 API를 정의하지 않습니다. 구현은 일반적으로 C++ API를 제공하지만 구현 전체에서 이동할 수 없습니다. 그러나 일반적으로 SOME/IP는 일부 표준 API를 정의하는 AUTOAR의 일부로 사용됩니다.


DDS에는 여러 언어를 위한 표준 API가 있습니다. C++ 및 Java의 경우 DDS-PSM-JAVA 및 DDS-PSM-CXX 규격에 포함되어 있습니다. 표준 C 및 ADA API는 IDL에서 C 및 ADA 사양으로 파생됩니다. 뿐만 아니라 C# 및 기타 언어용 벤더별 API도 있습니다. 따라서 일반적으로 DDS 애플리케이션을 포트로 전환하고 DDS 구현 간에 전환할 수 있습니다.



Network Transports

SOME/IP는 UDP와 TCP를 모두 지원합니다. AUTOAR 4.3에는 UDP를 통해 1400바이트보다 큰 페이로드 분할이 지원되었습니다. 신뢰할 수 있는 통신을 위해 SOME/IP는 TCP로 돌아갑니다.


DDS는 RTPS(Real-Time Publish Subscribe)라는 유선 프로토콜을 사용했습니다. 이 프로토콜은 다른 네트워크 전송 프로토콜에 매핑할 수 있는 플랫폼에 독립적인 모델로 정의됩니다. 대부분의 DDS(DDS-RTPS) 구현에서는 UDP, TCP 및 공유 메모리가 지원됩니다. RTPS는 멀티캐스트를 포함한 UDP를 포함하여 모든 전송에서 실행되는 전송 불변성 신뢰성과 단편화 프로토콜을 구현합니다. 따라서 DDS를 사용하면 멀티캐스트 UDP를 통해 대용량 데이터와 신뢰할 수 있는 데이터를 수행할 수 있습니다. SOME/IP는 이를 수행할 수 없습니다.


많은 DDS 구현에서는 "사용자 지정 전송" SDK를 제공하므로, 기능과 QoS를 그대로 유지하면서 사용자 지정 전송에서 DDS를 실행할 수 있습니다. SOME/IP에서는 특정 기능(신뢰성 및 단편화 등)을 Transport에 의해 구현해야 하므로 이 작업은 불가능합니다.



Approach to Security

일반적으로 SOME/IP는 보안을 위해 transport에 의존합니다. 따라서 안전하게 사용하려면 TLS 또는 DTLS에서 실행해야 합니다.


또한 TLS 또는 DTLS를 통해 DDS를 전송으로 실행할 수도 있지만, 이 솔루션은 선호되지 않습니다. 오히려 DDS에서는 transport에 영향을 미치지 않는 DDS 보안 사양에 정의된 메커니즘을 사용하는 것이 가장 좋습니다. 또한 DDS 보안은 보안 및 액세스 제어를 보다 세부적으로 제어할 수 있으므로 DDS 도메인 및 주제를 별도로 보호하고 주제에 대한 읽기 및 쓰기 권한을 구분할 수 있습니다. 또한 DDS 보안은 전송 불변성이므로 공유 메모리, 멀티캐스트 또는 사용자 지정 애플리케이션 정의 전송을 포함한 모든 전송에 사용할 수 있습니다.



Quality of Service Support

SOME/IP는 UDP와 TCP를 선택하는 데 사용되는 "신뢰성" Qos 설정만 제공합니다. 다른 모든 것은 QoS 정책에 따라 매우 어려울 수 있는 사용자 지정 애플리케이션 로직으로 구현해야 합니다. 또한 응용 프로그램 계층 코드는 이동성이 높지 않으므로 모든 응용 프로그램이 동일한 코드를 포함하거나 최소한 공통 비표준 라이브러리를 연결해야 합니다.


DDS는 사용자가 publisher와 subscriber 간에 정보를 교환하는 방법을 선언적으로 지정할 수 있는 여러 QoS 정책을 제공합니다. DDS 표준은 20개 이상의 개별 정책을 정의합니다. 이러한 정책은 안정성뿐만 아니라 리소스 사용, 데이터 우선 순위, 데이터 가용성 및 페일오버와 같은 다른 측면도 제어합니다. 예를 들어, QoS 설정은 publisher 또는 subscriber 애플리케이션이 일정 속도로 정보를 전송하거나 전송하지 못할 경우 통지를 제공하는 마감일을 설정하는 기능을 제공합니다. 데이터의 내구성을 설정하여 해당 정보를 가입한 subscriber에게 재전송할 수 있습니다. 게시자와 구독자 애플리케이션의 영역 깊이, 소유권 강도에 따라 여러 소스 중 하나를 자동으로 선택하는 중복 시스템을 배포하고, 원격 애플리케이션이 여전히 활성 상태인지 여부를 판단하고, 애플리케이션이 응답하지 않을 때 자동 페일오버를 수행합니다. DDS 사양의 섹션 2.2.3 또는 다양한 구현의 설명서에서 보다 많은 세부 정보를 확인할 수 있습니다(예: RTI Connext DDS의 Qos Cheat-Sheet 참조).



Use from other Specifications

SOME/IP는 주로 AUTOAR에서 차량용으로 사용됩니다. DDS는 보다 수평적인 용도로 사용됩니다. 종종 연결 프레임워크로 직접 사용됩니다. 실제로 IIC(산업 인터넷 컨소시엄)에 의해 IoT의 "핵심 연결 프레임워크" 중 하나로 식별되었습니다(산업 인터넷 연결 프레임워크 문서 참조). OpenFMB, ROS2, MD PnP, FACE와 같은 다른 표준과 프레임워크의 일부로도 사용되며, AUTOAR Adaptive(버전 18.03부터 시작)에도 포함됩니다.

반응형