关于SOME/IP的理解

SOME/IP 详解系列(1)—— 概述 SOME/IP详解系列第一篇——概述 阅读详情
AI摘要

本文深入讲解SOME/IP(运行于IP之上的可伸缩的面向服务的中间件),包括其在网络七层架构中的角色,服务、Method、Event、Field的概念,SOME/IP格式解析,服务发现(SD)机制及状态机,以及序列化与反序列化过程。

目录

1. 总体说明

2. 服务说明

2.1 Method

2.2 Event

2.3 Field

3. 解析SOME/IP格式

3.1 Message Type说明

3.2 Payload说明

4. SOME/IP 服务发现SD

4.1 主要功能

4.2 SD报文解析

4.2.1 Entry

4.2.2 Options

4.3 SD状态机 

5. SOME/IP序列化 

5.1 概念

5.2 说明

5.3 举例


1. 总体说明

如上图所示为标准的网络七层架构,SOME/IP ( Scalable service-Oriented MiddlewarE over IP),即“运行于IP之上的可伸缩的面向服务的中间件”。他在系统中其实就是一个中间件的存在,所谓“Middleware中间件”是一种独立的系统软件或服务程序,分布式应用软件可借助Middleware在不同的技术之间共享资源。所谓的分布式应用软件,在这里指的就是“服务”;不同的技术之间,在这里指的就是“不同的平台或操作系统,比如Adaptive AUTOSAR系统等。

2. 服务说明

服务是SOME/IP的最核心概念。在一个服务中,定义了Server和Client两个角色:Server提供服务,Client调用服务。对于同一个服务,只能存在一个Server,但可以同时存在多个Client调用服务。一个Service由0~多个Event/Method/Field组成。与CAN相比,面向服务的通讯方式能够大大降低总线的负载率。

2.1 Method

调用或引用一个进程/函数/子程序,通常由Client发起,并由Server答复。Request是最常见的一种Method,由Client向Server请求数据;Response是Request的结果,由Server答复Client的Request。而Method Fire & Forget方式,只Client向Server发起,但Server对该请求不回复。

2.2 Event

一个单向的数据传输,只能是on change类型,用于Server主动向订阅(Subscribe)了相关服务的Client发布(Publish)信息。

2.3 Field

由以下三项内容构成:

  • Notifier:通知,Server的Client订阅了服务后第一时间主动向其发送数据。

  • Getter:获取,由Client向Server请求数据。

  • Setter:设置,由Client修改Server的数据。

3. 解析SOME/IP格式

3.1 Message Type说明

值

报文类型

说明

0x00

REQUEST

请求,需要回复

0x01

REQUEST_NO_RETURN

请求,不需要回复

0x02

NOTIFICATION

Notifier/Event,不需要回复

0x80

RESPONSE

回复

0X81

ERROR

带有错误信息的回复

3.2 Payload说明

通常在传输数据时,为了使数据传输更可靠,要把原始数据分批传输,并且在每一批数据的头和尾都加上一定的辅助信息,比如数据量的大小、校验位等,这样就相当于给已经分批的原始数据加一些外套,这些外套起标示作用,使得原始数据不易丢失,一批数据加上“外套”就形成了传输通道的基本传输单元,叫做数据帧或数据包,而其中的原始数据就是payload。

4. SOME/IP 服务发现SD

由于服务需要由Server和Client共同完成,因此在进行正常的数据传输之前,需要一系列的准备工作确认Server和Client之间是否已有网络连接。之后,Client还要询问Server能否提供所需的服务,并对服务的Event进行订阅。这些工作都是通过SOME/IP服务发现(Service Discovery)实现的。

SOME/IP服务发现用于定位服务实例、检查服务是否可用以及部署发布和订阅句柄。服务发现只能通过UDP实现。

服务发现的报文格式与一般的SOME/IP报文相同,但是其Message ID固定为0xFFFF8100。

4.1 主要功能

  1. 定位服务实例
  2. 检测服务实例是否在运行(即服务实例的状态)
  3. 发布/订阅行为的管理

4.2 SD报文解析

