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

车载以太网网络测试-18【传输层-DOIP协议-1】

目录

  • 1 摘要
  • 2 DOIP协议的概述
    • 2.1 DOIP协议背景
    • 2.2 ISO 13400概述
  • 3 DOIP报文的帧结构以及实例
    • 3.1 DOIP报文帧结构
    • 3.2 实例示例
  • 总结

1 摘要

在汽车网络通信中,诊断扮演了非常重要的角色,无论是故障诊断、整车下线配置,还是ECU的软件更新、远程OTA等,都离不开诊断技术。传统基于CAN的诊断已经非常普遍了,那么如果应用了车载以太网,诊断该如何实现呢?答案是DoIP。汽车诊断使用的是UDS(ISO 14229统一诊断服务),那么使用了DoIP,是不是就不需要UDS了?DoIP只是一个传输协议,用于传输诊断服务,在车载以太网中,UDS和在其他汽车总线技术中使用的是一致的,不同的是传输是通过DoIP实现的。
DoIP (Diagnostic communication over Internet Protocol), 是基于以太网的通讯协议对UDS协议的数据进行传输,参考标准ISO13400。本文主要对ISO 13400-2进行解析。

2 DOIP协议的概述

2.1 DOIP协议背景

车载以太网DOIP(Diagnostics over Internet Protocol)协议的引入背景主要源于以下几个方面的需求和发展趋势:

  1. 车辆电子系统复杂性的增加
    随着汽车电子技术的快速发展,现代车辆中的电子控制单元(ECU)数量大幅增加,车辆的功能也变得越来越复杂。传统的诊断协议(如K线、CAN总线)在带宽和效率上逐渐无法满足日益增长的数据传输需求,尤其是在诊断、软件更新和远程控制等场景中。

  2. 高带宽需求
    车载以太网作为一种高带宽的通信技术,能够支持更快速的数据传输,满足现代车辆对大数据量处理的需求。DOIP协议基于以太网,能够利用以太网的高带宽特性,实现更高效的诊断数据传输。

  3. 标准化和兼容性
    随着汽车行业对标准化和兼容性的要求越来越高,DOIP协议应运而生。DOIP是ISO 13400标准的一部分,旨在为车辆诊断提供一个统一的、基于以太网的通信协议,确保不同厂商和车型之间的诊断系统能够兼容。

  4. 远程诊断和OTA更新的需求
    随着车联网技术的发展,远程诊断和OTA(Over-The-Air)软件更新成为汽车行业的重要趋势。DOIP协议支持基于IP网络的通信,能够更好地支持远程诊断和OTA更新功能,提高车辆的维护效率和用户体验。

  5. 未来技术发展的前瞻性
    DOIP协议的引入也是为了适应未来汽车技术的发展,如自动驾驶、智能网联汽车等。这些技术对通信带宽、实时性和可靠性提出了更高的要求,车载以太网和DOIP协议能够为这些技术提供更好的支持。

  6. 降低成本和复杂性
    通过使用以太网作为统一的通信网络,可以减少车辆中不同通信协议的数量,从而降低系统的复杂性和成本。DOIP协议的引入有助于简化车辆的网络架构,提高系统的可维护性和可扩展性。

2.2 ISO 13400概述

ISO 13400 是关于 DoIP(Diagnostics over Internet Protocol,基于互联网协议的诊断) 的标准,完整的 ISO 13400 标准包括以下部分:

  1. ISO 13400-1: 概述和用例
  • 这一部分提供了 DoIP 协议的概述,包括其应用场景、用例和基本概念。
  • 它定义了 DoIP 在车辆诊断中的角色和目标。
  1. ISO 13400-2: 传输协议和网络层服务

    • 这一部分详细描述了 DoIP 的传输协议和网络层服务。
    • 它涵盖了基于 TCP/IP 的通信机制,包括数据格式、消息结构和网络层功能。
  2. ISO 13400-3: 基于以太网的物理层和数据链路层

    • 这一部分规定了 DoIP 在以太网上的物理层和数据链路层要求。
    • 它定义了以太网硬件(如电缆、连接器)和通信协议的具体实现。
  3. ISO 13400-4: 一致性测试

  • 这一部分提供了对 DoIP 实现的一致性测试要求和方法。
  • 它确保不同厂商的 DoIP 实现能够互操作并符合标准。
  1. ISO 13400-5: 扩展诊断会话

    • 这一部分(如果存在)可能涉及 DoIP 的扩展功能或高级诊断会话管理。
    • 具体内容可能因版本或发布状态而有所不同。
  2. ISO 13400-6: 安全机制

  • 这一部分(如果存在)可能涉及 DoIP 的安全机制,例如加密、认证和防止未经授权的访问。
  • 具体内容可能因版本或发布状态而有所不同。
  1. ISO 13400-7: 基于 IP 的远程诊断
    • 这一部分(如果存在)可能涉及通过互联网进行远程诊断的具体实现和要求。
  • DOIP协议在OSI的架构:

