6LoWPAN适配层协议的分片与重组测试方法设计

2013-08-27 08:33谢昊飞王淮民周进艳
单片机与嵌入式系统应用 2013年2期
关键词:分片字段测试方法

谢昊飞,王淮民,周进艳

(重庆邮电大学 工业物联网与网络化控制教育部重点实验室,重庆400065)

引 言

IETF于2004年11月成立了6LoWPAN(IPv6over Low Power Wireless Personal Area Networks)工作组,该工作组的目标是研究制定在LoWPAN 上运行IPv6协议栈的一系列技术与标准。与传统的因特网TCP/IP 协议体系结构相比,6LoWPAN 在层次结构上多了一个适配层。由于IPv6协议栈不能直接运行于IEEE 802.15.4之上,适配层的加入能在IPv6与无线传感网之间实现无缝连接[1]。适配层协议的实现是6LoWPAN网络能否正常运行的关键,那么如何对适配层进行测试就显得非常重要。

1 适配层分片与重组技术分析

IPv6协议规定的链路层最小MTU 为1 280字节,对于不支持该MTU 的链路层,协议要求必须提供对IPv6透明的链路层的分片和重组。而IEEE 802.15.4MAC层最大帧长仅为127字节[2],因此,适配层需要通过对IP报文进行分片和重组来传输超过IEEE 802.15.4MAC层最大帧长的报文。

1.1 分 片

当上层递交一个超过适配层最大载荷长度的报文给适配层后,适配层需要对该报文分片进行发送。适配层分片的判断条件为:负载报文长度+不分片头部长度+Mesh Delivery字段长度(或Broadcast字段长度)>IEEE 802.15.4 MAC层的最大载荷长度。在使用16位短地址并且不使用IEEE 802.15.4安全机制的情况下,负载报文长度最大为95(102-2-5)字节。适配层分片的具体过程如图1所示。

适配层的分片过程如下:

①对于第一个分片,会将分片头部的LF字段设置为01,表示第一个分片。prot_type字段设置为上层协议的类型,特别的,如果是IPv6协议该字段设置为1。另外,由于是第一个分片,Offset必定为0,所以在该分片中不需要fragment_offset字段。如果需要在Mesh 网络中路由,Mesh Delivery字段应该紧随在分片头部之后并在负载报文碎片之前。

图1 适配层分片全过程

②对于后继分片,分片头部的LF 字段设置为11或者10,表示中间分片或者最后一片。fragment_offset字段则设置为当前碎片相对于原负载报文起始字节的偏移,需要注意的是这里的偏移是以8字节为单位的,因此每个分片的最大负载报文碎片长度也必须是8字节边界对齐的,也就是说负载报文碎片的最大长度实际上只有88字节。

1.2 重 组

当适配层收到一个分片的帧后,根据以下两个字段判断该分片是属于哪个负载报文:源MAC地址和适配层分片头部的datagram_tag字段。对于同一个负载报文的多个分片,其重组过程可如图2所示。

图2 适配层重组全过程

适配层的重组过程:如果是第一次收到某负载报文的分片,节点记录下该被分片的源MAC 地址和datagram_tag字段,以供后继重组使用。如果已经收到该报文的其他分片,则根据当前分片帧的fragment_offset字段进行重组。如果发现收到的是一个重复但不重叠的分片,应该使用新收到的分片进行替换。如果本分片和前后分片有重叠,则应该丢弃当前分片。同时,为了避免长时间等待未达到的分片,在60s内重组没有完成就需要丢弃所有接收到的分片,解除重组过程。如果成功接收到所有分片,将所有分片按Offset进行重组,并将重组好的原始负载报文递交给上层。

2 测试方法的分析与设计

协议一致性测试实质上是利用一组测试序列,在一定的网络环境下,对被测实现(Implement Under Test,IUT)进行黑盒测试,通过比较IUT 的实际输出与预期输出的异同,判定IUT 在多大程度上与协议描述相一致,确定通过一致性测试的IUT 在互联时成功率的高低。为了对6LoWPAN 适配层分片与重组技术进行测试,首先需要对标准中所描述的分片与重组技术进行分析,得出测试需求。

2.1 测试需求分析

认清协议特点、明确测试需求是开展有效测试活动的前提。通过对适配层分片过程的分析,对于适配层分片技术,需要进行如下内容的测试:

