详解以太网诊断DoIP

这篇具有很好参考价值的文章主要介绍了详解以太网诊断DoIP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

摘要:

01.概述

02.DoIP的网络拓扑

03.DoIP的接收方式和协议格式

3.1 端口

3.2 协议格式

3.3Protocol version与Inverse protocol version

3.4 Payload type

3.5 Payload length

3.6 Payload

​​​​​​​04.DoIP诊断启动与使用

4.1 连接建立

4.2 车辆发现

4.3 会话建立


摘要:

DoIP在车载领域的应用首先汽车系统的整体框架要能够支持DoIP,正因为车载以太网的快速发展,相较于传统的车载系统,目前的车载系统的整体框架都会加入一层DoIP协议层,在TCP/IP之上。

01.概述

所谓的DoIP其实就是基于以太网的通讯协议对UDS协议的数据进行传输,即Diagnostic communication over Internet Protocol。其本身也是一种协议,规范于ISO13400标准。由于DoIP可以传输大量数据,以及响应速度快,且可以通过以太网进行远程诊断,因此DoIP逐步成为代替传统的CAN等总线方式,成为车载网络诊断的必然趋势。

DoIP在车载领域的应用首先汽车系统的整体框架要能够支持DoIP,正因为车载以太网的快速发展,相较于传统的车载系统,目前的车载系统的整体框架都会加入一层DoIP协议层,在TCP/IP之上。并且为了更好的配合OBD诊断,远程诊断,FOTA等等技术,对整体的车载架构进行了调整,利用swich将MPU,MCU,其它以太网ECU统统通过以太网进行连接,并对外网与内网进行隔离。
当然,DoIP并不仅仅只是UDS的载体,虽然在ISO13400标准中内容不多,但是它也有自己的一些逻辑,不可能说在TCP/IP之上加了一层封装就完成了自己的任务,这样的话安全性就没有保证了,毕竟车载以太网通过网络能够将车内与车外进行网络的连接,而DoIP又是诊断的入口,这个门口如果不好好看住,会存在安全性的问题的。
简单的说,DoIP能够进行车辆发现,状态查询,路由激活(含安全认证),诊断数据收发,这些内容将在后续进行详细的展开。
有了DoIP,那么UDS的数据传输就可以搭载在DoIP之上,并在DoIP前序逻辑都OK的情况下,进行UDS的传输。当然DoIP之上也可以不搭载UDS数据,这属于客户定制,能够满足以太网传输的一些其它特殊需求。

02.DoIP的网络拓扑

在ISO13400-2中有如下一张图,比较具有代表性,我们本文主要就根据此网络拓扑图来介绍DoIP的网络拓扑

详解以太网诊断DoIP

从图中不难看出,整车的网络拓扑被分为了两个部分,即内部网络和外部网络,图中的network node可以默认为支持以太网连接的某个节点,如,雷达,摄像头等,但是不支持DoIP协议,不过大家可以对名称中含有DoIP前缀的节点进行网络分析。从图中我们很容易看出DoIP的网络拓扑有以下几个角色组成,

1.External test equipment

此部分为外部测试设备,通常为OBD诊断仪或者其他诊断客户端


2. DoIP edge node gateway

此部分和DoIP gateway有什么区别?其实没什么区别,唯一的区别就是多了个使能线的判断,从图中可以看出External test equipment和DoIP edge node gateway之间有一条线叫做Activation line。那么这条线的功能就是对协议栈进行使能作用的,当然External test equipment和DoIP edge node gateway之间不只是Activation line相连的,这个图只是功能示意图,少了很多细节,其实是通过标准的OBD-II接头相连的,其中一个针脚就是Activation line。具体可以看ISO 13400-4的介绍。

回过来,这个角色的作用是什么?

首先它是个gateway,作为一个网关它的子网内挂载着若干ECU,与DoIP gateway一样

其次它是车内网与车外网交互的一个入口,具有控制着DoIP协议栈是否工作的一个开关功能。

