SOME/IP 和 DDS 均已被纳入AUTOSAR AP的平台标准中。
SOME/IP 和 DDS是在不同的应用场景和不同的需求下诞生的技术,所以它们之间注定有很大的区别。
SOME/IP
SOME/IP的全称为:Scalable service-Oriented MiddlewarE over IP,是一种面向服务的传输协议。
严格地说,SOME/IP不是一款特定的产品,而是一种技术标准。
其最早由宝马在2012-2013年开发,并在2014年集成进AUTOSAR 4.2.1中。
当前,全球最大的商用SOME/IP产品供应商是Vector。
开源版的SOME/IP则是由Genivi协会来维护的。
DDS
DDS的全称为Data Distribution Service(数据分发服务),是由OMG发布的分布式通信规范,采用发布/订阅模型,提供多种QoS服务质量策略,以保障数据实时、高效、灵活地分发,可满足各种分布式实时通信的应用需求。
DDS将分布式网络中传输的数据定义为“主题”,将数据的产生和接收对象分别定义为“发布者”和“订阅者”,从而构成数据的发布/订阅传输模型。
各个节点在逻辑上无主从关系,点与点之间都是对等关系,通信方式可以是点对点、点对多、多对多等,在QoS的控制下建立连接,自动发现和配置网络参数。
DDS最早应用于美国海军,用于解决舰船复杂网络环境中大量软件升级的兼容性问题,后来扩展至航空、航天、船舶、国防、金融、通信、汽车等领域,包括作战系统、船舶导航和控制系统、船舶防御系统、无人机驾驶系统和地面控制系统、装甲车辆控制系统、仿真和培训系统、雷达处理和空中交通管理系统、金融系统等。
2018年,DDS首次被引进AUTOSAR AP,作为可选择的通信方式之一。2018年3月,DDS的主要提供者RTI公司宣布,AUTOSAR AP的最新版本(版本18-03)已经具有DDS标准的完整网络绑定。
OpenDDS 和 FastDDS
自动驾驶领域比较有影响力的开源DDS是由RTI原核心团队成员在欧洲创办的eProsima公司推出的FastDDS。
在eProsima将FastDDS的源代码开放出来后,用户可以直接在github上免费下载。
但FastDDS使用起来比较麻烦,这个时候,用户就需要通过向eProsima支付费用来取得支持。
OpenDDS 由位于圣路易斯和凤凰城的的Object Computing的 ACE/TAO 团队开发,它和FastDDS具有一定的相似性——两者都是基于RTPS实现的,面向数据的通信框架,遵循的是同一标准。这类框架的典型特征是去中心化,支持QoS机制,支持实时通信。通常会绑定如protobuf等序列化工具。
在许多情况下,FastDDS 、OpenDDS可以跟RTI的Connnext DDS互操作/通信。当然,具体还得看场景。比如开源DDS 的QoS(服务策略)有 23个,大家都用这23个QOS交互,那就能互操作;如果Connext用的是超出这23个自定义范围的QoS,那么开源DDS就解析不了。此外,如果用的是OMG没开源的DDS工具,那也没法互操作。
DDS VS Some/Ip
现阶段,SOME/IP 和 DDS是自动驾驶上用得最多的两类通信中间件。
共同点主要有:
都是面向服务的通信协议.都采用了“以数据为中心”的发布和订阅模式.对于数据吞吐量,从有效数据的占比来看,DDS和SOME/IP的性能没有明显的差别。
差异性主要有:
资源占有大小不同SOME/IP强调通信,体量比较小.
DDS功能更多,但体量比较大,需要裁剪后才能用于自动驾驶.使用场景不同
DDS是一套面向数据的访问系统,适合多节点、大数据交互的应用场景;
SOME/IP是一套面向服务的访问系统,可以很方便地用于RPC(远程过程调用)以及变更通知。灵活性、可伸缩性不同
相较于SOME/IP,DDS引入了大量的标准内置特性,例如基于内容和时间的过滤、与传输无关的可靠性、持久性、存活性、延迟/截至时间监视、可扩展类型等。订阅方和发布方是否强耦合
在SOME/IP中,在正常数据传输前,client需要与server建立网络连接并询问server是否提供所需服务,在这个层面上,节点间仍然具有一定耦合性。服务的订阅方需要知道server在哪里,服务的发布方需要告知server提供哪种服务;
在DDS标准下,每个订阅方或发布方只需要在自己的程序里面订阅或发布传感器数据就行了,不需要关心任何连接。可以理解为,在DDS中,服务订阅方和发布方的解耦更加彻底,需要什么数据,写一行代码就行了,不需要再去做绑定。服务策略不同
SOME/IP只有一个QoS,即可靠性的定义;
RTI DDS和开源DDS里面分别有50多个和20多个QoS,这些QoS基本上能涵盖绝大多数可以预见到的智能驾驶场景。
DDS适用于自动驾驶域,而SOME/IP则可以延伸到整车域。
实际运用过程中,二者可以共存在一套系统中。