①分片条件:在使用16位短地址并且不使用IEEE 802.15.4 安全机制的情况下,负载报文长度最大为95(102-2-5)字节,超过该值就需要进行分片传输。

②分片帧格式:判断第一个分片以及后继分片是否符合标准所规定的分片帧格式,其中还包括了fragment_offset字段与实际偏移值是否一致,同一个负载报文的分片datagram_tag以及datagram_size字段的值是否不变。

③分片数据的完整性:原始数据被分片以后是否能够保证完整。

同样,经过对适配层重组过程的分析,以下内容需要被测试:

①重组条件:被测协议是否能够根据接收到数据帧的适配层帧头判断重组的条件。

②分片重复:如果发现收到的是一个重复但不重叠的分片,应该使用新收到的分片进行替换;如果本分片和前后分片有重叠,则应该丢弃当前分片。

③分片顺序、乱序到达:分片数据在顺序和乱序的两种情况到达接收设备时,接收设备是否能够正确对数据进行重组。

④分片超时:在重组过程中,可能存在分片数据的丢失,在60s内重组没有完成,被测设备能否丢弃所有接收到的分片,解除重组过程。

⑤多设备同时发送分片:除了单一设备发送分片包进行重组,在多设备同时发送分片包的情况下,接收设备能否按设备进行正确的重组。

2.2 测试方法设计

协议一致性测试使用在特定点PCO(Point of Control and Observation)对被测实现的层间服务原语和协议数据单元进行控制和观察的原理。根据PCO 位置的不同,在ISO/IEC 9646(协议一致性测试方法和框架)中已被标准化的抽象测试方法有本地测试法和外部测试法。本地测试法适合于在产品内部测试;外部测试法适合于远程的第三方测试,又可分为分布式、协调式和远程式测试[3]。

在实际的协议测试中,被测协议实现是根据地址来判断测试包是从哪一个测试器来的。利用这个事实,再结合对适配层分片与重组测试需求的分析,在进行适配层分片与重组测试时需要用到多个测试设备来对被测协议进行测试。因此,在实际的测试过程中,我们提出用一台物理测试器、不同被测条件下对等层的MAC地址来实现多个下测试器的测试方法——虚拟测试法。该测试方法是对分布式测试法进行的优化与改进,测试结构如图3所示。

图3 虚拟测试法结构

该结构是用单台测试器实现的对IUT 进行一致性测试的虚拟测试结构。测试器(Tester)是测试活动发起者和控制者,其中,虚拟下测试器(Virtual Lower Tester,VLT)1到n是由同一台测试器实现的多个虚拟测试器。下测试器(Lower Tester,LT)在测试执行时,间接控制和观察IUT 的下层服务接口。上测试器(Upper Tester,UT)位于被测系统中IUT 的上方,用于控制和观察IUT的上层服务接口。测试协调过程(Test Coordination Procedures,TCP)明确或隐含地定义了LT 和UT 之间的协同操作规则。测试器利用协议规范的抽象服务访问点(Abstract Service Primitives,ASP)和协议数据单元(Protocol Data Unit,PDU)与IUT 进行交互,并通过PCO 查看测试事件和测试过程[4]。

由于分片与重组的测试是在适配层进行,因此,被测的适配层协议仅仅根据数据包的MAC 地址来判断报文的来源和去处。对于一个被测节点收到的各种数据包,如果包的源MAC地址不同,被测节点就会认为这些包是不同的源节点发出的。因此,该测试结构的实质就是用一个测试器来模拟多个测试器,所有虚拟测试器的MAC地址都是不同的,即用一台测试器发送测试包时,在测试包的MAC层使用不同的源地址。在接收到这些包时,被测设备就会认为是由不同的节点发出的,从而实现了用一台测试器模拟多台测试器的效果。

运用这种测试方法,可以不用考虑各测试器之间的同步问题,便于对IUT 的控制,消除了测试器非同步造成的错误,使测试更可靠,同时便于测试者协调、监控测试进程,得出更精确的测试结果。

3 测试方法实现

根据所设计的测试方法,搭建了如图4所示的测试系统。

图4 测试系统结构

该测试系统由测试器、测试主机以及被测设备组成,测试实物如图5所示。测试器主要实现了多个虚拟下测试器的功能,包括了虚拟下测试器控制模块和IEEE 802.15.4 MAC/PHY 无线功能模块。

图5 测试实物图

