DoIP协议概述

大家好哈,我是穿拖鞋的汉子!

伴随着需求不断提升(车身数据传输速率和带宽需求),为了满足需求将以太网引进到车载网络中。车载以太网在诊断传输层的应用协议是ISO 13400(Diagnostic On IP—DoIP),定义的是从物理层到应用层搭建通信桥梁的规则。

该公众号以往关于DoIP文章如下:

 

上述文章自己总结的都是偏向具备内容,针对的是在基于车载以太网进行诊断通信,搭建通信桥梁的整个过程(对于DoIP可以理解为DoIP是搭建通信桥梁的规则)。

DoIP协议概述_第1张图片

今天自己想基于ISO 13400协议总结下偏系统的概述性的内容,以方便后续自己查阅。

一、基于车载以太网的诊断系统分析

首先如下图,ISO 13400协议开篇示意图:

DoIP协议概述_第2张图片

1、物理层

在该层需要定义是物理电气特性:

  • 需要选定车载总线类型:-Tx、-T1、BroadR-Reach,具体选定那种总线类型,需要参看各家车规芯片、接口特性;

  • Software、Hardware工程师根据不同类型定义驱动;

  • 基于诊断范畴需求参看IEEE 802.3(国际上定义无线通信的协议簇)、ISO 13400-3定义以太网在车身做诊断接口参数(比如激活线特性);

上述内容可以在如上图OSI七层模型清晰看到(对应协议名称)。

2、传输层

在车载诊断范畴,传输层中应用的协议是ISO 13400。

该协议的目的是建立物理层到应用层的通信桥梁,该规则可以保证诊断通信链路的稳定和安全。

DoIP协议概述_第3张图片

DoIP是Diagnostic on IP,相当于诊断在车载以太网的应用。

报文传输的载体还是传统互联网的TCP/UDP/IP协议(这些协议1980年就已经提出,经历了时间和市场的考验),DoIP协议就是定义一系列规则,使用不同的帧类型(在协议中,通过Payload Type)来搭建通信流程

A:车辆连接;

B:车辆声明;

C:Routing激活(Socket激活);

D:诊断通信。

具体内容可参看开篇具体文章。

3、会话层

在ISO 14229-2中定义了诊断范畴需要用到的时间参数:

具体可参看如下截图:

DoIP协议概述_第4张图片

该ISO 14229子类中定义了诊断过程中相应的时间参数(P2、P2*、S3等)

通过示意图,详细直观说明了时间参数在诊断过程中的定义。

4、应用层

应用层是实现诊断功能(OSI七层模型),具体的诊断功能如下所示:

  • Service

  • DID

  • DTC

都是在此层实现,对应的协议是ISO 14229-1。

因为此时诊断报文是基于车载以太网传输,所以需要查看ISO 14229-5(该文是UDS协议在在车载以太网上的具体应用和具体限制),因为UDS在不同的车载总线应用是不同的,因此通过不同的子类(子类-3到-7,对应不同的车载总线)加以说明。

二、车载以太网典型网络拓扑

由于车载以太网有很好的网络延展性,可以点对点,也可以应用交换机等策略实现良好的车载网络拓扑。

考虑到车载以太网后续会有远程无线应用,在ISO 13400中给出了如下网络拓扑示意图:

DoIP协议概述_第5张图片

1、边缘节点

在ISO 13400协议中只有边缘节点可以连接外部Tester(严格按照ISO协议的话)。并且车身内部节点定义时会有逻辑地址,这样的话,Tester只知道车内节点的逻辑地址,Tester将该请求发送至GW时,GW内部有逻辑地址和真实地址的Map关系表,这样可以有效的保护车内节点数据安全。

DoIP协议概述_第6张图片

只有GW可以解析逻辑地址和真实地址之间的关系,这样虽然可以有效的保护数据安全,但是也造成了GW很大的负荷,会形成通信“堵塞”现象。

所以现在也有用户有如下策略:

让Tester经过安全认证,GW充当路由功能,Tester直接根据真实地址直接跟ECU进行通信(GW无脑转发)。

三、车载以太网诊断通信流程

最新版 ISO 13400协议将信息安全因素考虑进去,在整个通信桥梁搭建过程中增加了TLS(Transport Layer Security),具体通信流程如下图:

DoIP协议概述_第7张图片

1、通信连接

在ISO 13400协议中关于车辆边缘节点IP地址有两种方式:

(1)、DHCP;

(2)、Auto-IP;

并且前者优先级比后者高。

但考虑到现阶段整车数量,多数OEM采用是静态IP地址(IPV4偏多)。

2、车辆声明

车辆将自身的识别信息以广播形式自发三次(上电后)于所在网络,Tester若未获取,进行通信前可进行车辆信息请求.

PS:需要注意的是这个过程有许多时间参数需要注意,后续我会以文章形式整理出来。

3、Routing激活

以DoIP Payload Type 0005/0006来激活车载以太网诊断通信套接字(Socket),也就是TCP进行三次握手连接后,执行该动作,激活诊断通信功能。

4、诊断通信

此时Tester会发送DoIP Payload Type 8001的诊断请求进行诊断通信,边缘节点接受到请求后会回复DoIP Payload Type 8002的ACK,告知Tester收到诊断请求,与此同时会发送诊断请求给车内具体节点。车内节点收到后会给予诊断相应(此时DoIP Payload Type 8001)。

PS:若边缘节点判定Tester发送的诊断请求有无效信息时:

A:无效目标地址;

B:报文超长;

等等,此时边缘节点会回复DoIP Payload Type 8003的NACK。

具体判定机制可参看文章开头文章。

PS:车内节点之间通信可不用严格按照DoIP协议定义流程(俗称阉割版DoIP协议)。

愿你我相信时间的力量,

做一个长期主义者!

你可能感兴趣的:(#,DoIP协议详解及应用,网络,汽车,数据库架构,数据库,测试用例)