杨光 潘俊家 崔根群 安康 朱永健
摘 要: 为了保证汽车ECU的TCP/IP协议实现的准确性,开发了一种车载以太网TCP/IP协议的一致性测试系统,并设计了TCP/IP协议一致性测试集。该测试系统基于NOVUS10/1/100 m车载以太网测试板卡搭建,通过开发的一致性测试软件完成测试用例库管理、测试任务管理和测试数据管理的工作。TCP/IP协议一致性测试集可以对TCP/IP协议中的ARP,IP,TCP和UDP进行协议一致性测试。测试结果表明,该测试系统能够发现被测ECU协议实现的问题,为供应商完善产品协议提供了有效帮助。
关键词: 车载以太网; 协议测试系统; 协议一致性; 测试软件开发; TCP/IP; 一致性测试集
中图分类号: TN919?34; TN915.04 文献标识码: A 文章编号: 1004?373X(2020)07?0029?05
Research on conformance testing system for protocols in automotive Ethernet TCP/IP
YANG Guang1, 2, PAN Junjia2, CUI Genqun1, AN Kang1, 2, ZHU Yongjian1, 2
(1. College of Mechanical Engineering, Hebei University of Technology, Tianjin 300401, China;
2. China Automotive Technology and Research Centre Co., Ltd., Tianjin 300300, China)
Abstract: In order to ensure the accuracy of TCP/IP protocol implementation for automotive ECU, a conformance testing system for TCP/IP protocol of automotive Ethernet is developed, and a conformance testing set for TCP/IP protocol is designed. The testing system is based on NOVUS10/1/100 m automotive Ethernet test board. The conformance testing software was developed to accomplish the testing case library management, testing task management and testing data management. TCP/IP protocol conformance testing set can test the conformance of ARP, IP, TCP and UDP protocols in TCP/IP protocol. The testing results show that the testing system can find the problems existing in the ECU protocol implementation, and provide effective help for suppliers to improve their product protocols.
Keywords: automotive Ethernet; protocol testing system; protocol conformance; testing software development; TCP/IP; conformance testing set
0 引 言
隨着汽车技术的日益发展,用户开始不断要求提高车辆的安全性、舒适性和驾驶控制性,最明显的体现在于越来越复杂和多样的车载电子系统,大量的传感器和处理器被用在车辆的不同系统中,这就需要更高速、更可靠、带宽更高的通信网络[1]。目前,商用的车载网络技术主要有本地互连网络(LIN)、控制器局域网络(CAN)、TTP/C、FlexRay、面向媒体的系统传输(MOST)以及低电压差分信号(LVDS)。但是现有的总线都存在各种缺陷导致其无法满足未来车载通信网络的要求[2]。
以太网因其所具有的高带宽、快速度和高度可扩展性的特点将成为未来的车载网络的发展方向。对于汽车行业而言,以太网技术目前处于发展初期,对于车载以太网的协议一致性测试是很有必要的。
本文主要涉及车载以太网TCP/IP协议中的ARP,IP,TCP和UDP的协议一致性测试。文中首先介绍了TCP/IP协议的5层模型并介绍每一层的功能,之后以协议标准为依据确认一致性测试的方案,包括设计测试集和建立测试系统[3]。测试集内容以TCP/IP协议标准为核心,参考OPEN ALLIANCE TC8 Members的ECU and Network Test,保证测试用例的准确合理。测试系统以IXIA公司的NOVUS10/1/100 m汽车以太网测试板卡为基础,保证物理层协议和接口支持的完整性。
1 车载以太网TCP/IP协议
车载以太网是一种通过以太网使车内各个ECU实现通信的新型局域网技术,其中,TCP/IP协议提供点对点的链接机制,定义了以太网数据如何封装、定址、传输、路由以及在目的地如何接收,TCP/IP协议模型如图1所示。
第1层为物理层,目前车载以太网的物理层技术是由OPEN联盟推动的BroadR?Reach技术,BroadR?Reach技术提供标准以太网的MAC层接口,所以能够使用与其他以太网类型相同的数据链路层逻辑功能及帧格式,另外,BroadR?Reach支持全双工通信,可以使一条链路上的2台设备能够同时发送和接收数据,提高数据传输效率。第2层为数据链路层,根据IEEE 802模型OSI参考模型又可以分为两个子层:逻辑链路控制(LLC)子层、媒体接入控制(MAC)子层。LLC子层主要负责为同一个网络中的本地设备建立和控制逻辑链路并向第3层提供统一的接口;MAC子层则主要为设备控制和网络接入管理定义具体机制。第3层为网络层,主要是将从下层接收到的数据进行IP地址的封装、解封装和逻辑设备寻址。第4层为传输层,它负责让设备之间建立逻辑连接,使数据进行可靠或者不可靠的发送,识别源应用进程和目标应用进程也是在这一层实现的。第5层为应用层,应用层负责实现终端用户的应用和服务。
2 协议一致性测试需求
协议一致性测试就是验证被测器件(DUT)的协议是否与协议标准一致,是黑盒测试[4]。通过给DUT特定的激励输入,判断DUT是否给出了希望的响应來判断DUT的协议一致性[5]。本文的协议一致性测试是通过在测试系统上执行测试集,从而满足DUT的测试需求。
TCP/IP协议实际上由几十个不同的协议组成,但其中只有少数是规定协议栈核心原理的主协议。在这些关键的主协议中,TCP和IP是最重要的两个协议,所以本文详细分析了TCP和IP的协议一致性测试需求。
2.1 TCP一致性测试需求
TCP一致性测试内容主要包含:TCP连接的建立、管理及终止测试,TCP报文格式测试和TCP可靠性和流量控制功能测试。
2.1.1 TCP连接的建立、管理及终止测试
TCP连接的建立、管理及终止测试主要测试TCP有限状态机,主要包括以下内容:
1) TCP连接建立测试:DUT应能通过“三次握手”与测试系统建立连接,生成一对套接字(Socket),使TCP有限状态机进入ESTABLISHED状态。
2) TCP连接终止测试:DUT应能通过主动关闭过程或者被动关闭过程使TCP有限状态机进入CLOSED状态。
2.1.2 TCP报文格式测试
TCP报文格式测试主要测试TCP报文头格式。确保DUT生成的TCP报文包含一个有效的报文头,验证DUT收到TCP报文能否正确接收或抛弃。例如,DUT可以接收报文头预留位为0或者不为0的TCP报文;DUT应抛弃报文头校验和为0的TCP报文。
2.1.3 TCP可靠性和流量控制功能测试
TCP可靠性和流量控制功能测试主要测试报文重传机制、愚笨窗口综合征(SWS)避免算法、Nagle算法和慢启动与拥塞避免算法[6]。
1) 报文重传机制测试:DUT包含数据的报文段发送后,该报文段的副本会置于重传队列的数据结构上,同时,启动该报文段的重传计时器,如果在报文段计时器超时前收到了确认消息,该报文段将从重传队列中移除;如果在报文段计时器超时前未收到确认消息,则会出现重传超时且报文段会自动重传。DUT接收到3个重复的ACK之后将执行丢失段重传,不等待重传定时器超时。
2) 愚笨窗口综合征(SWS)避免算法测试:DUT收到多个360 B的报文段时,窗口大小只能为0 B,180 B或者更大,而不会出现0~180 B之间的值。
3) Nagle算法测试:DUT发送数据时,只要连接上没有未确认的数据,DUT可以立即发送希望发送的数据,当连接上有未确认的数据时,后续需要发送的数据要留在发送缓冲区,直到所有未确认数据得到确认后才发送出去,或者积累了足够多的数据可发送一个“完整大小”(与最大报文段长度一样大)的报文段。
4) 慢启动与拥塞避免算法测试:在DUT与测试系统建立连接后,DUT应逐渐增加发送数据的数量直到达到完整窗口大小或检测到链路上出现拥塞。当DUT检测到潜在拥塞时,DUT会采用一个特殊的算法允许DUT快速降低报文段的发送速度,然后再次使用慢启动算法来逐渐增加传输速度。
2.2 IPv4协议一致性测试需求
IPv4协议一致性测试主要包括IPv4协议的报文格式和IPv4协议报文传输。
2.2.1 IPv4协议报文格式测试
IPv4协议报文格式测试:DUT发送的IPv4报文应符合IPv4协议,包括报文头、校验和、版本号、地址和选项。DUT能接收格式正确的报文,抛弃格式错误的报文。例如,DUT能接收包含正确校验和的报文,抛弃校验和无效的报文。
2.2.2 IPv4协议报文传输测试
IPv4协议报文传输测试:当DUT接收一些较大无序IPv4数据段时,DUT可以接收数据段并重新打包,当DUT收到一些包括复制数据段的较大数据段时,DUT可以丢弃复制数据段,接收并重新打包数据段,当DUT在接收数据段过程中丢失部分数据段时,DUT不会接收并重新打包数据。
3 测试系统
3.1 测试平台
车载以太网TCP/IP协议一致性测试平台应能够测试各类车载以太网节点的TCP/IP协议功能一致性,确保ECU的TCP/IP协议栈的完整性和安全性[7]。
本文对车载以太网TCP/IP协议一致性进行测试,测试平台基于IXIA的NOVUS10/1/100 m汽车以太网测试板卡,支持16个10G/1G/100M速率光电双介质端口和协议一致性测试,使用自主开发的车载以太网TCP/IP协议一致性测试软件进行测试,测试平台连接如图2所示。测试平台通过VNIC(虚拟网络接口卡)与PC和DUT连接,通过1台运行Windows或者Linux的电脑与测试平台的管理端口连接控制测试平台。
3.2 测试系统结构
测试系统结构如图3所示,主要包括测试用例库、测试执行器、测试结果及报告和Upper Tester[8]。
测试用例库是由大量测试用例按照测试内容进行分类组成的,测试用例库是测试用例的最大集合,包括ARP,IP,TCP和UDP的协议一致性测试集。测试用例库是由测试工程师编写,测试工程师根据对TCP/IP协议的理解,通过测试系统的测试用例编写器生成可以被编译的测试规范,再通过测试系统的测试用例编译器进行编译,生成可以被系统执行的测试脚本。测试用例库通过测试用例库管理系统管理,可以完成对测试用例的增加、删除和修改。
测试执行部分是测试系统的核心。通过执行测试用例库对DUT进行激励/响应测试。测试执行器按照测试用例库顺序执行已选择的测试用例,激励DUT做出响应。测试执行器根据DUT响应的协议数据单元(PDU)判断DUT是否符合协议标准。
测试报告是测试结果分析系统的输出结果。通过编写好的测试报告模板,测试结果分析系统把测试数据和结果填入测试报告模板,即生成一份测试报告。
TCP/IP协议一致性测试部分的测试项需从DUT的传输层的下层和上层同时进行连接。传输层以下的连接是通过传统的物理层接口实现的。传输层以上的连接需要开发一个独特的应用程序称为“Upper Tester”来实现。Upper Tester由测试执行器远程控制和管理。Upper Tester的目的是在测试所需的传输层之上产生必要的刺激。Upper Tester是与TCP协议一致性测试脚本捆绑在一起的基于Linux平台的便携式C代码应用程序。测试时需要编译Upper Tester到DUT系统。
4 测试集设计
车载以太网TCP/IP协议一致性测试集结构如表1所示。根据协议的种类测试集分为4个测试组:ARP协议一致性测试集、IP协议一致性测试集、TCP协议一致性测试集和UDP协议一致性测试集,一共347个测试用例[9]。
4.1 ARP协议一致性测试集
ARP协议一致性测试集主要是为了测试ARP的核心功能,验证DUT的ARP请求报文和ARP响应报文能否正常发送,测试集见表2。
4.2 IP协议一致性测试集
IP协议一致性测试集涉及IP寻址、IP数据包封装和IP数据包传输功能,测试集如表3所示。
4.3 TCP协议一致性测试集
TCP协议一致性测试集如表4所示,TCP的核心测试主要测试TCP状态机的转换和基本的TCP数据传输,TCP扩展测试主要验证TCP的可靠性和流量控制功能,TCP高性能测试则是为了测试TCP的高性能服务和选择性应答。
4.4 UDP协议一致性测试集
UDP协议一致性测试集内容包括:UDP数据格式测试和接口处理测试,测试集覆盖了UDP的主要功能,测试集见表5。
5 TCP/IP协议一致性测试实现
根据上述的测试系统,本文对车载以太网TCP/IP协议一致性测试集进行了一轮全面测试,被测系统结构如图4所示。本文将以TCP核心测试为例介绍测试过程。
首先,在测试系统的测试用例选择界面选择本次要测试的内容,界面如图5所示。确定测试内容之后需要手动设置测试接口配置,TCP核心测试的測试接口配置见表6,然后需要将Upper Tester编译到被测系统中,最后连接好被测系统进行测试。以测试项1.1为例进行测试过程分析。
测试项1.1名称为TCP_BASICS_01:[listen] SYN?> SYN/ACK [syn_recv],测试内容:TCP必须发送一个SYN,ACK报文来响应一个来自LISTEN状态端口的SYN报文,验证TCP的“握手”过程。该测试项的测试序列如图6所示。
测试序列对应的测试流程描述如下[10]:
1) 测试系统向被测系统发送测试开始请求;
2) 被测系统向测试系统发送测试开始响应;
3) 测试系统向被测系统发送创建套接字和绑定端口号的请求;
4) 被测系统向测试系统发送创建套接字和绑定端口号的响应;
5) 测试系统向被测系统发送生成监听套接字和接受被测系统连接的请求;
6) 被测系统向测试系统发送生成监听套接字和接受被测系统连接的响应;
7) 测试系统向被测系统发送一帧SYN报文,等待被测系统响应;
8) 被测系统向测试系统发送一帧SYN,ACK报文,表示自己收到了测试系统的SYN报文;
9) 测试系统向被测系统发送一帧ACK,Rest报文,表示自己收到了被测试系统的SYN,ACK报文;
10) 测试系统向被测系统发送关闭套接字请求;
11) 被测系统向测试系统发送关闭套接字响应;
12) 测试系统向被测系统发送测试结束请求;
13) 被测系统向测试系统发送测试结束响应;
14) 测试系统向被测系统发送ARP请求;
15) 被测系统向测试系统发送ARP响应,证明被测系统的IP地址仍有效。
如果测试项1.1在测试过程中遵循图6的测试序列,则测试项通过,否则未通过。
6 测试结果及分析
车载以太网TCP/IP协议一致性测试集的测试结果如表7所示,本次测试共有35项测试未通过,13项测试结果无法判断。
测试系统会给出测试项未通过的原因,其中,TCP核心测试未通过的测试项及其原因如下:
1)11.8 TCP_CLOSING_08:[finwait?2]RECEIVE + DATA ?> ACK [finwait?2]。通过测试系统让被测系统进入FIN_wait_2状态并使Upper Tester发送一个接收请求,测试系统没有收到任何数据。
2) 15.5 TCP_RETRANSMISSION_TO_05:Exponential backoff RTO SYN。通过测试系统让Upper Tester发送一个主动打开请求,使被测系统发送一帧SYN报文,测试系统不发送SYN,ACK报文,被测试系统没有重新发送SYN报文。
3) 16.4 TCP_PROBING_WINDOWS_04:Open connection probes ACK。通过测试系统让被测试系统进入ESTABLISHED状态,并让Upper Tester发送一个数据段发送请求,被测系统发送相应的数据段,测试系统发送ACK报文声明一个窗口尺寸为0的接收窗口,测试系统让Upper Tester发送另一个数据段发送请求,被测试系统没有发送一个零窗口探头。
7 结 论
本文提出了针对车载以太网TCP/IP协议一致性测试的具体测试系统方案,该测试系统能够对车载以太网TCP/IP协议中的重要协议进行较为全面的测试。通过对被测系统进行ARP,IP,TCP和UDP的协议一致性测試,证明了测试系统的有效性。测试实例结果表明,该测试系统能够发现被测系统协议实现中的问题,能够帮助供应商完善产品的协议。
参考文献
[1] 赵刚.基于车载以太网的协议研究[D].天津:河北工业大学,2015.
[2] 李志涛.车载以太网的研究与分析[J].汽车电器,2018(3):9?12.
[3] 陈想,周华春,苏伟.IPv6地址协议一致性测试系统设计与实现[J].计算机应用与软件,2013,30(11):28?31.
[4] 王庆,王之梁,姚姜源,等.天地一体化网络新型路由协议一致性测试研究[J].中国电子科学研究院学报,2018,13(1):72?80.
[5] 陈文娟.TCP/IP计算机网络拥塞控制问题浅析[J].甘肃科技,2018,34(7):12?15.
[6] 李君妍.新型互联网组播协议一致性测试的设计与实现[D].北京:北京交通大学,2017.
[7] 陈发堂,牛勇清,韩娜娜,等.协议一致性测试平台的搭建及仿真实现[J].电子技术应用,2014,40(4):137?140.
[8] 周轩羽,李雪,李巍.汽车以太网技术演进及测试[J].电信网技术,2017(6):6?11.
[9] 赵晓君,崔建涛.基于实时的嵌入式TCP/IP协议栈平台设计与实现[J].计算机测量与控制,2014,22(10):3368?3371.
[10] 刘斌涛,张形形,聂文霞.TD?LTE系统RLC层协议一致性测试[J].光通信研究,2015(5):67?70.