SOME/IP

배경

데이터 전송에 대한 새로운 철학은 SOME/IP(Scalable service-Oriented MiddlewarE over IP)를 차량에 사용할 수 있는 방법을 모색하는 것입니다. 신호 중심의 데이터 전송이 전통적인 버스 시스템(CAN, LIN, FlexRay)에 사용된 반면, SOME/IP를 사용할 경우 서비스 지향적인 정보의 전송이 가능합니다. 그러나 SOME/IP가 통신에 대한 디스크립션에 국한되는 것이 아니라는 사실을 알아야 합니다. 이는 오히려 ECU의 소프트웨어 요소에 영향을 미치는 미들웨어입니다. 이러한 이유로 인하여, 어플리케이션에 대한 연결이 가능한 AUTOSAR 내에 별도의 소프트웨어 경로가 존재합니다.

필요에 의한 전송

신호 지향 데이터 전송에서는 값이 업데이트되거나 변경된 경우와 같이 발신자가 데이터 전송이 필요하다고 확인할 경우 정보가 전송됩니다. 이는 네트워크 내의 수신자가 현재 데이터를 필요로 하는지와는 무관하게 이루어집니다. 서비스 지향적인 데이터 전송의 경우 이와 다릅니다. 발신자는 네트워크 내에 있는 최소 하나의 수신자가 이러한 데이터를 필요로 하는 경우에만 데이터를 전송합니다. 이러한 프로세스의 장점은 필요하지 않은 데이터 전송으로 인해 네트워크 및 연결된 모든 노드에 부하가 발생하지 않는다는 점입니다. 이처럼 서비스 지향적인 데이터 전송의 경우, 어떠한 방식으로든 서버는 어떤 수신자(클라이언트)가 데이터를 기다리고 있는지에 대하여 파악할 필요가 있습니다.

컨텐츠 구독

클라이언트에는 서버 내의 서비스 컨텐츠를 구독하는 옵션이 있습니다. 이벤트가 발생하는 경우, 클라이언트는 서버로부터 업데이트된 데이터를 받습니다. SOME/IP Service Discovery(SOME/IP-SD)는 컨텐츠를 구독하는 데 사용됩니다. 서버의 컨텐츠를 구독하기 원하는 클라이언트는 서버로 Subscribe Eventgroup을 전송합니다. 컨텐츠를 구독할 수 있는 경우, 서버는 클라이언트로 긍정적인 ACK를 다시 전송함으로써 응답합니다. 이제 구독이 활성화됩니다. 컨텐츠를 사용할 수 없는 경우, 서버는 부정적인 ACK를 전송하여 구독을 거부할 수 있습니다.

다수의 클라이언트가 동시에 서비스 컨텐츠를 구독할 수 있습니다. 클라이언트에게 데이터를 전송하기 위해 사용되는 방법은 서비스의 컨텐츠가 UDP로 사용할 수 있는지 혹은 TCP로 사용할 수 있는지에 따라 달라집니다. UDP를 사용하는 경우, 이벤트가 발생할 때 서버는 Unicast, Multicast, 또는 Broadcast를 통하여 구독을 활성화하여 모든 클라이언트에게 데이터를 전송할 수 있습니다. 컨텐츠가 TCP를 통해 사용하도록 만들어진 경우, 각 클라이언트가 서버와의 연결을 구축해야 하고, 이로써 각각의 데이터 전송이 가능하게 됩니다.

Event Notification 및 Field Notification

서버에 의하여 전송된 컨텐츠는 활성화된 구독에 기초하여 Event Notification 및 Field Notification의 두 가지 포맷으로 존재할 수 있습니다. 두 가지 포맷 모두 이벤트 기반(Event-Driven)으로 생성된다는 특성을 공유합니다. Event Notification은 필드가 이전 이벤트와 관련 없이 스냅 샷을 대표하는 특성으로 채워진 형태에 해당합니다. 반면, Field Notification은 이전 컨텐츠와 관련된 값을 포함하고 있고 따라서 관련된 기록을 가지고 있습니다. 이러한 이유로, 하나의 필드는 클라이언트에 의해 원하는 컨텐츠의 읽기 및 쓰기를 가능하게 하는 Getter 및 Setter 방법을 포함하도록 확장시킬 수 있습니다. 이와 같이 클라이언트는 구독이 없는 경우에도 읽기 전용 또는 읽기/쓰기 액세스를 통해 서버의 컨텐츠에 접근할 수 있습니다.

Method

해당 정보 내에 존재하는 또 다른 데이터 교환 옵션은 Method의 호출을 통해 사용할 수 있습니다. 클라이언트는 이른바 원격 프로시저 호출(RPC - remote procedure call)을 수행하고, 호출된 서버에서는 기능의 작동을 시작하게 됩니다. 이러한 기능은 클라이언트가 네트워크를 통해 전송하는 요청을 사용하여 호출됩니다. 이러한 클라이언트의 요청 역시 파라미터로써 호출 방법으로 전송된 데이터를 포함하게 됩니다. 서버에서 기능이 실행된 후, 응답을 통하여 서버에 의해 클라이언트로 전송된 반환 값을 출력할 수 있습니다. 클라이언트가 기능을 호출했다는 것은 클라이언트가 결과 데이터를 사용하길 원한다는 것을 의미합니다. 그러나, 클라이언트는 반환 값 없이도 서버에 Method를 호출할 수 있습니다. 이 경우, Method를 실제로 호출하였을 때의 프로세스는 클라이언트 쪽에서 이미 완료되어 있습니다.

서비스 발견

클라이언트가 현재 어떤 서비스를 사용할 수 있는지 정보를 제공하기 위해 SOME/IP-SD는 서비스의 동적 발견이 가능한 두 개의 메커니즘을 제공합니다. Offer Service는 서버가 제공하는 모든 서비스를 네트워크에 제공할 수 있게 해줍니다. Find Service는 클라이언트가 사용할 수 있는 서비스를 요청하게 해줍니다.

마지막 수정됨: 2019년 October 18일, Friday, PM 1:58