SOME/IP SD报文也是一种SOME/IP报文,是在SOME/IP报文的基础上进行了扩展,增加了Entry、Option等字段;Entries用于同步服务实例的状态和发布/订阅的管理,Options用于传输Entries的附加信息。

SOME/IP SD报文的ServiceID(0xFFFF)、MethodID(0x8100)、Request ID(0x0000)、ProtocolVersion(0x01)、Interface Version(0x01)、MessageType(0x02)、ReturnCode(0x00)等属性都是固定值。

4.2.1 Entry

Entry字段可以理解为服务实例的“入口”,该入口包含服务实例以及需要订阅的事件组的信息。主要通过Entry实现提供服务、发现服务,以及订阅事件组的功能。

供服务用Entries

供EventGroup用Entries

报文中Type内容解释如下:

类别

Type值

Type名称

Service 

0x00

FindService 用于Client查找服务

0x01

Offer/StopOfferService 用于Server向Client提供服务或停止提供服务

Eventgroup 

0x06

Subscribe/StopSubscribe Client向Server订阅服务或停止订阅

0x07

SubscribeAck/Nack Server对于订阅的应答,如果订阅成功,Client收到的就是SubscribeAck,否则收到SubscribeNack

对于Offer/ StopOfferService、Subscribe/ StopSubscribe和SubscribeAck/ Nack,每一组Entries都共用了相同的Type值,但通过TTL字段可以识别究竟是提供服务还是停止提供服务,是订阅事件还是取消订阅,是订阅成功应答还是订阅失败应答:当TTL = 0时,表示报文对应的服务实例不再有效,此时对应的Type类型分别就是停止提供服务、停止订阅事件以及订阅失败应答。

4.2.2 Options

每一个Option都是有一个2字节的Length字段、1字节的Type字段和1字节的保留位开始的。Length字段指示的长度是从保留位开始的。Options的类型如下表所示:

类别

Type值

Type名称

Configuration

 用于配置服务

0x01

Configuration    

Load   Balancing

用于配置服务实例的优先级 

0x05

Load Balancing  

Endpoint 

发送服务相关的地址和端口

0x04

IPv4   Endpoint   

0x06

IPv6   Endpoint 

0x24

IPv4   SD Endpoint 

0x26

IPv6   SD Endpoint 

Multicast

声明Multicast地址

0x14

IPv4   Multicast   

0x16

IPv6   Multicast 

4.3 SD状态机 

不管是客户端还是服务端,都有同样的状态机,但是他们的状态机具有不同的行为。 

状态服务端行为客户端行为
DownService不可用

服务未被应用请求,则停留在该状态;

收到OfferService,启动TTL计时器,此时服务若被应用请求,进入Main;

Init

进入条件:

当服务准备完毕(Available)后;

During:

收到Find Service报文,服务端忽略此消息;

退出条件:

若服务不可用了,将进入Down ;

INITIAL_DELAY,当定时器超时后,进入Repetition。

进入条件:

服务被请求后,进入此阶段;

During:

等待INITIAL_DELAY时间;

退出条件:

如果此时收到Offer Service,则取消计时器,直接进入Main ;

如果服务请求被释放,进入Down ;

计时器超时后,发送第一个Find service,进入Repetition。

Repetition

作用:

为了让客户端快速找到有哪些Service,

During:

如果收到某客户端的FindService,延迟一定时间后,单独发送单播OfferService给服务请求端;

如果收到SubscribeEventgroup后,发送单播Ack/Nack,启动此订阅Entry的TTL计时器;

如果收到StopSubscribeEventgroup后,停止此订阅Entry的TTL计时器;

退出条件:

如果服务不可用,离开此阶段进入Down ,并发送StopOfferService通知所有客户端。

作用:

重复发送Find service;

退出条件:

收到Offer Service,停止发送计数和计时,立即进入Main 触发发送SubscribeEventgroup;

如果服务请求被释放,进入Down ,若有订阅,则发送StopSubscribeEventgroup。

Main

作用:

此阶段将周期性发送OfferService;

During:

如果收到某客户端的FindService,不影响发送计数,发送单播OfferService给服务请求端;

如果收到SubscribeEventgroup后,发送单播Ack/Nack,启动此订阅Entry的TTL计时器;

