入门车载以太网(7) -- DoIP

embedded/2024/11/28 1:01:22/

目录

DoIP-toc" style="margin-left:0px;">1.什么是DoIP

DoIP%E5%92%8CUDS%E6%98%AF%E4%BB%80%E4%B9%88%E5%85%B3%E7%B3%BB-toc" style="margin-left:0px;">2.DoIPUDS是什么关系

DoIP%E6%B6%88%E6%81%AF%E6%A0%BC%E5%BC%8F-toc" style="margin-left:0px;">3.DoIP消息格式

4.通信流程示例

DoIP%E7%9A%84%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8-toc" style="margin-left:0px;">5. 如何保证DoIP的网络安全


1.什么是DoIP

DoIP全称Diagnostic Over Internet Protocol。

为什么要提这个话题?个人认为这是一个趋势:在智能网联汽车未发展之前,汽车ECU的升级、故障的诊断只能通过车主线下到4S店进行处理;

随着IoT的发展,汽车通过互联网进行连接,这就给OEM和车主极大的方便;当汽车有故障时,OEM通过互联网可以对ECU检索诊断信息,甚至可以进行远程维修;当汽车ECU需要升级时,OEM通过互联网对目标ECU进行升级。

这些功能实现主要依赖DoIP这个协议。

与传统的KWP2000或者DoCAN(Diagnostics on CAN)相比,DoIP具备更高数据传输速率、更高的带宽可加速ECU更新,通过使用现有的以太网基础设施降低了汽车布线的复杂性和成本,也给未来功能扩展提供了灵活性。

DoIP%E5%92%8CUDS%E6%98%AF%E4%BB%80%E4%B9%88%E5%85%B3%E7%B3%BB">2.DoIPUDS是什么关系

做诊断的朋友对UDS肯定是非常熟悉了。

UDS全称Unified Diagnostic Services,是诊断设备与车辆ECU通信的协议,属于应用层协议,具体可参考ISO 14229-1。它定义了汽车诊断通信的一系列服务,包括读取\清除DTC、读写DID等。UDS独立于物理层,这意味着它可以在不同的通信协议上实现,例如CAN、K-line、FlexRay以及以太网。

DoIP是传输层协议,规定了如何使用以太网技术让诊断设备与车内ECU之间进行通讯。它符合ISO 13400标准,其总体目标是封装UDS (Unified Diagnostic Services)等协议标准的诊断消息,并将其路由到ECU,如下图所示:

DoIP协议定义了如何建立和维护诊断会话、如何发送和接收诊断消息、如何处理错误等。它使用特定的消息格式和通信规则来确保数据的正确传输和解析。换句话说,UDS定义了各种诊断服务的具体内容和行为,而DoIP则负责将这些服务的数据通过IP网络传输。

DoIP%E6%B6%88%E6%81%AF%E6%A0%BC%E5%BC%8F">3.DoIP消息格式

车载以太网模型中,DoIP位于应用层(Layer 5~7),拆解出来如下图:

进一步的,DoIP Header和Payload具体包含如下内容:

  • Protocol Version:用于表示当前使用的DoIP协议版本,例如0x02代表DoIP_ISO13400_2_2012,0x03代表DoIP_ISO13400_2_2019;
  • Inverse Protocol Version:协议版本的取反;
  • Payload Type,总结如下表所示:

 可以看到,在标准里对DoIP报文的Payload类型分为了四大类:

  • Generic DoIP header negative acknowledge(0x0000):当DoIP实体接收到DoIP报文中报头不符合规则时, 需回复Generic DoIP header NACK 报文,数据部分仅有1字节,具体错误码如下:
  • 车辆识别(蓝色部分):该类型报文用于识别网络上被诊断的车辆,通过这类报文可以获取车辆的VIN码、GID(Group Identification)、EID(Entity Identification)、DoIP Entity的逻辑地址等等信息;
  • 路由激活:客户端使用源地址进行路由激活,服务器响应等。
  • Alive Check:用于维持不同测试设备的连接;
  • 节点信息:用于获取DoIP实体的一般信息,包括诊断电源模式、节点类型(Gateway\Node)、当前实体一次逻辑请求最大可处理数据长度等等;
  • 诊断消息:定义了将诊断消息(即诊断请求)路由到车辆网络并从车辆网络(即诊断响应)返回到客户端DoIP实体的消息格式,具体如下:

4.通信流程示例

 在ISO 13400-2-2019中提出了基于DoIP的整车网络架构,如下:

上图中,Clinet1通过以太网与车内边缘节点DoIP Edge Node Gateway 1连接,后续与车内其他节点通信由Gateway进行转发。在外部网络我们看到Client 1有Activation Line与边缘节点连接,它主要用于DoIP的有线连接场景,通过控制电压来激活或停用与车辆诊断相关的通信,从而减少电磁干扰(EMC)和边缘节点的功耗。

