《電子技術(shù)應用》
您所在的位置:首頁 > 其他 > 业界动态 > RADIUS服务器性能测试软件的设计与实现

RADIUS服务器性能测试软件的设计与实现

2009-10-10
作者:孟小华

  摘??要: RADIUS服務器的性能指標及其測試方法,給出了一個RADIUS服務器性能測試軟件的設計思想和具體實現(xiàn)技術(shù)。

  關(guān)鍵詞: 性能測試? RADIUS協(xié)議? AAA服務器

?

  認證、授權(quán)和計費是通信網(wǎng)絡的基本功能之一,因此AAA(Authentication,Authorization,Accounting)服務器在電信行業(yè)有著廣泛的應用,例如窄帶IP網(wǎng)、寬帶網(wǎng)、固網(wǎng)短信息、移動短信息等。隨著電信業(yè)務集中化趨勢的發(fā)展,電信行業(yè)出現(xiàn)了百萬用戶級以至千萬用戶級的系統(tǒng),這對AAA系統(tǒng)的性能提出了更高的要求。目前大多數(shù)AAA服務器都是基于RADIUS(Remote Authentication Dial In User Service)協(xié)議的,因此人們采取很多措施來改進RADIUS系統(tǒng)的性能,或者投入大量人力研制高性能的RADIUS系統(tǒng)。

在AAA系統(tǒng)的建設中,為了選擇合適的RADIUS產(chǎn)品和配置適當?shù)挠布O備,人們需要了解RADIUS系統(tǒng)的實際性能。但是對于如何定性和定量地測試及評價RADIUS服務器的性能,至今仍沒有一套標準和相應的測試軟件。本文中作者對評價RADIUS服務器性能的指標及其測試方法進行了探討,并實現(xiàn)了一個測試RADIUS服務器性能的工具軟件。

1? RADIUS服務器性能測試

1.1 RADIUS協(xié)議原理

????RADIUS協(xié)議是IETF通過的AAA協(xié)議標準(RFC 2865),它采用了基本的客戶/服務器模式。網(wǎng)絡接入服務器NAS(Network Access Server)作為Client向RADIUS服務器提出認證請求,以實現(xiàn)對連接到NAS并請求接入服務的用戶(User)進行認證、授權(quán)和計費。用戶的AAA消息由Client提供給RADIUS服務器,并且根據(jù)服務器的授權(quán)為用戶提供相應權(quán)限的服務。RADIUS服務器主要實現(xiàn)對用戶的認證并向Client返回必要的配置信息。User與RADIUS服務器之間可以協(xié)商采用多種認證方法,RADIUS協(xié)議的可擴展性保證了多種認證方法的實現(xiàn)。RADIUS協(xié)議通過屬性(Attribute)域攜帶認證、授權(quán)以及詳細的配置信息可以方便地擴展新的認證方法。在協(xié)議中,RADIUS服務器使用Challenge消息與用戶實現(xiàn)各種認證過程。RADIUS協(xié)議通過代理服務器(Proxy)功能實現(xiàn)漫游接入認證。RADIUS服務器同時兼具Proxy功能,作為前端服務器(Forwarding Server)將來自Client的認證請求轉(zhuǎn)發(fā)給遠端服務器(Remote Server),然后把來自遠端服務器的應答消息回送給Client。每臺前端服務器可以有多臺遠端服務器,同樣每臺遠端服務器也可以有多臺前端服務器。遠程消息在傳輸過程中形成一條服務器鏈,使得遠程接入請求得到回應。

