SOME/IP#
SOME/IP defines a new philosophy of data communication in automotive networks. SOME/IP is used to exchange data between network domain controllers in the latest vehicle architectures. SOME/IP supports subscription and notification mechanisms, allowing domain controllers to dynamically subscribe to data provided by another domain controller dependent on the vehicle’s state. SOME/IP transports data between domain controllers and the gateway that a vehicle needs during its regular operation. The use-cases of SOME/IP are similar to the use-cases of CAN communication. The main purpose is the information exchange of sensor and actuator data between ECUs. This usage emphasizes SOME/IP communication as a rewarding target for cyber-attacks.
Protocol Basics of SOME/IP#
SOMEIP
Goals of SOME/IP
Resource consumption suitable for embedded systems
Compatible to as many communication partners as possible
Scalable from tiny to large platforms
Implementable on different OS
Specification components
SOMEIP: Serialization and message exchange
SOMEIP-SD: Service Discovery (SD) and Publish/Subscribe
SOMEIP-TP: Transport Protocol (TP) for segmented communication of large messages
SOMEIP supports multicast and unicast
Communication schemes#
Fire and Forget: Part of the RPC specification of SOMEIP
Request and Response: Part of the RPC specification of SOMEIP. Client sends procedure call and expects response. Response may contain result or error values.
Publish/Subscribe: Server can publish events or event-groups. Clients can subscribe to events. On events, client notifies server.
Fields: Can be described as combination of Request and Responseand Publish/Subscribe. Servers can offer getter and setter functions through RPC calls. Additionally, clients can subscribe to value changes of fields to receive notifications.
SOME/IP Service Discovery#
SOME/IP Service Discovery is a mechanism used by the Scalable Service-Oriented Middleware over IP (SOME/IP) protocol to enable the dynamic discovery of services and events at runtime. It allows clients to discover the IP address and port of service providers and to subscribe to events. The Service Discovery feature is built on top of the User Datagram Protocol (UDP) and uses multicast communication to enable service providers to announce their availability and for clients to discover them.
Used to explicitly signal:
Availability of a service instance
How to reach a service instance
Handling of Publish and Subscribe
Useful Tools#
Open-Source C++ implementation available on GitHub: GENIVI/vsomeip
Good first starting point: GENIVI/vsomeip
Wireshark support SOMEIP
Scapy allows message creation of SOME/IP packets
SOME/IP can be used with IPv4 or IPv6 and on top of UDP or TCP