当前位置: 首页 > news >正文

自动驾驶技术栈——DoIP通信协议

一、DoIP协议简介

DoIP,英文全称是Diagnostic communication over Internet Protocol,是一种基于因特网的诊断通信协议。

DoIP协议基于TCP/IP等网络协议实现了车辆电子控制单元(ECU)与诊断应用程序之间的通信,常用于汽车行业的远程诊断、远程车辆维修、车载固件的OTA升级等场景。

DoIP协议的设计初衷是为了解决基于CAN总线的传统诊断通信在应用时出现的带宽有限、灵活性不足、不方便远程访问等问题。早期的诊断通信方式是使用CAN总线进行数据传输,将诊断服务运行在ISO-15765标准定义的DoCAN协议上,而基于ISO-13400标准的DoIP协议结合了现代车载以太网和TCP/IP协议的优势,为车载诊断通信提供了更大的吞吐量和更快的响应速度,让汽车只要连接了以太网便可以实现诊断通信。

二、DoIP协议的优点

支持身份校验和加解密功能,以防止未经授权的网络访问和数据盗窃。

硬件上采用了标准以太网设备和电缆,不需要额外接入VCI转换器,降低了硬件成本。

支持高效的海量数据处理,节省了ECU固件刷写的时间。

基于标准的TCP/IP协议进行通信,可以与其他现有的以太网协议进行集成和交互。

应用广泛,逐渐被越来越多的汽车制造商和诊断工具制造商采用,有望成为汽车行业的诊断通信标准。

采用网络编程即可实现,配置和部署灵活,支持多种应用场景。

三、DoIP协议的潜在风险

通信过程依赖以太网的传输质量,会因为网速导致诊断设备和车辆之间的响应速度变慢。

随着现代汽车的联网程度越来越高,采用DoIP协议进行通信会增加汽车遭受网络攻击的风险,即使在TCP通信阶段使用TLS加密,也存在很多安全漏洞,比如网络中的恶意代码可以伪装成DoIP网关并截获通信数据。

整个DoIP协议栈的代码是基于TCP/IP协议的API进行开发的,和大多数网络编程场景一样,会存在丢包、传输延迟等底层问题。

四、DoIP协议的分层

DoIP协议的传输层:采用TCP/UDP协议进行实现。

DoIP协议的网络层:采用IP协议进行实现。

DoIP协议的应用层or会话层:采用UDS诊断协议进行实现。

DoIP协议将标准的UDS消息封装在TCP/IP协议的数据包中,让UDS消息可以通过以太网或WLAN进行传输。

五、DoIP协议的消息体结构

DoIP报文的消息体组成:DoIP Header + DoIP Payload。

DoIP Header:主要用来区分协议的版本。

DoIP Payload:主要用来标注发送方地址SA、接收方地址TA、诊断消息体。

1.DoIP报文头部的构成:

(1).协议版本(Proto Version)

参数长度:1字节

含义:表示正在使用的 DoIP 协议版本,例如0x01、0x02、0x03。

举例:

0x00: 预留

0x01: DoIP ISO/IDS 13400-2:2010

0x02: DoIP ISO 13400-2:2012

0x03: DoIP ISO 13400-2:2019

(2).协议版本的反码(Inv Version)

参数长度:1字节

含义:表示协议版本的按位取反,例如协议版本为0x03,则此值为0xFC。

(3).载荷类型(Payload Type)

参数长度:2字节

含义:常用的载荷类型有车辆识别、诊断消息传输和路由激活等。

常见的载荷类型:

(4).载荷长度(Payload Length)

参数长度:4字节

含义:表示除去Header的长度以后,DoIP报文的数据包部分的长度。

完整的DoIP报文样例:

2.DoIP报文的消息体构成

发送方地址(Source Address)

接收方地址(Target Address)

诊断命令(UDS Message)

六、DoIP网络拓扑结构

协议文档ISO13400-2中提供的结构如下:

整车的网络拓扑分为两部分,即内部网络和外部网络。

关键元素:

1.外部测试设备(External test equipment)

OBD诊断工具或其他诊断仪,可以理解为DoIP协议中的客户端。

2.DoIP网关(DoIP Gateway)

该网关负责转发DoIP消息,为了寻址方便,DoIP网关中通常存储了ECU的地址map。

