SOME/IP协议
2022-05-10 15:31:23 1 举报
AI智能生成
车载以太网SOME/IP协议
作者其他创作
大纲/内容
SOME/IP是干啥的?
1、解决服务提供方与服务消费放之间的网络通信问题
2、SOME/IP报文打包了服务接口的内容
概述
什么是SOME/IP?
Scalable service-Oriented MiddlewarE over IP
基于IP可扩展的面向服务的中间件
基于IP可扩展的面向服务的中间件
谁制造?:宝马公司
为什么?
1、车载以太网和SOA技术应用的驱动
2、提供车内信息交互的中间件解决方案
3、适配不同大小的车载设备及车载操作系统
用在哪?
1、替代信息娱乐域等MOST通信场景
2、替代其他域(如车身)等部分传统CAN通信场景
SOME/IP的功能
序列化:将数据结构或对象依据事先定义的规则转换成二进制的过程,以便于数据在网络上传输
远程过程调用(RPC):通过在网络传输消息实现一个节点对另一个节点的方法调用
服务发现(SD):一种特殊服务;基于该服务。客服端可以“寻找”所需的服务,服务端可以“告诉”大家自己哪些服务可用;
客户端和服务端动态建立通信连接
客户端和服务端动态建立通信连接
订阅/发布:客户端可以向服务端订阅所需的数据,服务端以周期或者事件触发的方式发布这些数据
UDP报文分段(AUTOSAR4.3):允许通过UDP传输大型SOME/IP报文,而无需在IP层分片
服务接口(Service Interface)
Method-方法
Client端向服务端发送请求报文
RR-Method:服务端恢复响应报文
FF-Method:服务端不需要回复响应报文
Property/Field-属性/字段
Setter/Getter:客户端请求获取/设置某一属性/状态
Notifier:客户端订阅某一属性/状态后,Server端发布该服务
发布条件同Event,不同的是订阅后Server端会立即发送Field的内容
发布条件同Event,不同的是订阅后Server端会立即发送Field的内容
Event-事件
Client端订阅一个服务,Server端发布该服务
状态:on change/Cycle
状态值:on change/Cycle/事件值变化超过预期设置范围
SOME/IP
SOME/IP报文格式
Message ID (32bit)
Service ID(16bit)+ 0(1bit) +Method ID(15bit)
Service ID(16bit) + 1(1bit) +Event ID(15bit)
Length(32bit)
Request ID(32bit)
Client ID(16bit):区分请求同一服务Service的不同客户端
Session ID(16bit):同一客户端请求同一服务Service的次数
从0x0001开始,达到0xFFFF后,重新从0x0001开始循环
从0x0001开始,达到0xFFFF后,重新从0x0001开始循环
Version
Protocol Version(8bit):SOME/IP协议版本;当前为0x01
Interface Version(8bit): Service Interface 的主版本;用于检测服务的一致性是否匹配
Message Type(8bit) : 报文类型
REQUEST
返回值:0x00(E_OK)
REQUEST_NO_RETURN
返回值:0x00(E_OK)
NOTIFICATION
返回值:0x00(E_OK)
RESPONSE
返回值:Return Code
ERROR
返回值:不包含0x00的Return Code
Return Code(8bit): 表示请求是否被成功的处理
0x00:E_OK:无错误
0x01:E_NOT_OK:未知错误
0x02:Unknown Service :未知的service ID
0x03:Unknown Method:已知的service ID,未知的method ID
0x04:Not Ready:应用程序没有运行
0x05:Not Reachable:内部错误
0x06:Timeout:内部错误
0x07:Wrong Protocol Version:协议版本错误
0x08:Wrong Interface Version:接口版本错误
0x09:Malformed Message:反序列化错误
0x0a:Wrong Message Type:报文类型错误
0x0b~0x3f:Reserved
序列化
序列化:将对象的状态信息转换为可以存储或以二进制的形式在网络种传输
反序列化:将序列化过程中所生成的二进制串转换成数据结构或者对象的过程
序列化规则
基本数据类型的序列化
定义传输数据的字节序
example:unit32(0x8A9D6F5R)
结构体的序列化
将结构体的数据元素顺序排列,然后将各个元素依次进行序列化
可增加Length Field来指示结构体中数据元素的字节长度,而嵌套的结构体也同样需要增加Length Field
字符串的序列化(定长/变长)
定长
string由一系列的Unicode字符构成,并以"\0"(0x00)结束;UTF8(0x00),UTF16(0x00,0x00)
string前增加BOM(byte order mark)+数据(UTF8/UTF16BE/UTF16LE)+结束符
变长
基于定长string规则,在BOM之前增加Length Field,以指示动态字符串字节长度
Example:传歌曲名,以UTF8编码,设定Length Field为2 bytes;
“浪费”(E6B5AA,E8B4B9)-
SOME/IP Header(0x00 0x0A 0xEF 0xBB 0xBF 0xE6 0xB5 0xAA 0xE8 0xB4 0xB9 0x00 )
“浪费”(E6B5AA,E8B4B9)-
SOME/IP Header(0x00 0x0A 0xEF 0xBB 0xBF 0xE6 0xB5 0xAA 0xE8 0xB4 0xB9 0x00 )
数组的序列化(定长/变长)
定长
数组是相同类型数据的集合
依据数组元素的顺序排列,并进行序列化
变长
在定长的string前面增加Length Field
SOME/IP SD
简介(Service Discovery)
一种特殊的服务,实现服务寻址及事件订阅功能
服务寻址
FindService
OfferService
StopOfferService
事件订阅
SubscribeEventgroup
StopSubscribeEventgruop
SubscribeEventgruopAck
SubscribeEventgruopNAck
SOME/IP SD 报文格式(一种特殊SOME/IP报文)
报文头与SOME/IP一样(Message ID固定=0xFFFF 8100)
Flags(8bit)
Reboot Flags
重启时置1(或者上电时)
当Session ID完成从1~0xFFFF的一个循环后,Reboot置0
重启检测
Unicast Flags
是否支持单播接收(=1)
注:单播标志时历史上SOME/IP版本遗留下来的,仅出于兼容性的原因保留
Entry(32bit)
Service Entry
Type(8bit):entry类型
Index 1st/2nd options:表示option的起始位置,Index 1st值多个Entry共有的option
# of opt 1 /# of opt 2:指相应的Index 1st/2nd携带option的数量
Service ID:区分不同服务,和SOME/IP报头中的含义一样
Instance ID:区分同一服务的不同实例
0x0000:预留
0xFFFF:所有服务实例
Major Version(8bit):主版本
TTL(24bit):Time To Live,entry的生存时间
Minor Version:次要版本(0xFFFF 代表任何版本)
Eventgruop Entry
Type(8bit):entry类型
Counte(4bit):对不同客户端订阅同一事件组的计数
Eventgruop ID(16bit):需要订阅的事件组标识符
0x0000:预留
0xFFFF:所有事件组
TTL(24bit):Time To Live,entry的生存时间
Option
entry的附加信息
IP地址
传输层协议
端口号
类型
Endpoint Option
IPv4 Endpoint Option
L4-Proto(TCP:0x06/UDP:0x11)
L4-Proto(TCP:0x06/UDP:0x11)
IPv6 Endpoint Option
IPv4 SD Endpoint Option
L4-Proto(UDP:0x11)
L4-Proto(UDP:0x11)
IPv6 SD Endpoint Option
Multicast Option
IPv4 Multicast Option
L4-Proto(UDP:0x11)
L4-Proto(UDP:0x11)
IPv6 Multicast Option
Configuration Option:可以传输任意字符串,如服务名称或配置
Load Balancing Option:确定不同服务实例的优先级,以便客户端选择
Priority(16bit):优先级,数值越小,优先级越高
Weight(16bit):权重,数值越大,被选择的机率越大
SOME/IP SD启动时序
关闭阶段
可用阶段
初始等待阶段
重复阶段
主阶段
0 条评论
下一页
为你推荐
查看更多