DoIP的网络拓扑

发布者:数字思维最新更新时间:2022-09-20 来源: elecfans关键字:网络拓扑  以太网 手机看文章 扫描二维码
随时随地手机看文章

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的网络拓扑

7e26def6-2909-11ed-ba43-dac502259ad0.png

从图中不难看出,整车的网络拓扑被分为了两个部分,即内部网络和外部网络,图中的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]由下面四个字段组成

7e4a159c-2909-11ed-ba43-dac502259ad0.png

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

7e6a670c-2909-11ed-ba43-dac502259ad0.png

DoIP Client

7e89e136-2909-11ed-ba43-dac502259ad0.png

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


即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 连接建立

7ea60b7c-2909-11ed-ba43-dac502259ad0.png

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 车辆发现

7ec7ecec-2909-11ed-ba43-dac502259ad0.png

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

4.3 会话建立

7eebddd2-2909-11ed-ba43-dac502259ad0.png

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

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

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

7f16bdae-2909-11ed-ba43-dac502259ad0.png

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传递给下层协议,逐层封装成为完整的以太网帧发送出去。


关键字:网络拓扑  以太网 引用地址:DoIP的网络拓扑

上一篇:TI的Sitara AM625用于2级交流电动汽车充电站的三个设计注意事项
下一篇:航盛与中兴通讯通力合作实现V2X应用场景精准触发

推荐阅读最新更新时间:2024-11-17 10:11