虚拟下测试器控制模块包括测试事件管理、测试信息解析、测试命令执行以及下测试器地址管理的功能。其中,事件管理模块主要负责测试事件的管理和维护,以及下测试器之间的协调和切换;消息解析模块完成对测试命令和响应的解析与存储;命令执行模块通过调用MAC原语来执行相应的下测试器命令,间接实现控制和观察IUT的下层服务接口;地址管理模块对下测试器发送报文的MAC地址进行修改,实现用一台测试器模拟多台测试器的功能。

被测设备利用串口与测试主机相连。上测试器位于被测实现之上,用于观察和控制IUT 的上层服务接口,通过串口接收测试主机发送的测试命令,并将测试响应传送回测试主机[5]。

测试主机主要完成可执行测试集的生成,上测试器与下测试器的协调控制,测试响应的接收与分析,最后给出测试结果和分析报告。

在对适配层分片技术进行测试时,测试主机控制UT调用被测协议适配层的数据发送接口,通过改变所发送的数据载荷来模拟各种协议行为。测试器在收到被测设备发送的分片报文以后,立即交由测试主机进行分析和判断。

在对适配层重组技术进行测试时,测试主机将设计的分片载荷传输给测试器,测试器通过调用MAC层数据发送接口将分片载荷按序发送给被测设备。在需要多设备发送分片报文时,测试器会模拟多个下测试器的功能,将分片载荷按照所设计的顺序发送给被测设备。同时,被测设备中的UT 会将IUT 重组完成后的报文上传给测试主机进行相应的分析和判断。

4 测试案例与验证

通过搭建测试系统,完成了对适配层分片与重组所有测试需求的测试,本文以重组技术中多设备同时发送分片的情况为例来验证测试方法的实现。在进行该项测试时,需要多个设备同时交错发送分片包给被测设备,从而验证被测设备能否完成对多设备同时发送分片的报文进行重组的功能。

进行测试时,测试主机会控制测试器模拟两个测试设备同时向被测设备发送分片报文,可以通过Packet Sniffer for CC2430软件抓包进行验证。Sniffer for CC2430抓包如图6所示,交错发送的分片报文是由两个测试设备产生,其MAC地址分别为0x0001和0x0002,分片报文的目的地址都为同一个被测设备0x0000。测试器实现了模拟多个测试器的功能,实现了多测试器的协调运行,并按序准确地将分片报文发送到被测设备。

图6 Sniffer for CC2430抓包

被测设备的适配层将接收到的分片报文按设备重组以后传递给上层,上层UT 在收到重组报文以后传送给测试主机并用串口工具显示,串口接收的UT 数据如图7所示。每一个分片报文由0~99 的数据构成,总长度为100,对数据进行分析可知,被测设备准确地完成了对多个设备同时发送分片报文的重组过程。

图7 串口接收的UT数据

结 语

通过实际验证表明,测试系统通过使用该测试方法,在减少测试设备数量的同时,充分完成了对测试需求的测试。该测试方法不仅适用于6LoWPAN 适配层分片与重组技术的测试,对于需要使用多个测试设备相互协作来完成的测试,都可以借鉴此方法。

[1]IETF.IPv6over Low Power WPAN WG(6lowpan)[EB/OL].(2006-07-07)[2012-10].http://datatracker.ietf.org/wg/6lowpan/.

[2]IEEE Std 802.15.4-2006 Wireless Medium Access Control(MAC)and Physical Layer(PHY)Specifications for Low-Rate Wireless Personal Area Networks(WAPNs)[S].

[3]ISO/IEC 9646-1—1994Information technology-Open systems Interconnection-Conformance testing methodology and framework-Part 1:General concepts[S].

[4]王浩文.EPA 协议一致性测试方法研究[J].自动化仪表,2006,27(10).

[5]张华良,曾鹏.工业无线网络测试平台研究[J].仪器仪表标准化与计量,2008(5):25-27.

猜你喜欢
分片字段测试方法
上下分片與詞的時空佈局
基于泊松对相关的伪随机数发生器的统计测试方法
图书馆中文图书编目外包数据质量控制分析
分片光滑边值问题的再生核方法
CDN存量MP4视频播放优化方法
基于云计算的软件自动化测试方法
DLD-100C型雷达测试方法和应用
基于模糊二分查找的帧分片算法设计与实现
对改良的三种最小抑菌浓度测试方法的探讨
CNMARC304字段和314字段责任附注方式解析