專利名稱:一種TCPv6和/或UDPv6測試設(shè)備及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到通訊領(lǐng)域,具體來說,是一種基于IPv6網(wǎng)絡(luò)的TCPv6和 /或UDPv6測試設(shè)備及方法。
背景技術(shù):
全球范圍內(nèi)WLAN、 2.5G、 3G無線移動數(shù)據(jù)網(wǎng)絡(luò)的發(fā)展也加快了以互 聯(lián)網(wǎng)為核心的通信模式的形成,由于移動通信用戶的增長要比固定網(wǎng)用戶快 得多,特別是各種具有聯(lián)網(wǎng)功能的移動終端的迅猛發(fā)展,考慮到隨時隨地的、 任何形式、直接的個人多媒體通信的需要,現(xiàn)有的IPv4已經(jīng)遠遠不能滿足 網(wǎng)絡(luò)市場對地址空間、端到端的IP連接、服務(wù)質(zhì)量網(wǎng)絡(luò)安全和移動性能的 要求。人們寄希望于新一代的IP協(xié)議來解決以上問題,IETF提出了 IPv6 互聯(lián)網(wǎng)協(xié)議,采用長度為128b IP地址的IPv6協(xié)議,徹底解決了IPv4地址 不足的難題,并且在地址容量、安全性、網(wǎng)絡(luò)管理、移動性以及服務(wù)質(zhì)量等 方面有明顯的改進,是下一代互聯(lián)網(wǎng)絡(luò)協(xié)議采用的核心標準之一。從當前 Ipv6技術(shù)研究和技術(shù)發(fā)展的趨勢來看,基于Ipv6的下一代互聯(lián)網(wǎng)新技術(shù)支 持新應(yīng)用,新應(yīng)用推動新技術(shù)的標準化,IPv6的應(yīng)用將越來越廣泛。面對越來越多的IPv6協(xié)議,原有的IPv4相關(guān)測試設(shè)備,已不能滿足用 戶的要求,支持TCPv6(TCP,傳輸控制協(xié)議)和UDPv6 (UDP,用戶數(shù)據(jù) 報協(xié)議)測試的設(shè)備及方法就變得非常重要??紤]到以往的TCPv4和UDPv4 相關(guān)測試的設(shè)備都是基于IPv4協(xié)議的,并不兼容IPv6協(xié)議,目前在IPv6 網(wǎng)絡(luò)中,暫無相關(guān)研究。對于目前IPv6的測試方法,通過網(wǎng)絡(luò)測試儀提供給被測設(shè)備虛擬的服 務(wù)和客戶端,大都是圍繞著IPv6協(xié)議報文、Qos服務(wù)質(zhì)量、IPv6路由協(xié)議 等進行,測試性能及可靠性較好,但由于設(shè)備昂貴,不利于大規(guī)模使用。而 且網(wǎng)絡(luò)測試儀往往需要通過一臺PC (電腦)來控制,并需要通過其他的抓包工具進行抓包分析,控制比較繁瑣。
對于IPv6中的底層協(xié)議,如TCP和UDP等基礎(chǔ)協(xié)議,由于其重要地位 使得其測試的意義尤為突出,有必要提出一種TCPv6和UDPv6測試的設(shè)備 及方法。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是在于需要提供一種基于IPv6網(wǎng)絡(luò)的 TCPv6和/或UDPv6測試設(shè)備及方法,能實現(xiàn)TCPv6和/或UDPv6的數(shù)據(jù)連 寺妾測試。
為了解決上述4支術(shù)問題,本發(fā)明提供了 一種TCPv6和/或UDPv6測試設(shè) 備,包括IPv6數(shù)據(jù)處理模塊、結(jié)果記錄模塊和控制模塊,其中
所述IPv6數(shù)據(jù)處理模塊,與被測對象相連,用于仿真以下設(shè)備中的一 種或幾種TCPv6服務(wù)器、TCPv6客戶端、UDPv6客戶端,建立接收隊列 用以存儲所述測試對象發(fā)送的數(shù)據(jù),建立發(fā)送隊列用以向所述測試對象發(fā)送 數(shù)據(jù),完成與所述被測對象進行數(shù)據(jù)收發(fā)測試;
所述結(jié)果記錄模塊,與IPv6數(shù)據(jù)處理模塊相連,用于記錄測試結(jié)果;
所述控制模塊,分別與所述IPv6數(shù)據(jù)處理模塊和結(jié)果記錄模塊相連, 用于完成各模塊的參數(shù)配置及初始化,維護各模塊之間的任務(wù)調(diào)度。
進一步地,所述IPv6數(shù)據(jù)處理模塊包括
TCPv6處理子模塊,用于仿真TCPv6服務(wù)器和/或TCPv6客戶端,提供 數(shù)據(jù)收發(fā)的TCPv6接口 ,監(jiān)聽數(shù)據(jù)收發(fā);
UDPv6處理子模塊,用于仿真UDPv6客戶端,提供數(shù)據(jù)收發(fā)的UDPv6 接口,監(jiān)聽數(shù)據(jù)收發(fā);
批量處理子模塊,分別與所述TCPv6處理子模塊和UDPv6處理子模塊 相連,當配置一次創(chuàng)建連接的數(shù)量為多個時,為每個連接創(chuàng)建一個鏈表,對 被測數(shù)據(jù)進行批量操作。進一步地,所述IPv6數(shù)據(jù)處理模塊還包括與所述IPv6數(shù)據(jù)處理模塊相 連的數(shù)據(jù)環(huán)回子模塊,以及與所述數(shù)據(jù)環(huán)回子模塊相連的定時子模塊,其中 所述數(shù)據(jù)環(huán)回子模塊用于將接收隊列中的數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)后放入發(fā)送隊 列;所述定時子模塊用于設(shè)置所述數(shù)據(jù)環(huán)回子模塊將數(shù)據(jù)放入發(fā)送隊列的時 間間隔。
進一步地,所述結(jié)果記錄模塊包括讀寫子模塊和記錄子模塊,其中所 述讀寫子模塊,與所述IPv6數(shù)據(jù)處理模塊相連,用于將接收隊列中的數(shù)據(jù) 寫入文件,或者從文件中讀取數(shù)據(jù)寫入發(fā)送隊列;所述記錄子模塊,與所述 IPv6 ^:據(jù)處理模塊相連,以日志的方式記錄測試結(jié)果。
進一步地,所述控制模塊包括管理子模塊和參數(shù)存儲子模塊,其中所 述參數(shù)存儲子模塊,與所述IPv6數(shù)據(jù)處理模塊相連,用于提供初始化參數(shù) 以供測試人員選擇,以及存儲設(shè)置好的參數(shù);所述管理子模塊,用于實現(xiàn)各
模塊的線程啟動和停止,維護各模塊之間的任務(wù)調(diào)度,處理各模塊的消息請 求和異常處理。
為了解決上述技術(shù)問題,本發(fā)明還提供了 一種TCPv6和/或UDPv6測試 方法,包括以下步驟
(a) 測試設(shè)備在進行參數(shù)配置及初始化后,與被測對象創(chuàng)建TCPv6連 接和/或UDPv6連接;
(b) 所述測試設(shè)備監(jiān)聽每個連接的數(shù)據(jù)收發(fā),建立接收隊列以存儲所 述測試對象發(fā)送的數(shù)據(jù),建立發(fā)送隊列以向所述測試對象發(fā)送數(shù)據(jù),與所述 凈皮測對象進行數(shù)據(jù)收發(fā)測試;
(c) 測試結(jié)束后關(guān)閉連接,保存測試結(jié)果。
進一步地,在所述步驟(a)中,當配置一次創(chuàng)建連接的數(shù)量為多個時, 所述測試設(shè)備為每個連接創(chuàng)建一個鏈表,用于存儲連接信息。
進一步地,在所述步驟(a)中,所述參數(shù)配置包括是否進行數(shù)據(jù)環(huán)回, 當所述測試設(shè)備設(shè)置進行數(shù)據(jù)環(huán)回時,則將接收隊列中的數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)后放入發(fā)送隊列中。
進一步地,所述測試設(shè)備進一步設(shè)置以下參數(shù)中的一種或幾種,實現(xiàn)可
變流量的數(shù)據(jù)測試數(shù)據(jù)放入發(fā)送隊列的時間間隔、發(fā)包總個數(shù)、發(fā)送數(shù)據(jù) 的長度。
進一步地,所述測試設(shè)備與所述^皮測對象創(chuàng)建TCPv6連4妄和/或UDPv6 連接,是指由所述測試設(shè)備向所述被測對象發(fā)出連接請求創(chuàng)建所述連接,或 者由所述被測對象向所述測試設(shè)備發(fā)起連接請求創(chuàng)建所述連接;所述測試設(shè) 備向所述被測對象發(fā)出連接請求創(chuàng)建所述連接時,在所述測試設(shè)備上配置的 參數(shù)即連接信息包括測試類型、對端IPv6地址、對端端口、本地IPv6地 址、本地端口。
與現(xiàn)有技術(shù)相比,本發(fā)明提出一套完整的基礎(chǔ)協(xié)議的測試設(shè)備及相應(yīng)的 測試方法,具有如下優(yōu)點
(1) 設(shè)備簡單,成本低廉。
(2) 提供批量操作,簡化了測試工作,提高了測試效率。
(3) 支持可變流量的數(shù)據(jù)循環(huán)發(fā)送測試。
(4) 支持文件讀寫操作和數(shù)據(jù)實時存儲。
(5) 支持服務(wù)器與客戶端的有機整合,統(tǒng)一界面,減少頻繁的界面切換。
(6) 可以同時仿真TCPv6服務(wù)器與客戶端、UDPv6客戶端,互不影響。
圖1為本發(fā)明測試方法的流程階段示意圖2為本發(fā)明測試設(shè)備的模塊結(jié)構(gòu)示意圖3為本發(fā)明所述IPv6數(shù)據(jù)處理模塊的結(jié)構(gòu)示意圖4為本發(fā)明所述結(jié)果記錄模塊的結(jié)構(gòu)示意圖5為本發(fā)明所述控制模塊的結(jié)構(gòu)示意圖;圖6為基于圖3-圖5所示各模塊內(nèi)部結(jié)構(gòu)的本發(fā)明設(shè)備實施例示意圖; 圖7為本發(fā)明所提測試設(shè)備的總體工作流程示意圖。
具體實施例方式
以下將結(jié)合附圖及實施例來詳細說明本發(fā)明的實施方式,借此對本發(fā)明 如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達成技術(shù)效果的實現(xiàn)過程能充分理解 并據(jù)以實施。
本發(fā)明測試設(shè)備可以直接安裝在PC機上,在進行TCPv6和/或UDPv6 的測試時,PC終端/測試設(shè)備通過FE ( Fast Ethernet,快速以太網(wǎng))接口與 被測試設(shè)備連接,與被測對象建立TCPv6或UDPv6連接,模擬數(shù)據(jù)收發(fā)測 試。數(shù)據(jù)收發(fā)測試的目的主要是為了測試被測對象是否能夠正常接收和發(fā)送 數(shù)據(jù),特別是不同大小報文及多個連接情況下的數(shù)據(jù)收發(fā)性能。
TCPv6和/或UDPv6測試流程如圖1所示,其中的被測對象可以是TCPv6 服務(wù)器,也可以是TCPv6客戶端或UDPv6客戶端;測試設(shè)備可以同時仿真 TCPv6服務(wù)器與客戶端,以及UDPv6客戶端。測試方法包括以下步驟
S10,通過PC的網(wǎng)口與FE 口直連,在被測對象與測試設(shè)備之間創(chuàng)建IPv6 連接;
在本步驟中,可以由測試設(shè)備發(fā)起創(chuàng)建,也可以由被測對象發(fā)起創(chuàng)建。 在本文中的本端或本地均指測試設(shè)備端,對端指被測對象端。
對于由測試設(shè)備發(fā)起,測試人員通過測試設(shè)備的操作界面,選擇測試類 型(即測試設(shè)備仿真的類型)、輸入對端IPv6地址、對端端口、本地IPv6 地址、本地端口以及一次建立的連接數(shù)量,或者還可以選纟奪是否進行數(shù)據(jù)環(huán) 回,填充相關(guān)連接請求參數(shù)后,測試設(shè)備發(fā)出連接請求進行系統(tǒng)連接。測試 設(shè)備根據(jù)測試人員輸入的上述參數(shù),屏蔽了 TCPv6或UDPv6協(xié)議差異。
由測試設(shè)備IO主動發(fā)起連接請求,使用connect函數(shù)去連接被測對象。 測試設(shè)備10通過設(shè)置自定義的超時時間,對測試設(shè)備10請求的對端IPv6 地址和對端端口進行有效性檢測,降低連接超時時間,從而提高了測試效率。
如果連接失敗,則記錄日志并返回錯誤信息,終止執(zhí)行;如果連接成功,則分配一個鏈表實體空間,填充連接信息后加入到鏈表中,進行數(shù)據(jù)收發(fā)監(jiān) 聽處理。
在本步驟中,根據(jù)實際使用的情況,測試設(shè)備可以對選擇本地IPv6地 址和本地端口進行優(yōu)化處理,具體包括
在選擇本地IPv6地址時,測試設(shè)備操作界面進一步提供測試人員選擇 是指定地址還是默認地址
如果選擇指定本地地址,則在創(chuàng)建連接的過程中,測試設(shè)備將枚舉PC 終端上支持的所有IPv6地址以供選擇,在連接的過程中將按指定的IPv6地 址作為本地IPv6地址建立連接。
如果選一奪本地默認地址,則在建立監(jiān)聽的過程中,測試設(shè)備將選4奪通配 符作為本地IPv6地址建立監(jiān)聽,相當于監(jiān)聽本地所有的IPv6有效地址。
在選擇本地端口時,測試設(shè)備操作界面進一步提供測試人員選擇是隨機 選擇還是指定選擇
如果本地端口的選擇方式為隨4幾選擇本地端口 ,則在創(chuàng)建連一妻的過程 中,測試設(shè)備將從1024端口開始遞增,選4奪一個有效的端口作為連接的本 地端口 。
如果本地端口的選擇方式為指定本地端口,則在創(chuàng)建連接的過程中,測 試設(shè)備將把指定的端口作為連接的本地端口 。
S20,測試設(shè)備監(jiān)聽每個連接的數(shù)據(jù)收發(fā),建立接收隊列以存儲所述測 試對象發(fā)送的數(shù)據(jù),建立發(fā)送隊列以向所述測試對象發(fā)送數(shù)據(jù),數(shù)據(jù)交互, 進行TDPv6或UDPv6數(shù)據(jù)包的收發(fā);
本步驟中,測試設(shè)備為了能夠使多個連接可以同時接收數(shù)據(jù),因此采用 多線程實現(xiàn)數(shù)據(jù)收發(fā)的監(jiān)聽處理,同時利用接收隊列和發(fā)送隊列來集中統(tǒng)一 處理數(shù)據(jù),接收與發(fā)送互不影響。在接收到被測對象發(fā)送來的數(shù)據(jù)時,測試 設(shè)備首先查找連接信息鏈表,用套接字(socket)作為關(guān)鍵字進行匹配查找, 該連接信息鏈表中的信息主要有套接字,本端地址和端口、對端地址和端口 等,確認數(shù)據(jù)的有效性。如果是非法數(shù)據(jù),則統(tǒng)一采取默認丟棄;如果是有 效數(shù)據(jù),則讀取數(shù)據(jù),同時將數(shù)據(jù)加入到接收隊列中作進一步處理。當監(jiān)聽到接收隊列有新加入數(shù)據(jù)時,從接收隊列中讀取新加入的數(shù)據(jù), 根據(jù)測試人員在測試設(shè)備上設(shè)置的參數(shù),測試設(shè)備決定是否進行實時數(shù)據(jù)存 儲或數(shù)據(jù)自動環(huán)回處理。如果選擇了實時數(shù)據(jù)存儲,則根據(jù)設(shè)置的存儲文件路徑,調(diào)用文件寫接口進行數(shù)據(jù)實時寫操作;如果選擇數(shù)據(jù)自動環(huán)回,則對 數(shù)據(jù)進4于環(huán)回測試處理。S30,關(guān)閉IPv6連接,保存測試結(jié)果。本步驟中,支持測試設(shè)備主動關(guān)閉和被動關(guān)閉兩種模式,其中主動關(guān)閉的步驟,是首先通過測試設(shè)備的操作界面選擇要關(guān)閉的連接, 這里可以同時選擇多個連接進行關(guān)閉,然后調(diào)用相應(yīng)關(guān)閉接口,把數(shù)據(jù)發(fā)給 作關(guān)閉連接的流程處理,保存測試結(jié)果。被動關(guān)閉的步驟,是在接收到被測對象發(fā)送來的關(guān)閉消息時,進行鏈表 匹配查找,確認關(guān)閉消息有效后,清除、釋放相關(guān)分配的空間、停止對應(yīng)于 該連接相關(guān)線程的監(jiān)聽,也保存測試結(jié)果。同時對TIME WAIT (等待)狀態(tài)的端口進行了優(yōu)化,通過設(shè)置 SO—REUSEADDR (允許端口重用)套接字選項,使測試設(shè)備對TIME WAIT 狀態(tài)的端口可以繼續(xù)4吏用,不需再等待TIME WAIT時間才可使用該端口 。圖2示出了本發(fā)明測試設(shè)備的結(jié)構(gòu)示意圖。本發(fā)明的TCPv6和/或 UDPv6測試設(shè)備10主要包括如下模塊IPv6數(shù)據(jù)處理模塊30,與被測對象20相連,用于仿真TCPv6服務(wù)器 或TCPv6客戶端或UDPv6客戶端,包括創(chuàng)建用于接收、發(fā)送IPv6數(shù)據(jù)的 接口供其他模塊調(diào)用;當同時仿真多個服務(wù)器和客戶端時,每個服務(wù)器與客 戶端都采用單獨的線程實現(xiàn),互不影響;結(jié)果記錄模塊40,與IPv6數(shù)據(jù)處理模塊30相連,用于記錄測試結(jié)果, 通過顯示設(shè)備顯示測試結(jié)果;控制模塊50,用于控制IPv6數(shù)據(jù)處理模塊30和結(jié)果記錄模塊40的啟 動和停止,實現(xiàn)各模塊的參數(shù)配置及初始化,維護各模塊之間的任務(wù)調(diào)度, 處理各模塊的消息請求和異常處理。測試設(shè)備通過控制模塊50提供一個公用的接口函數(shù),根據(jù)測試人員輸 入的上述參數(shù),屏蔽TCPv6或UDPv6的協(xié)議差異。如圖3所示,IPv6數(shù)據(jù)處理模塊30主要包括TCPv6處理子模塊31、 UDPv6處理子模塊32和批量處理子模塊33。其中TCPv6處理子模塊31,用于仿真TCPv6服務(wù)器與客戶端,提供創(chuàng)建 TCPv6服務(wù)器接口 、 TCPv6客戶端接口以及TCPv6發(fā)送數(shù)據(jù)等TCPv6接口 的功能;UDPv6處理子模塊32,用于仿真UDPv6客戶端,提供創(chuàng)建UDPv6客 戶端接口以及UDPv6發(fā)送數(shù)據(jù)等UDPv6接口的功能;批量處理子模塊33,分別與TCPv6處理子模塊31 、 UDPv6處理子模 塊32相連,用于對被測數(shù)據(jù)進行批量操作處理,提供批量創(chuàng)建、關(guān)閉、發(fā) 送數(shù)據(jù)接口等供其他模塊調(diào)用。當選擇一次建立的連接數(shù)量為多個時,通知或調(diào)用相關(guān)TCPv6或UDPv6接口進行數(shù)據(jù)處理,實現(xiàn)一次創(chuàng)建多服務(wù)器和 多客戶端的仿真測試,同時也簡化TCPv6和/或UDPv6容量測試的步驟,提高測試效率。在前述連接建立步驟SIO中,如果選擇的測試類型為TCPv6,則把數(shù)據(jù) 發(fā)送到TCPv6處理子模塊31;如果選擇的測試類型為UDPv6,則把數(shù)據(jù)發(fā) 送到UDPv6處理子模塊32。上述TCPv6處理子模塊31創(chuàng)建TCPv6服務(wù)器接口的處理流程為首先創(chuàng)建一個服務(wù)器套接字(socket),設(shè)置監(jiān)聽本地IPv6地址和本地 端口,成功創(chuàng)建TCPv6服務(wù)器后,申請一個鏈表實體空間,填充套接字號, 本地IPv6地址和本地端口 ,把創(chuàng)建的TCPv6服務(wù)器加入到TCPv6監(jiān)聽鏈表 中,啟動服務(wù)器監(jiān)聽線程進行服務(wù)器監(jiān)聽;當接收到被測對象TCPv6客戶端的連接請求時,觸發(fā)監(jiān)聽線程,系統(tǒng) 完成三次握手后,為新建的TCPv6連接分配空間,填充相關(guān)數(shù)據(jù)后,把新建的TCPv6連接加入到TCPv6鏈表中,啟動數(shù)據(jù)監(jiān)聽線程,進行數(shù)據(jù)監(jiān)聽;測試設(shè)備IO接收到數(shù)據(jù)時,觸發(fā)數(shù)據(jù)監(jiān)聽線程,首先查詢TCPv6鏈表, 用套接字號作為關(guān)鍵字進行匹配查找,核對該數(shù)據(jù)的來源有效性,然后緩存 數(shù)據(jù),填充相關(guān)數(shù)據(jù)后,加入接收隊列中,轉(zhuǎn)入接收數(shù)據(jù)的流程處理。上述TCPv6處理子模塊31創(chuàng)建TCPv6客戶端接口的處理流程為首先創(chuàng)建一個客戶端socket,然后填充本地端口、對端IPv6地址和對 端即服務(wù)器端口,檢測對端IPv6地址和對端端口有效性,如果對端IPv6地 址和端口有效,則連接對端IPv6地址和端口以建立TCPv6連接,否則轉(zhuǎn)入 異常處理流程;成功建立TCPv6連接后,為新建的TCPv6連接分配實體鏈 表空間,填充相關(guān)數(shù)據(jù),加入TCPv6鏈表中,啟動數(shù)據(jù)監(jiān)聽線程進行數(shù)據(jù) 監(jiān)聽;測試設(shè)備接收到數(shù)據(jù)時,觸發(fā)該線程進一步對數(shù)據(jù)處理,首先查詢 TCPv6鏈表,核對該數(shù)據(jù)的來源有效性,然后緩存數(shù)據(jù),填充相關(guān)數(shù)據(jù)后, 加入4^收隊列中,轉(zhuǎn)入接收數(shù)據(jù)的流程處理。上述兩處接收數(shù)據(jù)的流程處理,先進行接收統(tǒng)計,然后判斷是否進行數(shù) 據(jù)環(huán)回,是則進行數(shù)據(jù)轉(zhuǎn)換后加入到發(fā)送隊列等待發(fā)送,否則實時寫文件或 者顯示結(jié)果。上述TCPv6處理子模塊31創(chuàng)建TCPv6發(fā)送數(shù)據(jù)接口的處理流程為填充發(fā)送接口的控制參數(shù)后,把待發(fā)送數(shù)據(jù)加入到發(fā)送隊列中,轉(zhuǎn)入發(fā) 送數(shù)據(jù)的流程處理,此發(fā)送數(shù)據(jù)的流程處理,就是將數(shù)據(jù)加入發(fā)送隊列,然 后進行發(fā)送統(tǒng)計,發(fā)送成功則顯示結(jié)果,發(fā)送失敗則記錄日志并顯示結(jié)果。上述UDPv6處理子模塊32創(chuàng)建UDPv6客戶端接口的處理流程為首先創(chuàng)建一個UDPv6客戶端socket,然后填充本地端口、對端IPv6地 址和對端端口,成功創(chuàng)建UDPv6連接后,為新建的UDPv6連接分配空間, 填充相關(guān)數(shù)據(jù),加入UDPv6鏈表,啟動線程,進行數(shù)據(jù)監(jiān)聽;系統(tǒng)接收到數(shù)據(jù)時,觸發(fā)該線程,首先查詢UDPv6鏈表,核對該數(shù)據(jù) 的來源有效性,然后緩存數(shù)據(jù),填充相關(guān)數(shù)據(jù)后,加入接收隊列中,轉(zhuǎn)入接 收數(shù)據(jù)的流程處理。上述UDPv6處理子模塊32創(chuàng)建UDPv6發(fā)送數(shù)據(jù)接口的處理流程為根據(jù)要發(fā)送的信息,填充相關(guān)數(shù)據(jù),然后把要發(fā)送的數(shù)據(jù)加入到發(fā)送隊 列中,轉(zhuǎn)入發(fā)送數(shù)據(jù)的流程處理。上述批量處理子模塊33接收到批量操作數(shù)據(jù)的操作消息時,根據(jù)操作 消息通知或調(diào)用相關(guān)TCPv6或UDPv6接口進行數(shù)據(jù)處理,最終實現(xiàn)一次創(chuàng) 建多服務(wù)器和多客戶端的仿真測試,從而做到簡化TCPv6和/或UDPv6容量 測試的步驟,提高了測試效率。如圖3所示,在IPv6數(shù)據(jù)處理^^莫塊30還可以包括數(shù)據(jù)環(huán)回子^t塊34 和定時子模塊35,其中數(shù)據(jù)環(huán)回子模塊34,用于對接收到的數(shù)據(jù)進行發(fā)送,可以是以可變流 量地對數(shù)據(jù)進行發(fā)送,100Mbps內(nèi)自由控制。當接收到數(shù)據(jù)時,先進行緩存 并數(shù)據(jù)轉(zhuǎn)換,把接收數(shù)據(jù)結(jié)構(gòu)實體轉(zhuǎn)換為發(fā)送數(shù)據(jù)結(jié)構(gòu)實體,然后在連接信 息鏈表中進行匹配查找,根據(jù)匹配的結(jié)果做進一步的處理。定時子模塊35,典型的可以是一定時器,用以設(shè)置數(shù)據(jù)發(fā)送的發(fā)送時 間間隔參數(shù),協(xié)助數(shù)據(jù)環(huán)回子模塊34完成可變流量的數(shù)據(jù)發(fā)送測試,達到 控制FE 口發(fā)送才艮文流量的目的。在前述連接建立步驟S10中,測試設(shè)備10啟用定時子模塊35對對端 IPv6地址和對端端口進行有效性;險測。如果出現(xiàn)請求一個不存在的對端地 址,系統(tǒng)會有個超時處理,效率上會提高很多。數(shù)據(jù)環(huán)回子模塊34根據(jù)定時子模塊35設(shè)定的發(fā)送時間間隔,以及發(fā)包 總個數(shù)和報文長度,把待發(fā)送數(shù)據(jù)加入到發(fā)送隊列中,進行發(fā)送數(shù)據(jù)的流程 處理。發(fā)包總個數(shù)和報文長度這兩個參數(shù)可以是由測試人員在操作界面上設(shè)置而來,如果沒有設(shè)置則取默認值。在測試過程中,可以對發(fā)送時間間隔、發(fā)包總個數(shù)和發(fā)送數(shù)據(jù)的報文長度進行修改或重配置,實現(xiàn)與被測對象20之間建立可變數(shù)據(jù)的循環(huán)收發(fā)數(shù) 據(jù)測試。如圖4所示,結(jié)果記錄模塊40包括讀寫子模塊41、記錄子模塊42和 顯示子模塊43,其中讀寫子模塊41,用于完成文件的讀寫操作,使用兩個線程分別實現(xiàn)讀 數(shù)據(jù)操作和寫數(shù)據(jù)操作,使文件讀寫操作能夠同時進行且互不影響;在接收 到寫數(shù)據(jù)操作請求時,把接收的數(shù)據(jù)按指定格式,如原始數(shù)據(jù)或十六進制等格式,輸入文本,實現(xiàn)大量數(shù)據(jù)的讀入分析;在接收到讀數(shù)據(jù)操作請求時, 通過讀入文本文件實現(xiàn)數(shù)據(jù)的批量傳送,可以根據(jù)需要實現(xiàn)按原始數(shù)據(jù)或十 六進制格式從文件中識別讀取數(shù)據(jù)。記錄子模塊42,與前述的TCPv6處理子模塊31、 UDPv6處理子模塊 32相連,以日志的方式記錄測試結(jié)果,包括(測試流程中出現(xiàn)失敗的異常 曰志),對測試結(jié)果提供添加、刪除、查詢等操作。在其他模塊執(zhí)行操作時, 比如IPv6數(shù)據(jù)處理模塊30創(chuàng)建TCPv6客戶端時,記錄子模塊42將調(diào)用添 加接口把測試的結(jié)果添加到日志文件中。對測試結(jié)果執(zhí)行查詢或者刪除后, 向測試設(shè)備10的操作界面報告操作結(jié)果,將操作結(jié)果通過測試設(shè)備10的操 作界面顯示出來。日志數(shù)據(jù)的存儲方式主要以文本文件為主。顯示子模塊43,與讀寫子模塊41、記錄子模塊42相連,完成服務(wù)器與 客戶端的界面統(tǒng)一,以及測試設(shè)備10應(yīng)用層的流程處理,包括測試數(shù)據(jù)的 有效性檢測、測試結(jié)果顯示等。在接收到應(yīng)用層的操作時,對操作的數(shù)據(jù)進 行有效性;險測,然后通知相應(yīng)模塊進行數(shù)據(jù)處理,顯示測試結(jié)果。如圖5所示,控制模塊50包括管理子模塊51和參數(shù)存儲子模塊52, 其中管理子模塊51,與前述所有模塊均相連,用于在連接時屏蔽協(xié)議差異,實現(xiàn)所有模塊的線程啟動和停止,維護各模塊之間的任務(wù)調(diào)度,處理各模塊 的消息請求和異常處理,為每個模塊初始化一個對象來維護管理其基本功能,例如參數(shù)存儲子模塊對象用于完成測試設(shè)備的參數(shù)初始化;讀寫子模 塊對象用于完成讀寫接口參數(shù)初始化;顯示子模塊對象用于完成測試設(shè)備的 界面及相關(guān)參數(shù)內(nèi)容的顯示;以及記錄子模塊對象、定時子模塊對象、批量 處理子模塊對象、數(shù)據(jù)環(huán)回子模塊對象、TCPv6處理子模塊對象、UDPv6 處理子模塊對象等,分別完成相關(guān)參數(shù)的初始化。管理子模塊在測試設(shè)備啟動時,為所有模塊創(chuàng)建啟動相應(yīng)的進程;在設(shè) 備關(guān)閉時,停止所有模塊進程運行;在接收到模塊請求處理消息時,可以正 確解析調(diào)度其他模塊;當發(fā)生異常情況時,默認調(diào)用記錄子模塊記錄保存相 應(yīng)的異常信息。在前述連接關(guān)閉步驟S30中,測試設(shè)備IO通知管理子模塊 51進行所述的清除、釋放相關(guān)分配的空間、停止相關(guān)線程監(jiān)聽等操作。參數(shù)存儲子模塊52,與管理子模塊相連,用于為測試人員提供初始化 參數(shù)以供選擇,以及存儲測試人員設(shè)置好的參數(shù)。這些基本參數(shù)主要包括類 型選擇(分為TCPv6和UDPv6 ),枚舉本地IPv6地址、本地端口選擇的方 式(包括隨機方式和指定方式)、數(shù)據(jù)發(fā)送時間間隔、發(fā)包總個數(shù)和文件存 儲路徑等。在測試設(shè)備10啟動時,參數(shù)存儲子模塊從配置文件中讀取最新數(shù)據(jù)配 置初始化參數(shù),然后通知顯示子模塊43進行數(shù)據(jù)顯示;操作界面更新參數(shù) 配置后,把數(shù)據(jù)發(fā)送給參數(shù)存儲子模塊52進行配置存儲。管理子模塊51根 據(jù)所存儲的參數(shù)完成參數(shù)配置,實現(xiàn)屏蔽協(xié)議差異。在測試過程中,數(shù)據(jù)環(huán)回子模塊34根據(jù)接收到的發(fā)送時間間隔來發(fā)送 數(shù)據(jù)。當參數(shù)存儲子模塊52更新發(fā)送數(shù)據(jù)的時間間隔后,向管理子模塊51 發(fā)送消息通知定時子模塊35的數(shù)據(jù)發(fā)生變化,由管理子模塊51更新發(fā)送時 間間隔,當定時子模塊35被啟用后,數(shù)據(jù)環(huán)回子模塊34就會啟用新的發(fā)送 時間間隔進行數(shù)據(jù)發(fā)送。圖6示出了基于圖3-圖5所示各模塊內(nèi)部結(jié)構(gòu)的本發(fā)明測試設(shè)備實施 例,其中的各子模塊連接方式和功能,請參考全文所述。圖中批量處理子模塊33、數(shù)據(jù)環(huán)回子模塊34、讀寫子模塊41、記錄子模塊42、管理子模塊 51和參數(shù)存儲子模塊52均與包含TCPv6處理子模塊31和UDPv6處理子模 塊32的虛線框相連,表示這些子模塊均與TCPv6處理子模塊31和UDPv6 處理子模塊32分別相連。另外,管理子模塊51與其余各子模塊均相連,但 與讀寫子模塊41、顯示子模塊43的連接關(guān)系圖中并未示出。參照圖2-圖6, 上述各模塊,以及各模塊內(nèi)的各子模塊,都是由單獨的線程實現(xiàn),相互之間 通過消息或接口進行通信,且互不影響。圖7為測試設(shè)備10的工作流程圖,測試設(shè)備10啟動后,具體的工作流 程如下步驟710,完成數(shù)據(jù)初始化配置,包括對發(fā)送時間間隔、發(fā)包總個數(shù)和 文件存儲路徑等進行配置;步驟711,對于創(chuàng)建TCPv6服務(wù)器,轉(zhuǎn)步驟721;步驟712,對于創(chuàng)建TCPv6客戶端,轉(zhuǎn)步驟722;步驟713,對于創(chuàng)建UDPv6客戶端,轉(zhuǎn)步驟723;步驟721,判斷創(chuàng)建TCPv6服務(wù)器是否成功,成功則轉(zhuǎn)步驟730,失敗 轉(zhuǎn)步驟780;步驟722,判斷創(chuàng)建TCPv6客戶端是否成功,成功則轉(zhuǎn)步驟740,失敗 轉(zhuǎn)步驟780;步驟723,判斷創(chuàng)建UDPv6客戶端是否成功,轉(zhuǎn)步驟750,失敗轉(zhuǎn)步驟780;步驟730,填充服務(wù)器相關(guān)信息,然后把該創(chuàng)建的服務(wù)器加入到TCPv6 監(jiān)聽鏈表中,進行服務(wù)器監(jiān)聽工作;步驟731,判斷是否接收到連接請求,是則轉(zhuǎn)步驟732,否則轉(zhuǎn)步驟780;步驟732,進入接受連接請求的流程處理,調(diào)用accept接口,獲取對端 連才妻請求的地址和端口 ,同時生成一個臨時套4妻字;步驟733,判斷是否成功接受連接請求,成功則填充連接相關(guān)信息,轉(zhuǎn)步驟740,否則轉(zhuǎn)步驟780;步驟740,填充連接相關(guān)信息,然后把該連接加入到TCPv6鏈表中,數(shù) 據(jù)接收則轉(zhuǎn)步驟760,數(shù)據(jù)發(fā)送則轉(zhuǎn)步驟770;步驟750,填充相關(guān)UDPv6連接信息,然后把該連接加入到UDPv6鏈 表中,數(shù)據(jù)接收則轉(zhuǎn)步驟760,數(shù)據(jù)發(fā)送則轉(zhuǎn)步驟770;步驟760,接收數(shù)據(jù)并匹配查找鏈表以確認數(shù)據(jù)有效;步驟761,把數(shù)據(jù)加入到接收隊列中;步驟762,對接收數(shù)據(jù)進行接收統(tǒng)計;步驟763,檢測數(shù)據(jù)是否選擇了數(shù)據(jù)自動環(huán)回(通過對數(shù)據(jù)設(shè)置自動環(huán) 回標志來標識自動環(huán)回),如果選擇了數(shù)據(jù)自動環(huán)回,則轉(zhuǎn)步驟764,否則 轉(zhuǎn)步驟766;步驟764,進行數(shù)據(jù)轉(zhuǎn)換,把接收數(shù)據(jù)結(jié)構(gòu)實體轉(zhuǎn)換為發(fā)送數(shù)據(jù)結(jié)構(gòu)實 體,然后轉(zhuǎn)步驟770;步驟766,檢測是否選擇了數(shù)據(jù)實時存儲,如果選擇了數(shù)據(jù)實時存儲, 則轉(zhuǎn)步驟767,否則轉(zhuǎn)步驟781;步驟767,進行實時文件寫操作處理,結(jié)束;步驟770,進入發(fā)送數(shù)據(jù)流程;步驟771,把待發(fā)送數(shù)據(jù)加入到發(fā)送隊列中;步驟772,對待發(fā)送數(shù)據(jù)進行發(fā)送統(tǒng)計;步驟773,判斷數(shù)據(jù)發(fā)送是否成功,成功則轉(zhuǎn)步驟781,否則轉(zhuǎn)步驟780; 步驟780,將通知或調(diào)用日志接口進行日志記錄; 步驟781,通知界面以顯示測試結(jié)果,結(jié)束。上述步驟770中測試人員也可以通過操作界面選擇一個文件作為待發(fā) 送的數(shù)據(jù),這樣就不用手動輸入數(shù)據(jù)(圖中未示出),對應(yīng)于前述結(jié)果記錄 模塊40的讀寫子模塊41通過讀入文本文件實現(xiàn)數(shù)據(jù)的批量傳送的內(nèi)容。由此可以看出,本發(fā)明只需要做簡單的配置和操作,就可以同時仿真TCPv6和UDPv6服務(wù)器與客戶端。普通PC機通過FE接口類型接入IPv6 網(wǎng)絡(luò)即可作為測試設(shè)備,不需要添加額外硬件。本發(fā)明涉及一種優(yōu)化TCPv6和/或UDPv6相關(guān)測試的設(shè)備及方法,該設(shè) 備能夠完成TCPv6和UDPv6服務(wù)器與客戶端的仿真,提供批量操作、文件 讀寫和可變流量地數(shù)據(jù)發(fā)送。使用本發(fā)明的測試設(shè)備及方法,能夠快速批量 地同時進行TCPv6和UDPv6的月良務(wù)器與客戶端的仿真測試,為TCPv6和 UDPv6的測試提供了解決方案,使測試工作簡單化,并提高了測試效率。雖然本發(fā)明所揭露的實施方式如上,但所述的內(nèi)容只是為了便于理解本 發(fā)明而采用的實施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi) 的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實施的 形式上及細節(jié)上作任何的修改與變化,但本發(fā)明的專利保護范圍,仍須以所 附的權(quán)利要求書所界定的范圍為準。
權(quán)利要求
1、一種TCPv6和/或UDPv6測試設(shè)備,其特征在于,包括IPv6數(shù)據(jù)處理模塊、結(jié)果記錄模塊和控制模塊,其中所述IPv6數(shù)據(jù)處理模塊,與被測對象相連,用于仿真以下設(shè)備中的一種或幾種TCPv6服務(wù)器、TCPv6客戶端、UDPv6客戶端,建立接收隊列用以存儲所述測試對象發(fā)送的數(shù)據(jù),建立發(fā)送隊列用以向所述測試對象發(fā)送數(shù)據(jù),完成與所述被測對象進行數(shù)據(jù)收發(fā)測試;所述結(jié)果記錄模塊,與IPv6數(shù)據(jù)處理模塊相連,用于記錄測試結(jié)果;所述控制模塊,分別與所述IPv6數(shù)據(jù)處理模塊和結(jié)果記錄模塊相連,用于完成各模塊的參數(shù)配置及初始化,維護各模塊之間的任務(wù)調(diào)度。
2、 如權(quán)利要求l所述的設(shè)備,其特征在于,所述IPv6數(shù)據(jù)處理模塊包括TCPv6處理子模塊,用于仿真TCPv6服務(wù)器和/或TCPv6客戶端,提供 數(shù)據(jù)收發(fā)的TCPv6接口 ,監(jiān)聽數(shù)據(jù)收發(fā);UDPv6處理子模塊,用于仿真UDPv6客戶端,提供數(shù)據(jù)收發(fā)的UDPv6 接口,監(jiān)聽數(shù)據(jù)收發(fā);批量處理子模塊,分別與所述TCPv6處理子模塊和UDPv6處理子模塊 相連,當配置一次創(chuàng)建連接的數(shù)量為多個時,為每個連接創(chuàng)建一個鏈表,對 被測數(shù)據(jù)進行批量操作。
3、 如權(quán)利要求2所述的設(shè)備,其特征在于,所述IPv6數(shù)據(jù)處理模塊還 包括與所述IPv6數(shù)據(jù)處理模塊相連的數(shù)據(jù)環(huán)回子模塊,以及與所述數(shù)據(jù)環(huán) 回子沖莫塊相連的定時子4莫塊,其中所述數(shù)據(jù)環(huán)回子模塊用于將接收隊列中的數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)后放入發(fā) 送隊列;所述定時子模塊用于設(shè)置所述數(shù)據(jù)環(huán)回子模塊將數(shù)據(jù)放入發(fā)送隊列的 時間間隔。
4、 如權(quán)利要求l所述的設(shè)備,其特征在于,所述結(jié)果記錄模塊包括讀 寫子模塊和記錄子模塊,其中所述讀寫子模塊,與所述IPv6數(shù)據(jù)處理模塊相連,用于將接收隊列中 的數(shù)據(jù)寫入文件,或者從文件中讀取數(shù)據(jù)寫入發(fā)送隊列;所述記錄子模塊,與所迷IPv6數(shù)據(jù)處理才莫塊相連,以日志的方式記錄 測試結(jié)果。
5、 如權(quán)利要求l所述的設(shè)備,其特征在于,所述控制模塊包括管理子 模塊和參數(shù)存儲子模塊,其中所述參數(shù)存儲子模塊,與所述IPv6數(shù)據(jù)處理模塊相連,用于提供初始 化參數(shù)以供測試人員選擇,以及存儲設(shè)置好的參數(shù);所述管理子模塊,用于實現(xiàn)各模塊的線程啟動和停止,維護各模塊之間 的任務(wù)調(diào)度,處理各模塊的消息請求和異常處理。
6、 一種TCPv6和/或UDPv6測試方法,其特;f正在于,包括以下步-驟(a) 測試設(shè)備在進行參數(shù)配置及初始化后,與被測對象創(chuàng)建TCPv6連 接和/或UDPv6連接;(b) 所述測試設(shè)備監(jiān)聽每個連接的數(shù)據(jù)收發(fā),建立接收隊列以存儲所 述測試對象發(fā)送的數(shù)據(jù),建立發(fā)送隊列以向所述測試對象發(fā)送數(shù)據(jù),與所述 被測對象進行數(shù)據(jù)收發(fā)測試;(c) 測試結(jié)束后關(guān)閉連接,保存測試結(jié)果。
7、 如權(quán)利要求6所述的方法,其特征在于,在所述步驟(a)中,當配置一次創(chuàng)建連接的數(shù)量為多個時,所述測試 設(shè)備為每個連接創(chuàng)建一個鏈表,用于存儲連接信息。
8、 如權(quán)利要求6所述的方法,其特征在于,在所述步驟(a)中,所述參數(shù)配置包括是否進行數(shù)據(jù)環(huán)回,當所述測 試設(shè)備設(shè)置進行數(shù)據(jù)環(huán)回時,則將接收隊列中的數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)后放入發(fā) 送隊列中。
9、 如權(quán)利要求8所述的方法,其特征在于,所述測試設(shè)備進一步設(shè)置以下參數(shù)中的 一種或幾種,實現(xiàn)可變流量的數(shù) 據(jù)測試數(shù)據(jù)放入發(fā)送隊列的時間間隔、發(fā)包總個數(shù)、發(fā)送數(shù)據(jù)的長度。
10、 如權(quán)利要求6所述的方法,其特征在于,所述測試設(shè)備與所述被測對象創(chuàng)建TCPv6連接和/或UDPv6連接,是指 由所述測試設(shè)備向所述被測對象發(fā)出連接請求創(chuàng)建所述連接,或者由所述被 測對象向所述測試設(shè)備發(fā)起連接請求創(chuàng)建所述連接;所述測試設(shè)備向所述被測對象發(fā)出連接請求創(chuàng)建所述連接時,在所述測 試設(shè)備上配置的參數(shù)即連接信息包括測試類型、對端IPv6地址、對端端 口 、本地IPv6地址、本;也端口 。
全文摘要
本發(fā)明公開了一種基于IPv6網(wǎng)絡(luò)的TCPv6和/或UDPv6測試設(shè)備及方法,能實現(xiàn)TCPv6和/或UDPv6的數(shù)據(jù)連接測試。所述測試設(shè)備包括IPv6數(shù)據(jù)處理模塊,與被測對象相連,用于仿真以下設(shè)備中的一種或幾種TCPv6服務(wù)器、TCPv6客戶端、UDPv6客戶端,建立接收隊列用以存儲所述測試對象發(fā)送的數(shù)據(jù),建立發(fā)送隊列用以向所述測試對象發(fā)送數(shù)據(jù),完成與所述被測對象進行數(shù)據(jù)收發(fā)測試;結(jié)果記錄模塊,與IPv6數(shù)據(jù)處理模塊相連,用于記錄測試結(jié)果;控制模塊,分別與所述IPv6數(shù)據(jù)處理模塊和結(jié)果記錄模塊相連,用于完成各模塊的參數(shù)配置及初始化,維護各模塊之間的任務(wù)調(diào)度。
文檔編號H04L12/26GK101227343SQ20081000706
公開日2008年7月23日 申請日期2008年2月1日 優(yōu)先權(quán)日2008年2月1日
發(fā)明者陳開業(yè) 申請人:中興通訊股份有限公司