该角色可以同时支持Server端和Client端,Server好理解,测试设备可以诊断该网关下的某个ECU节点。那么Client端是怎么回事呢?想象一下,如果DoIP edge node gateway作为入口,那么怎样和内部其它子网的DoIP ECU进行交互呢?当然是由DoIP edge node gateway进行转发。这只是其中一个应用场景,当进行转发的时候会进行身份切换,即由Server端切换到Client端。另外一个场景是OTA升级,DoIP edge node gateway的应用层可以跑一个OTA客户端程序,进行对内网ECU的诊断及刷写,此时就是一个Client身份。

3. DoIP gateway

DoIP gateway与角色二 DoIP edge node gateway区别不是很大。实际的应用场景通常会让MCU充当这个角色,而MPU充当DoIP edge node gateway的角色,也有反过来的情况,那么该角色通常单单的跑Server端程序。


4. DoIP node

该角色很好理解,对支持以太网连接的同时支持DoIP协议的ECU认为是DoIP node。

该角色通常单单的跑Server端程序。

整个车辆网络由四个角色组成,外部测试设备作为客户端,对车内网的各个支持DoIP协议栈的ECU进行诊断。(部分CAN ECU通常挂载在MCU上,由MCU进行DoIP转DoCAN的路由)车外网的外部测试设备通过OBD-II与车内网的edge gateway进行通信,edge gateway用来使能车内网的DoIP功能。在路由打通后,发送的诊断数据根据目的地址的不同分别流向车内网的不同ECU。

03.DoIP的接收方式和协议格式

3.1 端口

从DoIP名字可以看出,该协议是在TCP/IP之上的,那么要想接收DoIP协议的报文,协议书规定需要监听一个专门分配给DoIP协议栈使用的端口号即13400,UDP,TCP都要监听此接受端口,而发送端口是在一个范围内的随机值[49152~65535],当然代码中协议栈要对对端的发送端口进行缓存,用于回送数据。

指定了端口号,客户端和服务端可以在此端口上进行收发数据。那么对该端口收到的数据是否真的是DoIP报文,就行对该网络报文进行解析。(有可能是网络攻击,有可能是其它应用恰好使用了该端口号)

对收到的报文进行解析,就涉及到DoIP协议的构成,只有符合该写一点规范才认为是合法有效的DoIP报文。

3.2 协议格式

DoIP报文由协议头(header)+ 负载(payload)组成

协议头[8 byte]由下面四个字段组成

详解以太网诊断DoIP

Protocol version [1 byte]

Inverse protocol version [1 byte]

Payload type [2 byte]

Payload length [4 byte]

负载[N byte] 根据实际的payload type,负载数据会不同

3.3Protocol version与Inverse protocol version

通常Protocol version为0x02,目前0x02以上的值目前是reserved状态

Inverse protocol version是Protocol version的取反的值,此例0x02去反后为0xFD

协议书上特别说明了Protocol version可以为0xFF,设这个值的作用是,当客户端和服务端的协议版本不匹配,可以设置此值绕过协议头版本不匹配而拒绝请求的case。

3.4 Payload type


payload type可以代表DoIP协议栈所能支持的功能,列举如下(特意分开了Server支持的type及Client支持的type)

DoIP SERVER

详解以太网诊断DoIP

DoIP Client

详解以太网诊断DoIP

如上分开描述,是因为在代码实现上,可以将逻辑拆分。


即Server端只关心自己支持的payload type,客户端只关心自己支持的payload type,不支持的可以忽视掉。有利于模块拆分及组合,有利于实现上一节所讲个各个角色,将来通过配置文件的配置,来表示不同的角色。

3.5 Payload length

payload length这里分配了4字节,也就是所DoIP报文最大传输4 GB /4294967295 bytes,即0xFFFFFFFF。它只是个允许的范围,通常来说通过DoIP进行诊断也就几字节到几十字节,而升级通常ECU的升级包也就几MB。所以4 GB只是个理论上限。

该值可以做长度的有效性验证,因为除了诊断数据,其它payload type都是有固定长度的。

还可以做什么?其实做开发时还要考虑遇到如下情况该怎么处理

1. 数据粘连

2. 数据截断

3. 异常的超大size

4. 超过协议栈可以处理size

3.6 Payload

这里的负载是指的是DoIP协议的负载,当然当Payload type为诊断类型时,其负载除了DoIP自身的内容,

