DDS是一个由OMG在2004年发布的以数据为中心的中间件协议和应用程序接口标准,旨在提供实时可靠、高性能、可交互性和可扩展的数据交互。DDS采用分布式发布/订阅体系架构,以中间件的形式提供通信服务,强调以数据为中心。DDS已广泛应用于军工、机器人等领域,国际主流军工厂商、ROS2操作系统等均将DDS作为其控制系统的核心中间件,为各类战舰、机器人等提供可靠、高实时的分布式通信功能。
在智能驾驶领域,由于DDS在实时性、安全性和可靠性等方面的优势,一些头部OEM已经在新一代EE架构下的高阶智驾域控中商用DDS。甚至,还有一些OEM已经在全域中使用DDS,取代SOME/IP。
DDS作为车载网络通信协议的一部分,与其他通信技术一样,在研发阶段必需经过严格的测试和验证。但在测试过程中,由于缺乏统一的测试规范和测试工具,各个OEM和Tier1对DDS测试的完整性和覆盖度差异较大。不像汽车以太网,IEEE定义了测试内容,OA联盟定义了如何测试。
怿星科技联合业界主流的OEM和DDS供应商开发了一套完整的DDS测试规范和测试工具SmartDDS,有助于OEM和Tier1在DDS研发过程中提升测试完整性和开发效率。
上图为DDS一般应用&通信场景示意:在一个Domain内,不同应用实体通过DCPS(Publisher/DataWriter、Subscriber/DataReader、Topic/Qos)实现应用通信,底层基于RTPS/UDP以太网协议实现数据流交互;同时在车载通信场景中同时会涉及DDS-CAN、DDS-SOME/IP的通信路由应用。基于上述通信及应用场景我们对DDS测试内容做如下具体的介绍与分析。
测试目的:目前市场上DDS厂家协议栈类型众多,如如RTI DDS、Cyclone DDS、FastDDS、OpenDDS、臻融DDS、奥特酷DDS等,且越来越多的OEM在逐步自研DDS协议栈。由于各DDS实现厂家对规范的理解不一致或在软件实现方式上的不一致,因此需要对RTPS报文格式格式、本地域实体和远端域实体的自动发现报文、发布者的写操作和订阅者的读操作等方面进行一系列测试以验证DDS协议栈实现与标准规范之间是否匹配。
如下是一条RTPS消息格式测试用例流程示意,本条测试用例的测试目的是验证Data子消息的writerSN字段是连续的。
在测试步骤中,首先测试软件连接测试中间件(DIT),通过DIT创建发布者和订阅者,再让发布者向订阅者发送多条数据,检测通信报文中Data子消息的writerSN字段,验证其是否连续。
测试目的:OEM和Tire1在选择或自研开发DDS协议栈时往往会根据自身需求进行定制、优化及裁剪,因此需要对Qos、DDS通信交互行为、DDS接口、安全认证等进行测试验证以保证车载DDS协议通信交互功能的准确性及完整性。
如下是一条QoS测试用例流程示意,测试目的是验证当DataWriter的DURABILITY QoS的kind为TRANSIENT_LOCAL时,DataWriter会保留样本并提供给后上线的订阅者。
在测试步骤中,首先连接DIT,通过DIT创建发布者并配置发布者的QoS,发布者发送数据后订阅者上线,检测发布者是否为后上线的订阅者提供数据。
测试目的:DDS协议栈集成部署在不同平台、不同ECU后进行一系列压力、鲁棒性、稳定性等相关测试验证以评估DDS协议栈的运行稳定性以及对各种外部压力干扰的抗干扰能力,发现软件非预期bug,保障DDS协议栈在量产实车上能稳定长期运行。
如下是压力条件下传输时延的测试用例流程示意,测试目的是验证在特定的传输环境下,DDS之间的通讯延迟能够满足需求。
测试目的:目前车内网络仍属于复杂的异构网络环境,传统网络通信与以太网通信长期并存,必定会有数据路由转换的场景存在,因此进行全面的路由转换、S2S等相关测试验证以确保车内应用数据交互功能的准确性。
如下是一条DDS节点与CAN节点通信测试流程示意,测试端上DDS节点与DUT的DDS建立连接后,通过向DUT发送CAN报文,检测DUT能否回复RTPS报文。
SmartDDS是怿星科技基于DDS相关实现标准以及在车载通信应用上的具体实现,并结合以往测试经验,完全自研开发的一套支持DDS中间件的功能及性能特性的全覆盖测试验证产品,以确保DDS在车载通信应用下的应用场景正常落地。
目前SmartDDS能够完全覆盖上述协议一致性、通信机交互功能、性能及稳定性及异构网络下的通信验证四部分测试内容。如下为SmartDDS测试软件主体,具有查看用例步骤、配置用例参数、用例的执行和停止、显示实时日志以及查看测试报告等功能。且测试软件界面简单、操作便捷,测试代码可读性强、易于二次拓展开发。
SmartDDS交付物包括:
测试规范:测试规范说明测试执行的软硬件环境,详细描述各测试用例的测试目的、测试步骤和评价标准
DIT组件:SmartDDS通过DIT组件(DDS Inner Tester)调用DDS接口
测试软件:SmartDDS
在前文对测试流程的介绍中,提到了有些测试步骤依赖于测试中间件DIT(DDS Inner Tester)。DIT是怿星自研的DDS测试中间件,基于DDS标准协议开发。DIT有两个作用,一是DUT端的行为触发,例如Participant、Publisher、DataWriter等实体的创建、数据的发布和订阅;二是对DUT端行为的观测,例如查询实体已配置的QoS。
DIT遵循DCPS统一接口,深入DDS的底层,通过接口调用的方式实现DDS应用管控。由于被测DDS可能运行在不同的操作系统(Linux、QNX等)上,不同操作的被测DDS需要适配集成不同的DIT。目前怿星科技已适配集成了Windows、Linux、QNX、CP平台的DIT。
本篇文章主要介绍针对DDS协议通信及应用场景下所需进行的一系列测试验证内容,并介绍怿星科技自主研发的DDS自动化测试软件-SmartDDS,同时面向主机厂及供应商对DDS研发过程中提升测试完整性和开发效率的需求我们将持续对本产品进行迭代升级。如果想了解更多关于DDS协议测试解决方案的信息,欢迎随时联系小怿mkt@eptcom.com。