繆新育,胡昌軍,李曙方,呂博
NTP服務器壓力測試方法的設計與實現
繆新育1,2,胡昌軍2,李曙方2,呂博2
(1. 北京郵電大學,北京 100876;2. 中國信息通信研究院,北京 100191)
針對網絡時間協議(network time protocol,NTP)服務器的壓力測試,傳統的基于軟件模擬客戶端報文的方法存在不能達到最大理論報文發送速率的不足,本文采用硬件處理方式,設計了一個可模擬多客戶端多端口的高速率NTP壓力測試方法。該方法不受軟件處理延時的影響,可實現最大的理論報文發送速率,滿足高速NTP報文請求的需求。最后通過實際測試對該方法進行驗證,實驗結果表明該方法可滿足多客戶端多端口任意速率場景的NTP壓力測試需求。
網絡時間協議;壓力測試;報文構建;報文延時
NTP協議是目前Internet上最常用的時間同步方式[1],它可以將計算機的時間同步到某些時間標準,適應各種規模、速度和連接通路狀況的互聯網環境,在互聯網中得到了廣泛的應用。然而,隨著NTP服務需求的增加[2],對NTP服務器的性能提出了更高的要求,也需要對NTP服務器響應能力進行合理的評估。本文主要針對NTP服務器響應能力設計了一個測試方法,以滿足各種場景的NTP服務器響應能力測試需求。
NTP服務器的響應能力是指一臺服務器在單位時間里對客戶端時間請求的處理能力,處理的請求越多,服務器的并發響應能力越強。響應能力一般取決于服務器處理器對緩存數據的處理能力[3],如果請求量超過處理器的處理能力,則會出現請求拒絕現象,或宕機現象,將大大降低服務器的服務功能。因此有必要對服務器的處理能力進行評估。
目前已有的測試方法主要有基于CPU處理架構的單端口軟件模擬方法[4-6],該類方法通常采用計算機語言編寫,運行于Linux等平臺上。軟件通過多線程方式在某一時間段內對目標NTP服務器發出若干個NTP請求,并接收其返回的數據報文,通過返回數據報文形式判斷通信是否成功,以此方式探測目標服務器的抗壓能力,結束后返回在設定時間內產生的鏈接數與響應數,實現對目標服務器響應能力的評估。由于軟件處理過程相比硬件處理方式多了幾道工序,同時軟件是基于串行執行指令,而硬件可實現并行操作,因此軟件模擬方式不能達到最大的理論報文發送速率。
本文提出一種基于FPGA硬件處理的報文發送方法,直接通過硬件方式進行報文編輯來模擬客戶端報文發送,由于硬件自身可編程,數據處理不需要經過CPU指令調度等步驟,直接在硬件電路上就實現了,因此可以達到最大理論報文發送速率。主要流程為在短時間內創建并向服務器發送大量NTP請求報文,同時檢測服務器的響應報文,根據發送報文數量與響應報文數量定量地確定服務器的性能指標,實現對NTP服務器單位時間內響應閾值的測試與評估。
NTP協議是美國德拉瓦大學的D.L.Mills 教授于1985年提出的[7]。其基本工作原理如圖1所示,Slave Clock和Master Clock通過網絡相連,它們都有自己獨立的系統時鐘,通過NTP實現主從時間同步[8-9]。具體流程如下所示:
① Slave Clock發送一個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已經擁有足夠的信息來計算主從時鐘的時間偏差和鏈路時延。

圖1 NTP傳輸模型


由式(1)可得:

通過式(2),Slave Clock即可計算得主從時鐘的時間偏差和鏈路時延。
NTP的報文格式如圖2所示,主要字段解釋參見參考文獻[8]和[9]。

