謝昊飛,王淮民,周進艷
(重慶郵電大學 工業物聯網與網絡化控制教育部重點實驗室,重慶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網絡能否正常運行的關鍵,那么如何對適配層進行測試就顯得非常重要。
IPv6協議規定的鏈路層最小MTU 為1 280字節,對于不支持該MTU 的鏈路層,協議要求必須提供對IPv6透明的鏈路層的分片和重組。而IEEE 802.15.4MAC層最大幀長僅為127字節[2],因此,適配層需要通過對IP報文進行分片和重組來傳輸超過IEEE 802.15.4MAC層最大幀長的報文。
當上層遞交一個超過適配層最大載荷長度的報文給適配層后,適配層需要對該報文分片進行發送。適配層分片的判斷條件為:負載報文長度+不分片頭部長度+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字節。
當適配層收到一個分片的幀后,根據以下兩個字段判斷該分片是屬于哪個負載報文:源MAC地址和適配層分片頭部的datagram_tag字段。對于同一個負載報文的多個分片,其重組過程可如圖2所示。

圖2 適配層重組全過程
適配層的重組過程:如果是第一次收到某負載報文的分片,節點記錄下該被分片的源MAC 地址和datagram_tag字段,以供后繼重組使用。如果已經收到該報文的其他分片,則根據當前分片幀的fragment_offset字段進行重組。如果發現收到的是一個重復但不重疊的分片,應該使用新收到的分片進行替換。如果本分片和前后分片有重疊,則應該丟棄當前分片。同時,為了避免長時間等待未達到的分片,在60s內重組沒有完成就需要丟棄所有接收到的分片,解除重組過程。如果成功接收到所有分片,將所有分片按Offset進行重組,并將重組好的原始負載報文遞交給上層。
協議一致性測試實質上是利用一組測試序列,在一定的網絡環境下,對被測實現(Implement Under Test,IUT)進行黑盒測試,通過比較IUT 的實際輸出與預期輸出的異同,判定IUT 在多大程度上與協議描述相一致,確定通過一致性測試的IUT 在互聯時成功率的高低。為了對6LoWPAN 適配層分片與重組技術進行測試,首先需要對標準中所描述的分片與重組技術進行分析,得出測試需求。
認清協議特點、明確測試需求是開展有效測試活動的前提。通過對適配層分片過程的分析,對于適配層分片技術,需要進行如下內容的測試:
①分片條件:在使用16位短地址并且不使用IEEE 802.15.4 安全機制的情況下,負載報文長度最大為95(102-2-5)字節,超過該值就需要進行分片傳輸。
②分片幀格式:判斷第一個分片以及后繼分片是否符合標準所規定的分片幀格式,其中還包括了fragment_offset字段與實際偏移值是否一致,同一個負載報文的分片datagram_tag以及datagram_size字段的值是否不變。
③分片數據的完整性:原始數據被分片以后是否能夠保證完整。
同樣,經過對適配層重組過程的分析,以下內容需要被測試:
①重組條件:被測協議是否能夠根據接收到數據幀的適配層幀頭判斷重組的條件。
②分片重復:如果發現收到的是一個重復但不重疊的分片,應該使用新收到的分片進行替換;如果本分片和前后分片有重疊,則應該丟棄當前分片。
③分片順序、亂序到達:分片數據在順序和亂序的兩種情況到達接收設備時,接收設備是否能夠正確對數據進行重組。
④分片超時:在重組過程中,可能存在分片數據的丟失,在60s內重組沒有完成,被測設備能否丟棄所有接收到的分片,解除重組過程。
⑤多設備同時發送分片:除了單一設備發送分片包進行重組,在多設備同時發送分片包的情況下,接收設備能否按設備進行正確的重組。
協議一致性測試使用在特定點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 的控制,消除了測試器非同步造成的錯誤,使測試更可靠,同時便于測試者協調、監控測試進程,得出更精確的測試結果。
根據所設計的測試方法,搭建了如圖4所示的測試系統。

圖4 測試系統結構
該測試系統由測試器、測試主機以及被測設備組成,測試實物如圖5所示。測試器主要實現了多個虛擬下測試器的功能,包括了虛擬下測試器控制模塊和IEEE 802.15.4 MAC/PHY 無線功能模塊。

圖5 測試實物圖
虛擬下測試器控制模塊包括測試事件管理、測試信息解析、測試命令執行以及下測試器地址管理的功能。其中,事件管理模塊主要負責測試事件的管理和維護,以及下測試器之間的協調和切換;消息解析模塊完成對測試命令和響應的解析與存儲;命令執行模塊通過調用MAC原語來執行相應的下測試器命令,間接實現控制和觀察IUT的下層服務接口;地址管理模塊對下測試器發送報文的MAC地址進行修改,實現用一臺測試器模擬多臺測試器的功能。
被測設備利用串口與測試主機相連。上測試器位于被測實現之上,用于觀察和控制IUT 的上層服務接口,通過串口接收測試主機發送的測試命令,并將測試響應傳送回測試主機[5]。
測試主機主要完成可執行測試集的生成,上測試器與下測試器的協調控制,測試響應的接收與分析,最后給出測試結果和分析報告。
在對適配層分片技術進行測試時,測試主機控制UT調用被測協議適配層的數據發送接口,通過改變所發送的數據載荷來模擬各種協議行為。測試器在收到被測設備發送的分片報文以后,立即交由測試主機進行分析和判斷。
在對適配層重組技術進行測試時,測試主機將設計的分片載荷傳輸給測試器,測試器通過調用MAC層數據發送接口將分片載荷按序發送給被測設備。在需要多設備發送分片報文時,測試器會模擬多個下測試器的功能,將分片載荷按照所設計的順序發送給被測設備。同時,被測設備中的UT 會將IUT 重組完成后的報文上傳給測試主機進行相應的分析和判斷。
通過搭建測試系統,完成了對適配層分片與重組所有測試需求的測試,本文以重組技術中多設備同時發送分片的情況為例來驗證測試方法的實現。在進行該項測試時,需要多個設備同時交錯發送分片包給被測設備,從而驗證被測設備能否完成對多設備同時發送分片的報文進行重組的功能。
進行測試時,測試主機會控制測試器模擬兩個測試設備同時向被測設備發送分片報文,可以通過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.