1.2 RADIUS服務器性能指標

  影響RADIUS服務器性能的因素很多,除RADIUS協(xié)議本身的實現(xiàn)技術(shù)(如多進程或多線程等)外,還受認證所用的數(shù)據(jù)庫類型(如LDAP、RDBMS、文本文件等)和軟硬件平臺及網(wǎng)絡環(huán)境的影響。因此RADIUS服務器性能指標是與運行環(huán)境密切相關(guān)的。也就是說,給出RADIUS服務器性能指標時,必須給出相應的軟硬件配置。下面是從用戶角度描述的RADIUS服務器性能指標。

  (1)最大吞吐量。即系統(tǒng)每秒能接入的最大用戶數(shù)量,或者說是每秒鐘最多能夠成功處理的有效服務請求包的數(shù)目。

  (2)平均響應時間。即從網(wǎng)絡訪問服務器NAS發(fā)出服務請求到服務器應答包的返回時延。反映了服務品質(zhì)。

  (3)系統(tǒng)穩(wěn)定性。即在服務請求繁忙時系統(tǒng)的穩(wěn)定性。有的服務器在系統(tǒng)持續(xù)繁忙的時候,性能會急劇下降或者崩潰。穩(wěn)定性的測試方法就是長時間進行高強度的壓力測試。

  (4)系統(tǒng)可靠性。測試系統(tǒng)能否對各種服務請求和異常做出正確的處理,包括計費的準確性。

  (5)系統(tǒng)可擴展性。因為RADIUS協(xié)議是一個開放的協(xié)議,在不與標準協(xié)議沖突的前提下,允許增強服務器服務功能和提高處理性能。所以,有必要測試RADIUS服務器所聲明提供的擴展服務是否有效。

  通過調(diào)整RADIUS服務器和測試環(huán)境,還可測試以下對RADIUS系統(tǒng)設計人員比較有用的性能數(shù)據(jù):

  (1)用非法用戶名進行性能測試,可以得到RADIUS的信令處理能力,即RADIUS服務器內(nèi)部處理一個請求包所花費的時間和傳輸信息包的網(wǎng)絡時延,體現(xiàn)CPU速度。

  (2)用合法用戶名(無數(shù)據(jù)庫)進行性能測試,得到的性能報告體現(xiàn)了RADIUS信令處理能力和自動數(shù)據(jù)庫故障備份能力,反映了CPU速度和文件讀寫速度。

  (3)用合法用戶名(有數(shù)據(jù)庫)進行性能測試,得到的性能報告體現(xiàn)了RADIUS信令處理能力和數(shù)據(jù)庫處理能力,反映了CPU速度和數(shù)據(jù)庫速度。

  (4)用高速的發(fā)包速度進行測試,根據(jù)丟包情況可以得到RADIUS服務器能夠有效進行緩沖處理的應答包的數(shù)目等。

1.3 性能測試方法

  由于影響RADIUS服務器性能的因素比較多,理論評估其性能非常困難,因此利用軟件工具實測RADIUS服務器性能具有十分重要的意義。在AAA系統(tǒng)的建設中,它可以作為選擇RADIUS軟件產(chǎn)品和配置硬件設備的主要依據(jù);在研制新的RADIUS服務器時,可以作為評估性能和查找性能瓶頸的工具;在RADIUS服務器運營過程中,它可以為系統(tǒng)維護和系統(tǒng)優(yōu)化提供指導。

  根據(jù)RADIUS協(xié)議的工作原理,網(wǎng)絡接入服務器NAS是RADIUS服務器的客戶,RADIUS服務器的性能就體現(xiàn)在其對NAS服務請求的響應能力。因此可以用測試軟件代替NAS并模擬NAS的行為來測試RADIUS服務器的性能。圖1為RADIUS服務器性能測試方案圖。其中模擬NAS的測試軟件可以嚴格按照要求發(fā)送RADIUS服務器請求包并記錄和統(tǒng)計分析RADIUS服務器的響應情況,經(jīng)分析就可以得出上面討論的RADIUS服務器的性能指標。

?

?

2? 測試軟件的設計思想

2.1 測試軟件的需求

  (1)作為性能測試軟件其準確性無疑是最重要的。測試軟件要在RADIUS服務器高速發(fā)送請求包的同時記錄和統(tǒng)計分析其應答包,具有強大的實時處理能力才能保證測試的準確性。

  (2)保證測試軟件發(fā)包速度的平滑可調(diào)性,才能保證測試軟件的精度。

  (3)測試過程中需要輸入較多的控制參數(shù),要涉及很多操作細節(jié),而且時序性強,全人工操作會很繁瑣和復雜,必須提供實時交互能力并具有操作過程記錄能力和批處理能力。

  (4)測試軟件對系統(tǒng)資源,特別是CPU資源和內(nèi)存資源的要求很高,如果處理不當,很容易引起系統(tǒng)宕機。因此保證測試軟件的穩(wěn)定性和可靠性是難點。

  (5)RADIUS服務器的性能參數(shù)是通過測試軟件和RADIUS服務器的交互運行狀態(tài)反映出來的,其值是抽象和動態(tài)的,所以必須使用直觀和易理解的方式加以表現(xiàn)。

  (6)支持對RADIUS的擴展能力的測試。因為RADIUS協(xié)議可以通過屬性(Attribute)域攜帶認證、授權(quán)以及詳細配置信息進行擴展支持新的認證方法,所以客觀要求測試軟件也具備一定的易擴展性。