圖2 NTP報文格式
NTP協議采用請求/響應模型定義了客戶端如何從服務器請求時間信息,以及服務器如何把時間信息傳送給客戶端。客戶端向服務器發送的請求報文包含了報文封裝方式、以太幀、IP協議、UDP協議、NTP協議版本、請求數據等信息。服務器以同樣格式的報文作為響應,響應的內容包括除了通用的格式外,還包含服務器的時間信息。
以下是NTP請求/響應報文的處理步驟:
① 客戶端連接到NTP服務器
NTP客戶端通常需要與服務器的IP端口建立地址解析協議ARP(address resolution protocol)連接[10]。
② 客戶端發送NTP請求報文
通過報文構建和處理器處理,客戶端向服務器發送一個請求報文,請求報文由通用幀格式、客戶端標識、客戶端時間信息等部分組成。
③ 服務器接受請求并返回NTP響應報文
服務器解析請求,定位請求資源,并將資源復本寫到報文響應字段。響應報文由通用幀格式、服務器標識、服務器響應時間等部分組成。
④ 客戶端接收NTP響應報文并解析報文內容
客戶端處理器首先解析響應報文,查看報文中的時間信息。然后結合服務器響應報文的接收時間,根據NTP主從時間差原理,計算出主從時間差。
為了構造NTP壓力測試控制器,我們采用以太網分析儀TestCenter來產生NTP請求報文[11]。 TestCenter是一種可以在各種現實情況下測量路由器或交換機等設備性能的儀表,具有狀態層2-7流量生成和分析,及以太網協議和網絡的驗證等功能。TestCenter采用FPGA處理架構,設計了通用報文處理器,可直接設置報文payload為需要的內容,具有較快的報文發送速度。
設計步驟如下:
① 使用抓包工具wireshark抓取已有的NTP報文,分析報文的字段結構,去除以太報文頭,提取NTP協議內容。
② 使用TestCenter的報文構造功能進行NTP模擬報文格式構建,將NTP協議內容復制進報文內容中,形成完整NTP報文。
③ 利用TestCenter的端口設置和報文編輯功能,配置報文的速率、IP地址等參數,及多端口輸出。
④ 將構造好的報文發送給指定的被測NTP服務器,同時接收服務器返回的NTP響應報文,識別并統計收到的響應報文數量,計算服務器的響應能力。
最終可模擬實現多客戶端多端口任意速率場景的NTP服務器壓力測試。
通過wireshark抓取NTP報文,如圖3所示。

圖3 NTP連接拓撲
獲得的報文如圖4所示。

圖4 NTP報文解析
打開TestCenter軟件的報文構造功能,設置物理層參數,包括傳輸媒介類型:銅纜/光纜,傳輸速率、全/半雙工。創建新的原始數據流,根據報文幀結構,設置相應的協議字段,把抓取的NTP報文的相應字段填入以上創建的數據流字段內,將NTP協議內容復制進報文內容字段中,如圖5所示,即可生成完整的NTP報文。

圖5 NTP報文結構構造
假設報文長度為,前導碼長度為,幀間隔為,報文速率為,端口帶寬為,則這幾個變量滿足以下關系:

通過式(3),可計算得以太報文的理論速率為

最后設置報文的不同IP地址循環,可模擬不同IP的客戶端,通過在其他端口設置同樣的報文流,可以對NTP服務器的不同端口同時進行壓力測試。
為了驗證模擬NTP請求報文的發送性能,我們對TestCenter報文進行了自環驗證,即TestCenter的Tx/Rx1口發送NTP請求報文,由Tx/Rx2口進行接收測量,測試拓撲如圖6所示。

圖6 TestCenter自環測試拓撲圖
測試過程如下:收發端口均選擇100 Mb/s速率以太模塊,發送端口負載為10%,則發送端口的最大傳輸速率為10 Mb/s。發送口發出的報文由接收口進行測量,最后讀取并比較發送端顯示的幀發送率和接收端的幀接收率。結果表明兩者數值相同,且均為10 965幀/s,同時通過接收報文解析,確認收到的報文均為NTP請求報文,如圖7所示。

圖7 TestCenter自環接收到的NTP報文
由NTP報文結構可知,報文長度為94 Byte,加上以太幀的前導碼為8 Byte,最小幀間隔為12 Byte,通過計算,得到端口速率為10 000 080 bit/s,與設置的標稱速率10 Mb/s一致,說明該設計方法模擬的NTP請求報文達到了理論的最大速率。
為了進一步驗證該方法的實際測試效果,我們用TestCenter對某NTP服務器的響應能力進行了實際測試,該服務器是基于單CPU處理架構設計的,通過軟件模擬方式進行報文響應,測試方案如下。TestCenter通過Tx/Rx口發送NTP請求報文至被測NTP服務器的Rx/Tx口,NTP服務器接收到NTP請求報文后,由原端口將NTP響應報文發送回TestCenter,TestCenter進行報文檢測和統計,測試拓撲如圖8所示。

