1、SOME/IP的报文格式
SOME/IP的报文由 消息 ID Message ID(Service ID / Method ID)[32 bit] + 消息长度 Length[32 bit] + 请求 ID Request ID(Client ID / Session ID)[32 bit] + 协议版本 Protocol Version[8 bit] + 接口版本 Interface Version[8 bit] + 消息类型 Message Type[8 bit] + 返回码 Return Code[8 bit] + 消息体 Payload[variable size] 组成。除了消息体,其他组成消息头部。
-
消息长度:(从Request ID开始到Payload结束)
-
SOME/IP 服务分为服务提供者和服务调用者,用以区分相同消息的不同调用。Rquest ID = Client ID + Session ID.
-
Message Type,用于标识消息的类型,分别为 5 种类型:
-
1)请求类型(0x00):需要响应的请求;
-
2)无需响应的请求(0x01);
-
3)通知(0x02):无需响应的通知/事件回调;
-
4)响应(0x80):响应体
-
5)错误
-
SOME/IP 的消息类型可分为 Method 类型、Event 类型和 Field 类型。当为 Method 类型时(第 1 bit = 0),Message ID = Service ID + Method ID;当为 Event类型时(第 1 bit = 1),Message ID = Service ID + Event ID。三种消息类型和通信机制之间的映射关系如下:
-
传输协议:SOME/IP协议属于应用层协议,可基于 TCP/UDP。
2、SOME/IP 控制报文:SOME/IP-SD
-
SOME/IP-SD 解决的是 1)SOME/IP-SD;2)当服务不可用时,如何通知Client;3)Client如何订阅事件。即 SOME/IP-SD 用来实现服务发现和事件订阅机制。
-
SOME/IP-SD 报文格式如下:
-
报文有个重要的 Type 字段(8bits):1)若 Service 就绪,会主动发出 OfferService 通知组播内其他节点该服务已启动,可以创建连接;2)若网络未收到相关服务的 OfferService,而 Client 又需要访问该服务,则 Client 发出 FindService 主动寻找服务,此时若 Service 就绪,则会回复 OfferService 报文;3)若服务不可用,会主动发出 StopOfferService 报文通知组播内其他节点该服务不可用,停止发送请求,并去学校订阅。