2.2 測試軟件的系統(tǒng)流程圖

  圖2所示是RADIUS服務器性能測試軟件的系統(tǒng)流程圖。其主要輸入是RADIUS屬性等協(xié)議參數(shù)和測試數(shù)據(jù),主要的處理是多線程發(fā)送請求包和處理應答包以及對測試過程進行全方位的監(jiān)控。最后輸出的是動態(tài)實時曲線,根據(jù)曲線可以得出RADIUS的性能指標。

?

?

2.3 測試軟件的系統(tǒng)組成

  測試軟件的系統(tǒng)主要由六個模塊組成,其功能描述如下。

  (1)擴展屬性錄入模塊。輸入、修改和保存RADIUS的擴展屬性數(shù)據(jù)字典,以便支持各種類型的RADIUS服務器和測試RADIUS服務器的擴展能力。

  (2)請求包發(fā)送模塊。該模塊模擬NAS向RADIUS服務器發(fā)送請求包。在發(fā)送過程中,同時記錄或統(tǒng)計包的發(fā)送信息,如:發(fā)送頻率、每個包的發(fā)送時間、平均發(fā)送時間、已發(fā)送的請求包的數(shù)量。它包括請求包發(fā)送線程池和請求包發(fā)送速度控制線程等。

  (3)應答包處理模塊。①監(jiān)視UDP端口,排除網(wǎng)絡干擾,接收從被測試的RADIUS服務器返回的應答包,并記錄包的到達信息,如:每個應答的到達時間,應答包平均到達時間間隔。②處理應答包。該部分分析包的信息,將應答包和已經(jīng)發(fā)送的請求包進行匹配,得出發(fā)送接收時延、接收到的應答包的總數(shù)、應答包到達平均時間間隔。它包括應答包接收線程、應答包處理線程和緩沖區(qū)狀態(tài)監(jiān)視處理線程等。

  (4)測試數(shù)據(jù)動態(tài)顯示模塊。在測試過程中以直觀的圖形方式動態(tài)顯示測試程序運行狀態(tài)和RADIUS服務器運行狀況的參數(shù)。

  (5)測試過程參數(shù)控制模塊。①測試過程的參數(shù)初始化部分。對于每一個特定的測試過程,所用的參數(shù)都是不一樣的,如控制請求包的發(fā)送頻率的參數(shù)、控制包的最大發(fā)送數(shù)量的參數(shù)、包的基礎(chǔ)信息、在包發(fā)送過程中用來協(xié)助程序自動改變請求包內(nèi)容的參數(shù)(如用戶名,密碼前綴、后綴)。②在測試過程中控制包的發(fā)送頻率,控制內(nèi)部參數(shù)統(tǒng)計過程。

  (6)測試數(shù)據(jù)準備模塊。這是一個獨立的程序模塊,專門用來批量產(chǎn)生用于測試的RADIUS服務器用戶數(shù)據(jù),如用戶名和密碼。用戶名和密碼是按照一定的規(guī)則產(chǎn)生的,如前綴加上變化的序號,在測試程序發(fā)送模擬請求包時,按同樣的規(guī)則隨機填入用戶資料。用這種方法,可以使得每個RADIUS服務器端的數(shù)據(jù)庫中的用戶記錄都有相同的概率被RADIUS服務器搜索,使測試結(jié)果與實際情況最接近。產(chǎn)生多少用戶數(shù)據(jù)可以根據(jù)實際系統(tǒng)而定。

