AUTOSAR Adaptive Platform R25-11의 Communication Management 규격은 서비스 지향 통신(service-oriented communication)을 서비스 제공자가 서비스를 내놓고(offer) 요청자가 그 서비스를 찾아(find) 호출하는(call) 통신으로 정의한다. 이 규격은 서비스 지향 통신을 Adaptive Platform 애플리케이션 사이의 주된 통신 방식으로 두고, Communication Management가 프로세스 안, 프로세스 사이, 머신 사이의 모든 수준에서 이를 맡게 한다.[1] Adaptive Platform은 통신 방식을 서비스 지향 통신으로 한정한다.[2]
SOME/IP는 네트워크로 서비스 지향 통신을 하는 프로토콜이다.[3] The Open Group은 SOA(Service-Oriented Architecture)를 서비스 지향을 지원하는 아키텍처 스타일로 정의한다.[4]
서버와 클라이언트
SOME/IP 규격은 서비스 인스턴스를 제공하는 ECU를 서버, 그 서비스 인스턴스를 쓰는 ECU를 클라이언트라 부른다.[3]
서비스 인터페이스
SOME/IP에서 서비스는 메서드, 이벤트, 필드를 0개 이상 묶은 논리적 조합이다. 메서드는 클라이언트가 원격 절차 호출(RPC, Remote Procedure Call)로 부르면 서버 쪽에서 실행되는 기능이다. 이벤트는 값이 바뀔 때나 주기적으로 서버가 구독한 클라이언트에 보내는 단방향 데이터다. 필드는 서버 쪽 상태를 나타내는 값으로, 클라이언트는 getter로 읽고 setter로 바꿀 수 있으며 notifier로 값이 바뀔 때 알림을 받을 수 있다.[3] 요청·응답, fire&forget, 이벤트, 필드의 메시지 흐름은 SOME/IP에서 다룬다.
발행·구독
SOME/IP의 이벤트 알림은 발행·구독(publish/subscribe) 방식이며, 발행과 구독의 메커니즘은 SOME/IP가 아니라 SOME/IP-SD가 구현한다.[3] SOME/IP-SD에서 클라이언트가 이벤트 그룹을 구독하면, 서버는 그 뒤로 구독한 클라이언트에게 이벤트를 보낸다.[5]
MQTT 5.0 규격은 MQTT를 클라이언트·서버 구조의 발행·구독 메시지 전송 프로토콜로 정하고, M2M(Machine to Machine)과 IoT(Internet of Things) 환경에 알맞다고 한다.[6]
서비스 발견
SOME/IP-SD는 서비스 인스턴스의 위치를 찾고, 그 인스턴스를 쓸 수 있게 되었는지 알아내는 데 쓰인다. 서버는 Offer Service 엔트리로 서비스를 제공한다고 알리고, 클라이언트는 Find Service 엔트리로 필요한 서비스 인스턴스를 찾는다. 그래서 클라이언트 쪽에 서비스 인스턴스의 엔드포인트를 정적으로 설정하지 않아도 되고, 클라이언트를 실행 중에 서비스 인스턴스에 연결할 수 있다.[5]
AUTOSAR Adaptive Platform의 Communication Management는 머신 안과 머신 사이의 서비스 지향 통신을 애플리케이션에 투명하게 제공한다. 그래서 서비스가 같은 ECU에 있든 다른 ECU에 있든 애플리케이션 코드가 같다.[7]
시그널 기반 통신과의 차이
Adaptive Platform의 서비스 지향 통신은 통신 경로를 실행 중에 세울 수 있어, 참여자 수를 모르는 동적 통신을 만들 수 있다.[1] 시그널과 송수신 관계를 시스템 구성에서 통신 매트릭스로 정하는 방식은 시그널 기반 통신에서 다룬다.
AUTOSAR R25-11 System Template은 차량의 큰 부분이 여전히 시그널 기반 통신을 쓰므로, Classic Platform의 시그널 기반 통신과 Adaptive Platform의 서비스 지향 통신을 서로 옮기는 방법을 Classic Platform ECU에서 하도록 표준화한다. 이 기능을 signal/service translation이라 하고, 변환 방향은 어느 쪽으로도 정하지 않는다. 이 변환을 Classic Platform ECU에서 할지 Adaptive Platform Machine에서 할지는 차량 아키텍처 설계가 고른다. Classic Platform에서는 RTE 위의 응용 소프트웨어 컴포넌트인 Translation Software Component가 이벤트와 필드 notifier를 변환하고, 메서드는 따로 다룬다. 시그널 쪽에서는 Classic Platform 통신 스택의 기능을 모두 써서 CAN, LIN, FlexRay에서 온 ISignalIPdu를 다룰 수 있고, 서비스 쪽에서는 정의한 SOME/IP 서비스가 Adaptive Platform과 호환되어야 한다.[2]
Translation Software Component는 포트와 PortInterface로 페이로드를 기술한다. 시그널에서 서비스로 옮길 때는 들어오는 시그널의 포트와 나가는 이벤트의 포트를, 서비스에서 시그널로 옮길 때는 들어오는 이벤트의 포트와 나가는 시그널의 포트를 둔다.[8]
AUTOSAR R25-11 Manifest 명세는 Adaptive Platform 쪽의 변환을 위해 서비스 인스턴스의 서비스 인터페이스 요소를 ISignalTriggering에 대응시키는 Signal/Service Translation Mapping을 둔다. 같은 이더넷 소켓을 시그널 기반 통신과 서비스 지향 통신에 함께 쓸 수 있어, 서비스 인스턴스 하나가 직렬화 기술이 다른 이벤트(someip와 signalBased)를 함께 담을 수 있다. Method와 Field의 getter·setter는 이미 SOME/IP 직렬화를 쓰므로 변환이 필요 없고, 시그널 기반 Network Binding을 거쳐 ara::com으로 바로 접근한다.[9]