接前一篇文章:软考 系统架构设计师系列知识点之SOME/IP与DDS(1)
本文内容参考:
车载以太网 - SOME/IP简介_someip-CSDN博客
https://zhuanlan.zhihu.com/p/369422441
什么是SOME/IP?_someip-CSDN博客
SOME/IP 详解系列(1)—— 概述_some ip-CSDN博客
深入浅出SOME/IP协议:基本概念和原理-CSDN博客
特此致谢!
一、SOME/IP
3. 协议概述
(1)定义与特点
SOME/IP是一种应用层协议,其允许在车辆内部网络中实现高效的服务交换和远程调用。这种协议支持车辆各组件之间的复杂通信需求,特别适用于具有高数据吞吐量的场景。
- 服务导向架构(Service-Oriented Architecture,SOA)
SOME/IP实现了一种服务导向架构,允许车辆的各个电子控制单元(ECUs)以服务提供者或服务消费者的身份互动。这种架构使得车辆内部的软件组件可以更加灵活地通信和交互。
- 远程过程调用(Remote Procedure Call,RPC)
通过RPC,SOME/IP支持跨网络的函数或过程调用,实现不同ECU之间的紧密协作。
- 高度可伸缩性和灵活性(Scalability and Flexibility)
SOME/IP协议的设计考虑到了未来车辆网络可能的扩展,支持从小型车辆到大型车队的不同规模应用。
(2)SOME/IP与传统车载网络协议的比较
SOME/IP与传统车载网络协议(如CAN、LIN等)相比,具有明显的优势,但也存在一些不同的应用场景。通过下面的表格,可以更清楚地看到这些差异:
特性 | SOME/IP | 传统车载网络协议 |
---|---|---|
数据传输 | 高吞吐量,适合大数据传输 | 适合小规模数据交换 |
网络结构 | 服务导向,适应性强 | 较为固定的消息格式和网络结构 |
扩展性 | 易于扩展和升级 | 扩展性相对有限 |
应用领域 | 适合复杂、高数据需求的现代车辆系统 | 适用于传统、功能单一的车辆系统 |
4. 主要功能
SOME/IP主要有以下几个功能:
(1)序列化(Serialization)
SOME/IP协议对序列化的解释为数据在PDU(Protocol Data Units,协议数据单元)中的表示方式。展开来说就是将不同的数据结构转换为可在网络上传输的形式,或者说是数据在网络上传输时的封装和排列规则。发送端将数据以一定的规则进行序列化,接收端将数据以同样的规则进行反序列化,从而得到发送端所发送的实际内容。
这部分定义既包含报文头部也包含载荷数据,不仅定义了头部的格式、各字段的长度及含义,还定义了各种数据类型在有效载荷中的排列规则。发送端和接收端通过这样的规则就能获取数据报头的含义及载荷的内容(具体的报文格式会在接下来的文章中详细介绍,本文仅介绍SOME/IP的基本功能)。下图为SOME/IP支持的基础数据类型和复杂数据类型。
(2)远程过程调用(Remote Procedure Call)
远程过程调用,一般用英文缩写RPC表示,听起来又是个比较晦涩的名词,和其对应的是本地过程调用(LPC,Local Procedure Call)。简单地说,如果需要和其它的控制器或节点进行交互,那么就需要RPC。
通过RPC来请求其它节点上的服务或数据,基于Request/Response的模式来实现(左下图示)客户端发送请求,服务器接受请求并处理,然后返回结果给客户端。在SOME/IP中,除了这种同步调用的方式,还支持异步调用的Fire&Forget(右下图示),客户端发送请求后,无需等待服务器处理请求,可以继续执行其他操作,同时服务器也无需返回处理结果(request-no-return)。相较于Request/Response,Fire&Forget方式对系统性能和资源的要求更低。
(3)服务发现(Service Discovery)
服务发现(Service Discovery,SD)可以认为是SOME/IP协议的核心,其提供了一种可以动态的发现和获取服务状态的机制。
所谓面向服务的通信,首先需要获取网络中都有什么服务,并且需要知道服务的状态和提供方,然后才可以去使用和消费这个服务。通过SOME/IP SD,可以将自身能提供的服务以及服务的状态告诉网络中的其它节点,同时,当想要主动寻找某个服务的时候,也可以通过SOME/IP SD去实现。
(4)发布/订阅(Publish/Subscribe)
发布和订阅也是由SOME/IP SD实现的。上文中提到,SOME/IP可以实现只在需要的时候才进行数据的发送,这主要归功于发布/订阅的机制。客户端在发现想要使用的服务后,会对服务进行订阅,当满足服务的触发条件时,服务器就会将客户端所需的服务内容发出。发送的方式是单向的事件型通知,对于客户端来说,只需要订阅一次即可。这同样是一个动态的过程,当客户端不需要使用服务的时候,也可以停止订阅该服务。
(5)TP传输协议(Transport Protocol)
SOME/IP-TP是SOME/IP在数据传输层面定义的规则,主要用于解决数据有可能被分片的问题。在网络层,数据都是通过IP协议传输的,由于链路MTU的限制,导致可能会出现IP分片。由于IP分片存在诸多的问题,为了防止IP出现分片的情况,所以设计了SOME/IP-TP,可以简单理解成TP是SOME/IP自己的分片传输机制。
关于SOME/IP更多知识内容的介绍,请看下回。