在这里插入图片描述

  • DoIP汽车网络传输架构:
    在这里插入图片描述

图中分为车内网(Vehicle network)和车外网(External network),车内网和车外网之间,有两组重要的线束,其中

  • 一组是用于数据传输的以太网线:就是我们常见的四线制TX标准网线

  • 一组是用于诊断功能激活的DOIP激活线:是用于车内诊断功能的激活。出于能耗和电磁干扰的考虑,要求非诊断通信期间,与诊断相关的功能处于关闭状态,这样一方面可以降低能耗,另一方面减少对网络带宽的消耗,从而降低电磁干扰。

  • 车内网(Vehicle network)

    • T1标准网线;车内DOIP节点数据传输;
    • 边缘节点(DoIP edge node gateway)
  1. 边缘节点(DoIP edge node)
    直接与外部诊断仪进行物理连接的节点,叫做边缘节点(DoIP edge node)
    ①边缘节点可作为一个网络交换机,将车内网与车外网组成同一子网;
    ②也可以作为一个网关,将车内网与车外网进行安全隔离,屏蔽非法的网络访问和网络攻击。

  2. DoIP网关节点(DoIP gateway)
    除了边缘节点之外,还有另一类网关,即车内的DoIP网关节点。
    车内DoIP网关节点的作用,是实现以太网到其他网络总线(如CAN、LIN)的报文路由,这样便实现了DoIP诊断与传统网络总线的兼容。多种网络总线汇聚到DoIP网关,这大大的降低了布线的复杂性,并且提高了各总线网络中ECU的诊断效率。

  3. DoIP节点
    车内网络中,还存在一般的DoIP节点,这些节点只支持对自身的诊断,而不具备路由功能。

  4. 网络节点(Network node)
    网络节点(Network node),不具备DoIP诊断功能,与DoIP节点共享网络资源。

  5. DoIP逻辑地址
    在车载以太网通信中,因为数据是逐层进行封装和处理的,所以在OSI网络模型中,从数据链路层开始,每一层都会有用于标识发送端或接收端的特定地址,如数据链路层的MAC地址、VLAN ID,网络层的IP地址和传输层的端口号。在DoIP层级中,用来标识DoIP实体的地址为DoIP逻辑地址(Logical address)
    在这里插入图片描述

ISO 13400中将逻辑地址分为物理逻辑地址(Physical logical address)和功能逻辑地址(Functional logical address),类似CAN中的物理寻址和功能寻址。
在车辆发现的过程中,收发两端会将对方的逻辑地址与IP地址进行映射,保证之后可正确进行诊断会话。逻辑地址长度为2个字节,在车辆声明报文、路由激活报文和诊断报文中都会携带

  1. DoIP端口
    不管是TCP还是UDP,都包含源端口号和目的端口号,在DoIP报文中用到了以下三种端口:
  • UDP_DISCOVERY:端口类型-UDP,端口号-13400
    该端口有以下两个应用场景:

    1. 被用于诊断设备发送给DoIP节点的车辆信息请求报文和DoIP节点控制报文,此时该端口在报文中被设置为目的端口。
    2. 被用于DoIP节点在没有收到请求的时候发送的UDP报文,如车辆声明报文。此时该端口同样被设置为目的端口,源端口可以为该端口,也可以由发送方动态定义。
  • UDP_TEST_EQUIPMENT_REQUEST:端口类型-UDP,端口号-动态定义(49152-65535)
    该端口由外部诊断设备在49152-65535范围内动态定义,用于诊断设备向DoIP节点发送的UDP报文,在报文中作为源端口,报文的目的端口应设置为UDP_DISCOVERY。
    当DoIP节点向诊断设备发送响应的时候,报文中的目的端口应设置为UDP_TEST_EQUIPMENT_REQUEST,源端口可以为UDP_DISCOVERY,也可以有DoIP节点动态定义。

  • TCP_DATA:端口类型-TCP,端口号-13400
    该端口用于外部诊断设备和DoIP节点之间的TCP通信,如路由报文和诊断报文。当诊断设备向DoIP节点发送报文时,使用TCP_DATA作为目的端口号;当DoIP节点向诊断设备发送报文时,使用TCP_DATA作为源端口号。

3 DOIP报文的帧结构以及实例