收到StopSubscribeEventgroup后,停止此订阅Entry的TTL计时器;

退出条件:

如果服务不可用,离开此阶段进入Down,并发送StopOfferService。

作用:

不再周期发送Find Service,不必要负载;

During:

收到Offer Service,触发发送SubscribeEventgroup;

如果收到StopOfferService,则停止所有计时器;

退出条件:

如果服务请求被释放,进入Down Phase;若有订阅,则发送StopSubscribeEventgroup。

5. SOME/IP序列化 

5.1 概念

序列化(Serialization)指的是将数据结构或对象依据事先定义的规则转换成二进制串的过程;反序列化(Deserialization)指的是将二进制串依据相同规则重新构建成数据结构或对象的过程。

5.2 说明

在AUTOSAR中是指数据在PDU中的表达形式,可以理解为来自应用层的真实数据转换成固定格式的字节序,以实现数据在网络上的传输。软件组件将数据从应用层传递到RTE层,在RTE层调用SOME/IP Transformer,执行可配置的数据序列化(Serialize)或反序列化(Deserialize)。SOME/IP Serializer将结构体形式的数据序列化为线性结构的数据;SOME/IP Deserializer将线性结构数据再反序列化为结构体形式数据。在服务端,数据经过SOME/IP Serializer序列化后,被传输到服务层的COM模块;在客户端,数据从COM模块传递到SOME/IP Deserializer反序列化后再进入RTE层。如下图参考Autosar Com过程

5.3 举例

一个unit32类型数据(0x12345678)的序列化。

 Byte0Byte1Byte2Byte3

大端(Big Endian)

12345678

小端(Little Endian)  

78563421

 

零基础理解AUTOSAR中SOME/IP工作原理 深入浅出解析SOME/IP在AUTOSAR软件开发中的作用机制,帮助初学者理解通信协议的核心逻辑与实现方式,掌握autosar软件开发的关键环节。 阅读详情

相关推荐

SOME/IP 详解系列(2)—— 报文格式

SOME/IP详解系列第二篇——报文格式

Life_I的博客 5204

车载以太网 - SOME/IP简介

SOME/IP (Scalable service-Oriented MiddlewarE over IP) 是车载以太网通信引入的一个概念,位于OSI 7层模型的层4之上。在以CAN总线为主的车载网络中,通信过程是面向信号的(除了诊断通信之外),这是一种根据发送者需求实现的通信过程,当发送者发现信号的值变化了,或者发送周期到了,就会发送信息,而不考虑接收者是否有需求。而SOME/IP则不同,它是在接收方有需求的时候才发送,这种方法的优点在于总线上不会出现过多不必要的数据,从而降低负载。 在车载网络中,某

usstmiracle的博客 2万+

someip协议详解

SOME/IP-SD是SOME/IP的一种特殊服务,主要用于:确定服务实例的位置(IP地址、通信协议、端口号等)、检测服务实例的状态(是否正在运行)、执行服务发布/订阅的操作SOME/P-SD提供了两种动态服务发现的机制。一种是Ofer Service,由server向别人告知它所提供的服务;另一种是Find Service ,由client向别人请求可用的服务。

qq_43222917的博客 2692

someip协议概述

SomeIP (Scalable service-Oriented Middlewareover IP) 是车载以太网的一种通信协议。对于熟悉CAN通信的开发者而言,CAN通信一般属于周期或者触发的形式在总线上传输的,而SOMEIP则不同,它是在接收方有需求的时候才发送,他是一种以服务为导向的数据。

xinyuan510214的专栏 1万+

【vSomeIP3 教程】深入理解SOME/IP服务配置:从基础到高级特性的完整指南

本文介绍了SOME/IP协议在汽车领域的应用及其服务配置方法。第1章阐述了SOME/IP作为车载以太网中间件协议的核心特性,包括服务发现、远程调用等功能,并详细讲解了服务ID、实例ID的规范及JSON格式配置文件的结构。第2章重点分析了基于TCP的可靠通信模式配置,涵盖端口设置、连接管理机制等关键技术点,为构建稳定可靠的车载通信系统提供了实践指导。全文通过表格化对比和代码示例,系统性地呈现了SOME/IP服务配置的完整知识体系。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 494

