SOME/IP

SOME/IP背景

SOME/IP的全称是Scalable service-Oriented MiddlewarE over IP,为基于IP的可扩展的面向服务的中间件,由宝马的Lars Völker博士在2011年设计并提出。SOME/IP是车载网络的通信中间件,位于应用程序和传输层之间,可以为控制器提供一种面向服务的通信方式,适配多种操作系统(如FreeRTOS、RTA-OS、QNX、Linux、Android等),甚至在没有操作系统的嵌入式设备上也可以使用。

什么是SOME/IP?

SOME/IP是定义在传输层之上的一种面向服务的中间件协议. 是汽车以太网面向服务架构的SOA的重要内容.

SOME/IP功能:

  1. 序列化
  2. RPC远程调用
  3. 服务发现SD
  4. 发布 / 订阅
  5. SOME/IP传输协议

1. 序列化

SOME/IP协议对序列化的解释为数据在PDU(Protocol Data Units 协议数据单元), 展开来说就是将不同的数据结构转换为可在网络中传输的形式, 或者说是数据在网络上传输的封装和排列规则. 发送规则将数据一种特定的规则进行序列化, 接受方将数据以同样的规则进行反序列化, 从而得到发送方到接受方所发送的所有数据. 这部分定义既包含了报文头部也包含了载荷数据, 不仅定义了头部的格式 各字段的长度和含义, 还定义了各种数据结构在有效载荷中的排列规则.

2. RPC 远程调用

通过RPC来请求其他主机上面的服务, 基于Request / Response的模式来实现. 客户端发起请求, 服务端接受请求并处理, 并将结果返回给客户端. (当我们在调用服务的时候, 就像直接调用本地的服务一样)

在SOME/IP中除了同步的调用方式, 还支持异步调用的Fire/Forget, 客户端发起请求后,不需要等待服务器的处理请求, 可以直接执行后面的代码, 同时服务器也不需要返回结果

3. 服务发现

SOME/IP SD可以认为是SOME/IP协议的核心, 提供了一种可以动态的发现和获取服务的状态的机制. 所谓的面向服务的通信: 首先要知道哪些可以提供服务, 并且需要知道哪些服务的状态和提供方, 然后才可以使用和消费这个服务.

4. 发布 / 订阅功能

SOME/IP只会在需要的时候才发送数据, 这主要是通过发布 / 订阅的机制来实现的. 客户端在发现想要使用的服务后, 会对服务进行订阅, 当条件满足后, 服务器会将客户端所需要的服务发送出去.

5. SOME/IP 传输协议

主要解决了数据有可能被分片的问题. 在网络中, 数据都是通过IP协议传输的, 由于数据链路层MTU的限制, 导致可能会出现IP分片. 由于IP分片存在诸多的问题, 为了防止IP出现分片, 设计了SOME/IP TP(传输协议)

IP分片的问题

IP分片虽然能解决MTU限制, 但存在以下限制:

  • 重组开销大: 接受端需缓存所有分片, 直到最后一个分片到达, 消耗内存和计算资源
  • 分片丢失影响整体: 任一IP分片丢失会导致整个数据包无法重组, 需全部重传

所以有了SOME/IP在应用层实现分片和重组, 规避了IP分片, 在应用层自定义重传逻辑...

服务

服务是SOME/IP的核心,服务端提供服务,客户端使用服务.服务由零个或多个方法(Method)、事件(Event)以及字段(Fields)组成.

方法(Method)

客户端调用服务端的代码. 有两种形式:

  • Request & Response:常规的客户端请求,服务端响应
  • Fire & Forget(Request_NoReturn):单向客服端请求,服务端不响应

事件(Event)

客户端向服务端订阅事件组EventGroup,当事件组有更新的时候,服务端发布消息,通知所有订阅的客户端

字段(Field)

方法和事件的组合,提供Getter/Setter两个方法用于去获取和设置字段,以及Notification事件,当字段值发生变化的时候,服务端发布消息,通知订阅的客户端

消息格式

TCP/UDP 的 Payload 部分,由 SOME/IP Header 和 SOME/IP Payload 组成

各字段含义如上图,其中 Message Type 取值及含义如下表:

服务发现主要用于

  • 定位服务实例
  • 检测服务实例状态是否在运行
  • 发布/订阅行为管理
    SOME/IP SD 也是 SOME/IP 消息,遵循 SOME/IP 消息格式,有固定的 Message ID、Request ID 以及 Message Type 等。并对 SOME/IP Payload 进行了详细的定义。

    参考博客
相关推荐
sunfove12 分钟前
光网络的立交桥:光开关 (Optical Switch) 原理与主流技术解析
网络
Kevin Wang7273 小时前
欧拉系统服务部署注意事项
网络·windows
min1811234563 小时前
深度伪造内容的检测与溯源技术
大数据·网络·人工智能
汤愈韬3 小时前
NAT策略
网络协议·网络安全·security·huawei
汤愈韬3 小时前
Full Cone Nat
网络·网络协议·网络安全·security·huawei
zbtlink4 小时前
现在还需要带电池的路由器吗?是用来干嘛的?
网络·智能路由器
桌面运维家4 小时前
vDisk配置漂移怎么办?VOI/IDV架构故障快速修复
网络·架构
dalerkd4 小时前
忙里偷闲叙-谈谈最近两年
网络·安全·web安全
汤愈韬5 小时前
NAT ALG (应用层网关)
网络·网络协议·网络安全·security·huawei
运维栈记6 小时前
虚拟化网络的根基-网络命名空间
网络·docker·容器