DoIP报文也是基于TCP或UDP,但在其报文的Payload起始段添加了DoIP报头(首部),用来区分不同的DoIP报文类型,实现不同的功能。DoIP报文的结构如下图所示:
在这里插入图片描述

车载以太网中的**DOIP(Diagnostics over Internet Protocol)**是一种用于车辆诊断的通信协议,它基于以太网传输诊断数据。DOIP报文帧结构主要包括以下几个部分:

3.1 DOIP报文帧结构

DOIP报文由以太网帧头DOIP协议数据组成。以太网帧头遵循标准以太网协议,而DOIP协议数据部分则是DOIP特有的结构。
DOIP协议报头包括以下几个字段:
在这里插入图片描述

  1. Protocol Version (协议版本)

    • 1字节,表示DOIP协议的版本号。例如,0x02表示DOIP协议版本2。
      常见值为0x02,表示ISO 13400-2:2012(虽然现在已经更新了2019版本,但当前大多数主机厂还是遵循2012版本来使用DoIP的);
      长度一字节,代表遵照ISO 13400 的那个版本,定义如下:
      0x00:Reserved
      0x01: DoIP ISO 13400-2:2010
      0x02: DoIP ISO 13400-2:2012
      0x03…0xFE: ISO 13400 reserved
      0xFF: default value for vehicle identification request messages
  2. Inverse Protocol Version (协议版本的反码)

    • 1字节,表示协议版本的反码。例如:协议版本 = 0x02,该字节 = 0x02 ^ 0xFF = 0xFD。
  3. Payload Type (负载类型)

    • 2字节,表示DOIP报文的类型。常见的负载类型包括:
      • 0x0001:车辆识别请求(Vehicle Identification Request)
      • 0x0002:车辆识别响应(Vehicle Identification Response)
      • 0x0005:诊断消息(Diagnostic Message)
      • 0x0006:诊断消息确认(Diagnostic Message ACK)
      • 0x0007:诊断消息否定确认(Diagnostic Message NACK)
  4. Payload Length (负载长度)

    • 4字节,表示负载数据的长度(以字节为单位)。指DoIP报文中DoIP层数据的长度,不包括DoIP报头,只是数据长度,4字节,可以为0,最大为0xFFFFFFFF(4GB)。
  5. Payload Data (负载数据)

    • 可变长度,具体内容取决于负载类型。例如:
      • 对于诊断消息(Payload Type 0x0005),负载数据包括诊断请求或响应数据。
      • 对于车辆识别响应(Payload Type 0x0002),负载数据包括车辆识别信息(如VIN码)。
      • 对于诊断报文(Payload Type 0x8001),负载数据包括逻辑地址和数据场。
        • 逻辑地址
          逻辑地址在DoIP报文中用于标识源或目标ECU(电子控制单元)。逻辑地址通常是一个16位的值,用于在车辆网络中唯一标识一个ECU。逻辑地址的具体值由车辆制造商定义,通常在诊断通信中用于路由诊断请求和响应。
          源逻辑地址 (Source Address): 标识发送诊断请求或响应的ECU。
          目标逻辑地址 (Target Address): 标识接收诊断请求或响应的ECU。
          在Payload Data中,逻辑地址通常出现在诊断消息的头部,用于指示消息的发送方和接收方。
        • 数据场
          数据场是Payload Data中的实际数据内容,通常包含诊断请求或响应的具体信息。数据场的结构和内容取决于具体的诊断服务(如UDS服务)。

3.2 实例示例

  1. 物理层(Physical Layer)
    物理层涉及以太网帧的传输,使用RJ45接口和双绞线进行通信。物理层的帧格式如下:
[前导码 (7 bytes)] [帧起始定界符 (1 byte)] [以太网帧数据]
  1. 数据链路层(Data Link Layer)
    数据链路层使用以太网帧格式,包含源MAC地址、目的MAC地址和以太网类型字段。
[目的MAC地址 (6 bytes)] [源MAC地址 (6 bytes)] [以太网类型 (2 bytes)] [以太网帧数据]

示例:

目的MAC地址:00:50:56:C0:00:08
源MAC地址:00:0C:29:AB:CD:EF
以太网类型:0x0800 (IPv4)
  1. 网络层(Network Layer)
    网络层使用IPv4协议,包含源IP地址、目的IP地址和协议类型字段。
[版本 (4 bits)] [头部长度 (4 bits)] [服务类型 (1 byte)] [总长度 (2 bytes)]
[标识 (2 bytes)] [标志 (3 bits)] [片偏移 (13 bits)]
[生存时间 (1 byte)] [协议 (1 byte)] [头部校验和 (2 bytes)]
[源IP地址 (4 bytes)] [目的IP地址 (4 bytes)] [IP数据]

