首发于汽车控制器(ECU)网络诊断技术交流
本文是关于DoIP技术的第一篇文章,主要进行一些概念介绍,具体的细节会在后续的文章中和大家探讨。
DoIP是Diagnostic communication over Internet Protocol 的简称,顾名思义,就是通过网络协议进行诊断通信。这里的网络协议,指的就是OSI七层模型中,通用计算机网络所使用的从层4到层1这四层协议。
DoIP由ISO13400 系列标准定义,作为实现基于Ethernet的诊断通信的方案。本标准的各部分内容如下:
— Part 1: General information and use case defnition
— Part 2: Transport protocol and network layer services
— Part 3: Wired vehicle interface based on IEEE 802.3
— Part 4: Ethernet Diagnostic Connector
— Part 5: Conformance test specifcation
我这里只有前四个,不知道第五个测试标准是否已经定义完了。
DoIP的优势有以下几点:
ISO13400定义的DoIP诊断中各层次所使用的标准号
上图展示了DoIP通信完整协议栈所使用的标准号。
ISO13400-1处于应用层(层7)之上,是对一些通用信息、应用场景的描述。
应用层基于ISO14229-1和ISO14229-5,前者是UDS的完整定义,后者是UDS通过网络协议传输的实现。
会话层(层5),ISO14229-2对于所有的诊断通信都是一样的,目的是为上层提供统一的接口,使上层应用不需要随着底层通信技术的变化而改变。
传输层和网络层(层4和层3)由ISO13400-2定义,ISO13400-2中规定了DoIP通信在传输层中使用TCP和UDP协议,在网络层中使用IPv4或IPv6。此标准中还定义了专属于DoIP通信的信息内容,这些信息和上层的诊断命令共同构成了传给TCP或UDP协议的SDU。
ISO13400-2定义了DoIP诊断通信对Ethernet数据链路层(层2)和物理层(层1)的要求,比如,规定DoIP通信在这两层上支持100BASE-TX (100 Mbit/s Ethernet) 和10BASE-T (10 Mbit/s Ethernet) 两种方案。
DoIP数据的基本结构
DoIP数据映射到以太网帧中
DoIP数据作为SDU层层向下传递,直至构成完整的以太网帧,通过物理层的介质发送出去。DoIP的数据内容分为5个部分:
应用场景
ISO13400中定义了DoIP的4种使用场景,如下四幅图所示:
点对点直连
多台外部测试设备分别和多台汽车在局域网内通过交换机点对点连接
一台外部测试设备跨越本地网络与多台车辆连接
外部测试设备的多个应用层实体(在一台硬件或多台硬件上)与单个车辆连接
路由机制
根据隐藏在Gateway后面的控制器的诊断类型的不同(比如有的通过DoIP,有的通DoCAN等),DoIP的路由机制可以分为两种,分别是CutThrough(以太网对以太网) 和Store&Forward-Routing (以太网对CAN, CAN FD 和LIN等)。
我用PPT粗略地画了两个示意图展示一下:
CutThrough
Store&Forward-Routing
原理很简单,当网关后面被诊断的ECU也支持DoIP时,则网关每收到一个以太网帧,只需要更改以太网帧包头中的地址信息即可转发出去。而如果网关后面被诊断的ECU不支持Ethernet,则网关需要完整地接收所有的诊断数据之后,再从应用层开始重新组织适合其他总线传输的数据帧。