车载网关测试入门3【路由功能】补充2-以太网路由

1 背景

汽车电子架构从分布式到集中式、从单一功能到智能化的发展历程,驱动着汽车网关的演变。

  • 从“翻译官”到“智能枢纽”:从简单的协议转换,发展为支持动态路由、边缘计算、安全防护的核心节点。
  • 从“面向信号”到“面向服务”:通信模式从静态信号交互,转向灵活的服务调用(SOA)。
  • 从“车内网络”到“车云一体”:网关成为连接车端、云端、路端的核心桥梁。

汽车网关演变的核心驱动因素

阶段驱动技术市场需求
传统网关CAN总线、OBD-II基础诊断、网络互通需求
域集中式网关车载以太网、域控制器ADAS、智能座舱的兴起
区域网关TSN、SOA、区域架构线束简化、自动驾驶数据实时性要求
未来中央网关AI、5G、车云协同全自动驾驶、个性化服务、可持续升级需求

因此,以太网路由的测试也显得格外重要。
上文对CAN-CAN报文/信号路由、诊断路由有相关介绍;路径如下:
车载网关测试入门1-【路由功能】
车载网关测试入门2【路由功能】补充1-CAN诊断路由

1.1 问题

大家带着以下问题进行本文的阅读,希望有所帮助。

  1. 以太网路由的分类?
  2. 以太网路由的测试?

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报文结构示例如下:
    PDU结构示例
    **备注:**其中A表示网络接口的BUS ID,B表示网络接口的报文ID;
  • 含多个PDU的以太网帧的整个有效载荷如下所示:
    多PDU结构示意图
  • 路由触发模式
    当某一个PDU被交给以太网通信协议栈时,以太网帧的传输受参数SoAdTxUdpTriggerMode影响;
  1. 如果其中一个PDU的参数设置为NEVER(SoAdTxUdpTriggerMode=NEVER),则该PDU将被缓存到NPduUdpTxBuffer中,等待稍后发送。

  2. 如果其中一个PDU的参数设置为ALWAYS(SoAdTxUdpTriggerMode=ALWAYS),则该PDU会立即触发以太网帧的传输,所有缓存到NPduUdpTxBuffer中的PDU也将被传输。

  3. 当特定套接字连接的第一个PDU参数设置为NEVER(SoAdTxUdpTriggerMode=NEVER),被移交给以太网通信协议栈进行传输时,为该套接字连接启动一个定时器,并开始记时;

  4. 定时器超时前,指定套接字连接的其他PDU(SoAdTxUdpTriggerMode=NEVER)将依次存储到nNPduUdpTxBuffer中;

  5. 如果一个PDU在超时前被收集了两次,则只保留最后一个PDU;

  6. 定时器超时后,套接字连接会触发一个以太网帧的传输,其中包含nNPduUdpTxBuffer中所有的缓存PDU,也即是超时触发

  7. 套接字连接的超时时间由SoAdSocketUdpTriggerTimeout配置
    超时触发PDU发送机制如下图所示:
    超时触发机制

  8. 如果当前某一PDU(SoAdTxUdpTriggerMode=NEVER)的数据buffer,导致以太网协议栈的nNPduUdpTxBuffer超过它的buffer大小,应该首先传输其存储的所有PDU,然后再存储该PDU;也即是触发类型为NEVER的PDU导致以太网协议栈buffer满触发;
    某一触发模式为NEVER的PDU导致缓冲区满时的PDU发送机制,如下图:
    以太网协议栈buffer满触发机制

  9. 如果当前某一PDU(SoAdTxUdpTriggerMode=ALWAYS)的数据buffer,导致以太网协议栈的nNPduUdpTxBuffer超过它的buffer大小,套接字连接应该首先传输其存储的所有PDU,然后再传输一次;也即是触发类型为ALWAYS的PDU导致以太网协议栈buffer满触发;
    某一触发模式为ALWAYS的PDU导致缓冲区满时的PDU发送机制,如下图:
    Buffer满触发机制

  10. nNPduUdpTxBuffer大小由SoAdSocketnPduUdpTxBufferMin参数配置;

  11. 为了避免分片,SoAdSocketnPduUdpTxBufferMin的典型值为1472Bytes

  12. 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格式

  1. 每个子PDU的数据部分需要在子PDU前面标记一个PDU头,以便在以太网报文的有效负载中识别和定位子PDU。
  2. 根据网关中的路由表,将子PDU路由到正确的目标网络;
  3. 路由表中列出了PDU ID与目标网口的对应关系;
  4. 路由类型取决于目标网络中子pdu的发送类型;
  5. 如果子pdu在目标网络上的发送类型为事件型,则该子PDU的路由只能在网关收到后才进行,并且属于事件路由;
  6. 如果目标网络的子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路由测试点

  1. 触发方式为:never
  • 帧格式测试
    测试目的:验证Bus ID、Message ID、Length长度、Payload数据场是否符合预期;
  • 时间参数测试
    测试目的:验证路由表中CAN/FD总线网络的报文(trigger mode为never)转发到以太网的路由延时时间是否满足要求。
  • 路由时序测试
    验证路由表中CAN/FD总线网络的报文(trigger mode为never)转发到以太网的时序是否正确;
  • 逆向测试
    测试目的:验证网关路由报文从以太网总线域转发到CAN/FD总线域,当Bus ID、Message ID或Length字段错误时目标域是否停止报文转发;
  1. 触发方式为: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诊断路由进行介绍。如果存在描述问题,欢迎各位大佬给我留言,一起讨论、学习、成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车载测试工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值