• SOME/IP 学习笔记


    定义

    SOME/IP 即 Scalable service-Oriented MiddlewarE over IP,是定义在传输层(TCP/UDP)之上的面向服务的中间件,是汽车以太网面向服务的架构 SOA 中的重要内容。
    image
    image

    功能

    SOME/IP 支持:

    • 序列化
    • RPC 远程调用
    • 服务发现 SD
    • 发布/订阅
    • UDP 拆包组包

    服务

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

    方法 Method

    客户端调用服务端的函数/程序/服务/方法。方法有两种形式:

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

    事件 Event

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

    字段 Field

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

    消息格式

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

    Message Type 报文类型 说明
    0x00 REQUEST 请求,需要回复
    0x01 REQUEST_NO_RETURN 请求,不需要回复
    0x02 NOTIFICATION Notifier/Event,不需要回复
    0x80 RESPONSE 回复
    0x81 ERROR 错误

    服务发现 SOME/IP SD

    服务发现主要用于

    • 定位服务实例
    • 检测服务实例状态是否在运行
    • 发布/订阅行为管理

    SOME/IP SD 也是 SOME/IP 消息,遵循 SOME/IP 消息格式,有固定的 Message ID、Request ID 以及 Message Type 等。并对 SOME/IP Payload 进行了详细的定义。
    image
    SOME/IP SD 只用 UDP 协议的 30490 端口通信。

    SOME/IP SD 的 Payload 中主要包含 Entry 和 Option:

    Entry

    用于提供服务、发现服务、订阅事件组。Entry 有服务和 EventGroup 两种:

    服务 Entry

    image

    EventGroup Entry

    image

    Entry 的类型有
    image

    有的类型具有相同的值,这时需要通过 Entry 中的 TTL 字段来区分到底是 Start 还是 Stop,是ACK 还是 NACK。

    SOME/IP SD 提供了两种动态发现服务的机制。一种是 Offer Service(Type = 0x01),由服务端广播其提供的服务;另一种是 Find Service(Type = 0x00),由客户端请求可用的服务。

    Option

    Option 字段用来传输 Entry 的附加信息,包括对于服务实例的 IP 地址、传输协议、端口号等信息。
    image

    例如 Type = 0x04 时
    image

    有关 SOME/IP SD 报文格式的详细解析可以参考 SOME/IP-SD 深入浅出 -熊猫眼老阿姨 一文。

    Reference

  • 相关阅读:
    layer-list:Android中layer-list使用详解
    Nexus6p:正在下载系统更新,没有进度
    转:浅谈char类型范围
    C/C++/Java中的volatile关键字
    C++中的mutable关键字
    C++中的typedef typename 作用
    C++中的友元函数和友元类
    用flashfxp做ftp镜像同步
    python读取caffemodel文件
    py-faster-rcnn几个辅助脚本
  • 原文地址:https://www.cnblogs.com/tengzijian/p/15360205.html
Copyright © 2020-2023  润新知