3?測試軟件實現(xiàn)技術(shù)

  本測試軟件使用了多線程池技術(shù)和緩沖池管理技術(shù),其中線程的同步與互斥、內(nèi)存的分配與回收比較復雜,是程序成功與否的關(guān)鍵。下面介紹在軟件實現(xiàn)中所解決的技術(shù)難點。

3.1 發(fā)包速度精確控制

  為了定量地測量RADIUS服務器的最大吞吐量等性能指標,測試程序必須按給定的速度向RADIUS服務器發(fā)送認證請求包,然后記錄其應答情況。由于Windows下sleep( )的定時精度只有10ms,因此采用簡單的循環(huán)發(fā)送和sleep( )延時等技術(shù),單線程最多只能得到100包/s的發(fā)包速度。假設被測對象每秒可以處理2 000個請求,則需要20個發(fā)包線程并發(fā)工作才能達到要求。單處理器系統(tǒng)中每個進程中的線程數(shù)一般不要超過上限16,而且20個線程也很難控制,因此不能采用循環(huán)發(fā)送方法。

  解決此問題的方法是:設置一個發(fā)包速度控制線程CA和一個發(fā)包線程池A,由CA定時檢查發(fā)包線程池A并喚醒其中掛起的發(fā)包線程。發(fā)包線程被喚醒并發(fā)完包后又自行掛起,等待下一次被喚醒。發(fā)包速度控制線程CA利用Win32 API保留的低層函數(shù)SetTimeEvent可以實現(xiàn)1ms的高精度定時,即可以每毫秒檢查一次發(fā)包線程池。因此只需要二個發(fā)包線程就可以實現(xiàn)2 000包/s的發(fā)包速度。

3.2 發(fā)包速度的平滑調(diào)整

  測量RADIUS服務器的最大吞吐量等性能指標時,測試程序的發(fā)包速度一般是由低速向高速等步長逐步升高,直到RADIUS服務器不能承受的極限為止。因此必須能平滑調(diào)整發(fā)包速度。由于此軟件的發(fā)包速度控制線程CA的最高精度為1ms,即一個發(fā)包線程最高能發(fā)1 000包/s,要得到較低的發(fā)包速度,只能使CA每2ms、3ms、4ms……nms檢查一次發(fā)包線程池,即只能得到500包/s、333包/s、250包/s的一個非線性的發(fā)包速度,相當于對1 000的頻率發(fā)生器進行分頻處理。高頻段的速度變化太快,達不到測試的精度要求。

  解決此問題方法是:設置二個發(fā)包速度控制線程CA、CB,對應二個發(fā)包線程池A、B。CA控制的線程池A中的線程用于產(chǎn)生千位數(shù)的發(fā)包速度,每個線程產(chǎn)生1 000包/s的發(fā)包速度;CB控制的線程池B中的線程用于產(chǎn)生剩余的小于1 000包/s的發(fā)包速度。其中用0~3個線程產(chǎn)生百位數(shù)的發(fā)包速度,線程的發(fā)包速度可選500包/s、200包/s、100包/s,另外用一個線程產(chǎn)生十位數(shù)以下的發(fā)包速度,發(fā)包速度為用(1 000 div x)對1 000進行分頻??偟陌l(fā)包速度最大誤差小于5。

  例如要求產(chǎn)生一個2970包/s的發(fā)包速度,A中設二個線程產(chǎn)生2 000包/s發(fā)包速度;B中設四個線程,發(fā)包速度分別是(500+200+200)=900和(1000 div 14)=71,與要求的2970包/s僅差1。