示例:

版本:4
头部长度:5
服务类型:0x00
总长度:0x0046
标识:0x1234
标志:0x02
片偏移:0x0000
生存时间:0x40
协议:0x06 (TCP)
头部校验和:0xABCD
源IP地址:192.168.1.100
目的IP地址:192.168.1.200
  1. 传输层(Transport Layer)
    传输层使用TCP协议,端口号为13400(DoIP标准端口)。
[源端口 (2 bytes)] [目的端口 (2 bytes)] [序列号 (4 bytes)]
[确认号 (4 bytes)] [数据偏移 (4 bits)] [保留 (3 bits)] [标志 (9 bits)]
[窗口大小 (2 bytes)] [校验和 (2 bytes)] [紧急指针 (2 bytes)] [TCP数据]

示例:

源端口:50000
目的端口:13400
序列号:0x12345678
确认号:0x87654321
数据偏移:5
标志:0x018 (ACK, PSH)
窗口大小:0xFFFF
校验和:0x1234
紧急指针:0x0000
  1. DoIP层(DoIP Layer)
    DoIP层包含协议版本、负载类型、负载长度和负载数据。
[协议版本 (1 byte)] [反向协议版本 (1 byte)] [负载类型 (2 bytes)] [负载长度 (4 bytes)] [负载数据]

示例:

协议版本:0x02
反向协议版本:0x02
负载类型:0x8001 (Diagnostic Message)
负载长度:0x00000006
负载数据:[应用层数据]
  1. 应用层数据(Application Layer)
    应用层数据包含逻辑地址和诊断请求/响应。
[源地址 (2 bytes)] [目的地址 (2 bytes)] [诊断数据]

示例:

源地址:0x0E80 (ECU逻辑地址)
目的地址:0x0E81 (Tester逻辑地址)
诊断数据:0x10 0x03 (诊断请求:进入扩展会话)

6.完整报文示例

物理层:
前导码:0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA
帧起始定界符:0xAB

数据链路层:
目的MAC地址:00:50:56:C0:00:08
源MAC地址:00:0C:29:AB:CD:EF
以太网类型:0x0800

网络层:
版本:4
头部长度:5
服务类型:0x00
总长度:0x0046
标识:0x1234
标志:0x02
片偏移:0x0000
生存时间:0x40
协议:0x06
头部校验和:0xABCD
源IP地址:192.168.1.100
目的IP地址:192.168.1.200

传输层:
源端口:50000
目的端口:13400
序列号:0x12345678
确认号:0x87654321
数据偏移:5
标志:0x018
窗口大小:0xFFFF
校验和:0x1234
紧急指针:0x0000

DoIP层:
协议版本:0x02
反向协议版本:0x02
负载类型:0x8001
负载长度:0x00000006
负载数据:[应用层数据]

应用层数据:
源地址:0x0E80
目的地址:0x0E81
诊断数据:0x10 0x03

上述示例展示了从物理层到应用层的完整DoIP报文结构。每一层都有其特定的字段和功能,确保数据在车载以太网中的正确传输和处理。

总结

本文主要对DOIP协议的背景、功能、ISO 13400-2定义的报文帧头以及实例示例进行了介绍。希望以上内容对您理解车载以太网DOIP报文帧结构有所帮助!


http://www.kler.cn/a/594922.html

相关文章:

  • 根据模板将 Exce 明细数据批量生成 PPT 文档|邮件合并
  • 搭建React简单项目
  • PCDN 在去中心化互联网中的角色
  • 前端知识-CSS(二)
  • python自动化脚本编写-处理文件、数据分析
  • Vue.js 中的 Memoization:提升性能的缓存技术
  • MySQL 创建用户,建库,建表
  • 【Qt】信号signal是单向的
  • 【数学建模】灰色关联分析模型详解与应用
  • Nginx之Basic Auth认证
  • 算法刷题整理合集(五)
  • 飞算JavaAI:AI辅助编程工具在复杂业务场景中的应用实践
  • Kafka分区分配策略详解
  • Linux(九)fork复制进程与写时拷贝技术
  • ES--Mapping之日期时间类型
  • MATLAB神经网络优化1000个案例算法汇总
  • GaussDB 资源管理指南:冻结、解冻、释放与生命周期控制
  • Rasa(非Pro)开源意图识别聊天机器人本地部署及调试,从零到一构建学习
  • Oracle+11g+笔记(11)-数据库的安全管理
  • Elasticsearch 数据一致性保障机制