S32K144(1)新建裸机项目以及烧录调试工程

目录 1、简介 2、S32DS新建裸机项目 2.1、新建空的项目 2.2、选择标准库的S32DS 2.3、选择使用EWL官方库 2.4、新建成功 3、烧录工程 3.1、点击Debug,选择Debug Configurations 3.2、新建GDB SEGGER J-Link Debugging 3.3、确认Project和C/C++ Applicants是需要烧写的项目名和路径正确 3.4、确认Executable Device name Interface等各个配置信息正确,后点击

朗朗上口就行啦的博客 4974

SomeIP 协议

someip协议

weixin_44723188的博客 9244

SpringBoot+Vue企业级开源聚合支付系统!支持30+款支付平台,只需配置商户证书就能直接使用!

一款开源SAAS支付系统推荐

技术Z先生的博客 2720

一文了解什么是SOME/IP协议(超详细)

SOME/IP 在CAN总线的车载网络中,通信过程是面向信号的 当ECU的信号的值发生了改变,或者发送周期到了,就会发送消息,而不考虑接收者是否需要,这样就会造成总线上出现不必要的信息,占用了带宽 而SOME/IP的出现就是为了解决这一问题,它和CAN网络发送机制不同,它是接收者有需要时才会发送,避免了无效信息对总线造成的影响 SOME/IP Scalable service-Oriented MiddlewarE over IP,通过网络提供面向服务的通信,不能写作Some/IP等 既然SOME/IP是

jasonj333 5万+

Windows非分页缓冲池内存泄漏实战:PoolMon与RAMMap高效排查指南

本文详细介绍了Windows系统中非分页缓冲池内存泄漏的实战排查方法。当系统出现卡顿且内存占用异常增长时,通过RAMMap工具快速定位非分页缓冲池异常,并利用PoolMon监控内核内存分配标签,精准锁定泄漏源。文章提供了从确认症状、安装工具到使用findstr命令溯源驱动文件的完整五步排查流程,并总结了常见泄漏标签与解决方案,帮助用户高效解决深层系统内存问题。

weixin_28455801的博客 1008

YOLO11涨点优化:注意力魔改 | 新颖的多尺度卷积注意力(MSCA),即插即用,助力小目标检测

多尺度卷积注意力(MSCA),有效地提取上下文信息,新颖度高,创新十足。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 6309

什么是SOME/IP?

汽车以太网通信SOME/IP 介绍,官方文档翻译

jackhh1的博客 9124

YOLOv11改进,YOLOv11添加DCNv4可变性卷积(windows系统成功编译),二次创新C3k2结构,全网最详细教程

引入了可变形卷积 v4 (DCNv4),这是一种为广泛视觉应用设计的高效且有效的操作算子。DCNv4通过两项关键增强解决了其前身DCNv3的局限性:1. 移除空间聚合中的softmax归一化,以增强其动态特性和表达能力;2. 优化内存访问以最小化冗余操作,从而加速计算。这些改进使得DCNv4相比DCNv3显著加快了收敛速度,并且处理速度大幅提升,前向传播速度超过三倍。DCNv4在多个任务中表现出色,包括图像分类、实例和语义分割,特别是在图像生成方面表现突出。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2663

深入浅出理解SOME/IP

SOME/IP,全称为Scalable service-Oriented MiddlewarE over IP,是用于控制消息的汽车中间件解决方案,是一种面向服务的可伸缩的协议。SOME/IP于2011年由BMW设计,2014年纳入AUTOSAR规范。 SOME/IP的报文格式如下图所示,由消息头部(Header)和消息体(Payload)组成,Header主要包括以下字段: Message ID,用于唯一标识消息,当消息为Method类型时,由Service ID和Method ID组成,当消

usstmiracle的博客 2万+

最适合入门的100个深度学习项目

本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

优快云 精品推荐 12万+

Q3D提取PCB走线RLCG参数

介绍一种提取PCB走线寄生电容和寄生电感的方法

sinat_15150363的博客 2909

SOME/IP-SD规范中,对 服务(Service) 和 实例(Instance)的理解