在理清DoIP通信流程前,我们先了解几个概念:

  • Client:与DoCAN一样,Client主要发送诊断请求,它可以是外部任何设备;
  • DoIP Gateway:该网关主要用于路由诊断请求给车内节点,这样的好处就是车内ECU不一定都要实现DoIP;只要是在车内挂上总线的ECU都有可能被诊断;

  • Logical Address:诊断网关需要两个有效信息来识别和转发诊断请求和响应,(1)车内ECU诊断的逻辑地址,该ID是在整车网络内要求唯一;(2)网关需要识别总线系统,并将诊断请求或者响应转发至对应总线。

因此,诊断流程可以以一句话概括:DoIP Gateway首先接收Tester的请求,请求包含所需的诊断服务和要诊断的ECU的逻辑地址;Gateway剔除诊断数据包Header,并将其打包成可以目标ECU所在的总线格式进行转发;最后响应给Tester同理。总体框架如下:

 进一步,该通信流程可以细化为如下图所示:

这里讨论DoIP有线连接流程:

  1. 首先进行物理连接,激活线激活DoIP Gateway相关功能,并IP地址配置,这里通常有DHCP(Dynamic Host Configuration Protocol)和Auto-Configuration两种 ;
  2. 根据标准,有两种方式实现车辆发现,第一种:一旦网络连接成功,DoIP Gateway(Server)会主动发送3次Vehicle announcement message,如上图Alt 1;第二种,Tester(Client)主动发送Vehicle ID request,由DoIP实体响应,如Alt 2;该步骤主要是交换车辆VIN、EID、逻辑地址等等,举例如下:
  3. 完成UDP协议的信息交换后,Client与Server建立TCP连接,同时Client发送Routing activation request,该请求由DoIP Gateway解析,如果DoIP报头是有效的,并且接收到的逻辑地址与Tester的配置逻辑地址相匹配,那么Tester和ECU之间的数据路由就会被激活;
  4. 接下来就可以进行正常的诊断通信,举例如下:

 诊断请求

ACK响应

数据传输 

DoIP%E7%9A%84%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8">5. 如何保证DoIP的网络安全

在ISO13400-2-2019中提到了使用TLS(Transport layer security)来建立Client和Server之间的安全通信,包括合法性、完整性和机密性,但不是强制实现。

在Client DoIP实体和Server DoIP实体开始通过TLS交换DoIP消息之前,首先在TLS握手中协商安全的TCP连接:双方就TLS协议的版本达成一致,选择通用密码套件,验证证书,并完成TLS会话密钥交换。

不过在车辆发现阶段,使用UDP进行通信也很容易遭受攻击。

随着汽车行业的互联程度越来越高,对网络安全的需求只会增加。未来版本的DoIP可能包括更强大的身份验证和加密机制,以防止网络攻击。


http://www.ppmy.cn/embedded/141047.html

相关文章

2024年华为OD机试真题-路灯照明问题-Python-OD统一考试(E卷)

最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客 每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。 题目描述: 在一条笔直的公…

stable diffusion 如何配置高分辨率图片生成

配置Stable Diffusion以生成高分辨率图片涉及多个方面,包括模型配置、硬件要求以及潜在的调整技巧。以下是实现这一目标的详细指南: 1. 硬件要求 生成高分辨率图片需要大量计算资源,特别是显存。 GPU:建议使用具有至少16GB显存的高端GPU(如NVIDIA RTX 3080及以上)。内存…

HarmonyOS:使用ArkWeb构建页面

一、简介 页面加载是Web组件的基本功能。根据页面加载数据来源可以分为三种常用场景,包括加载网络页面、加载本地页面、加载HTML格式的富文本数据。 页面加载过程中,若涉及网络资源获取,需要配置ohos.permission.INTERNET网络访问权限。 二、…

Navicat 预览变更sql

需求 用了Flyway(数据库迁移工具)后,需要记录变更sql,所以要知道变更sql。 查看方式 Navicat提供了预览变更sql功能,右击表---->设计表,比如修改字段后,点击SQL预览标签页, 顺…

【jvm】java对象的访问定位

目录 1. 说明2. 使用句柄2.1 概述2.2 结构2.3 优点2.4 缺点 3. 使用直接指针3.1 概述3.2 结构3.3 优点3.4 缺点 4. 实际应用 1. 说明 1.在Java中,对象的访问定位主要依赖于对象的引用。2.Java虚拟机(JVM)规范中规定reference类型是一个指向对…

解决 IDEA 突然出现 unresolved class reference 问题

控制了财产的生产 就控制了人的生活本身 最近在开发一个项目的时候遇到了一个很奇葩的问题,就是自己的代码明明是正确的,但是 IDEA 却给我报了一个 unresolved class reference 的错。 事情是这样的,一开始我准备提交自己写的代码&#xff…

构建高效在线教育:SpringBoot课程管理系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理在线课程管理系统的相关信息成为必然。开发…

忘记设备IP 使用 nmap遍历查找设备IP

忘记设备IP 使用 nmap遍历查找设备IP nmap查找 设备IP 嵌入式设备在没有引出串口的情况下,如果忘了设备的IP,可使用nmap软件进行遍历查找,本文提供一个脚本进行自动化执行搜索过程。 nmap查找 设备IP #首先安装nmap工具#假设ip前缀为192.16…