圖8 NTP服務器響應能力測試拓撲(單端口)
測試過程如下:選擇100 Mb/s速率以太模塊,端口負載為10%,也就是最大傳輸速率為10 Mb/s。TestCenter先與NTP服務器進行ARP握手,然后發送NTP請求報文。測試結果顯示以太網分析儀的幀發送速率為10 965幀/s,接收速率為1 701幀/s。繼續調節發送的報文速率,只要大于1 701幀/s,TestCenter接收到的響應報文速率均為1 701幀/s,且通過報文解析,確認收到的報文均為NTP響應報文,如圖9所示。

圖9 TestCenter壓力測試接收到的NTP報文
通過以上過程,可得到被測NTP服務器的最大響應能力為1 701幀/s,說明該方法能有效測量出NTP服務器的響應能力。
為了驗證該方法在不同端口速率下的報文發送能力,我們選了不同速率端口模塊對另一款NTP服務器進行了壓力測試,該服務器是基于FPGA處理架構設計的,采用硬件處理方式,具有較高的處理速度。選擇1 000 Mb/s速率以太網模塊,端口負載為70%,也就是最大傳輸速率為700 Mb/s。測試結果顯示以太網分析儀幀發送速率為767 544幀/s,接收速率為531 916幀/s,容易驗證分析儀達到了理論的最大幀發送速率。繼續調節發送的報文速率,只要大于53 196幀/s,TestCenter接收到的報文速率均為53 196幀/s,且通過報文解析,確認收到的報文均為NTP響應報文。
通過以上過程,說明該方法的報文發送能力和端口速率無關,不管什么速率,均能達到理論的最大速率,能滿足NTP服務器的任意速率響應能力測試需求。
為了模擬多客戶端進行NTP請求,我們進一步在TestCenter的其他端口設置同樣的報文發送功能,對4.2節第一款NTP服務器的兩個端口同時進行壓力測試,測試拓撲如圖10所示。

圖10 NTP服務器響應能力測試拓撲(多端口)
由于NTP服務器的處理能力是由CPU決定,所以所有端口的處理能力之和等于CPU處理能力。測試結果顯示TestCenter的兩端口收到的NTP響應報文數量分別為1378幀/s和323幀/s,兩端口的報文數量隨時間會發生變化,但總和都是1701幀/s,和單端口的總數是一樣的。通過以上過程,可以驗證該方法對于多端口場景測試也是有效的,能滿足多客戶端多端口情況下NTP服務器的響應能力測試。對于具備多個CPU的服務器,可以用該方法進行類似累加處理。
本文針對NTP服務器的壓力測試,設計了一種基于硬件構造報文方式的壓力測試方法。該方法對NTP報文進行拆解分析,其次用以太網分析儀進行NTP報文的構建,并用以太網分析儀的報文編輯功能,對報文的速率、IP地址,及端口進行設置來模擬多客戶端多端口的壓力測試場景。文章通過自環測試、單端口測試和多端口測試對該方法進行了驗證,自環測試結果表明該方法能夠達到最大的理論發送速率,單端口和多端口測試結果表明該方法可以適用不同響應速率和多端口的測試需求。綜上所述,該方法能滿足任意報文速率的多客戶端多端口場景的NTP服務器壓力測試需求,將在時間同步領域具有廣泛的應用前景。
[1] 屠樂奇. 高精度計算機網絡時鐘同步技術的研究[D]. 北京: 北京化工大學, 2010.
[2] 康飛. 基于北斗GPS的NTP時間服務器的研究與應用[D]. 西安: 西安電子科技大學, 2019.
[3] 易建勛. 微處理器(CPU)的結構與性能[M]. 北京: 清華大學出版社, 2003: 40-60.
[4] 吳鵬, 華宇, 張旭海. NTP服務器的響應閾值測試軟件設計[J]. 時間頻率學報, 2017, 40(1): 36-42.
[5] 張尤長. 支持HTTP協議壓力測試框架中環境部署的設計與實現[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-協議[M]. 北京: 機械工業出版社, 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服務器壓力測試方法的設計與實現[J]. 時間頻率學報, 2021, 44(3): 197-203.
2021-04-23;
2021-06-17
北京郵電大學優秀博士生創新基金資助項目(CX2019104)