还包含了UDS数据,供上层UDS模块进行进一步的解析。

因为每个Payload type负载都不同,这里不做解释,在后续功能章节,进行详细的介绍

04.DoIP诊断启动与使用

4.1 连接建立

详解以太网诊断DoIP

DoIP实体内管理着一个DoIP connection table ,用来记录和维护诊断通信的逻辑连接。上图就是这个表中的一个元素,即一个逻辑连接的状态机。上图中的方框就是连接所处的状态,[Step]是状态之间跳转时发生的事情。

[Step1] 当一个新的套接字建立,逻辑连接的状态就从“listen”跳转到“socket initialized”,同时启动一个定时器, initial inactivity timer。

[Step2] 当DoIP实体接收到tester发来的一个routing activation信息后,逻辑连接的状态就从“socket initialized”跳转到“Registered [Pending for Authentication]” ,此时 initial inactivity timer被停止,启动一个名为general inactivity timer的定时器。

[Step3] 在完成Authentication之后,逻辑连接的状态就从“Registered [Pending for Authentication]”跳转到“Registered [Pending for Confrmation]” 。

[Step4] 在完成Confrmation之后,逻辑连接的状态就从“Registered [Pending for Confrmation]”跳转到“Registered [Routing Active] ” 。

[Step5] 如果initial timer 或general inactivity timer 过期后仍没收到后续请求,或者authentication 和 confrmation 被拒绝了,又或者外部测试设备对alive check 消息没有响应,则逻辑连接进入“Finalize”状态。

[Step6]进入Finalize后,此时TCP套接字将被关闭,并重新回到“listen”状态。

4.2 车辆发现

详解以太网诊断DoIP

当DoIP实体和外部测试设备都连接到一个网络中时,它们会利用DHCP协议获得一个属于自己的IP地址。在网络中,路由器作为DHCP server,为新加入到该网络中的设备分配IP地址。在获取IP地址之后,有两种车辆发现的方法,如上图所示。一种方法是车辆主动上报自己的信息3次。如果测试设备没有收到车辆主动上报的信息,则会发送一个identification request,如果网络中有车辆的话,车辆对这个请求进行响应,测试设备便发现了被测车辆。

4.3 会话建立

详解以太网诊断DoIP

在诊断仪发现车辆之后,会把车辆添加到自己的车辆列表中。当用户选择这个列表中的某辆车,如果连接建立成功,用户就可以对车辆进行诊断了。

接下来用户给汽车发出诊断信息,网关会根据信息接收对象把诊断信息转发给网络中相关的ECU,当得到ECU 的响应之后,网关再把最终的响应发送给诊断仪。当用户选择退出时,用于DoIP通信的这个套接字就被关闭了。

下图是一个DoIP数据完整结构的数据举例:

详解以太网诊断DoIP

DoIP数据完整结构举例

byte 0:ISO13400 版本

byte 1:ISO13400 版本逐比特取反

byte 2~3:数据类型,0x8001,表明这是一个诊断信息的数据包

byte 4~7:数据长度,在这个例子中的值是7,表示后面有7个字节的数据

byte 8~9:源地址

byte 10~11:目的地址

byte 12~13:具体的诊断命令,SID是22,表示读取,DID是0xF8 10

这个数据段作为SDU传递给下层协议,逐层封装成为完整的以太网帧发送出去。

来源 | 车端文章来源地址https://www.toymoban.com/news/detail-509427.html

