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

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

1 摘要

本文继续对ISO 13400-2定义的节点管理报文进行介绍,主要对路由激活请求/响应报文以及在线检查请求/响应报文的作用、帧结构以及示例进行介绍。
上文回顾:
车载以太网网络测试-19【传输层-DOIP协议-2】
在进行详细介绍之前,还是先回顾一下DOIP诊断通信流程的示意图,如下图:
原文链接:
车载网络测试-DOIP诊断通信流程分析
DOIP诊断通信流程示意图

2 0x0005:Routing activation request报文

在车辆发现阶段结束后,外部诊断仪已经知道了对哪台车以及哪个DoIP节点进行诊断,也获取了必要的信息,这时就需要发送路由激活请求报文,在诊断设备和被诊断的DoIP节点间建立起TCP连接,以便于发送诊断数据(诊断报文都是用TCP来发送的)。

2.1 Routing activation request报文的作用

DOIP(Diagnostics over Internet Protocol)协议中的 Routing Activation Request 报文是用于在车辆诊断通信中激活诊断通信路径的重要报文。
它的主要作用如下:

  • 激活通信路径:
    在DOIP协议中,诊断通信的双方(如诊断工具和车辆ECU)需要建立一个逻辑连接,才能进行后续的诊断数据传输。
    Routing Activation Request 报文用于请求激活某个特定的通信路径,使诊断工具能够与目标ECU建立连接。

  • 工作流程:

    • 诊断工具向目标ECU发送 Routing Activation Request 报文。
    • 目标ECU接收到请求后,检查自身状态和请求参数。
    • 如果请求有效,ECU会回复 Routing Activation Response 报文,确认通信路径已激活。
    • 诊断工具收到确认后,即可开始发送诊断请求(如读取故障码、写入数据等)。

Routing Activation Request 报文是DOIP协议中用于建立诊断通信连接的关键报文。它确保了诊断工具与目标ECU之间的通信路径被正确激活,为后续的诊断操作提供了基础。

2.2 Routing Activation Request 报文帧结构

报文的数据格式如下:
DOIP协议的Routing Activation Request报文帧结构如下:

字段长度(字节)描述
Source Address(SA)2发送方的逻辑地址
Activation Type1激活类型,表示请求的路由激活类型
Reserved by this document4保留字段,通常为 0x00000000
Reserved for VM-specific use4保留字段,通常为 0x00000000

数据共11字节,包含以下内容:
1.源地址(SourceAddress):
外部诊断设备的逻辑地址。这个逻辑地址用于对某个特定的DoIP节点进行寻址,与UDSonCAN中的CAN ID是类似的概念,是在网络架构设计阶段就分配好的。

标准中的范围划分如下图所示:
在这里插入图片描述
其中:

  • 红色框内的范围用于诊断设备的逻辑地址,0x0E00-0x0E7F用于OBD诊断,0x0E80-0x0EFF用于增强型诊断。
  • 蓝色框内的逻辑地址用于DoIP节点,与UDSonCAN类似,节点的逻辑地址有两个,一个是物理逻辑地址,在0x0001-0x0DFF或0x1000-0x7FFF范围内,另一个是功能寻址,是0xE000。

2. 激活类型(activation type)
用于诊断设备通知被诊断DoIP节点进入哪种类型的诊断状态。定义如下:
在这里插入图片描述

  • 表示请求的路由激活类型,常见的值包括:
    • 0x00:默认激活类型,用于常规诊断通信。
    • 0x01:用于全球统一的车辆诊断(World Wide Harmonized On-Board Diagnostics)。
    • 0xE0:用于中央安全相关的诊断通信。

2.3示例报文

流程如下图所示,先与DoIP实体通过TCP建立连接:
在这里插入图片描述

然后测试仪发送负载类型为0x0005的路由激活请求,Doip实体响应负载类型为0x0006的激活响应报文。
在这里插入图片描述

3 0x0006:Routing activation response报文

3.1 Routing activation response报文的作用

在DoIP协议中,Routing activation response报文的作用是确认诊断请求的激活状态。
具体来说,Routing activation response报文的作用包括:

  1. 确认激活请求:当诊断工具发送Routing activation request报文请求激活某个通信通道时,车辆中的DoIP实体(如ECU)会通过Routing activation response报文来确认该请求是否成功。

  2. 返回激活状态:Routing activation response报文中包含一个状态码,用于指示激活请求的结果。例如,状态码可以表示成功激活、激活失败或激活被拒绝等。

  3. 提供附加信息:除了状态码外,Routing activation response报文还可能包含其他相关信息,如激活的通信通道的详细信息或错误描述。

  4. 确保通信准备就绪:通过发送Routing activation response报文,车辆中的DoIP实体通知诊断工具通信通道已准备好进行后续的诊断数据传输。

总结来说,Routing activation response报文的主要作用是确认诊断请求的激活状态,并确保诊断工具和车辆之间的通信通道已成功建立,为后续的诊断数据传输做好准备。

3.2 Routing activation response报文帧结构

路由激活响应报文主要是对上面路由激活请求报文的响应,的数据格式如下:
在这里插入图片描述
响应中的参数定义如下:

  1. 诊断设备逻辑地址(Logical address of the external test equipment):诊断仪的逻辑地址。
  2. DoIP节点逻辑地址(Logical address of the responding DoIP entity):DoIP节点物理逻辑地址。

