繆新育,胡昌軍,李曙方,呂博
NTP服務器壓力測試方法的設計與實現(xiàn)
繆新育1,2,胡昌軍2,李曙方2,呂博2
(1. 北京郵電大學,北京 100876;2. 中國信息通信研究院,北京 100191)
針對網(wǎng)絡時間協(xié)議(network time protocol,NTP)服務器的壓力測試,傳統(tǒng)的基于軟件模擬客戶端報文的方法存在不能達到最大理論報文發(fā)送速率的不足,本文采用硬件處理方式,設計了一個可模擬多客戶端多端口的高速率NTP壓力測試方法。該方法不受軟件處理延時的影響,可實現(xiàn)最大的理論報文發(fā)送速率,滿足高速NTP報文請求的需求。最后通過實際測試對該方法進行驗證,實驗結(jié)果表明該方法可滿足多客戶端多端口任意速率場景的NTP壓力測試需求。
網(wǎng)絡時間協(xié)議;壓力測試;報文構(gòu)建;報文延時
NTP協(xié)議是目前Internet上最常用的時間同步方式[1],它可以將計算機的時間同步到某些時間標準,適應各種規(guī)模、速度和連接通路狀況的互聯(lián)網(wǎng)環(huán)境,在互聯(lián)網(wǎng)中得到了廣泛的應用。然而,隨著NTP服務需求的增加[2],對NTP服務器的性能提出了更高的要求,也需要對NTP服務器響應能力進行合理的評估。本文主要針對NTP服務器響應能力設計了一個測試方法,以滿足各種場景的NTP服務器響應能力測試需求。
NTP服務器的響應能力是指一臺服務器在單位時間里對客戶端時間請求的處理能力,處理的請求越多,服務器的并發(fā)響應能力越強。響應能力一般取決于服務器處理器對緩存數(shù)據(jù)的處理能力[3],如果請求量超過處理器的處理能力,則會出現(xiàn)請求拒絕現(xiàn)象,或宕機現(xiàn)象,將大大降低服務器的服務功能。因此有必要對服務器的處理能力進行評估。
目前已有的測試方法主要有基于CPU處理架構(gòu)的單端口軟件模擬方法[4-6],該類方法通常采用計算機語言編寫,運行于Linux等平臺上。軟件通過多線程方式在某一時間段內(nèi)對目標NTP服務器發(fā)出若干個NTP請求,并接收其返回的數(shù)據(jù)報文,通過返回數(shù)據(jù)報文形式判斷通信是否成功,以此方式探測目標服務器的抗壓能力,結(jié)束后返回在設定時間內(nèi)產(chǎn)生的鏈接數(shù)與響應數(shù),實現(xiàn)對目標服務器響應能力的評估。由于軟件處理過程相比硬件處理方式多了幾道工序,同時軟件是基于串行執(zhí)行指令,而硬件可實現(xiàn)并行操作,因此軟件模擬方式不能達到最大的理論報文發(fā)送速率。
本文提出一種基于FPGA硬件處理的報文發(fā)送方法,直接通過硬件方式進行報文編輯來模擬客戶端報文發(fā)送,由于硬件自身可編程,數(shù)據(jù)處理不需要經(jīng)過CPU指令調(diào)度等步驟,直接在硬件電路上就實現(xiàn)了,因此可以達到最大理論報文發(fā)送速率。主要流程為在短時間內(nèi)創(chuàng)建并向服務器發(fā)送大量NTP請求報文,同時檢測服務器的響應報文,根據(jù)發(fā)送報文數(shù)量與響應報文數(shù)量定量地確定服務器的性能指標,實現(xiàn)對NTP服務器單位時間內(nèi)響應閾值的測試與評估。
NTP協(xié)議是美國德拉瓦大學的D.L.Mills 教授于1985年提出的[7]。其基本工作原理如圖1所示,Slave Clock和Master Clock通過網(wǎng)絡相連,它們都有自己獨立的系統(tǒng)時鐘,通過NTP實現(xiàn)主從時間同步[8-9]。具體流程如下所示:
① Slave Clock發(fā)送一個NTP請求報文給Master Clock,該報文帶有它離開Slave Clock時的時間1;
② 當請求報文到達Master Clock時,Master Clock記錄報文到達的時間,該時間為2;
③ Master Clock收到NTP請求報文后,返回NTP響應報文,并記錄NTP響應報文離開Master Clock的時間3,報文里攜帶了1,2,3時間戳;
④ 當Slave Clock接收到該響應報文時,記錄報文到達的時間4;
⑤ 至此,Slave Clock已經(jīng)擁有足夠的信息來計算主從時鐘的時間偏差和鏈路時延。
圖1 NTP傳輸模型
由式(1)可得:
通過式(2),Slave Clock即可計算得主從時鐘的時間偏差和鏈路時延。
NTP的報文格式如圖2所示,主要字段解釋參見參考文獻[8]和[9]。
圖2 NTP報文格式
NTP協(xié)議采用請求/響應模型定義了客戶端如何從服務器請求時間信息,以及服務器如何把時間信息傳送給客戶端。客戶端向服務器發(fā)送的請求報文包含了報文封裝方式、以太幀、IP協(xié)議、UDP協(xié)議、NTP協(xié)議版本、請求數(shù)據(jù)等信息。服務器以同樣格式的報文作為響應,響應的內(nèi)容包括除了通用的格式外,還包含服務器的時間信息。
以下是NTP請求/響應報文的處理步驟:
① 客戶端連接到NTP服務器
NTP客戶端通常需要與服務器的IP端口建立地址解析協(xié)議ARP(address resolution protocol)連接[10]。
② 客戶端發(fā)送NTP請求報文
通過報文構(gòu)建和處理器處理,客戶端向服務器發(fā)送一個請求報文,請求報文由通用幀格式、客戶端標識、客戶端時間信息等部分組成。
③ 服務器接受請求并返回NTP響應報文
服務器解析請求,定位請求資源,并將資源復本寫到報文響應字段。響應報文由通用幀格式、服務器標識、服務器響應時間等部分組成。
④ 客戶端接收NTP響應報文并解析報文內(nèi)容
客戶端處理器首先解析響應報文,查看報文中的時間信息。然后結(jié)合服務器響應報文的接收時間,根據(jù)NTP主從時間差原理,計算出主從時間差。
為了構(gòu)造NTP壓力測試控制器,我們采用以太網(wǎng)分析儀TestCenter來產(chǎn)生NTP請求報文[11]。 TestCenter是一種可以在各種現(xiàn)實情況下測量路由器或交換機等設備性能的儀表,具有狀態(tài)層2-7流量生成和分析,及以太網(wǎng)協(xié)議和網(wǎng)絡的驗證等功能。TestCenter采用FPGA處理架構(gòu),設計了通用報文處理器,可直接設置報文payload為需要的內(nèi)容,具有較快的報文發(fā)送速度。
設計步驟如下:
① 使用抓包工具wireshark抓取已有的NTP報文,分析報文的字段結(jié)構(gòu),去除以太報文頭,提取NTP協(xié)議內(nèi)容。
② 使用TestCenter的報文構(gòu)造功能進行NTP模擬報文格式構(gòu)建,將NTP協(xié)議內(nèi)容復制進報文內(nèi)容中,形成完整NTP報文。
③ 利用TestCenter的端口設置和報文編輯功能,配置報文的速率、IP地址等參數(shù),及多端口輸出。
④ 將構(gòu)造好的報文發(fā)送給指定的被測NTP服務器,同時接收服務器返回的NTP響應報文,識別并統(tǒng)計收到的響應報文數(shù)量,計算服務器的響應能力。
最終可模擬實現(xiàn)多客戶端多端口任意速率場景的NTP服務器壓力測試。
通過wireshark抓取NTP報文,如圖3所示。
圖3 NTP連接拓撲
獲得的報文如圖4所示。
圖4 NTP報文解析
打開TestCenter軟件的報文構(gòu)造功能,設置物理層參數(shù),包括傳輸媒介類型:銅纜/光纜,傳輸速率、全/半雙工。創(chuàng)建新的原始數(shù)據(jù)流,根據(jù)報文幀結(jié)構(gòu),設置相應的協(xié)議字段,把抓取的NTP報文的相應字段填入以上創(chuàng)建的數(shù)據(jù)流字段內(nèi),將NTP協(xié)議內(nèi)容復制進報文內(nèi)容字段中,如圖5所示,即可生成完整的NTP報文。
圖5 NTP報文結(jié)構(gòu)構(gòu)造
假設報文長度為,前導碼長度為,幀間隔為,報文速率為,端口帶寬為,則這幾個變量滿足以下關系:
通過式(3),可計算得以太報文的理論速率為
最后設置報文的不同IP地址循環(huán),可模擬不同IP的客戶端,通過在其他端口設置同樣的報文流,可以對NTP服務器的不同端口同時進行壓力測試。
為了驗證模擬NTP請求報文的發(fā)送性能,我們對TestCenter報文進行了自環(huán)驗證,即TestCenter的Tx/Rx1口發(fā)送NTP請求報文,由Tx/Rx2口進行接收測量,測試拓撲如圖6所示。
圖6 TestCenter自環(huán)測試拓撲圖
測試過程如下:收發(fā)端口均選擇100 Mb/s速率以太模塊,發(fā)送端口負載為10%,則發(fā)送端口的最大傳輸速率為10 Mb/s。發(fā)送口發(fā)出的報文由接收口進行測量,最后讀取并比較發(fā)送端顯示的幀發(fā)送率和接收端的幀接收率。結(jié)果表明兩者數(shù)值相同,且均為10 965幀/s,同時通過接收報文解析,確認收到的報文均為NTP請求報文,如圖7所示。
圖7 TestCenter自環(huán)接收到的NTP報文
由NTP報文結(jié)構(gòu)可知,報文長度為94 Byte,加上以太幀的前導碼為8 Byte,最小幀間隔為12 Byte,通過計算,得到端口速率為10 000 080 bit/s,與設置的標稱速率10 Mb/s一致,說明該設計方法模擬的NTP請求報文達到了理論的最大速率。
為了進一步驗證該方法的實際測試效果,我們用TestCenter對某NTP服務器的響應能力進行了實際測試,該服務器是基于單CPU處理架構(gòu)設計的,通過軟件模擬方式進行報文響應,測試方案如下。TestCenter通過Tx/Rx口發(fā)送NTP請求報文至被測NTP服務器的Rx/Tx口,NTP服務器接收到NTP請求報文后,由原端口將NTP響應報文發(fā)送回TestCenter,TestCenter進行報文檢測和統(tǒng)計,測試拓撲如圖8所示。
圖8 NTP服務器響應能力測試拓撲(單端口)
測試過程如下:選擇100 Mb/s速率以太模塊,端口負載為10%,也就是最大傳輸速率為10 Mb/s。TestCenter先與NTP服務器進行ARP握手,然后發(fā)送NTP請求報文。測試結(jié)果顯示以太網(wǎng)分析儀的幀發(fā)送速率為10 965幀/s,接收速率為1 701幀/s。繼續(xù)調(diào)節(jié)發(fā)送的報文速率,只要大于1 701幀/s,TestCenter接收到的響應報文速率均為1 701幀/s,且通過報文解析,確認收到的報文均為NTP響應報文,如圖9所示。
圖9 TestCenter壓力測試接收到的NTP報文
通過以上過程,可得到被測NTP服務器的最大響應能力為1 701幀/s,說明該方法能有效測量出NTP服務器的響應能力。
為了驗證該方法在不同端口速率下的報文發(fā)送能力,我們選了不同速率端口模塊對另一款NTP服務器進行了壓力測試,該服務器是基于FPGA處理架構(gòu)設計的,采用硬件處理方式,具有較高的處理速度。選擇1 000 Mb/s速率以太網(wǎng)模塊,端口負載為70%,也就是最大傳輸速率為700 Mb/s。測試結(jié)果顯示以太網(wǎng)分析儀幀發(fā)送速率為767 544幀/s,接收速率為531 916幀/s,容易驗證分析儀達到了理論的最大幀發(fā)送速率。繼續(xù)調(diào)節(jié)發(fā)送的報文速率,只要大于53 196幀/s,TestCenter接收到的報文速率均為53 196幀/s,且通過報文解析,確認收到的報文均為NTP響應報文。
通過以上過程,說明該方法的報文發(fā)送能力和端口速率無關,不管什么速率,均能達到理論的最大速率,能滿足NTP服務器的任意速率響應能力測試需求。
為了模擬多客戶端進行NTP請求,我們進一步在TestCenter的其他端口設置同樣的報文發(fā)送功能,對4.2節(jié)第一款NTP服務器的兩個端口同時進行壓力測試,測試拓撲如圖10所示。
圖10 NTP服務器響應能力測試拓撲(多端口)
由于NTP服務器的處理能力是由CPU決定,所以所有端口的處理能力之和等于CPU處理能力。測試結(jié)果顯示TestCenter的兩端口收到的NTP響應報文數(shù)量分別為1378幀/s和323幀/s,兩端口的報文數(shù)量隨時間會發(fā)生變化,但總和都是1701幀/s,和單端口的總數(shù)是一樣的。通過以上過程,可以驗證該方法對于多端口場景測試也是有效的,能滿足多客戶端多端口情況下NTP服務器的響應能力測試。對于具備多個CPU的服務器,可以用該方法進行類似累加處理。
本文針對NTP服務器的壓力測試,設計了一種基于硬件構(gòu)造報文方式的壓力測試方法。該方法對NTP報文進行拆解分析,其次用以太網(wǎng)分析儀進行NTP報文的構(gòu)建,并用以太網(wǎng)分析儀的報文編輯功能,對報文的速率、IP地址,及端口進行設置來模擬多客戶端多端口的壓力測試場景。文章通過自環(huán)測試、單端口測試和多端口測試對該方法進行了驗證,自環(huán)測試結(jié)果表明該方法能夠達到最大的理論發(fā)送速率,單端口和多端口測試結(jié)果表明該方法可以適用不同響應速率和多端口的測試需求。綜上所述,該方法能滿足任意報文速率的多客戶端多端口場景的NTP服務器壓力測試需求,將在時間同步領域具有廣泛的應用前景。
[1] 屠樂奇. 高精度計算機網(wǎng)絡時鐘同步技術(shù)的研究[D]. 北京: 北京化工大學, 2010.
[2] 康飛. 基于北斗GPS的NTP時間服務器的研究與應用[D]. 西安: 西安電子科技大學, 2019.
[3] 易建勛. 微處理器(CPU)的結(jié)構(gòu)與性能[M]. 北京: 清華大學出版社, 2003: 40-60.
[4] 吳鵬, 華宇, 張旭海. NTP服務器的響應閾值測試軟件設計[J]. 時間頻率學報, 2017, 40(1): 36-42.
[5] 張尤長. 支持HTTP協(xié)議壓力測試框架中環(huán)境部署的設計與實現(xiàn)[D]. 北京: 北京交通大學, 2012.
[6] Titan, Inc. TimeAcc-007——全球第一款精密的時間測量工具[EB/OL]. (2005-12-19)[2020-12-27]. http://www.sh-titan.com/website/Timing_TimeAcc-007.htm?id=spansjzhcly.
[7] MILLS D L. Internet time synchronization-the network time protocol[J]. IEEE Transactions on Communications(S0090-6778), 1993, 39(10): 1482-1492.
[8] IETF. Network Time Protocol(Version 3) Specification, Implementation and Analysis[S].
[9] IETF. Network Time Protocol Version 4: Protocol and Algorithms Specification[S].
[10] STEVENS W R. TCP-IP詳解卷1-協(xié)議[M]. 北京: 機械工業(yè)出版社, 2016: 38-46.
[11] Spirent, Inc. Hypermetrics CV 2/8-Port 10 Gigabit Ethernet Test Modual[EB/OL]. (2019-12-10)[2020-12-27]. https://assets.ctfassets.net/wcxs9ap8i19s/1tZwDk5nv4fqAt38tFvcIH/936be23f7b3d3ed1129ef95ed54bce4e/STC_HyperMetrics_CV-Module_datasheet.pdf.
Design and implementation of NTP server stress test method
MIAO Xin-yu1,2, HU Chang-jun2, LI Shu-fang2, LYU Bo2
(1. Beijing University of Post and Telecommunications, Beijing 100876, China;2. China Academy of Information and Communications Technology, Beijing 100191, China)
Aiming for the stress test of the network time protocol (NTP) server, the method of software simulation is used to generate client packet traditionally, but this method cannot reach the theoretical maximum rate of packet transmission. A high-rate NTP stress test method is demonstrated in this paper, which can simulate multi-client and multi-port scenarios. This method uses the way of hardware processing. It is not affected by the software processing delay, and can achieve the theoretical maximum packet transmission rate to meet the requirement of the high-speed NTP request packet. This method is verified and analyzed through actual tests at last. The experimental results show that this method can simulate multi-client, multi-port, and arbitrary packet rate scenario and it can meet the requirements of NTP pressure test properly.
network time protocol (NTP); pressure test; packet construction; packet delay
10.13875/j.issn.1674-0637.2021-03-0197-07
繆新育, 胡昌軍, 李曙方, 等. NTP服務器壓力測試方法的設計與實現(xiàn)[J]. 時間頻率學報, 2021, 44(3): 197-203.
2021-04-23;
2021-06-17
北京郵電大學優(yōu)秀博士生創(chuàng)新基金資助項目(CX2019104)