到了这里,关于详解以太网诊断DoIP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA之以太网详解

    以太网(Ethernet)是当今局域网采用的最通用的局域网标准。它规定了包括物理层的连线,电子信号和介质访问协议的内容。它具有成本低,通信速率快,抗干扰性强的特点。 以太网主要分为: 标准以太网:10Mbit/s 快速以太网:100Mbit/s 千兆以太网:1000Mbit/s 以太网的接口主要

    2024年02月09日
    浏览(46)
  • STM32的以太网外设+PHY(LAN8720)使用详解(6):以太网数据接收及发送

    1.1.1 检查是否接收到一帧完整报文 使用轮询的方式接收以太网数据是一种简单但是效率低下的方法,为了保证及时处理以太网数据我们需要在主循环内高频轮询是否接收到了以太网数据。轮询的函数为ETH_CheckFrameReceived,内容如下: 当以太网帧大于我们设置的DMA描述符buffer大

    2024年01月23日
    浏览(51)
  • STM32以太网接口的配置和使用方法详解

    STM32 微控制器提供了多种系列和型号,不同型号的芯片可能有不同的以太网接口,包括MAC(媒体访问控制器)和PHY(物理层接口)等组件。 在这里,我们以STM32F4系列为例来详细介绍以太网接口的配置和使用方法。 ✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

    2024年04月26日
    浏览(39)
  • [计算机通信网络]以太网的帧格式详解

    目录 一、前言 二、以太网的帧格式 Preamble(前导码): SFD(帧开始定界符): Destination Address,Source Address: Type/Len(类型/长度): Data(数据): FCS(Frame Check Sequence)(帧校验码): 以太网的帧格式对于我们理解mac地址与局域网间通信有着很大的帮助。 这篇博客主要记录

    2024年02月06日
    浏览(52)
  • STM32的以太网外设+PHY(LAN8720)使用详解(3):PHY寄存器详解

    前面介绍到,站管理接口(SMI)允许应用程序通过2线时钟和数据线访问任意PHY寄存器,同时该接口支持访问最多32个PHY,也就是说PHY地址共有5位。 应用程序可以从32个PHY中选择一个PHY,然后从任意PHY包含的32个寄存器中选择一个寄存器,发送控制数据或接收状态信息。任意给

    2024年02月03日
    浏览(50)
  • STM32的以太网外设+PHY(LAN8720)使用详解(2):硬件设计

    在LAN8720上电或复位时会读取一些特定引脚的电平,根据电平来进行硬件配置。LAN8720的引脚分布如下: 注意,LAN8720有些引脚内部自带上/下拉,定义如下: LAN8720的PHYAD[0]用来配置PHY地址的bit0,当接入了多个PHY时可以用来区分不同的PHY。该引脚自带内部下拉,同时我们也只用到

    2024年04月14日
    浏览(64)
  • 以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍

    网络设备中肯定离开不MAC和PHY,本篇文章将详细介绍下以太网中一些常见术语与接口。 MAC和PHY结构 从硬件角度来看以太网是由CPU,MAC,PHY三部分组成的,如下图示意: 上图中DMA集成在CPU,CPU,MAC,PHY并不是集成在同一个芯片内,由于PHY包含大量模拟器件,而MAC是典型的数字电

    2024年02月22日
    浏览(57)
  • 万兆以太网MAC设计(6)IP协议报文格式详解以及IP层模块设计

    参考:https://sunyunqiang.com/blog/ipv4_protocol_rfc791/这篇文章内容很丰富,建议看看 Version : 长度为 4 比特, 表征 IP 协议的版本号, 对 IPv4 来说该字段的值为 4 IHL : 长度为 4 比特, IHL 是 Internet Header Length 的缩写, 以 4 字节为单位指示 IP Header 的长度, 对于 IPv4 来说, Header 的最小长度为

    2024年04月28日
    浏览(43)
  • LwIP系列(3):以太网帧、IP、TCP、UDP、IGMP、ICMP帧格式详解

    TCP/IP 本质上是软件协议,而LwIP也是对软件协议进行解析处理,所以我们有必要了解下以太网帧、IP、TCP、UDP、IGMP、ICMP帧格式,这样在代码中,才能有的放矢。 以太网帧是最底层的原始数据,帧框架如下图所示: 其中【前同步码】和【以太网尾部】我们在抓包的时候,并不

    2024年02月14日
    浏览(50)
  • STM32的以太网外设+PHY(LAN8720)使用详解(1):ETH和PHY介绍

    STM32F4系列MCU内部集成了一个以太网外设(ETH),可以通过介质独立接口(MII)或简化介质独立接口(RMII)和外部PHY(如LAN8720)相连实现MCU的联网功能。 STM32F4系列的以太网外设(ETH)框图如下: 以太网外设框图中包含了MII、RMII、SMI三种接口,它们的详细介绍如下: 1.2.1 介

    2024年01月23日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包