Routing activation request and response
对于用TCP_DATA socket传输DoIP消息的,必须激活路由,也就是在DoIP通信前,TCP三次连接成功后,需要发送Routing activation request并得到response,才能发送诊断请求,本质上是通过发送routing activation request把源逻辑地址与对应的socket关联起来,称之为注册
DoIP实体既可以是DoIP节点,也可以是DoIP网关
先看一下routing activation request报文的payload组成
- Source address
由外部测试设备发给DoIP实体的诊断通信前的路由激活请求
2个字节,外部测试设备的逻辑地址
外部测试设备的逻辑地址定义可参考逻辑地址视图
- Activation type
1个字节,routing activation request报文的激活类型
Reserverd by this part of ISO 13400和Reserved for OEM-specific use是预留位,前者是必须要有的,默认值是0
每个DoIP实体都应该支持回复routing activation response报文
routing activation response报文的payload格式如下
- Logic address of external test equipment
2个字节,外部测试设备的逻辑地址
- Logic address of DoIP entity
2个字节,DoIP实体的逻辑地址
- Routing activation response code
1个字节,DoIP网关的响应
拒绝路由激活将导致TCP_DATA socket被DoIP网关重置,而成功的路由激活意味着可以通过TCP_DATA socket来路由诊断消息
分析下这几种情况,看看DoIP实体是如何处理路由激活请求的
- 0x00
DoIP实体由于routing activation request里的源逻辑地址未知而拒绝激活路由,同时关闭这个TCP_DATA socket
- 0x01
DoIP实体由于支持的所有的并发的TCP_DATA socket都已注册并并处于活动状态而拒绝激活路由,同时关闭这个TCP_DATA socket