DoIP 常见疑问分享

一、IP地址

背景信息:
在通常Tester与车辆进行诊断通信时,Tester端设置好自己的IP地址信息,而对于待测ECU IP地址信息通常不设置,或者说不知道怎么设置。
穿拖鞋的汉子曰:
对于新加入到当前网络的车辆,在ISO 13400协议中有定义需要连续发送三次车辆声明(VehicleAnnouncement),这三次车辆声明的信息如下:
与此同时,在这三次车辆声明的过程中,对于Tester端也获取了车辆的IP地址,如上图。
另外,对于Tester端,比如特殊情况下,车辆声明的信息没有获取到,那么怎么通信呢?其实在定义协议时那些专家已经预想到这种应用场景,解决办法是Tester端以广播的形式发送车辆识别信息请求(Vehicle identification request),使在这个网段的所有车辆都可以收到该广播请求(当然可以携带不同车辆识别信息(VIN\EID\Logical address)),具体如下图:
对于国内,车载以太网大多数解决方案采用静态IP地址,就存在疑问,Tester是否可以配置IP地址呢(在人机交互界面处)?
答案毋庸置疑,可以。这里以常用工具CANoe为例,如下图,就可以设置待测ECU的具体识别信息,包括IP地址:
而对于IP地址获取方式。协议中分了两种(加上现状常用的静态IP地址,就是三种。但是静态IP地址没有在协议中体现):Auto IP和DHCP
两种区别在于DHCP需要由Server端动态分配IP地址。
而对于车辆诊断通信就会有两种场景:
1、Tester与车辆边缘节点通信;
2、边缘节点与车内DoIP实体通信。
这里关于DHCP Server对于这两种应用场景有不同的区分(不同的DHCPServer承担者)
A:在Tester与车辆边缘节点,需要动态分配IP地址时,这个时候只能由第三方充当DHCPServer,如下图:
B:车辆DoIP通信,这个时候,比较随意,可以由边缘节点或者其他网管充当DHCP Server。
二、Routing Target
背景信息:
在Routing Activation request报文格式中没有Target address:
穿拖鞋的汉子曰:

Routing Activation作用是激活DoIP通信功能,实质是激活对应Socket(该套接字一端连接IP地址,一端连接Application层对应的Port口)。
在协议ISO 13400有定义:
Tester端首先只能与车辆边缘节点通信,因此对于Tester在发送Routing activation request激活该套接字时,发送对象只能是车辆边缘节点。
当然后续若经过安全认证(Service 29 or Service 31),Tester也可以直接与车内DoIP节点进行通信,边缘节点这个时候可以充当Switch角色。
三、DoIP payload 与以太网payload关系
背景信息:
以太网一帧Payload Length最长是1526 bytes
DoIP一帧PayloadLength最大是4294967295 bytes
对于如下图,头一次接触该协议或者车载网络就是疑问,DoIP帧不是包含在以太网帧里面吗?为何两者长度出入这么大?
其实如上图,容易造成该误解。
这里只是基于OSI 计算机七层模型做出的上图。其实一句话可以解释:
可以用多帧Ethernet Frame组成一帧DoIP帧。两者之间不存在包含关系。
最后分享下基于CANoe做DoIP测试时,其实可以做很多内容:
1、新建Test Module,并加载DoIP dll文件:
2、加载DoIP.dll文件后,在CAPL Broswer中有诸多CAPL函数可以使用,可以方便大家调试ECU:
这块内容,后续也是汉子我要分享的重点,期待与大家沟通交流。
码字不易,若这些问题对您还有些益处,帮忙点“赞”和“在看”。 
愿你我相信时间的力量,
做一个长期主义者!
(0)

相关推荐