目录
1 背景
汽车电子架构从分布式到集中式、从单一功能到智能化的发展历程,驱动着汽车网关的演变。
- 从“翻译官”到“智能枢纽”:从简单的协议转换,发展为支持动态路由、边缘计算、安全防护的核心节点。
- 从“面向信号”到“面向服务”:通信模式从静态信号交互,转向灵活的服务调用(SOA)。
- 从“车内网络”到“车云一体”:网关成为连接车端、云端、路端的核心桥梁。
汽车网关演变的核心驱动因素
阶段 | 驱动技术 | 市场需求 |
---|---|---|
传统网关 | CAN总线、OBD-II | 基础诊断、网络互通需求 |
域集中式网关 | 车载以太网、域控制器 | ADAS、智能座舱的兴起 |
区域网关 | TSN、SOA、区域架构 | 线束简化、自动驾驶数据实时性要求 |
未来中央网关 | AI、5G、车云协同 | 全自动驾驶、个性化服务、可持续升级需求 |
因此,以太网路由的测试也显得格外重要。
上文对CAN-CAN报文/信号路由、诊断路由有相关介绍;路径如下:
车载网关测试入门1-【路由功能】
车载网关测试入门2【路由功能】补充1-CAN诊断路由
1.1 问题
大家带着以下问题进行本文的阅读,希望有所帮助。
- 以太网路由的分类?
- 以太网路由的测试?
2 以太网路由分类
以太网路由分类如下图:
备注:X代表CAN/CANFD、LIN、Flexray、ETH;
2.1 事件路由:
事件路由是指收到的PDU/信号后立即路由到目标网络,双方(接收和发送)的PDU/信号具有相同的发送类型和定时,网关只有在收到PDU/信号时才会路由该PDU/信号;
2.2 周期路由:
周期路由是指接收到的PDU/信号在周期时间内路由到目标网络,双方的PDU/信号可能具有不同的发送类型和周期时间。
2.3 PDU路由
只是将源PDU数据复制到目的PDU,PDU中包含的信号位置保持不变;一般PDU路由应使用UDP以太网传输层协议;在做具体项目时,以实际项目需求为准;
- 部分以太网路由表示例:
2.3.1 从X到以太网的PDU路由
考虑到传输效率,一个以太网帧应该同时路由来自一个或多个通信接口的多个PDU;PDU报头由一个4字节的ID字段和一个4字节的长度字段组成,ID字段表示接收端PDU的唯一标识,长度字段表示PDU的数据长度。
- PDU报文结构示例如下:
**备注:**其中A表示网络接口的BUS ID,B表示网络接口的报文ID; - 含多个PDU的以太网帧的整个有效载荷如下所示:
- 路由触发模式
当某一个PDU被交给以太网通信协议栈时,以太网帧的传输受参数SoAdTxUdpTriggerMode影响;
-
如果其中一个PDU的参数设置为NEVER(SoAdTxUdpTriggerMode=NEVER),则该PDU将被缓存到NPduUdpTxBuffer中,等待稍后发送。
-
如果其中一个PDU的参数设置为ALWAYS(SoAdTxUdpTriggerMode=ALWAYS),则该PDU会立即触发以太网帧的传输,所有缓存到NPduUdpTxBuffer中的PDU也将被传输。
-
当特定套接字连接的第一个PDU参数设置为NEVER(SoAdTxUdpTriggerMode=NEVER),被移交给以太网通信协议栈进行传输时,为该套接字连接启动一个定时器,并开始记时;
-
定时器超时前,指定套接字连接的其他PDU(SoAdTxUdpTriggerMode=NEVER)将依次存储到nNPduUdpTxBuffer中;
-
如果一个PDU在超时前被收集了两次,则只保留最后一个PDU;
-
定时器超时后,套接字连接会触发一个以太网帧的传输,其中包含nNPduUdpTxBuffer中所有的缓存PDU,也即是超时触发;
-
套接字连接的超时时间由SoAdSocketUdpTriggerTimeout配置;
超时触发PDU发送机制如下图所示:
-
如果当前某一PDU(SoAdTxUdpTriggerMode=NEVER)的数据buffer,导致以太网协议栈的nNPduUdpTxBuffer超过它的buffer大小,应该首先传输其存储的所有PDU,然后再存储该PDU;也即是触发类型为NEVER的PDU导致以太网协议栈buffer满触发;
某一触发模式为NEVER的PDU导致缓冲区满时的PDU发送机制,如下图:
-
如果当前某一PDU(SoAdTxUdpTriggerMode=ALWAYS)的数据buffer,导致以太网协议栈的nNPduUdpTxBuffer超过它的buffer大小,套接字连接应该首先传输其存储的所有PDU,然后再传输一次;也即是触发类型为ALWAYS的PDU导致以太网协议栈buffer满触发;
某一触发模式为ALWAYS的PDU导致缓冲区满时的PDU发送机制,如下图:
-
nNPduUdpTxBuffer大小由SoAdSocketnPduUdpTxBufferMin参数配置;
-
为了避免分片,SoAdSocketnPduUdpTxBufferMin的典型值为1472Bytes;
-
SoAdSocketUdpTriggerTimeout and SoAdSocketnPduUdpTxBufferMin需要配置正确,使路由两端的带宽匹配,这俩参数分别决定超时触发的超时时间以及buffer满触发的buffer大小;
- 时间参数
有两个时间参数:tevent-latency 和 tperiodic-latency;
tevent-latency:进行事件型路由时,网关将PDU从源端路由到目标端所需的延迟时间;
tperiodic-latency:进行周期路由时,网关将最新的PDU从源端路由到目标端所需的延迟时间;
时间要求如下所示:
备注:
1.所有时间要求一般会有10%的容差;以具体项目实际需求为准;
2.SoAdSocketUdpTriggerTimeout:超时时间触发的超时时间
2.3.2 从以太网到X的PDU路由
路由类型取决于该子PDU在目标网段的路由类型;
以太网报文可以包含几个将被路由的子PDU,如下图:
- 每个子PDU的数据部分需要在子PDU前面标记一个PDU头,以便在以太网报文的有效负载中识别和定位子PDU。
- 根据网关中的路由表,将子PDU路由到正确的目标网络;
- 路由表中列出了PDU ID与目标网口的对应关系;
- 路由类型取决于目标网络中子pdu的发送类型;
- 如果子pdu在目标网络上的发送类型为事件型,则该子PDU的路由只能在网关收到后才进行,并且属于事件路由;
- 如果目标网络的子PDU的发送类型为周期,无论网关在以太网网络中是否接收到它,都按照周期发送该子PDU,它属于周期路由;
- 时间参数
有两个时间参数:: tevent-latency 和 tperiodic-latency;
时序要求如下所示:
备注:所有时间要求一般会有10%的容差;以具体项目实际需求为准;
2.4 信号路由
信号路由从一个或多个源PDU中提取信号,重新封装到一个目标PDU中。
路由原理如下图:
**备注:**信号路由一般要求为周期路由;
2.4.1 从X到以太网之间的信号路由
信号路由根据信号路由表将源网络的信号路由到目标网络;
信号路由表可能如下表所示:
从X到以太网路由时,如果X信号bit长度小于以太网信号比特长度,则未使用的bit一般用0填充;也即是信号未使用位的填充;
超时策略:
在Ttarget时间内(误差为±10%),通过网关将最新的信号值从源路由到目标。
备注:Ttarget是信号在目标网络上的传输周期。
如果源信号缺失一段时间,将执行以下行为:
2.4.2 从以太网到X之间的信号路由
信号路由根据信号路由表将源网络的信号路由到目标网络;
信号路由表可能如下表所示:
备注:超时策略同从X到以太网之间的信号路由;
本文暂不对ETH到ETH的路由进行介绍,后续会开展专题进行详细介绍。
2.5 以太网路由测试
2.5.1 从ETH到X的PDU路由测试点
- 帧格式测试
测试目的:验证Bus ID、Message ID、Length长度、Payload数据场是否符合预期; - 时间参数测试
测试目的:验证路由表中从以太网总线到CAN/CANFD总线的路由延时时间是否满足要求; - 逆向测试
测试目的:验证网关路由报文从以太网总线域转发到CAN/FD总线域,当Bus ID、Message ID或Length字段错误时目标域是否停止报文转发;
2.5.2 从X到以太网的PDU路由测试点
- 触发方式为:never
- 帧格式测试
测试目的:验证Bus ID、Message ID、Length长度、Payload数据场是否符合预期; - 时间参数测试
测试目的:验证路由表中CAN/FD总线网络的报文(trigger mode为never)转发到以太网的路由延时时间是否满足要求。 - 路由时序测试
验证路由表中CAN/FD总线网络的报文(trigger mode为never)转发到以太网的时序是否正确; - 逆向测试
测试目的:验证网关路由报文从以太网总线域转发到CAN/FD总线域,当Bus ID、Message ID或Length字段错误时目标域是否停止报文转发;
- 触发方式为:always
- 帧格式测试
测试目的:验证Bus ID、Message ID、Length长度、Payload数据场是否符合预期; - 时间参数测试
测试目的:验证路由表中CAN/FD总线网络的报文(trigger mode为always)转发到以太网的路由延时时间是否满足要求。 - 逆向测试
测试目的:验证网关路由报文从以太网总线域转发到CAN/FD总线域,当Bus ID、Message ID或Length字段错误时目标域是否停止报文转发;
2.5.3 以太网信号路由测试点
- 帧格式测试
测试目的:验证Bus ID、Message ID、Length长度、Payload数据场是否符合预期; - 超时时间测试
测试目的:验证超时时间是否符合预期; - 超时值测试
测试目的:验证超时值是否符合预期; - 逆向测试
测试目的:验证网关路由报文从以太网总线域转发到CAN/FD总线域,当Bus ID、Message ID或Length字段错误时目标域是否停止报文转发;
2.5.4 部分测试用例示例
- 从X到以太网的PDU路由-触发类型为never的时间参数测试用例:
初始条件:
1.系统电压=12V
2.KL15=ON
测试步骤:
1.利用Tester依次仿真需要路由的CAN/FD报文(trigger mode为never)到DUT的CAN/FD总线链路域上;
2.记录CAN/FD报文发出的时间戳t1;
3.利用Tester检测DUT的以太网总线域,并记录对应以太网报文发出时间t2;
4.计算CAN/FD-Ethernet路由延迟时间Δt=t2-t1;
预期结果:
1.路由延迟时间Δt ≤ 10ms;(假设10ms)
- 从X到以太网的PDU路由-触发类型为aways的时间参数测试用例:
初始条件:
1.系统电压=12V
2.KL15=ON
测试步骤:
1.利用Tester依次仿真需要路由的CAN/FD报文(trigger mode为always)到DUT的CAN/FD总线链路域上
2.记录CAN/FD报文发出的时间戳t1;
3.利用Tester检测DUT的以太网总线域,并记录对应以太网报文发出时间t2;
4.计算CAN/FD-Ethernet路由延迟时间Δt=t2-t1;
预期结果:
1.路由延迟时间Δt ≤ 2ms;(假设2ms)
- 从X到以太网的PDU路由-触发类型为aways的部分逆向测试用例-Bus ID错误:
初始条件:
1.系统电压=12V
2.KL15=ON
测试步骤:
1.利用Tester依次仿真需要路由的CAN/FD报文(trigger mode为always)到DUT的CAN/FD总线链路域上
2.设置Bus ID不在规范要求范围内;
3.利用Tester检测目标域,监测是否接收到改变Bus ID的以太网报文;
预期结果:
1.未接收到改变Bus ID的以太网报文
其他用例就不一一展示了,如果有需要可联系我交流,如果后续大家有此类需求,我会继续新增专题进行介绍。
6 总结
上面就是对以太网路由相关概念、原理以及测试用例的介绍,后续专题会对DOIP诊断路由进行介绍。如果存在描述问题,欢迎各位大佬给我留言,一起讨论、学习、成长!