通信中间件SOME/IP简述

这篇具有很好参考价值的文章主要介绍了通信中间件SOME/IP简述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SOME/IP

SOME/IP 不是广义上的中间件,严格的来讲它是一种通信协议,但中间件这个概念太模糊了,所以我们也一般称 SOME/IP 为通信中间件。

SOME/IP 全称是 Scalable service-Oriented MiddlewarE over IP。也就是基于 IP 协议的面向服务的可扩展性通信中间件协议。

所以,要弄清 SOME/IP 需要从它的名字出发,要搞清楚它的 3 个要素:

  • 面向服务 SOA
  • 基于 IP 协议之上的通信协议
  • 中间件

SOME/IP 功能

既然是通信中间件,那么做的就是通信相关的事情。
SOME/IP 能干的事情有 3 类:

  • 服务发现 (Service Discovery)
  • 远程服务调用 (RPC,remote producer call)
  • 读写进程信息 (Getter & Setter)

SOME/IP 与 CAN

CAN 是传统的汽车软件通信协议,CAN FD 是其扩展,它们与 SOME/IP 的主要区别如下:
someip,自动驾驶,中间件CAN 协议是汽车软件开发最重要的通信协议,但随着汽车智能化程度越来越高,CAN 通信遇到的瓶颈越来越大,表现在 2 个维度:
通信速度
CAN 一般是 512kb/s,CAN FD 能到 1MB/s
通信负荷
CAN 是 8Byte,CAN FD 能到 64Byte,而 SOME/IP 能到 1500 Byte

SOME/IP 和车载以太网、IP关系

CAN 是基于信号在双绞线中传输信号,而 SOME/IP 是面向服务在车载以太网中传输信号。而 SOME/IP 中的 IP 是 Over IP ,也就是在 IP 协议层之上的意思。
TCP/IP、UDP 都是传统网络协议,网络协议是分层的,车载以太网网络协议也是一样的。位于协议栈的应用层,基于 TCP/UDP 协议之上的应用。
someip,自动驾驶,中间件

SOME/IP 和 Autosar、SOA 的关系

SOME/IP 最初由宝马公司设计,2013 年被收录到 Autosar 4.1 规范。

AP和CP Autosar 都支持 SOME/IP 协议。一辆汽车中可能同时存在基于 AP Autosar 的 ECU 和基于 CP Autosar 的 ECU,它们之间存在 Signal2Service 操作,通过车载以太网中的 SOME/IP 之类的协议通信。

AP Autosar 是基于 SOA 理念设计的软件框架,而 SOME/IP 作为其通信协议,可以实现 Service 的 Publishe/Subscribe 通信,所以在汽车领域一般讲 SOA 不能不提到 AP Autosar,而讲到 SOME/IP 时,SOA 也会常被提起。

SOME/IP 的形态

具体到汽车软件开发,SOME/IP 有两种形态:

  • 集成到 Autosar 中的 Module
  • 集成到 Posix 系统中的独立的 Lib

需要注意 GENIVI 这个组织,它针对 SOME/IP 标准实现了开源 vsomeip 方案,vsomeip 能够独立集中到操作系统中。
someip,自动驾驶,中间件

SOME/IP 的消息格式

SOME/IP 协议一般指代具体

  • SOME/IP
  • SOME/IP-SD
  • SOME/IP-TP

SOME/IP 消息结构:
someip,自动驾驶,中间件

一个完整的 SOME/IP 消息,包含以下内容:

  • Message ID 代表 Sevice ID 或者 Method ID
  • Length 消息长度,从 Request ID 算起到
  • Request ID
  • Protocal Version 协议版本号
  • Interface Version 接口版本号
  • Message Type 消息类型
  • Return Code 返回编码
  • Payload 数据负载

Message ID
可以指代一个远程调用 RPC 的 Method 或者是一个服务的 Event。

Request ID
Client ID 用来区分不同的客户对象,Session ID 用来区分不同的对话。

Message Type
Message Type 用来标记消息类型。共有如下几种:
someip,自动驾驶,中间件

Return Code
根据 MessageType 不同,Return Code 不同。 一般是 E_OK(0x00),但如果是 Response 或者 Error 的话就不会是 0x0。

Payload
SOME/IP 底层可以基于 TCP 或者 UDP,这使得 Payload 的容量不一样。
如果是 UDP 协议,那么 SOME/IP 大概限制在 1400 Bytes的容量。
但如果是基于 TCP 协议,通过数据分段传输,那么 SOME/IP 可以实现更大容量传输。

Endianess
所有的 SOME/IP Header 内容采用大端传输(big endian)。 而 Payload 中的数据存放顺序通过配置设置。

SOME/IP 支持的数据结构类型

基础数据类型
someip,自动驾驶,中间件
结构化数据类型
someip,自动驾驶,中间件

SOME/IP 消息通信类型

  • R & R (Request & Response)
  • F & F (Fire & Forget)
  • Notification
  • Event