MACsec-先进的车载网络安全解决方案
简介 Media Access Control Security(简称 MACsec)是以太网上最先进的安全解决方案。它为以太网上传输的几乎所有帧提供完整性保护、重放保护和可选的机密性保护。与其他解决方案相比,包括了单播、组播和广播消息以及在第2层上运行的所有协议。 MACsec功能可以轻松卸载,因为它在设计时就考虑到了非常强大的硬件支持。这将应用程序控制器的资源留给应用程序,同时确保MACsec以尽可能高的速度运行,来覆盖完整的链路速度并具有非常低的延迟。 接下来,将向大家介绍MACsec技术的优势。 优势 1.支持单播、组播和广播数据的安全传输 2.允许以虚拟方式保护所有协议,包括AVB TP (IEEE 1722
[嵌入式]
MACsec-先进的车载网络安全解决方案
Infinera在DTN-X多太比特分组光传送网平台中选用Altera的28nm Stratix V FPGA
Stratix® V GX FPGA。Infinera是最近一家在下一代系统中选用性能最好的FPGA的企业。Stratix V GX FPGA所具有的性能和带宽能够满足DTN-X平台100-Gigabit以太网(GbE)线路卡的100-GbE数据量要求。     Infinera合伙人兼首席技术官Drew Perkins评论说:“Infinera通过我们的解决方案不断推动技术的发展。这需要与Altera这类同样站在技术最前沿的企业进行合作。我们在下一代DTN-X平台上评估各种方案,发现Altera是最适合的,这是因为其高性能28-nm Stratix V FPGA在SERDES功能上是性能最好的。采用Stratix V GX FPG
[嵌入式]
基于CAN总线的数据采集记录装置设计
1.绪论 现场总线作为生产现的场数据通信与控制的网络技术,在测量控制领域随着信息技术的发展已得到广泛的应用。现在的工业现场总线控制网络技术已经被认为是一种比较的成熟的技术,同时也被认为是目前最具有前途的一种现场总线之一。然而,CAN现场总线作为一种面向工业底层控制的通信网络,其局限性也是显而易见的。首先,它不能与Internet互连,不能实现远程信息共享。其次,它不易与上位控制机直接接口。因此,我们在本文中引入以太网技术。 以太网是在上个世纪70年代为连接多个实验室而开发出的一种局域网技术,随着互联网技术和计算机的迅猛发展,以太网已成为当今世界上应用范围最广、最为常见的一种网络技术。他在工业控制中的优势是显而易见的:首先,基于
[嵌入式]
基于DSP的以太网通信接口设计
  概述   TM1300是Philips公司推出的新一代高性能多媒体数字信号处理器芯片。基于TM1300的 DSP 应用系统适合于实时声音、图像处理,可广泛应用于会议电视、可视电话、数字电视等应用场合。它不仅具有强大的处理能力,同时还具有非常友好的音频和视频以及SSI和PCI等I/O接口,因此可以根据应用的需要灵活地构造各种视频通信系统。鉴于目前计算机网络的普及和网上视频业务的发展,很有必要为TM1300视频编码系统开发一个以太网接口以拓宽其应用范围。开发以太网接口的一种合理思路是利用TM1300集成的PCI接口来驱动专用的以太网接口芯片。由于目前多数以太网接口芯片(如Real- tek8029,Realtek8139等)都采用
[嵌入式]
基于DSP的<font color='red'>以太网</font>通信接口设计
千兆以太网交换芯片BCM5690及其在交换整机中的应用
摘要:BCM5690是BroadCOM公司推出的集成有12个千兆端口和1个万兆端口的多层交换芯片。文章比较全面地介绍了该芯片的结构和功能特性,给出了它的访问控制方式和数据流程,同时给出了用BCM5690设计交换整机的硬件结构和软件实现方法。 关键词:千兆以太网;BCM5690;堆叠;数据流程 目前,万兆芯片技术不断取得新的发展,尤其在“真”万兆的问题上,只有拥有更先进的芯片,设备厂商才能够在芯片功能与特性的基础上开发自身的交换机体系架构。虽然Broadcom、Intel、Marvell、美国国家半导体(NS)、英飞凌(Infineon)和意法半导体(STMicro electronics)都推出了最新的千兆以太网芯片产品。但万
[网络通信]
如何确保新一代车载网络的一致性和性能
对比汽车的过去、现在、将来,有一个明显的趋势:汽车已经成为带轮子的数据中心。在每辆汽车内部,来自安全系统、车载 传感器 、导航系统等的数据流量,以及对这些数据的依赖程度,都在不断迅速增长。 这在速度、容量、可靠性方面给车载网络(IVNs)带来了重大影响,其中的影响之一是,在高速低时延应用中,比如控制区域网(CAN)、FlexRay、本地互连网(LIN)、面向媒体的系统传输(MOST)和单边半波传输(SENT)之类的总线缺少所需的带宽。结果,这些传统标准正逐渐被信息技术(IT)领域的先前已验证的技术所取代。 当前的主要实例是汽车 以太网 ,它覆盖了电气和电子工程师(IEEE)开发的四项标准。目前,汽车以太网将与涵盖各种系统和
[汽车电子]
如何确保新一代车载网络的一致性和性能
是德发布业界最全面的10BASE-T以太网协议解码器
解码器结合示波器可以帮助开发人员快速启动和调试以太网网络 2015 年 5 月 14日,北京――是德科技公司(NYSE:KEYS)日前发布业界最全面的10BASE-T/100BASE-TX 以太网协议解码器 适用于 90000A 与 90000 X 以及 90000 Q、Z 和 V 系列示波器的 Keysight N8825A和适用于 S 系列示波器的 N8825B。结合 500 MHz 或以上带宽的兼容示波器,N8825A 和 N8825B 能够解码 10BASE-T 和 100BASE-TX 以太网数据包,帮助网络设计工程师加快 10BASE-T/100BASE-TX 以太网联网系统启动和调试速度。 工程
[测试测量]
飞思卡尔:覆盖所有微控制器技术的解决方案
一、为多个不同市场提供全面8/16/32位MCU 飞思卡尔为多个不同市场提供全面的8/16/32位MCU产品系列。这些市场包括汽车市场、个人用户市场和工业市场等。还提供广泛的控制器产品系列,从入门级的超低端8位设备(如KA和QD MCU系列)直到高性能的32位产品系列(如ColdFire系列嵌入式控制器)。同时还提供大量的功能性外围设备,并将继续向微控制器IP产品中增加价值。飞思卡尔也是解决方案创新领域的领导者,开发的解决方案包括带有集成以太网和USB接口的32位设备。 嵌入式电子产品正在以前所未有的速度演进,对性能和功能的需求也日益增加,进而推动了微控制器产品链的设计工作。因此,工程师需要轻松地从初级MCU移植到更高端的M
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved