点击上方蓝字谈思实验室
获取更多汽车网络安全资讯
01
SOME/IP 传输层协议
SOME/IP 使用的传输层协议可以是TCP、UDP或SOME/IP-TP。
如果传输的数据长度超过了1400字节,并且没有严苛的时间延迟要求,使用TCP传输
如果有时间延迟的要求(小于100毫秒),使用UDP传输
如果传输的数据长度超过1400字节,同时要求较小的延迟,可以使用SOME/IP-TP;SOME/IP-TP支持UDP之上大数据传输。
具体使用哪一种传输层协议跟具体的应用场景有关,如果以上提到的传输层协议均不能满足需求,用户还可以选择其他协议,比如1722等。
SOME/IP 协议在 OSI 七层网络结构中位于应用层,从功能上讲,SOME/IP是一种将服务接口进行打包或解包的中间件:从应用层发送的数据按照 SOME/IP 的格式打包后,再传递到下层的 TCP/IP 或 UDP/IP层,再进行逐层打包和封装,最终通过物理层以比特流的形式进行传输;接收时则按照与打包相反的规则进行解包。见下图:
02
SOME/IP-SD服务发现(Service Discovery)
SD机制是SOME/IP实现服务信息共享的核心机制,如其全称ServiceDiscovery,它实现了服务发现的功能,主要是为了实现在车载以太网中告知客户端当前服务实例的可用性及访问方式。
要了解SD需要首先了解SOME/IP的通信架构,SOME/IP服务于分布式系统,采用服务器客户端无规则分布模式,即任何一个车内以太网节点都可能是Server或是Client,甚至是同时作为Server和Client。
服务发现分为两个过程,SOME/IP通过这四种报文来实现服务发现:
一个是查找和提供服务的过程,即FindService和OfferService
一个是订阅和响应的过程,即Subscribe和SubscribeACK
在通过SOME/IP协议传输数据之前,我们需要知道当前整个车载网络到底存在哪些服务,服务的可用性如何,客户端如何订阅服务端所提供的服务。
如下图5所示即为SOME/IP-SD的基本功能,展现了Client与Server之间的交互关系。
图5 SOME/IP-SD Client与Server交互关系图
由上图可知,SOME/IP 服务发现流程可以分为以下三大基本步骤:
Client通过发送Find Service的报文去寻找车载网络中可用的服务实例;
Server接收到Client的Find Server后通过UDP发送Offer Service响应;
Client通过发送Subcribe Event Group去订阅相关Event;
Server检查Client是否满足订阅条件,如果满足回复ACK,如果不满足,则回复NACK;
在SOME/IP协议中,Event Group ID是一种用于标识一组相关事件的机制。
Event Group ID由32位无符号整数表示,每个服务实例可以定义多个Event Group ID。一个Event Group ID通常对应于一组相关事件,例如同一服务实例上的不同状态变化事件或不同错误类型的事件。
当一个服务实例需要向其它服务实例或客户端通知事件发生时,它可以使用Event Group ID来标识这些事件。例如,当一个服务实例的状态发生变化时,它可以向其它服务实例或客户端发送一个事件通知,其中包含该状态变化事件的Event Group ID。
使用Event Group ID可以将相关事件分组,并使其易于管理和监视。例如,当一个服务实例发送一个事件通知时,其它服务实例可以根据Event Group ID过滤接收到的通知,只处理他们感兴趣的事件。这可以减少不必要的网络流量和处理负担,提高系统的效率和可靠性。
此外,Event Group ID还可以用于路由事件通知。当一个服务实例发送一个事件通知时,其它服务实例可以根据Event Group ID将通知路由到正确的接收方,以确保通知被正确处理。这可以帮助服务实例和客户端更好地管理和处理事件通知,提高系统的可维护性和可扩展性。
总之,Event Group ID在SOME/IP协议中具有重要作用,它帮助服务实例和客户端管理和处理事件通知,提高了系统的可靠性、效率、可维护性和可扩展性。
Client成功订阅相关事件后,Server会按照事件本身属性来实现对已订阅该事件的Client的发布;
SD的概括性通信模式图如下:
FindService & OfferService服务查找
使用场景
FindService由Client端启动时发出,OfferService由Server端发出,分别用于查找所需的服务,和通告所提供的服务。要想了解这两种报文的发送机制,不得不提及SOME/IP的启动行为。SOME/IP协议栈在进行启动时会进入三个阶段。分别是Initial Wait Phase、Repetition Phase、Main Phase。
Initial Wait Phase
在SOME/IP协议栈启动初始,进入Initial Wait Phase,该阶段仅在ECU内部进行初始化不进行对外通信,不会有任何SOME/IP报文发出。
Repetition Phase
协议栈内部初始化完成之后,进入Repetition Phase,该阶段处于发出快发阶段。对于Server端,将开始发送OfferService报文,发送机制为周期倍增模式,直至达到REPETITIONS_MAX次数,然后进入Main Phase。
对于Client端,将开始发送FindService报文查找所需服务,发送机制同样是周期倍增模式,直至达到REPETITIONS_MAX次数,然后进入Main Phase,若Client端在此阶段查找到所需服务则立即跳转入Main Phase。
Main Phase
进入Main Phase后Client端不再发送FindService,但Server端以CYCLIC_OFFER_DELAY继续发送OfferService,直至ECU休眠或关机。
报文特征
FindService& OfferService的报文格式的Entry部分与订阅报文略有区别,每个字段都有其相应作用。
知识点总结
OfferService的TTL字段可以为0,此时表示StopOfferService
FindService的InstanceID字段为0xFFFF时有特殊含义,表示查找该Service的所有服务实例
MajorVersion必须完全一致才兼容,MinorVersion向后兼容
FindService报文一般不携带节点信息
FindService报文包含的信息为所需的服务ID和服务实例ID
FindService报文以组播形式在局域网内进行服务搜索
OfferService报文必须携带节点信息
OfferService报文包含的信息为所提供的服务ID和服务实例ID
OfferService报文以组播形式在局域网内进行服务多播
收到FindService包含的服务是己身提供服务时,Server端应第一时间进行OfferService应答
Subscribe & SubscribeACK服务订阅
使用场景
订阅发生在Main Phase,Client端在收到所需服务的OfferService之后,判断该服务是否包含所需的事件组,若包含,则向该OfferService包含的节点信息发送Subscribe报文。当Server端收到订阅请求之后,若服务有效应理解发送SubscribeACK,进行应答(订阅TCP服务需要先建立TCP连接)。
报文特征
Subscribe报文的Entry格式。
知识点总结
Subscribe以单播形式发送
Subscribe必须携带Client端的节点信息,节点信息数量大于0,小于3,在Endpoint中指明Client的Transport Protocol、Port以及Transport Protocol
Subscribe报文TTL等于0时,表示StopSubscribe
Subscribe报文订阅的最小单位时是事件组
Initial Data Requested Flag [1 bit],请求发送initial Event的标志位(当前业内不使用)
Counter [uint4]:用于区分相同用户相同事件组的订阅,加一累计(当前业内不使用)
SubscribeACK以单播形式发送
SubscribeACK只有在包含多播事件组时才会包含Endpoint信息,其中包含Multicast Transport Protocol和Port,Transport Protocol默认为UDP
SubscribeACK报文TTL等于0时,表示SubscribeNACK,即拒绝订阅
若要订阅TCP服务需要先建立TCP连接
03
远程进程调用(RPC)
Request/Response
Request/Response通信模式,可归纳为Method中的一种。
Request-Response模型作为一种最为常见的通信方式,其主要任务就是客户端发送请求信息,服务端接收到请求,进行相关处理之后进行相应的响应。其基本通信模型如下图6所示。
规范标准
Request/Response Communication请求/响应通信
One of the most common communication patterns is the request/ response pattern. One communication partner (in the following called the client) sends a request message, which is answered by another communication partner (the server).
最常见的通信模式之一是请求/响应模式。客户端发送请求消息,服务器端应答。
Client
Construct the payload
Set the Message ID based on the method the client wants to call
Set the Length field
Optionally set the Request ID to a unique number
Set the Protocol Version according
Set the Interface Version according to the interface definition
Set the Message Type to Request (i.e. 0x00)
Set the Return Code to 0x00
Server
builds it header based on the header of the client ,and in addition
Construct the payload
Set the length to the 8 Bytes + new payload size
Set the Message Type to RESPONSE (i.e. 0x80) or ERROR (i.e. 0x81)
Set the Return Code
Mapping
For the response and error message the IP addresses and port number of the transport protocol shall match the request message.
对于Response和Error message,传输层的IP Address和Port口需要和Request message匹配:
Fire&Forget
Fire&Forget通信模式,可归纳为Method中的一种。
该通信模型的主要任务就是客户端向服务端发送请求,服务端无需进行任何响应,有点类似诊断服务中的抑制正响应。
规范标准
Fire&Forget Communication
请求但不需要回复的消息成为fire&forget 。
其实现基本上和for Request/Response 一样,只有如下的区别:
没有response消息。
message type设置为REQUEST_NO_RETURN (如0x01)。
Fire & Forget消息不能返回error,如果需要的话,error处理和返回值由应用程序实施 。
Notification Event
Notification Event通信模式。
该通信模式主要描述了发布/订阅消息内容,主要任务就是为了实现客户端向服务端订阅相关的事件组,当服务端的事件组发生或者值发生变化时,就需要向已订阅该事件组的客户端发布更新的内容。
客户端首先使用了 SOME/IP-SD 订阅(Subscribe)某一事件组(Event Group),当事件组中包含的事件发生之后,服务端就会自动给订阅了该事件的客户端发送相关的通知(Notification),Notification 消息不需要接收方进行回复。请注意,SOME/IP 协议中的 Event 总是分组在一个 Event Group 中,因此只能订阅 Event Group 而不是Event本身。
图8 Notification event通信模型
规范标准
1. Notification Events 通知事件
Notification描述了一般的发布/订阅概念。通常,服务器端发布服务而客户端前来订阅。在某些事件上,服务器端向客户端发送event,该event可以是例如更新的值 或者发生的事件。
SOME / IP仅用于传输更新的值,而不用于发布和订阅机制。这些机制由SOME / IP-SD实现 。
当同一ECU上有多个订阅客户端时,系统应对notification进行复制以便节省通信介质上的传输。当使用多播消息传输通知时,这尤其重要。
2.Strategy for sending notifications发送notification的策略
对于不同的用例,可以使用不同的发送通知策略,并且应在服务接口中定义。以下是常见的例子:
Cyclic update循环更新
以固定间隔发送更新值(例如,每100毫秒用于Alive的安全相关消息)。
Update on change变化更新
一旦“值”发生变化(例如开门)就发送更新。
Epsilon change Epsilon更改
仅当与最后一个值的差异大于某个阈值时才发送更新。该概念可以是自适应的,比如预测是基于历史值; 因此,只有当预测值和当前值之间的差值大于epsilon时才发送更新。
Field
访问进程控制(Field)。
访问进程通信机制主要是为了实现针对对应用程序的数据获取与更改,主要任务就是实现客户端通过Getter获取Server的值,通过Setter设置Server的值。
Field就可理解为一个Service的基本属性,可包含Getter,Setter,Notifier三种方式。其中Getter就是读取Field中某个值的方法,Setter就是一种改变Field值的方法,而Notifier则是一种当Field中的值发生变化的触发事件。
由上图可知,在Getter与Setter的方式中我们使用的Request/Response机制。在Getter的请求报文中是一个空的Payload,响应报文中的Payload才是需要获取的值;使用Setter请求时,请求消息中的Payload则是要设置的值,如果设置成功,那么响应报文中Payload就是设定成功的值。
同时我们也可得出服务实体在SOME/IP协议中是一个十分重要的概念。一个服务实体可以是Field,Events以及Method的任意组合。
规范标准
Fields
field应为getter,setter和notification事件的组合。
不存在没有setter且没有getter且没有notifier的field。该field应至少包含一个getter,一个setter或一个notifier。
field的getter应是一个请求/响应调用,其request消息中payload为空,response消息中payload中的值就是field的值。
field的setter应是一个请求/响应调用,其将field的期望值放在request消息的payload中,这个值被设置到response消息的payload中。
Note注意:
如果request消息中 payload的值被调整了(例如,因为它超出限制),则这个调整后的值将放在response消息的有效载荷中发送。
如果该field的值改变,notifier应发送一个event消息以传输该值,当然,要遵循event规则。
四种通信形式总结
客户端可以通过远程调用 Getter 方法获取 Field 的值,也可以通过远程调用 Setter 方法设置 Field 的值。另外,和 Event 相似,当客户端订阅了某个事件组,若Event Group中包含的 Field 发生变化,服务端会主动的通过 Notification 消息通知客户端;当然,用户也可以选择周期发送Notification 消息。
Field 和 Event 的区别是:
Field 是一个持续存在的变量,比如多媒体音量、车速、环境温度等,这些可以在任何时刻获取;
而 Event 指的是一个事件,事件没有发生就不存在,比如发生碰撞,出现故障等。
下面看一个实际的例子来对这些通信模式产生更具体的印象:
来源:CSDN@大魔王库巴
原文链接:
https://blog.csdn.net/hammershr2012/article/details/130680530
end
精品活动推荐
专业社群
部分入群专家来自:
新势力车企:
特斯拉、合众新能源-哪吒、理想、极氪、小米、宾理汽车、极越、零跑汽车、阿维塔汽车、智己汽车、小鹏、岚图汽车、蔚来汽车、吉祥汽车、赛力斯......
外资传统主流车企代表:
大众中国、大众酷翼、奥迪汽车、宝马、福特、戴姆勒-奔驰、通用、保时捷、沃尔沃、现代汽车、日产汽车、捷豹路虎、斯堪尼亚......
内资传统主流车企:
吉利汽车、上汽乘用车、长城汽车、上汽大众、长安汽车、北京汽车、东风汽车、广汽、比亚迪、一汽集团、一汽解放、东风商用、上汽商用......
全球领先一级供应商:
博世、大陆集团、联合汽车电子、安波福、采埃孚、科世达、舍弗勒、霍尼韦尔、大疆、日立、哈曼、华为、百度、联想、联发科、普瑞均胜、德赛西威、蜂巢转向、均联智行、武汉光庭、星纪魅族、中车集团、赢彻科技、潍柴集团、地平线、紫光同芯、字节跳动、......
二级供应商(500+以上):
Upstream、ETAS、Synopsys、NXP、TUV、上海软件中心、Deloitte、奇安信、为辰信安、云驰未来、信大捷安、信长城、泽鹿安全、纽创信安、复旦微电子、天融信、奇虎360、中汽中心、中国汽研、上海汽检、软安科技、浙江大学......
人员占比
公司类型占比
更多文章
关于涉嫌仿冒AutoSec会议品牌的律师声明
一文带你了解智能汽车车载网络通信安全架构
网络安全:TARA方法、工具与案例
汽车数据安全合规重点分析
浅析汽车芯片信息安全之安全启动
域集中式架构的汽车车载通信安全方案探究
系统安全架构之车辆网络安全架构
车联网中的隐私保护问题
智能网联汽车网络安全技术研究
AUTOSAR 信息安全框架和关键技术分析
AUTOSAR 信息安全机制有哪些?
信息安全的底层机制
汽车网络安全
Autosar硬件安全模块HSM的使用
首发!小米雷军两会上就汽车数据安全问题建言:关于构建完善汽车数据安全管理体系的建议