SOME/IP 协议

SOME/IP 是什么?

“SOME/IP”——“ Scalable service-Oriented MiddlewarE over IP ” 即可扩展的,面向服务的,基于IP的数据交互中间件。

AUTOSARPRS协议规范定义了SOME/IP的报文格式,时序以及语义。

SOME/IP是车载以太网通信引入的一个概念,位于OSI 7层模型的层4之上。在以CAN总线为主的车载网络中,通信过程是面向信号的(除了诊断通信之外),这是一种根据发送者需求实现的通信过程,当发送者发现信号的值变化了,或者发送周期到了,就会发送信息,而不考虑接收者是否有需求。而SOME/IP则不同,它是在接收方有需求的时候才发送,这种方法的优点在于总线上不会出现过多不必要的数据,从而降低负载。

在车载网络中,某个ECU有时会需要调用实现在其他ECU上的个服务,这个时候它俩就分别扮演了client和server的角色,而SOME/IP就是实现这种远程服务调用的接口,如下图所示。

SOME/IP 协议_第1张图片

 

 Some/IP 报文格式

SOME/IP 协议_第2张图片                                               -                                                           SOME/IP 数据的格式

Message ID用于区分一个方法(method)或事件(event)的RPC调用;

Message ID(Server ID) :16bit,服务的ID,标识出一个服务;

Message ID(Method ID) :16bit,方法的ID,表示出一个方法;

Length:报文长度,32bit,标识从request ID到报文结束的总长度;

RequestID [ 32 Bit ]=ClientID+SessionID,使客户端和服务器能区分同一服务的多条请求;

Request ID(Client ID) :客户端ID,16bit。区分不同的客户端;

Request ID(Session ID) :会话ID,区分同一个客户端的多次调用;

Protocol Version :协议的版本号,固定值为x01;

Interface Version:服务接口版本;

Message Type :报文类型,在AUTOSAR中,总共包含五种,包括REQUEST,REQUEST_NO_RETURN,NOTIFICATION,RESPONSE,ERROR;

Return Code :返回码,包括四种,REQUEST,REQUEST_NO_RETURN,NOTIFICATION,RESPONSE;

Payload :数据段,用于放置需要传输的数据。

SOME/IP的payload字段长度取决于所用的传输协议;

UDP:长度为0-1400字节

TCP:支持payload的分段,支持更大的字节长度

Service ID 特殊值

SOME/IP 协议_第3张图片  

Service ID为0xFFFF时,Method/Event ID的特殊值

SOME/IP 协议_第4张图片

报文类型

SOME/IP 协议_第5张图片

REQUEST,REQUEST_NO_RETURN,RESPONSE属于同一类远程过程调用方法,当client有需求的时候,发送一个request消息,server根据这个消息类型(REQUEST或REQUEST_NO_RETURN)来决定是否发送response消息,过程如下图所示。

 SOME/IP 协议_第6张图片

NOTIFICATION属于事件通知类的服务,首先由client向server订阅服务内容,然后server向client自动发布服务内容。

NOTIFICATION又分为Event和Field 两类,这两类通知都需要首先使用SOME/IP-SD(Service Discovery)来进行服务订阅,然后才能发布通知。区别在于,Event是某一时刻的快照,只是事件通知,而Field除了事件通知之外,还具有Getter和Setter的功能,即对信息进行读写的操作。

SOME/IP 协议_第7张图片

 SOME/IP 协议_第8张图片

SOME/IP-SD

SOME/IP是client和server对服务内容的请求和响应,但是client如何知道server有哪些服务可提供呢?常规的SOME/IP消息并不具有这样的功能,所以就有了SOME/IP-SD协议,可用于汽车网络中的服务发布/订阅。

SOME/IP-SD是一种特殊的SOME/IP格式,主要用于:

确定服务实例的位置(IP地址、通信协议、端口号等)

检测服务实例的状态(是否正在运行)

执行服务发布/订阅的操作

它对SOME/IP-SD报文中的Payload进行了定义和实现,而Message ID字段则是固定的0xFFFF 8100。

SOME/IP可用在TCP/UDP协议上,但是SOME/IP-SD只能用在UDP上,因为SOME/IP-SD只是为了发现服务,并不需要TCP的可靠性连接等特性。

SOME/IP-SD提供了两种动态发现服务的机制。一种是Offer Service ,由server向网络上的小伙伴告知它所提供的服务;另一种是Find Service ,由client向别人请求可用的服务。

部分图文来源于网络

参考文章:

车载以太网 - SOME/IP简介 - 知乎

SOME/IP 协议介绍_拖拉机日记-CSDN博客_someip协议

你可能感兴趣的:(汽车安全,网络协议,网络,网络协议)