车载以太网 - SOME/IP简介
SOME/IP (Scalable service-Oriented MiddlewarE over IP) 是车载以太网通信引入的一个概念,位于OSI 7层模型的层4之上。在以CAN总线为主的车载网络中,通信过程是面向信号的(除了诊断通信之外),这是一种根据发送者需求实现的通信过程,当发送者发现信号的值变化了,或者发送周期到了,就会发送信息,而不考虑接收者是否有需求。而SOME/IP则不同,它是在接收方有需求的时候才发送,这种方法的优点在于总线上不会出现过多不必要的数据,从而降低负载。
在车载网络中,某个ECU有时会需要调用实现在其他ECU上的个服务,这个时候它俩就分别扮演了client和server的角色,而SOME/IP就是实现这种远程服务调用的接口,如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/34c3ee04d25a8cb8c023f9fcf26e69d9.jpeg)
以下是SOME/IP数据在以太网报文中的位置:
![](https://i-blog.csdnimg.cn/blog_migrate/06b1d114dd6dfd34a1472eb50aebc988.jpeg)
从上面这个图可以看出来,SOME/IP其实是构架在传输层之上的应用层通信协议,它的内容虽然很多很杂,但本质上也就是定义了SOME/IP 包头和数据的内容而已。
SOME/IP 数据的格式:
![](https://i-blog.csdnimg.cn/blog_migrate/0d72b9ebb661d6b5de19d769dfb1464a.jpeg)
上图是SOME/IP数据的格式,除了最下面的Payload之外都属于SOME/IP的header,这里面的字段不一一介绍,只提一下Message Type [8 Bit],它有以下几种取值:
- REQUEST (期待响应的请求)
- REQUEST_NO_RETURN(不期待响应的请求)
- NOTIFICATION(事件通知)
- RESPONSE(响应消息)
- ERROR(报错消息)
REQUEST,REQUEST_NO_RETURN,RESPONSE属于同一类远程过程调用方法,当client有需求的时候,发送一个request消息,server根据这个消息类型(REQUEST或REQUEST_NO_RETURN)来决定是否发送response消息。过程如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/ef3a1ed7cfe322fa238ed0537d4a6551.jpeg)
NOTIFICATION属于事件通知类的服务,首先由client向server订阅服务内容,然后server向client自动发布服务内容。
![](https://i-blog.csdnimg.cn/blog_migrate/80b67440fa0b615f726ceae92961a645.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/a65a69861a840a0ea9dee9d2a3c0e4ae.jpeg)
NOTIFICATION又分为Event和Field 两类,这两类通知都需要首先使用SOME/IP-SD(Service Discovery)来进行服务订阅,然后才能发布通知。区别在于,Event是某一时刻的快照,只是事件通知,而Field除了事件通知之外,还具有Getter和Setter的功能,即对信息进行读写的操作。
SOME/IP-SD可以被当作SOME/IP的一种特殊服务,前面提到过,client可以远程调用server提供的服务,或者订阅server发布的内容,那么client是怎么知道server提供哪些服务呢,就是通过SOME/IP-SD来实现服务发现过程的。
![](https://i-blog.csdnimg.cn/blog_migrate/0592ee2082cf0d9d4adc384c251a5390.jpeg)
从上图可见,SOME/IP-SD是一种特殊的SOME/IP格式,它对SOME/IP-SD报文中的Payload进行了定义和实现。而Message ID字段则是固定的0xFF FF 81 00。
SOME/IP-SD提供了两种动态发现服务的机制。一种是Offer Service ,由server向网络上的小伙伴告知它所提供的服务;另一种是Find Service ,由client向别人请求可用的服务。
本文只是简要介绍,不对通信过程和协议内容做过多分析。
如果大家对此部分内容感兴趣,可以参考下面这个网站,http://www.some-ip.com/
这上面有与SOME/IP相关的全部详细信息。