R&R
最常见的通信模式之一是请求/响应模式。客户端发送请求消息,服务器给予回应。

F&F
客户端发送 Request,无需 Response 的操作称为 Fire & Forget。

Notification Event
Notification 代表的是一种 Publish-Subscribe 通信机制,Server 端会主动推送信息给订阅方。
但 Notification 分3种情况:文章来源地址https://www.toymoban.com/news/detail-688998.html

  • Cyclic Update 周期性的发送相关 value 的变化
  • Update On Change 如果 value 发生变化,则向外推送
  • Epsilon Change 如果 value 的值大于相应的 epsilon值,那么对外推送消息

到了这里,关于通信中间件SOME/IP简述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用消息中间件实现系统间的异步通信和解耦

    ​​​​​​​ 目录 引言 一. 选择合适的消息中间件 二. 定义消息格式和通信协议 1. 定义消息格式 消息头 消息体 2. 定义通信协议 发送消息 接收消息 消息处理 3. 示例代码 定义消息格式 发送消息 接收消息 三、发布-订阅模式 1. 定义发布-订阅模式 2. 示例代码 发布消息 订

    2024年02月19日
    浏览(37)
  • 自动驾驶(八十四)---------中间件对比分析

             很久没有写博客了,CSDN无故非法删了我第82篇,让我很恼火,一直提不起兴趣重新写一遍第82篇。但回初心,知识需要用自己的语言输出,所以今天对比分析自动驾驶中间件: 1. 中间件介绍         在自动驾驶架构中,中间件是重要部分,他是处在OS内核的上一层

    2024年04月24日
    浏览(20)
  • Netty通信在中间件组件中的广泛使用-Dubbo3举例

    Netty是一个高性能异步IO通信框架,封装了NIO,对各种bug做了很好的优化解决。所以很多中间件底层的通信都会使用Netty,比如说:Dubbo3,rocketmq,ElasticSearch等。 比方说,我们使用dubbo作为rpc跨进程远程通信,其实底层使用的还是Netty客户端与服务端的交互。我们封装好dubbo,然

    2024年02月07日
    浏览(30)
  • SOMEIP协议--第四节[ SOME/IP](someip概述与行为)

    Method | Event | Field是上层设计的三个概念,能完全覆盖所有的应用场景。 Method和Event主要针对动作,Method是请求进行某个动作,Evnet是发生了某个动作,通知对方;Field才是主要用来对某个数据的读写

    2024年02月16日
    浏览(40)
  • 顶顶通呼叫中心中间件利用自动外呼进入机器人的压力测试配置流程

    进入机器人的压力测试我可以通过两种方式实现: 一端放音,另一端进入机器人。 两端都进入机器人。 压力测试原理 : 一端通过自动外呼呼叫给自己,然后执行呼叫路由external中的拨号方案,进入机器人话术中。另一端待对端接通后通过队列外呼中的“路由条件”和“呼叫

    2024年01月24日
    浏览(29)
  • 【中间件】消息中间件之Kafka

    一、概念介绍 Apache Kafka是一个分布式流处理平台,用于构建实时数据管道和流应用。它可以处理网站、应用或其他来源产生的大量数据流,并能实时地将这些数据流传输到另一个系统或应用中进行处理。 核心概念: Topic(主题) :消息的分类,用于区分不同的业务消息。

    2024年01月20日
    浏览(52)
  • 常见的中间件以及什么是中间件

    中间件顾名思义就是系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑,是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件在客户服务器的操作系统、网络和数

    2024年02月06日
    浏览(44)
  • scrapy---爬虫中间件和下载中间件

            -进来request对象         -加代理         -加cookie         -加请求头     -出去response对象         -修改响应对象,最后进入到爬虫的parser中就是修改后的response 1.加代理   2.加cookie,修改请求头,随机生成UserAgent         2.1加cookie        2.2 修改请求头

    2024年02月16日
    浏览(54)
  • 顶顶通呼叫中心中间件自动外呼来电转人工显示被叫号码而不是显示路由条件 :一步步配置(mod_cti基于FreeSWITCH)

    介绍 顶顶通呼叫中心中间件自动外呼来电转人工显示被叫号码而不是显示自动外呼的路由条件,可以是默认的被叫号码也可以改为显示指定的号码 一、显示默认被叫 1、配置拨号方案 打开ccadmin-》点击拨号方案-》找到进入排队-》配置跟图中一样的通道变量。 修改了拨号方案

    2024年01月18日
    浏览(35)
  • 探索Scrapy中间件:自定义Selenium中间件实例解析

    Scrapy是一个强大的Python爬虫框架,可用于从网站上抓取数据。本教程将指导你创建自己的Scrapy爬虫。其中,中间件是其重要特性之一,允许开发者在爬取过程中拦截和处理请求与响应,实现个性化的爬虫行为。 本篇博客将深入探讨Scrapy中间件的关键作用,并以一个实例详细介

    2024年02月04日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包