车载 DOIP协议

DoIP是Diagnostic communication over Internet Protocol 的简称

应用层基于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数据作为SDU层层向下传递,直至构成完整的以太网帧,通过物理层的介质发送出去。DoIP的数据内容分为5个部分:

  1. 所使用的ISO13400版本信息,占用1个字节
  2. 所使用的ISO13400版本信息依比特取反,占用1个字节
  3. 数据类型,占用2个字节(标识本帧数据的用途,比如用于上报或请求车辆信息、诊断命令、诊断逻辑链接激活、alive check等)
  4. 数据长度,占用4个字节(标识后面的数据长度)
  5. 诊断数据,长度为0至2的32次方减1,这里的数据又分为sender address、receiver address、 应用数据这三部分

应用场景

ISO13400中定义了DoIP的4种使用场景,如下四幅图所示:

车载 DOIP协议_第1张图片

 

车载 DOIP协议_第2张图片

 

车载 DOIP协议_第3张图片

 

 

车载 DOIP协议_第4张图片

路由机制

根据隐藏在Gateway后面的控制器的诊断类型的不同(比如有的通过DoIP,有的通DoCAN等),DoIP的路由机制可以分为两种,分别是CutThrough(以太网对以太网) 和Store&Forward-Routing (以太网对CAN, CAN FD 和LIN等)。

我用PPT粗略地画了两个示意图展示一下:

车载 DOIP协议_第5张图片

 

车载 DOIP协议_第6张图片

 

原理很简单,当网关后面被诊断的ECU也支持DoIP时,则网关每收到一个以太网帧,只需要更改以太网帧包头中的地址信息即可转发出去。而如果网关后面被诊断的ECU不支持Ethernet,则网关需要完整地接收所有的诊断数据之后,再从应用层开始重新组织适合其他总线传输的数据帧。

你可能感兴趣的:(Linux学习,udp,网络协议,网络)