在这里插入图片描述
ISO 13400-2 是诊断通信标准的一部分,主要涉及基于IP的诊断通信(DoIP,Diagnostics over Internet Protocol)。在DoIP协议中,路由激活响应码(Routing Activation Response Code)是一个关键参数,用于指示路由激活请求的处理结果。

  1. 路由激活响应码(Routing activation response code):1字节,它由DoIP实体(如车辆中的DoIP网关或ECU)发送,以告知请求方(如诊断工具)路由激活请求的处理状态。它确保了诊断通信的可靠性和高效性,并提供了明确的错误处理机制。通过理解和使用路由激活响应码,诊断工具可以更好地管理与车辆ECU的通信。比如:用来表示TCP连接建立是否成功,以及不成功的原因。
    定义如下表所示,Required Action栏展示了DoIP节点在返回响应后应该采取的操作。
    在这里插入图片描述
  2. 其余字段为预留或自定义字段,不常用。

3.3 常见Routing activation response code示例

  1. 路由激活成功(10)
    在这里插入图片描述
  2. 不支持的SA地址(0x00)
    如下图, 0x0101是DoIP实体不支持的SA地址,所以DoIP实体响应了0x00 状态码。
    在这里插入图片描述
  3. 已经激活的TCP连接上使用不同的SA地址(0x02)
    如下图,在已经激活的TCP连接上,使用了不同的SA地主,DoIP实体报0x02状态码
    在这里插入图片描述
  4. 不同的TCP连接上使用相同的SA地址(0x03)
    如下图,在不同的TCP连接上,不可以使用相同的SA地址,否则Doip实体报0x03状态码
    在这里插入图片描述

4 0x0007:Alive check request与0x0008:Alive check response报文

在ISO 13400-2标准中,0x0007:Alive Check Request 报文用于诊断通信中的连接保持机制。它的主要作用是确认通信双方(客户端与服务器)之间的连接是否仍然活跃

4.1 Alive check request与Alive check response报文作用

  1. 检测连接状态
    客户端(如诊断工具)向服务器(如车辆ECU)发送Alive Check Request报文,以确认服务器是否仍然在线并能够响应请求。

  2. 保持会话活跃
    在某些诊断协议中,会话可能会因为长时间无通信而超时关闭。通过定期发送Alive Check Request报文,可以防止会话超时,保持会话的活跃状态。

  3. 网络健康检查
    通过发送Alive Check Request报文,可以检测网络通信是否正常,是否存在丢包或延迟等问题。

应用场景

  • 在长时间诊断过程中,定期发送Alive Check Request以保持会话。
  • 在网络通信不稳定时,检测连接是否正常。
  • 在测试或调试过程中,验证诊断通信的可靠性。

不携带DoIP数据,报文中只有DoIP报头。
在这里插入图片描述

4.2 Alive check request与Alive check response报文示例

前提:已经建立了TCP连接,测试仪再次发送路由激活请求的时候,DoIP实体才会发出在线检测请求报文。

  • 情况1:
    如下图日志,在第二次TCP连接后,发送路由激活请求后,DoIP实体发送负载类型为0x0007的在线检测报文,这里测试仪给了逻辑地址为0x0008的响应报文,并且Soure address参数为0E80,告诉DoIP实体,SA地址为0E80的诊断仪仍然在线。
    在这里插入图片描述
  • 情况2:
    Doip实体发出在线检测报文后,诊断设备没有在超时时间(T_TCP_Alive_Check )内给出响应,Doip节点会主动断开TCP连接,并且给出路由激活肯定响应报文。
    注意,TCP断开连接的端口是第一次TCP连接时的端口。
    在这里插入图片描述

4.3 0x0008:Alive check response

诊断设备收到DoIP节点Alive check request报文后,发送Alive check response报文,数据中携带两字节的诊断设备逻辑地址:
在这里插入图片描述
在这里插入图片描述

此外,诊断设备也可以在没有收到请求报文的情况下向DoIP节点发送该响应报文,以通知DoIP节点诊断设备仍然在线,类似于CAN总线的3E 00/80报文。

5 总结

上个专题与本文对ISO 13400-2定义的所有节点管理报文的作用、帧结构以及示例进行了详细介绍。希望能对大家理解DOIP协议所有帮助!

相关文章:

  • OpenCV图像处理基础2
  • 内网穿透的应用-如何用Docker本地部署轻量级个人云盘ZFile手机电脑异地远程访问
  • 计算属性set方法没被执行的原因
  • React如何导入md5,把密码password进行md5加密
  • uni-app——数据缓存API
  • 深入解析 Java Stream API:筛选根节点的优雅实现!!!
  • 论文阅读笔记:Denoising Diffusion Probabilistic Models (2)
  • Jenkins Pipeline
  • 详解套接字 Socket 与网络 IO 模型演进
  • Android使用RxHttp进行国密4加密解密
  • 如何在IPhone 16Pro上运行python文件?
  • SQL Server 2014 (x64) 中文版安装与使用指南(附安装包)
  • 深入解析 Java Stream API:筛选子节点的优雅实现!!!
  • 金桔网桥路由版3
  • Excel(进阶篇):powerquery详解、PowerQuery的各种用法,逆透视表格、双行表头如何制作透视表、不规则数据如何制作数据透视表
  • 网络华为HCIA+HCIP 网络编程自动化
  • 《Python实战进阶》No26: CI/CD 流水线:GitHub Actions 与 Jenkins 集成
  • Neo4j GDS(Graph Data Science)库安装(Mac版)
  • 网络知识编-数据链路层(以太网 局域网通信 ARP协议 ARP 欺骗 DDos 攻击)
  • Elasticsearch零基础入门:从安装到入门
  • 特朗普访中东绕行以色列,专家:凸显美以利益分歧扩大
  • 有关部门负责人就《新时代的中国国家安全》白皮书答记者问
  • 新造古镇丨乌镇的水太包容了,可以托举住任何一种艺术
  • 构建菌株有效降解有机污染物,上海交大科研成果登上《自然》
  • 新华时评:直播间里“家人”成“韭菜”,得好好管!
  • 中国以优化营商环境为支点,为全球企业提供可预期市场环境