AUTOSAR SOME/IP-SD规范中,服务(Service)与实例(Instance)是服务发现机制的核心概念。服务是逻辑功能单元,由16位Service ID唯一标识,定义功能接口但不涉及具体实现;实例是服务的具体提供者,由Service ID和16位Instance ID共同标识,包含实际网络地址和配置参数。这种设计实现了功能与实现的解耦,支持负载均衡、冗余备份和动态扩展。通过服务发现协议,消费者只需指定所需功能,系统即可动态匹配最优实例,满足现代汽车电子系统对灵活性、可靠性和可扩展性的要求。

weixin_42108533的博客 1436

《拉依达的嵌入式\驱动面试宝典》—操作系统篇(二)

《拉依达的嵌入式\驱动面试宝典》 整合了所有我认为可能遇到的技术面试问题。所有问题及其答案均是我个人学习后查阅资料总结,每个回答都做了仔细的分析,在嵌入式及其驱动面试相关问题解析做到全网独一无二。学习或者转行到嵌入式、驱动开发领域学习的不二之选

拉依达不拉跨的博客 470

SOME/IP-SD报文中 Option Format(选项格式)-理解笔记1

摘要:SOME/IP-SD协议中的选项(Options)机制通过模块化设计实现服务发现功能。选项分为IPv4端点(0x04)、配置选项(0x01)、负载均衡(0x02)和IPv4 SD端点(0x24)等类型,分别承担网络寻址、配置说明、负载分配和代理寻址等功能。所有选项都包含Length、Type和Flags通用头部,其中可丢弃标志(Discardable Flag)决定选项的必要性。这种设计实现了信息解耦、复用和扩展,通过"条目+选项"的分工协作,有效支持车载网络的动态服务发现需求。(

weixin_42108533的博客 1215

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SOME/IP-SD报文中 Entry Format(条目格式)-理解笔记3

SOME/IP SD协议是汽车电子系统中实现动态服务发现的核心机制。它通过SD报文(包含报头、条目和选项)实现设备间的高效通信: 核心功能:支持服务提供者广播服务(Offer)、消费者查找服务(Find)和订阅事件(Subscribe) 关键设计:采用条目(指令)与选项(详情)分离的结构,优化网络带宽;通过TTL心跳机制实现服务状态自动检测 交互流程:典型场景如车门状态订阅,涵盖服务宣告、订阅请求、确认及数据推送全过程 优势:动态自治、高效组播、松耦合架构,满足汽车电子系统对实时性和可靠性的严苛要求 该协议

weixin_42108533的博客 1205

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SOME/IP-SD报文中 Entry Format(条目格式)-理解笔记2

高效率 (Efficiency)批量处理:一个“邮包”能塞进很多封“信”,减少了很多次发送邮包的开销。避免重复:通过“共享附件”,100家公司可以共用一个地址,而不是写100遍,极大节约了“墨水”(网络带宽)。灵活性 (Flexibility)两种“信件”类型清晰分离,管理服务和管理订阅互不干扰。“共享附件”和“独有附件”的设计,既能处理普遍情况,又能应对特殊需求。可靠性 (Reliability)TTL机制:就像公告会过期一样,服务状态和订阅状态都需要持续的心跳来确认。

weixin_42108533的博客 711

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SOME/IP-SD报文中 Entry Format(条目格式)-理解笔记1

SOME/IP-SD条目是服务发现报文的核心设计,旨在通过结构化数据高效传递多种服务信息。主要分为服务条目和事件组条目:前者管理服务状态(上线/下线),后者处理事件订阅。创新性的"选项运行"机制通过共享配置信息(如IP/端口)大幅减少冗余数据。条目支持批量处理,允许将多条发现信息打包到单条报文中,配合TTL超时机制实现状态同步,显著提升车载网络的传输效率和实时性。这种设计在功能丰富性和传输效率间取得了精妙平衡。

weixin_42108533的博客 917
上一篇: 自动驾驶中轨迹规划的探索和挑战
下一篇: 关于DoIP 协议的理解
AgingMoon
博客等级 码龄9年 3966粉丝 61原创
评论 17
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值