它同时连接了IP网络和非IP网络上的DoIP节点,并向这些节点转发诊断消息。

通常采用MCU设备来扮演DoIP网关角色。

3.DoIP边缘节点网关(DoIP edge node gateway)

它的功能与DoIP网关类似,它的子网上也挂载了多个ECU。

外部测试设备和DoIP边缘节点网关之间有一条称为激活线的线路,该线路可以使DoIP协议生效。

该网关是车载网络和车载外网络之间的接入点,它负责将车内网络与车外网络进行隔离,避免非法的网络访问。

通常采用MPU设备来扮演DoIP边缘节点网关角色。

4.DoIP节点(DoIP Node)

物理结构上,DoIP节点是指保持以太网连接并支持DoIP协议的ECU设备。

代码实现上,DoIP节点是指运行在ECU设备上的各种诊断应用程序。

5.网络节点(Network Node)

连接在IP网络上但没有实现DoIP协议的节点。

补充:激活线的作用是减少电磁干扰和降低网络带宽 ,在不需要诊断通信的时候,将激活线对应的电压拉低,需要诊断通信的时候,将激活线对应的电压拉高。

七、DoIP协议的通信场景

ISO-13400协议文档中介绍了多个场景,这里列举两种最常见的,帮助理解。

1.诊断仪与车辆的一对一连接,用于对特定的车辆进行诊断,排除其他设备的干扰。

2.诊断仪与车辆的一对多连接,用于同时刷写多个车辆上的ECU固件。

八、DoIP协议端口分配

1.车辆发现场景

涉及到多播通信,采用UDP通信端口,端口名是UDP_DISCOVERY,端口号是13400。

2.诊断会话场景

需要先建立连接,采用TCP通信端口,端口名是TCP_DATA,端口号是13400。

车辆发现与诊断会话的通信时序如下:

九、DoIP通信时序图

DoIP通信分为五个阶段:

step.01.建立物理连接,激活线将DoIP网关激活。

step.02.车辆发现。

step.03.选择车辆并建立TCP连接。

step.04.建立诊断会话。

step.05.诊断请求与响应。

1.会话建立时序

2.外部测试仪发起连接时的IP分配时序

参考阅读

DoIP UDS Server Demo — RAPIDSEA 1.2 documentation

DoIP vs. Traditional Protocols in Vehicle Maintenance Guide in 2025

https://embitel-stage.embdev.in/wp-content/uploads/DoIP-Factsheet-Embitel.pdf

Guide to the ISO13400 Protocol - UDS on automotive DoIP protocol

相关文章:

  • 如何让rabbitmq保存服务断开重连?保证高可用?
  • tryhackme——Lateral Movement and Pivoting
  • 学习threejs,使用Physijs物理引擎,加载各种几何体网格对象
  • 【Web前端开发】CSS基础
  • vue2关闭eslint
  • 通义千问席卷日本!开源界“卷王”阿里通义千问成为日本AI发展新基石
  • Kotlin 懒初始化值
  • Cabot:开源免费的 PagerDuty 替代品,让系统监控更简单高效
  • 力扣 旋转图像
  • 十五、多态与虚函数
  • 在MyBatis Plus里处理LocalDateTime类型
  • Termius ssh连接服务器 vim打开的文件无法复制问题
  • 【Java ee初阶】IP协议
  • 进程和线程
  • GTC2025——英伟达布局推理领域加速
  • 什么是Vim
  • 神经生物学+图论双buff,揭示大脑语言系统的拓扑结构
  • 探秘高可用负载均衡集群:企业网络架构的稳固基石
  • EnumUtils:你的枚举“变形金刚“——让枚举操作不再手工作业
  • ARM-CortexM固件升级相关问题研究
  • 国羽用冠军开启奥运周期,林丹:希望洛杉矶奥运取得更好成绩
  • 男子发寻母视频被警方批评教育,律师:发寻亲信息是正当行为
  • 中医的千年传承:网络科学描绘其演化之路|PNAS速递
  • “饿了么”枣庄一站点两名连襟骑手先后猝死,软件显示生前3天每日工作超11小时
  • 社恐也能嗨起来,《孤独摇滚》千人观影齐舞荧光棒
  • 宇数科技王兴兴:第一桶金来自上海,欢迎上海的年轻人加入