3.3 保證測試結(jié)果的準確性

  引起測試結(jié)果不準確的情況有以下幾種:(1)丟失RADIUS服務器發(fā)送回來的應答包。(2)不能及時記錄應答包的接收時間和處理應答包。(3)在計算原始數(shù)據(jù)從而間接得到RADIUS服務器性能參數(shù)的過程中,計算方法不當。

  解決方法是將應答包的處理分解為接收和處理,分別由二組不同的線程負責,并設置一個應答包緩沖池暫存應答包。接收線程負責將收到的應答包放入應答包緩沖池并記錄下時標,應答包處理線程負責應答包處理,如與請求包匹配計算時延等。接收線程和處理線程組成二個線程池,線程池里有預先建立好的接收線程和處理線程。當接收到應答包時就喚醒一個處理線程。若應答包處理線程池中找不到空閑狀態(tài)線程,則為應答包建立一個處理線程,并把新建立的線程加到線程池里。處理線程處理完畢就掛起等待下一次調(diào)度,減少線程的創(chuàng)建及調(diào)度開銷。

  設置一個“請求包記錄池”和“應答包緩沖池”狀態(tài)監(jiān)視線程,及時清理其中的過時內(nèi)容,釋放內(nèi)存空間,同時提高請求包記錄的查找速度,減少應答包的處理時間,并可以簡化緩沖池的同步與互斥機制。

  計算二個時間之間的差值時選擇可以精確到毫秒級的時間比較函數(shù)MilliSecondsBetween。在計算平均時延時,要控制“除”操作的結(jié)果精度。精度過高,耗費過多系統(tǒng)資源,且沒有實際意義;精度過低,達不到要求,產(chǎn)生較大誤差。

  另外,在建立實際測試平臺時,提高運行測試程序的機器硬件配置和改善測試網(wǎng)絡環(huán)境都有助于提高測試結(jié)果的準確性。

3.4 測試結(jié)果的直觀顯示

  在測試過程中,測試人員動態(tài)調(diào)整發(fā)包速度,使測試結(jié)果動態(tài)顯示。利用Delphi提供的功能強大的Tchart組件,以動態(tài)圖形的方式顯示了RADIUS服務器對測試程序的回應情況。使用了Tchart組件的FastLine曲線圖和餅圖二種圖形顯示,它們都可實時反映參數(shù)的變化。

  第一個FastLine曲線圖的縱坐標為包的個數(shù),橫坐標為時間。隨著測試中時間的推移,請求包的發(fā)送數(shù)、應答包的接收數(shù)、認證通過包的數(shù)目、有效應答包的數(shù)目及包處理線程等參數(shù)共五條曲線都動態(tài)顯示在同一個坐標系。對比這些曲線,可以得出RADIUS服務器和本測試程序運行情況。例如:代表請求包的線條顯示在代表應答包線條的上方,說明在某一時刻請求包總的發(fā)送數(shù)量比接收到的應答包總的數(shù)量要多。對于橫坐標上同一個時間點,線條在縱坐標上的差值反映了有多少個請求包在這一時間點沒有收到RADIUS服務器的回應。

  第二個Fastline曲線圖顯示了平均發(fā)送時延和平均應答時延。通過對比該曲線圖中二條曲線的位置,可以知道RADIUS服務器能否跟上測試程序的包發(fā)送頻率并及時作出應答。

  第三個餅圖用扇形和百分數(shù)來顯示應答包、驗證通過包、驗證失敗包、還未收到回應的包的情況。

4? 結(jié)束語

  作者用本文實現(xiàn)的RADIUS服務器性能測試軟件對一些免費的和商業(yè)的RADIUS服務器軟件進行了性能測試,系統(tǒng)運行良好,取得了滿意的效果。該測試軟件為構(gòu)建AAA系統(tǒng)時選擇合適的RADIUS軟件和配置硬件平臺提供了科學的依據(jù),對于研制或改進RADIUS服務器時查找性能瓶頸具有重要作用。

參考文獻

1?? 許猛.使用高速緩存提高AAA服務器性能的方法.計算機工程;2003;1(29)

2?? 朱魯華,施軍,尤晉元.分布式遠程認證服務器D_RADIUS的設計與實現(xiàn).計算機工程,2002;10(28)

3?? Rigney C,Willens S,Rubens A et al.Remote Authentication?Dial In User Service(RADIUS).RFC2865,2000

4?? 金敏.RADIUS服務器的模塊化及多線程實現(xiàn).鐵路計算機應用,2002;3(60)

5?? 衛(wèi)耀軍.RADIUS協(xié)議及其實現(xiàn).計算機工程,2000;增刊(26)

6?? 梁志剛,汪浩.C++ Builder 5開發(fā)人員指南.北京:機械工業(yè)出版社,2000

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容