(計(jì)算機(jī)應(yīng)用技術(shù)專業(yè)論文)基于千兆網(wǎng)卡的高效數(shù)據(jù)包捕獲技術(shù)的應(yīng)用與實(shí)現(xiàn).pdf_第1頁
(計(jì)算機(jī)應(yīng)用技術(shù)專業(yè)論文)基于千兆網(wǎng)卡的高效數(shù)據(jù)包捕獲技術(shù)的應(yīng)用與實(shí)現(xiàn).pdf_第2頁
(計(jì)算機(jī)應(yīng)用技術(shù)專業(yè)論文)基于千兆網(wǎng)卡的高效數(shù)據(jù)包捕獲技術(shù)的應(yīng)用與實(shí)現(xiàn).pdf_第3頁
(計(jì)算機(jī)應(yīng)用技術(shù)專業(yè)論文)基于千兆網(wǎng)卡的高效數(shù)據(jù)包捕獲技術(shù)的應(yīng)用與實(shí)現(xiàn).pdf_第4頁
(計(jì)算機(jī)應(yīng)用技術(shù)專業(yè)論文)基于千兆網(wǎng)卡的高效數(shù)據(jù)包捕獲技術(shù)的應(yīng)用與實(shí)現(xiàn).pdf_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費(fèi)閱讀

(計(jì)算機(jī)應(yīng)用技術(shù)專業(yè)論文)基于千兆網(wǎng)卡的高效數(shù)據(jù)包捕獲技術(shù)的應(yīng)用與實(shí)現(xiàn).pdf.pdf 免費(fèi)下載

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

, 目 i :, 嬲煳 獨(dú)創(chuàng)性聲明 本人聲明所呈交的學(xué)位論文是本人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工 作及取得的研究成果。據(jù)我所知,除了文中特別加以標(biāo)注和致謝的地 方外,論文中不包含其他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含 為獲得電子科技大學(xué)或其它教育機(jī)構(gòu)的學(xué)位或證書而使用過的材料。 與我一同工作的同志對(duì)本研究所做的任何貢獻(xiàn)均已在論文中作了明 確的說明并表示謝意。 簽名: 亟嶙 日期:沙c 。年f 月諺目 論文使用授權(quán) 本學(xué)位論文作者完全了解電子科技大學(xué)有關(guān)保留、使用學(xué)位論文 的規(guī)定,有權(quán)保留并向國(guó)家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印件和磁 盤,允許論文被查閱和借閱。本人授權(quán)電子科技大學(xué)可以將學(xué)位論文 的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索,可以采用影印、縮印或 掃描等復(fù)制手段保存、匯編學(xué)位論文。 ( 保密的學(xué)位論文在解密后應(yīng)遵守此規(guī)定) 簽名:紐避 導(dǎo)師簽名: 日期:卅口 , 心 摘要 摘要 近十五年里因特網(wǎng)普及之迅速,據(jù)報(bào)道中國(guó)的網(wǎng)絡(luò)用戶由9 6 年的1 0 萬增長(zhǎng) 到現(xiàn)在的3 3 8 億,可見人們已經(jīng)非常依賴網(wǎng)絡(luò)這個(gè)載體來交換信息和處理事務(wù)。 同時(shí)基于網(wǎng)絡(luò)的應(yīng)用也日漸多元化,如:網(wǎng)上購(gòu)物、聊天、電子郵件、博客等。 但是在含有眾多應(yīng)用的網(wǎng)絡(luò)環(huán)境中也存在著各種隱患,網(wǎng)站遭受黑客攻擊,用戶 數(shù)據(jù)的泄露等事件頻繁發(fā)生。為了有效地應(yīng)對(duì)復(fù)雜的網(wǎng)絡(luò)環(huán)境,各種防范軟件相 應(yīng)浮出水面,如:網(wǎng)絡(luò)監(jiān)控系統(tǒng),殺毒軟件,防火墻軟件等。 無論上述的網(wǎng)絡(luò)應(yīng)用還是網(wǎng)絡(luò)安全領(lǐng)域的各種防范軟件都依靠于底層的數(shù)據(jù) 包捕獲,可見數(shù)據(jù)包捕獲在高速發(fā)展的網(wǎng)絡(luò)領(lǐng)域中占據(jù)的重要地位。傳統(tǒng)的數(shù)據(jù) 包捕獲過程中的中斷處理,協(xié)議棧的處理和數(shù)據(jù)從內(nèi)核空間到用戶空間的拷貝等 過程都需要處理器資源。在網(wǎng)絡(luò)傳輸速度有很大提升的今天,對(duì)數(shù)據(jù)的實(shí)時(shí)采集 往往由中斷頻率過高和數(shù)據(jù)處理速度過慢造成丟包現(xiàn)象,直接影響到基于其工作 的系統(tǒng)的性能。如何高效地?cái)?shù)據(jù)包捕獲成為很多學(xué)者研究的課題。 本文所研究的數(shù)據(jù)包捕獲方案是以某企業(yè)網(wǎng)絡(luò)監(jiān)控系統(tǒng)為背景,依靠以太網(wǎng) 的廣播特性實(shí)現(xiàn)的。重點(diǎn)研究的是在高流量的網(wǎng)絡(luò)環(huán)境下對(duì)數(shù)據(jù)包捕獲性能的改 善。我們首先通過對(duì)數(shù)據(jù)包捕獲流程的分析尋找出數(shù)據(jù)捕獲過程中影向其性能的 各種因素,然后根據(jù)這些因素將目前在數(shù)據(jù)包捕獲領(lǐng)域出現(xiàn)的改進(jìn)方案進(jìn)行歸類, 最后選擇零拷貝的思想實(shí)現(xiàn)網(wǎng)絡(luò)監(jiān)控系統(tǒng)中的底層數(shù)據(jù)捕獲部分,并在文章的最 后一部分對(duì)此捕獲系統(tǒng)進(jìn)行了性能上的測(cè)試。 高效捕獲系統(tǒng)的具體實(shí)現(xiàn)是基于內(nèi)核提供給用戶空間的內(nèi)存映射接口去完成 的。我們的主要工作有三點(diǎn):第一,需要修改網(wǎng)卡驅(qū)動(dòng)源碼,將數(shù)據(jù)包放入指定 的內(nèi)核空間中;第二,設(shè)計(jì)內(nèi)核共享緩沖區(qū)的數(shù)據(jù)結(jié)構(gòu),以便實(shí)現(xiàn)數(shù)據(jù)包的填充 和釋放的同步;第三,提供給后期編程者數(shù)據(jù)包獲取接口。在以后的工作中,我 們還要設(shè)計(jì)一個(gè)精簡(jiǎn)的基于應(yīng)用層的“網(wǎng)絡(luò)協(xié)議?!保瑏硗晟茢?shù)據(jù)包的處理功能。 關(guān)鍵詞:數(shù)據(jù)包捕獲,內(nèi)存映射,設(shè)備驅(qū)動(dòng),網(wǎng)絡(luò)監(jiān)控 a b s t r a c t a b s t r a c t t h es p r e a d i n gs p e e do fi n t e m e tw a sf a s ti nt h ep a s t15y e a r s ,a n di tw a sr e p o r t e d t h a tt h en u m b e ro fn e f i z e ni n c r e a s e d33m i l l i o n ,f r o m10 0t h o u s a n di n19 9 6t o3 3 8 m i l l i o ni n2 0 0 8 n o wp e o p l eh a v eb e e na c c u s t o m e dt oe x c h a n g i n gm e s s a g eo rd e a l i n g w i t ha f f a i r sb yt h ec a r r i e ro fi n t e m e t t h ea p p l i c a t i o n sb a s e do ni n t e r n e ta r ev a r i o u s , s u c ha se c o m m e n c e ,c h a t t i n g ,e - m a i l ,b l o ga n ds oo n h o w e v e r , t h e r ea r em a n ys e c u r i t y r i s k si nt h e c o m p l e x n e t w o r ke n v i r o n m e n t i no r d e rt o m a n a g e m e n t n e t w o r k e n v i r o n m e n te f f e c t i v e l y , s o m es o f t w a r es u c ha sn e t w o r km o n i t o r i n gs y s t e m ,i n t r u s i o n d e t e c t i o ns y s t e m ,a n df i r e w a l ls o f t w a r ea p p e a n w h e t h e rv a r i o u sa p p l i c a t i o n sb a s e do ni n t e m e to rn e t w o r ks e c u r i t y s o f t w a r e m e n t i o n e da b o v e ,t h e ya l w a y sr e l a yo nb o t t o mp a c k e tc a p t u r i n g n e t w o r kp a c k e t c a p t u r i n gp l a y sa ni m p o r t a n tr o l ei nt h er a p i dd e v e l o p m e n to f n e t w o r kf i e l d e s p e c i a l l y , t h ef a s t e rs p e e do fn e t w o r kl e a d st oh i g hf r e q u e n c yo fn i ci n t e r r u p t ,l o ws p e e do f p a c k e tp r o c e s s i n ga n dp a c k e tl o s s t h e s ef a c t o r sa b o v ec a ni m p a c to nt h ep e r f o r m a n c e o fu p p e rs y s t e m n o wm a n ys c h o l a r sr e s e a r c ho nh o wt oc a p t u r ep a c k e te f f i c i e n t l y o nt h eb a c k g r o u n do fe n t e r p r i s en e t w o r km o n i t o r i n gs y s t e m ,w er e l a yo nt h e b r o a d c a s t i n gf e a t u r eo fe t h e m e tt oc a p t u r ep a c k e t s h o wt oi m p r o v i n gt h ep e r f o r m a n c e o fc a p t u r ei nh i g h t r a f f i cn e t w o r ke n v i r o n m e n ti so u rf o c u s f i r s t ,w ei n t r o d u c en o r m a l p a c k e tc a p t u r i n gm e t h o d i nl i n u x ,a n dt h e nm o d e lt h ep r o c e s so fp a c k e tc a p t u r et of i n d o u tt h ef a c t o r sw h i c hi m p a c tp e r f o r m a n c eo fs y s t e m a c c o r d i n gt ot h e s ef a c t o r s ,w e i n t r o d u c es o m ei m p r o v e dt e c h n o l o g ya n dc h o o s ez e r o c o p yt oi m p l e m e n to u rs y s t e m a tl a s tw eb u i l dt e s t i n ge n v i r o n m e n t ,a n dt e s tt h ep e r f o r m a n c eo ft h es y s t e mb y d i f f e r e n tl e n g t hp a c k e t sa n dd i f f e r e n tt r a n s m i ts p e e d t h ei m p l e m e n t a t i o no fe f f i c ie n tp a c k e tc a p t u r i n gs y s t e mi sb a s e do nam e m o r y m a p p i n gi n t e r f a c e ,w h i c hi sp r o v i d e db yk e r n e l o u rm a i n w o r ke m p h a s e so nt h r e e i m p o r t a n tp a r t s t h ef i r s to n ei st om o d i f yt h es o u r c ec o d eo f n i cd r i v e ra n dp u tp a c k e t s i n t op r e a l l o c a t e dk e r n e ls p a c e ;t h es e c o n do n ei st od e s i g nd a t as t r u c t u r e sw h i c hm a k e t h ec o m m u n i c a t i o na n ds y n c h r o n i z a t i o nb e t w e e nn i ca n du s e rp r o c e s s e s ;t h el a s tp a r ti s a b s t r a c t t op r o v i d eap r o g r a m m i n gi n t e r f a c ef o ra p p l i c a t i o np r o g r a m m e r s i nt h ef u t u r e ,w ew i l l d e s i g nas i m p l i f i e dp r o t o c o ls t a c kw o r k i n gi nu s e rs p a c et oi m p r o v et h ef u n c t i o no f p a c k e tp r o c e s s i n g k e y w o r d s :p a c k e tc a p t u r i n g ,m e m o r ym a p p i n g ,d e v i c ed f i v e r ,n e t w o r km o n i t o r i n g i i i 第一 1 1 課題背景1 1 2 研究現(xiàn)狀2 1 3 主要工作3 1 4 論文特色4 1 5 組織結(jié)構(gòu)4 第二章提升數(shù)據(jù)包捕獲性能的方法及相關(guān)知識(shí)的介紹5 2 1 數(shù)據(jù)包捕獲流程的簡(jiǎn)介5 2 2 類u n i x 系統(tǒng)中的數(shù)據(jù)包捕獲機(jī)制介紹6 2 2 1l i n u x 中的網(wǎng)絡(luò)套接字接口7 2 2 2b s d 中的b p f 過濾機(jī)制7 2 2 3s v r 4 中的數(shù)據(jù)鏈路提供者接口8 2 3 影響數(shù)據(jù)包捕獲性能的因素9 2 4 提高數(shù)據(jù)包捕獲性能的方法1 1 2 4 1 中斷結(jié)合1 1 2 4 2 中斷輪詢結(jié)合機(jī)制1 2 2 4 3 零拷貝思想1 4 2 4 4 硬件卸載引擎。1 5 2 4 5 提高l i n u x 系統(tǒng)的實(shí)時(shí)性的方法1 6 2 4 6 對(duì)改進(jìn)方法的總結(jié)與選擇1 7 2 5 實(shí)現(xiàn)改進(jìn)方法所需的基礎(chǔ)知識(shí)1 7 2 5 1 內(nèi)存映射1 7 2 5 2 設(shè)備驅(qū)動(dòng)及設(shè)備類型2 1 2 5 3 進(jìn)程通信機(jī)制2 2 2 5 4 模塊化的內(nèi)核編程2 4 2 6 本章小結(jié)2 5 第三章基于千兆網(wǎng)卡的數(shù)據(jù)包捕獲系統(tǒng)的概要設(shè)計(jì)2 6 i v 目錄 3 1 企業(yè)網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)的簡(jiǎn)介2 6 3 1 1 企業(yè)網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)的功能簡(jiǎn)介2 6 3 1 2 企業(yè)網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)的架構(gòu)2 8 3 2 數(shù)據(jù)包捕獲系統(tǒng)的性能需求3 0 3 3 數(shù)據(jù)包捕獲子系統(tǒng)的設(shè)計(jì)方案3 2 3 3 1 數(shù)據(jù)包捕獲子系統(tǒng)的功能模塊劃分3 3 3 3 2 功能模塊間的同步3 3 3 3 3 用戶接口的設(shè)計(jì)3 5 3 4 本章小結(jié)3 5 第四章基于千兆網(wǎng)卡的數(shù)據(jù)包捕獲系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)3 6 4 1 千兆網(wǎng)卡驅(qū)動(dòng)模塊的設(shè)計(jì)3 7 4 1 1 關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的分析3 7 4 1 2 網(wǎng)卡驅(qū)動(dòng)接收流程的分析3 9 4 1 3 網(wǎng)絡(luò)驅(qū)動(dòng)程序的修改4 2 4 2 內(nèi)核共享緩沖區(qū)模塊4 2 4 2 1 數(shù)據(jù)結(jié)構(gòu)的建立4 3 4 2 2 共享緩沖區(qū)中內(nèi)存的分配4 5 4 2 3 網(wǎng)卡與應(yīng)用程序之間的同步4 8 4 3 接口函數(shù)模塊5 0 4 4 系統(tǒng)整體工作流程5 2 4 4 1 系統(tǒng)初始化階段流程5 2 4 4 2 系統(tǒng)運(yùn)行階段流程5 3 4 5 本章小結(jié)5 5 第五章基于千兆網(wǎng)卡的數(shù)據(jù)包捕獲系統(tǒng)的測(cè)試與分析5 6 5 1 測(cè)試環(huán)境5 6 5 2 測(cè)試數(shù)據(jù)的分析5 7 5 3 本章小結(jié)5 9 第六章總結(jié)與展望6 0 6 1 全文總結(jié)6 0 6 2 工作展望6 0 致謝6 2 參考文獻(xiàn)6 3 v 攻碩 著分 九十 超過 人們 多元化,如:網(wǎng)頁沖浪、網(wǎng)上購(gòu)物、聊天、電子郵件、博客等等。除此之外,大 多數(shù)企業(yè)也開始進(jìn)入信息化規(guī)劃方案,架構(gòu)自己內(nèi)部的局域網(wǎng),并且通過s o a 拉j 理念等,開發(fā)一系列的e r p 3 】軟件來有效的管理企業(yè)。 當(dāng)網(wǎng)絡(luò)技術(shù)帶給我們便利的同時(shí)它還帶來了很多安全隱患,如:網(wǎng)站遭受黑 客攻擊,用戶數(shù)據(jù)的泄露等等。據(jù)美國(guó)金融時(shí)報(bào)報(bào)道,在計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境下 入侵事件的發(fā)生概率為平均2 0 秒次,超過1 3 的互聯(lián)網(wǎng)被攻破,全球范圍內(nèi)每年 由于信息系統(tǒng)的脆弱性而導(dǎo)致的經(jīng)濟(jì)損失達(dá)數(shù)億美元并且呈逐年上升趨勢(shì)。面對(duì) 這么多網(wǎng)絡(luò)安全問題,許多網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng),網(wǎng)絡(luò)安全監(jiān)控系統(tǒng)浮出水面。不 管是基于網(wǎng)絡(luò)的各種應(yīng)用還是網(wǎng)絡(luò)安全領(lǐng)域的各種防范軟件,它們的實(shí)現(xiàn)都離不 開數(shù)據(jù)捕獲( 我們這里介紹的數(shù)據(jù)捕獲都是在以太網(wǎng)下的) ,可見數(shù)據(jù)捕獲的研 究?jī)r(jià)值。 我國(guó)從撥號(hào)上網(wǎng)時(shí)代從0 3 年發(fā)展為頂峰,當(dāng)時(shí)用戶的有效速率遠(yuǎn)遠(yuǎn)低于 5 6 k b p s ,到0 8 年寬帶用戶已經(jīng)占據(jù)絕對(duì)比例,2 0 0 8 年中國(guó)網(wǎng)絡(luò)國(guó)際出口帶寬達(dá) 到6 4 0 ,2 8 6 6 7m b p s ??梢娋W(wǎng)絡(luò)的發(fā)展是伴隨著上網(wǎng)配套的硬件設(shè)施也不斷的改進(jìn), 最直接表現(xiàn)的就是帶寬的上升。隨著這樣的發(fā)展趨勢(shì),千兆網(wǎng)絡(luò)時(shí)代的到來并不 遙遠(yuǎn)。 帶寬的擴(kuò)充及網(wǎng)絡(luò)數(shù)據(jù)包傳輸流量變大將會(huì)對(duì)數(shù)據(jù)包捕獲技術(shù)提出一次新的 挑戰(zhàn)。在百兆網(wǎng)絡(luò)環(huán)境下,l i n u x 常見的數(shù)據(jù)包捕獲接e l 是l i b p c a p 【4 1 ( w i n d o w s 下存 在相應(yīng)的w i n p c a p ) ,它的工作原理是旁路網(wǎng)卡通過中斷傳送給系統(tǒng)協(xié)議棧的數(shù)據(jù) 電子科技大學(xué)碩士學(xué)位論文 包,將它們存放在兩個(gè)大小3 2 k b 的公共緩沖區(qū),應(yīng)用程序取出緩沖區(qū)中的數(shù)據(jù)進(jìn) 行分析。在此過程數(shù)據(jù)還需要經(jīng)歷一次用戶空間到內(nèi)核空間的拷貝。但是在千兆 網(wǎng)絡(luò)下,它的捕獲性能明顯下降,對(duì)于小包的成功接收率不到百分之十。近些年 干兆網(wǎng)絡(luò)適配器的出現(xiàn)已解決了硬件上的丟包問題,數(shù)據(jù)包捕獲的瓶頸已不在于 網(wǎng)絡(luò)適配器,而在于操作系統(tǒng)協(xié)議棧對(duì)包的處理,比如系統(tǒng)接收數(shù)據(jù)包的中斷方 式,用戶空間與內(nèi)核空間數(shù)據(jù)拷貝方式等都是十分耗費(fèi)系統(tǒng)資源【5 j 。據(jù)相關(guān)材料介 紹,千兆網(wǎng)絡(luò)環(huán)境下包長(zhǎng)為6 4 字節(jié)的數(shù)據(jù)包到達(dá)速度最大可達(dá)到1 2 3 0 0 0 0 個(gè)秒, 每個(gè)數(shù)據(jù)包到達(dá)網(wǎng)卡產(chǎn)生一次中斷,中央處理器必須達(dá)到0 8 2 u s 的處理速度才能 保證收包率。但是一個(gè)p i i i4 5 0 m h 裝有l(wèi) i n u x2 2 1 0 的操作系統(tǒng)處理一個(gè)數(shù)據(jù)包 需要1 3 2 3 u s 6 | 。近些年出現(xiàn)了許多高頻率的處理器,但是處理器的頻率的線性增 加并不會(huì)使接收數(shù)據(jù)包產(chǎn)生的中斷消耗線性減小,主要原因還在于像主存、i o 設(shè) 備并不具備高速緩存的讀寫速度,大大限制了中斷處理時(shí)間的減少。一個(gè)主頻為 2 4 g h z 的處理器相對(duì)于8 0 0 m h z 的處理器性能上只提高了6 0 【7 】。可見單純的通 過提升處理器的性能并不能根本解決數(shù)據(jù)包捕獲的接收活鎖問題。 1 2 研究現(xiàn)狀 這些年,在高性能通信領(lǐng)域出現(xiàn)了很多研究課題,大致可以分為軟件實(shí)現(xiàn)和硬 件實(shí)現(xiàn)兩部分。在軟件領(lǐng)域?qū)?shù)據(jù)包捕獲性能研究做出最大貢獻(xiàn)的還屬于l u c a d e r i ,他開發(fā)的n t o p 軟件中使用了一種類型為p f 套接字【8 母】,這種套接字相對(duì) 于 而言,能夠使用戶進(jìn)程直接訪問到內(nèi)核_r空in間glibpcap的數(shù)據(jù)包緩沖區(qū),避免了數(shù) 據(jù)從內(nèi)核空間到用戶空間的第二次拷貝。這種方式類似于零拷貝【1o j 但又有不同, 它將網(wǎng)卡中斷接收的數(shù)據(jù)先復(fù)制到內(nèi)核緩沖區(qū)空間,再將這個(gè)區(qū)間直接與用戶空 間進(jìn)行映射。在后期l u c ad e r i 又提出一種n c a p n 】的捕獲方案,這種方案讓用戶進(jìn) 程直接跟網(wǎng)卡進(jìn)行交互,網(wǎng)卡硬件寄存器和內(nèi)部緩沖區(qū)都直接映射到用戶空i 白j 。 據(jù)關(guān)于資料報(bào)道,這種捕獲方式在處理器頻率足夠高的時(shí)候甚至可以達(dá)到千兆網(wǎng) 卡轉(zhuǎn)發(fā)速度的極限值1 4 8 m p s ,但是n c a p 的內(nèi)部實(shí)現(xiàn)機(jī)制并未公開。 在硬件領(lǐng)域的改善數(shù)據(jù)包捕獲方案的基本思想是用硬件分擔(dān)操作系統(tǒng)協(xié)議棧 對(duì)數(shù)據(jù)包處理的壓力,讓數(shù)據(jù)包的處理放到在網(wǎng)卡內(nèi)部完成,包括我們?cè)诘诙?將介紹到的協(xié)議棧卸載引擎【l2 1 。硬件方式捕獲數(shù)據(jù)包能力很強(qiáng)大,比較有名的 d a g t l 3 】卡和c o m b o 卡,特別是d a g 4 3 g e 在發(fā)送速率達(dá)到千兆每秒時(shí)的丟包率 為零( 包長(zhǎng)1 5 0 0 字節(jié)和6 4 字節(jié)) ,但它的價(jià)格頗高,達(dá)到了幾萬甚至十萬人民幣。 2 第一章引言 由于價(jià)格因素,一般的網(wǎng)絡(luò)管理系統(tǒng),遠(yuǎn)程監(jiān)控系統(tǒng),入侵檢測(cè)系統(tǒng)等還是基于 千兆網(wǎng)卡的普通硬件。后來生產(chǎn)d a g 卡的公司使用n c a p 技術(shù)開發(fā)出了一款新的 捕包軟件e n c a p ,這款收費(fèi)軟件對(duì)硬件的要求不高,但可以很大程度對(duì)數(shù)據(jù)包的捕 獲能力,而且提供給用戶便捷的二次開發(fā)環(huán)境。 在國(guó)內(nèi),許多研究者把高性能的數(shù)據(jù)包捕獲研究重點(diǎn)放零拷貝的實(shí)現(xiàn)和中斷輪 詢機(jī)制的轉(zhuǎn)換兩個(gè)方面。在零拷貝的實(shí)現(xiàn)是直接將數(shù)據(jù)d m a 到用戶空間或者在內(nèi) 核空間開辟一片緩沖區(qū)采用地址映射機(jī)制讓用戶進(jìn)程訪問內(nèi)核空間。在中斷輪詢 的切換方面,有根據(jù)即時(shí)網(wǎng)絡(luò)流量靈活控制的,也有在輪詢失敗后自動(dòng)轉(zhuǎn)化的方 式。雖然實(shí)現(xiàn)的方法不一樣,但都是為了減少網(wǎng)絡(luò)適配器帶給中央處理器的中斷 消耗而建立的。 1 3 主要工作 本文所研究的數(shù)據(jù)包捕獲是以某企業(yè)網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)為背景,依靠以太網(wǎng) 的廣播特性實(shí)現(xiàn)的。重點(diǎn)研究的是在高流量的網(wǎng)絡(luò)環(huán)境下對(duì)數(shù)據(jù)包捕獲性能的改 善。在對(duì)l i n u x 環(huán)境下各種網(wǎng)絡(luò)數(shù)據(jù)包捕獲技術(shù)的了解后,通過改變默認(rèn)情況下數(shù) 據(jù)包的流向和利用內(nèi)核映像等方法來提高數(shù)據(jù)包的捕獲效率。 本人完成的主要工作如下: ( 1 ) 詳細(xì)地介紹了l i n u x 系統(tǒng)中數(shù)據(jù)包捕獲機(jī)制。 ( 2 ) 根據(jù)l i n u x 系統(tǒng)下數(shù)據(jù)包捕獲流程建立模型,推導(dǎo)出影響數(shù)據(jù)包捕獲性能兩 個(gè)重要因素( 硬中斷頻率,軟中斷處理速度) 及其關(guān)系。并根據(jù)這些因素將最近 提出的各種改進(jìn)思想歸類分析,選擇零拷貝思想實(shí)現(xiàn)數(shù)據(jù)包的捕獲。 ( 3 ) 分析了千兆網(wǎng)卡驅(qū)動(dòng)程序b r o a d c o mn e t x t r e m ei ig i g a b i te t h e m e td r i v e r 的 數(shù)據(jù)包接收流程和中斷機(jī)制。 ( 4 ) 深入了解l i n u x 虛擬內(nèi)存的實(shí)現(xiàn)機(jī)制( 分頁管理) ,編寫m m a p 系統(tǒng)調(diào)用實(shí) 現(xiàn)用戶空間到內(nèi)存空間的緩沖區(qū)映射。 ( 5 ) 對(duì)企業(yè)網(wǎng)絡(luò)監(jiān)控系統(tǒng)的數(shù)據(jù)包捕獲功能進(jìn)行了改進(jìn),通過在原有系統(tǒng)中添 加虛擬設(shè)備模塊的形式實(shí)現(xiàn)了零拷貝思想。 ( 6 ) 搭建測(cè)試平臺(tái)以完成數(shù)據(jù)包捕獲系統(tǒng)性能上的測(cè)試,并對(duì)測(cè)試結(jié)果進(jìn)行了 分析。 電子科技大學(xué)碩士學(xué)位論文 1 4 論文特色 根據(jù)企業(yè)網(wǎng)絡(luò)負(fù)載情況采用零拷貝的數(shù)據(jù)捕獲方案改善系統(tǒng)的性能。對(duì)零拷 貝實(shí)現(xiàn)主要基于以下幾點(diǎn): 選擇在內(nèi)核態(tài)開辟空間,讓用戶進(jìn)程通過內(nèi)存映射對(duì)數(shù)據(jù)包進(jìn)行讀取。 引入虛擬字符設(shè)備概念管理內(nèi)核態(tài)的共享內(nèi)存,建立循環(huán)管理隊(duì)列解決了網(wǎng) 卡傳入數(shù)據(jù)與用戶進(jìn)程取出數(shù)據(jù)的同步,采用互斥信號(hào)量方式控制多用戶進(jìn)程對(duì) 虛擬字符設(shè)備的訪問。并為后期的數(shù)據(jù)包處理提供了數(shù)據(jù)捕獲接口。 1 5 組織結(jié)構(gòu) 本文在分析l i n u x 內(nèi)存管理及報(bào)文捕獲機(jī)制的基礎(chǔ)上提出了一種新的報(bào)文捕獲 方法,并以內(nèi)核模塊的形式實(shí)現(xiàn)底層數(shù)據(jù)的捕獲功能。下面我們對(duì)文章的各個(gè)章 節(jié)做一次概括以方便讀者閱讀。 第一章:簡(jiǎn)明介紹了本課題的背景,研究現(xiàn)狀和主要內(nèi)容。 第二章:介紹了傳統(tǒng)的基于軟件的數(shù)據(jù)包捕獲方式,分析了產(chǎn)生數(shù)據(jù)包捕獲 瓶頸的關(guān)鍵參數(shù)。在此基礎(chǔ)上引出了各種的改善的方法,最終選擇零拷貝思想實(shí) 現(xiàn)數(shù)據(jù)包捕獲。最后介紹了實(shí)現(xiàn)零拷貝所需要的基礎(chǔ)知識(shí)。 第三章:介紹了數(shù)據(jù)捕獲系統(tǒng)的大項(xiàng)目背景及數(shù)據(jù)包捕獲系統(tǒng)的高性能要求, 最后將數(shù)據(jù)包捕獲系統(tǒng)進(jìn)行模塊劃分,討論了各種模塊的交互及實(shí)現(xiàn)中需要考慮 的問題。 第四章:介紹數(shù)據(jù)捕獲系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)。 第五章:搭建測(cè)試環(huán)境,對(duì)數(shù)據(jù)包捕獲系統(tǒng)性能進(jìn)行了一系列測(cè)試。 第六章:對(duì)整個(gè)課題進(jìn)行總結(jié),提出后期工作的方向和目標(biāo)。 4 第二章提升數(shù)據(jù)包捕獲性能的方法及相關(guān)知識(shí)的介紹 第二章提升數(shù)據(jù)包捕獲性能的方法及相關(guān)知識(shí)的介紹 2 1 數(shù)據(jù)包捕獲流程的簡(jiǎn)介 數(shù)據(jù)包捕獲是指從網(wǎng)絡(luò)設(shè)備中取出數(shù)據(jù)包提交給系統(tǒng)協(xié)議?;蛘咂渌鄳?yīng)的 模塊接口以供其分析及其他用途。從底層網(wǎng)絡(luò)接入的環(huán)境來看,有兩種數(shù)據(jù)包捕 獲方法。一種是通過路由器對(duì)端口進(jìn)行監(jiān)聽來捕獲全部網(wǎng)絡(luò)的數(shù)據(jù)包,這種方式 適合于很多網(wǎng)絡(luò)中,但是以太網(wǎng)本身的廣播特性給數(shù)據(jù)包捕獲提供了另一個(gè)途徑。 本文討論的數(shù)據(jù)包捕獲都屬于以太網(wǎng)的數(shù)據(jù)包捕獲【l 4 1 。 以太網(wǎng)是一種高速的局域網(wǎng),由于其采用的多路訪問協(xié)議( c s m a c d ) 0 5 設(shè)計(jì)簡(jiǎn)單,高速率低成本等特性,所以它被普遍使用。以太網(wǎng)的廣播性表現(xiàn)為每 個(gè)主機(jī)發(fā)送的數(shù)據(jù)都在信道中傳輸,處于傳輸信道中的機(jī)器可以獲取到信道中的 所有數(shù)據(jù)。這種廣播特性可以為p c 機(jī)提供網(wǎng)絡(luò)數(shù)據(jù)包捕獲的基礎(chǔ)條件。網(wǎng)絡(luò)中的 主機(jī)系統(tǒng),數(shù)據(jù)的收發(fā)是由網(wǎng)卡來完成的。以太網(wǎng)卡工作在t c p i p 協(xié)議模型的數(shù) 據(jù)鏈路層,通過網(wǎng)膏的m a c 地址進(jìn)行定位。 由于以太網(wǎng)的廣播特性,以太網(wǎng)卡( 在以太網(wǎng)下工作的網(wǎng)卡) 的工作模式可 以分為兩種:混雜模式和非混雜模式。混雜模式就如上一段提到聯(lián)網(wǎng)的主機(jī)可以 通過以太網(wǎng)卡接收到流經(jīng)網(wǎng)絡(luò)的所有數(shù)據(jù)幀,并不需要檢查這些數(shù)據(jù)幀是否是發(fā) 送給本網(wǎng)卡的。非混雜模式下以太網(wǎng)卡只能接收目標(biāo)地址與自己m a c 地址一致的 數(shù)據(jù)幀進(jìn)行處理,其余的數(shù)據(jù)幀例如廣播幀等全部被丟棄。所以在數(shù)據(jù)捕獲過程 中我們必須將以太網(wǎng)卡設(shè)置為混雜模式。 混雜模式下的以太網(wǎng)卡進(jìn)行數(shù)據(jù)捕獲時(shí)只需要將接收到數(shù)據(jù)幀通過中斷的方 式送往內(nèi)核協(xié)議棧,然后我們可以根據(jù)上層應(yīng)用程序的需求對(duì)數(shù)據(jù)包進(jìn)行物理地 址、m a c 地址、端口,或者內(nèi)容的分析來決定它們是否丟棄還是保留以備后期操 作。這個(gè)過程其實(shí)就是一次數(shù)據(jù)包的捕獲與處理。下面我們具體地了解數(shù)據(jù)包經(jīng) 過操作系統(tǒng)這一過程。 整個(gè)網(wǎng)絡(luò)體系架構(gòu)分為五個(gè)層次,分別為應(yīng)用層,傳輸層,網(wǎng)絡(luò)層,數(shù)據(jù)鏈 路層和物理層,這種劃分與o s i 七層體系結(jié)構(gòu)非常類似,根據(jù)不同的功能將網(wǎng)絡(luò) 劃分層次的方式被廣泛的接受。各種操作系統(tǒng)根據(jù)這種劃分方式設(shè)計(jì)了類似的協(xié) 電子科技大學(xué)碩士學(xué)位論文 議棧去處理網(wǎng)絡(luò)數(shù)據(jù)。這里我們簡(jiǎn)單介紹下l i n u x 網(wǎng)絡(luò)協(xié)議棧【1 6 1 的架構(gòu)和數(shù)據(jù)包在 各層次中會(huì)經(jīng)歷哪些處理。l i n u x 協(xié)議棧的框架如下圖2 1 所示。 圖2 1l i n u x 網(wǎng)絡(luò)協(xié)議棧 數(shù)據(jù)包通過網(wǎng)卡中斷被送入操作系統(tǒng)內(nèi)核空間,并且在協(xié)議棧的等待隊(duì)列中 排隊(duì)等待軟中斷處理。軟中斷的處理就是對(duì)接收到的數(shù)據(jù)包進(jìn)行逐層解析,將數(shù) 據(jù)幀一步步轉(zhuǎn)化為用戶可以讀取的消息。數(shù)據(jù)包在各個(gè)層次充當(dāng)著不同的角色, 從物理層的p ,p d u 到鏈路層的幀,再到網(wǎng)絡(luò)層的分組和傳輸層的數(shù)據(jù)段,最后作 為消息到達(dá)應(yīng)用層。協(xié)議棧會(huì)對(duì)鏈路層的數(shù)據(jù)幀進(jìn)行一系列的校驗(yàn)工作,根據(jù)幀 頭的m a c 地址對(duì)數(shù)據(jù)包進(jìn)行丟棄、轉(zhuǎn)發(fā)或者上傳的操作,被上傳到網(wǎng)絡(luò)層的數(shù)據(jù) 包要根據(jù)i p 地址進(jìn)行路由協(xié)議,仍然過傳輸層要對(duì)其端口檢查,端口的檢查可以 看做是對(duì)應(yīng)用進(jìn)程的匹配,明確數(shù)據(jù)包發(fā)往哪個(gè)進(jìn)程。 準(zhǔn)確的說,網(wǎng)絡(luò)適配器負(fù)責(zé)完成對(duì)鏈路層幀的操作。在上文中我們了解到網(wǎng) 卡可以通過不同的模式?jīng)Q定是否接收所有經(jīng)過的幀還足只接收與本機(jī)有關(guān)的數(shù)據(jù) 幀。操作系統(tǒng)的網(wǎng)絡(luò)協(xié)議棧負(fù)責(zé)完成數(shù)據(jù)包從網(wǎng)絡(luò)層到應(yīng)用層的解析,在解析過 程中我們還可以在每層間對(duì)數(shù)據(jù)包進(jìn)行各種操作,不一定必須要丟棄數(shù)據(jù)包。此 外,網(wǎng)絡(luò)協(xié)議棧對(duì)數(shù)據(jù)包的處理需要一定的時(shí)間。 2 2 類u nlx 系統(tǒng)中的數(shù)據(jù)包捕獲機(jī)制介紹 在本小節(jié)中,我們將介紹多種由u n i x 衍生的各種系統(tǒng)下的捕獲機(jī)制,所有 機(jī)制對(duì)數(shù)據(jù)包只是旁路監(jiān)聽,而啟不到攔截作用。 6 第二章提升數(shù)據(jù)包捕獲性能的方法及相關(guān)知識(shí)的介紹 2 2 。1lin u x 中的網(wǎng)絡(luò)套接字接口 l i n u x 系統(tǒng)中提供了多種類型的套接字,比如:鏈路層套接字s o c kp a c k e t , 流式套接字s o c ks t r e a m ,數(shù)據(jù)報(bào)套接字s o c kd g r a m 和原始套接字 s o c kr a m 。我們常用的套接字是鏈路層套接字,它是操作系統(tǒng)提供給用戶程序 訪問網(wǎng)絡(luò)鏈路層數(shù)據(jù)包的接口。用戶只需設(shè)置以太網(wǎng)卡模式為混雜模式,在用戶 態(tài)使用鏈路層套接字,就可以獲得所有由網(wǎng)卡提交給操作系統(tǒng)的數(shù)據(jù)包。對(duì) s o c kp a c k e t 的調(diào)用不影響數(shù)據(jù)包在內(nèi)核中的流向,但是由于此套接字在內(nèi)核 中沒有緩沖區(qū),用戶通過它捕獲局域網(wǎng)中數(shù)據(jù)包效率低下在高速網(wǎng)絡(luò)中無法使用。 2 2 2b s d 中的b p f 過濾機(jī)制 b p f ( b s dp a c k e tf i l t e r ) 1 7 】的過濾機(jī)制被廣泛用于b s d 系統(tǒng)及起源于b s d 框架的其他系統(tǒng)中。與s o c k e tp a c k e t 一樣,b p f 對(duì)數(shù)據(jù)包的獲取也在鏈路層, 而且它還能實(shí)現(xiàn)數(shù)據(jù)包過濾的功能。為了理解b p f 的工作流程,我們需要對(duì)網(wǎng)絡(luò) 數(shù)據(jù)包的默認(rèn)流向做個(gè)介紹:當(dāng)有數(shù)據(jù)包到達(dá)網(wǎng)卡,網(wǎng)卡會(huì)產(chǎn)生中斷,操作系統(tǒng) 響應(yīng)中斷,將數(shù)據(jù)包從硬件緩存區(qū)復(fù)制到內(nèi)核緩沖區(qū)中保存,隨后提交到操作系 統(tǒng)默認(rèn)的協(xié)議棧進(jìn)行相應(yīng)的操作。b p f 在數(shù)據(jù)包提交到默認(rèn)的協(xié)議棧之前,在網(wǎng) 卡中斷過程中對(duì)數(shù)據(jù)包進(jìn)行過濾。它首先會(huì)過濾掉目的地址不是本主機(jī)的數(shù)據(jù)包, 然后根據(jù)過濾規(guī)則( 規(guī)則由調(diào)用b p f 的進(jìn)程制定) 再對(duì)數(shù)據(jù)包進(jìn)行過濾,經(jīng)過兩 次過濾后將最終數(shù)據(jù)包提交給上層協(xié)議棧。具體的過濾機(jī)制如下圖2 2 所示。 當(dāng)網(wǎng)絡(luò)數(shù)據(jù)量過大時(shí),b p f 的第一次過濾需要一定的處理時(shí)間,占用處理器 的資源,可能造成數(shù)據(jù)包的流入速度大于數(shù)據(jù)包第一次過濾速度的情況。這種情 況最典型的解決辦法就是建立緩沖區(qū)。其實(shí),在實(shí)際應(yīng)用中,b p f 取消了我們所 說的第一次過濾,而是先將所有數(shù)據(jù)包全部放到內(nèi)核緩沖區(qū)中,然后再根據(jù)過濾 原則進(jìn)行過濾,滿足條件的數(shù)據(jù)包再由系統(tǒng)調(diào)用傳送到用戶空間。我們可以看到, 起初的數(shù)據(jù)包沒有經(jīng)過處理全部復(fù)制到內(nèi)核緩沖區(qū)中,但用戶空間的接收到得數(shù) 據(jù)包數(shù)量絕對(duì)要小于或者等于內(nèi)核空i 訓(xùn)緩沖區(qū)數(shù)據(jù)包的數(shù)量,說明通過對(duì)內(nèi)核緩 沖區(qū)中數(shù)據(jù)包的過濾還可以減少所需申請(qǐng)的用戶空間的大小和數(shù)據(jù)包從內(nèi)核空間 到用戶空間的復(fù)制數(shù)量。b p f 支持多用戶調(diào)用的方式是為每個(gè)用戶進(jìn)程在內(nèi)核中 開辟一個(gè)緩沖區(qū),一個(gè)b p f 對(duì)應(yīng)于一個(gè)緩沖區(qū),各自不受影響。當(dāng)數(shù)據(jù)過濾完成 后,在將此段緩沖區(qū)的數(shù)據(jù)一次性復(fù)制到對(duì)應(yīng)的用戶空間。根據(jù)以上分析,可以 電子科技大學(xué)碩士學(xué)位論文 明顯得出b p f 優(yōu)于s o c kp a c k e t 。 系統(tǒng)地總結(jié),b p f 由兩部分組成:n e t w o r kt a p 和p a c k e tf i l t e r 。n e t w o r kt a p 用 于對(duì)鏈路層數(shù)據(jù)包的捕獲,p a c k e tf i l t e r 用于對(duì)捕獲的數(shù)據(jù)包進(jìn)行過濾。應(yīng)用程序 通過調(diào)用b p f 可以實(shí)現(xiàn)數(shù)據(jù)包的捕獲和過濾。它優(yōu)于s o c kp a c k e t 的原因有一 下幾點(diǎn): 1 過濾機(jī)制的實(shí)現(xiàn)在內(nèi)核空間中,相對(duì)于用戶空間的過濾,速度快,開銷小。 2 p a c k e tf i l t e r 使得傳遞給用戶空間的數(shù)據(jù)包數(shù)量減少,減少了內(nèi)核空間到用 戶空間傳遞的資源消耗。 3 數(shù)據(jù)包不是一個(gè)一個(gè)傳送給用戶空間,而是一次性傳遞一定數(shù)量的數(shù)據(jù)包, 減少了系統(tǒng)調(diào)用產(chǎn)生的開銷。 圖2 - 2b p f 過濾機(jī)制 2 2 3s v r 4 中的數(shù)據(jù)鏈路提供者接口 數(shù)據(jù)鏈路提供者接口d l p i 1 8 】是由a t & t 設(shè)計(jì)出來的,它有良好的獨(dú)立于協(xié)議 的特性,不論數(shù)據(jù)鏈路層是基于以太網(wǎng)還是基于令牌環(huán)網(wǎng)的協(xié)議。此接口的實(shí)現(xiàn) 是基于u n i x 的流機(jī)制。接口的使用者( 上層協(xié)議或者用戶進(jìn)程) 在不知道鏈路 層協(xié)議狀態(tài)的情況下可以通過此接口直接訪問數(shù)據(jù)包幀。使用者和服務(wù)提供者可 _ _ _ _ _ _ _ _ _ _ - _ r _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ i _ _ _ _ _ _ _ _ _ _ _ _ 。一 第二章提升數(shù)據(jù)包捕獲性能的方法及相關(guān)知識(shí)的介紹 以通過定義的原語集合和規(guī)則進(jìn)行交互。 由于流消息的形式影響系統(tǒng)效率,設(shè)計(jì)者采取類似于b p f 的數(shù)據(jù)捕獲和過濾 機(jī)制,引入p f m o d 和b u f r n o d 兩個(gè)模塊【l 9 1 。前者對(duì)數(shù)據(jù)包分組過濾,后者將過濾 好的數(shù)據(jù)包復(fù)制到用戶空間。與b p f 不同的是,p f m o d 模塊的實(shí)現(xiàn)是通過虛擬機(jī) 完成,這樣避免了數(shù)據(jù)包拷貝的開銷;在b u f m o d 模塊中引入了超時(shí)機(jī)制和捕獲長(zhǎng) 度機(jī)制等來減少系統(tǒng)調(diào)用次數(shù)和內(nèi)存拷貝數(shù)據(jù)量。但是基于底層協(xié)議為i e e e 8 0 2 的通信服務(wù),還是要比b p f 慢。d l p i 具體的模塊關(guān)系如下圖2 3 所示。 圖2 - 3d l p i 接口 2 3 影響數(shù)據(jù)包捕獲性能的因素 傳統(tǒng)的l i n u x 報(bào)文捕獲【2 0 】可以分為兩部分:硬中斷和軟中斷。當(dāng)報(bào)文到達(dá)網(wǎng) 絡(luò)適配器,適配器將利用中斷的方式通知操作系統(tǒng),系統(tǒng)調(diào)用已經(jīng)被注冊(cè)的中斷 處理函數(shù)進(jìn)行接收,把數(shù)據(jù)包處理成一定格式放到一個(gè)由b a c k l o g 指針指向的鏈表 中等待上層傳輸。在此期間,系統(tǒng)處于關(guān)中斷階段,我們將這個(gè)階段稱為硬中斷。 捕獲流程的第二部分就是將b a c k l o g 隊(duì)列中的數(shù)據(jù)包通過軟中斷的方式向上層提 交。軟中斷過程中,系統(tǒng)處于開中斷狀態(tài),當(dāng)有新的數(shù)據(jù)包到來時(shí)候,系統(tǒng)則會(huì) 停止軟中斷過程,回到第一部分的硬中斷階段,將鏈路層數(shù)據(jù)包接收到b a c k l o g 隊(duì) 列。具體的流程如下圖2 4 所示。 9 電子科技大學(xué)碩士學(xué)位論文 開始 網(wǎng)絡(luò)設(shè)備是否產(chǎn)生中斷 、f 系統(tǒng)進(jìn)入硬件中斷 將數(shù)據(jù)包轉(zhuǎn)換成一定格式放 入b l a c k | o g 隊(duì)列 否 哆燃專 至 。竺鄉(xiāng)匕 上是 系統(tǒng)進(jìn)入軟中斷 從b l a c k l o g 隊(duì)列中取出數(shù)據(jù) 進(jìn)行處理 圖2 - 4l i n u x 數(shù)據(jù)捕獲流程圖 下面我們從兩個(gè)方面來分析報(bào)文捕獲的瓶頸,第一個(gè)方面是數(shù)據(jù)包接收存在 不同步性。假設(shè)軟每次中斷處理時(shí)間為,軟中斷產(chǎn)生的時(shí)間間隔為,硬中斷 產(chǎn)生的時(shí)間間隔,理想情況下: 0 。+ k ( 2 _ 1 ) 在低速網(wǎng)絡(luò)下,較大,所以容易滿足不等式( 2 1 ) 。在高速網(wǎng)絡(luò)下,每秒 鐘到達(dá)網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)包增多,故每秒產(chǎn)生中斷的次數(shù)增多,變小,此時(shí)足 夠小才能滿足公式( 2 1 ) ,否則b l a c k l o g 隊(duì)列的輸入速率將大于輸出速率,造成 其擁塞即甚至丟包。 1 0 第二章提升數(shù)據(jù)包捕獲性能的方法及相關(guān)知識(shí)的介紹 第二個(gè)方面是軟中斷的處理速率對(duì)整個(gè)捕獲機(jī)制性能的影響。根據(jù)排隊(duì)論的 觀點(diǎn),我們假設(shè)每秒鐘到達(dá)的數(shù)據(jù)包服從參數(shù)為a 的泊松分布,輪詢?cè)O(shè)備處理速度 服從參數(shù)為“2 的指數(shù)分布,每秒鐘b l a c k l o g 隊(duì)列中排隊(duì)的平均數(shù)據(jù)包量為,具 體模型如圖2 5 所示。 八 l 硬中斷 l 弋 圖2 - 5 中斷機(jī)制模型分析 在軟中斷階段,為假設(shè)兄為常量,我們研究下以u(píng) 2 為變量的函數(shù)的單調(diào)性。 馴2 毒南 。2 彩 “2l “2 一九j f 7 7 、 我們將( 2 2 ) 以“2 為變量求導(dǎo),得出: 地) :一三 ( 2 3 ) 從等式( 2 3 ) 可以看出:由于u ,大于0 ,函數(shù)單調(diào)遞減,故只有增大才能 減小b l a c k l o g 隊(duì)列中數(shù)據(jù)包的數(shù)量。 2 4 提高數(shù)據(jù)包捕獲性能的方法 通過2 3 小節(jié)的分析可以知道,我們可以從提升軟中斷處理速度或者減少中斷 次數(shù)兩個(gè)方面來提高數(shù)據(jù)包的捕獲性能。下面我們將對(duì)從這兩方面對(duì)現(xiàn)有的一些 改進(jìn)性能方法進(jìn)行介紹,并引出本文采用的零拷貝思想。 2 。4 1 中斷結(jié)合 中斷結(jié)合( i n t e r r u p t c o a l e s i n g ) 1 2 1 】是千兆網(wǎng)絡(luò)下減少中斷的開銷的常見方法。 近些年,許多網(wǎng)絡(luò)適配器包括以太網(wǎng)卡都實(shí)現(xiàn)了中斷結(jié)合,而且許多操作系統(tǒng), 比如l i n u x ,w i n d o w s ,也支持中斷結(jié)合技術(shù)。與傳統(tǒng)的中斷模式相比較,中斷結(jié)合 將一個(gè)個(gè)到來的數(shù)據(jù)包歸組然后產(chǎn)生一次中斷,這種中斷模式適合接收包長(zhǎng)較小 電子科技大學(xué)碩士學(xué)位論文 的數(shù)據(jù)包。當(dāng)以太網(wǎng)卡在中斷結(jié)合模式下工作時(shí),可以根據(jù)接收到數(shù)據(jù)包的數(shù)量 或者一定時(shí)間來產(chǎn)生中斷,數(shù)據(jù)包的個(gè)數(shù)和時(shí)問間隔都可以修改。 雖然中斷結(jié)合技術(shù)可以明顯地減少中斷開銷,但是它會(huì)增加數(shù)據(jù)包的平均延遲 時(shí)間。對(duì)有效的中斷結(jié)合參數(shù)的設(shè)定需要權(quán)衡數(shù)據(jù)包的延遲和處理器的處理性能 兩個(gè)方面。當(dāng)網(wǎng)絡(luò)流量較低時(shí),通過延時(shí)中斷并不能改善性能,因?yàn)閿?shù)據(jù)包的傳 輸或接收速率不高,不會(huì)頻繁產(chǎn)生中斷,這種情況下采用減少時(shí)間間隔指標(biāo)或者 數(shù)據(jù)包個(gè)數(shù)指標(biāo)可以緩解數(shù)據(jù)包的延時(shí)。從另一方面考慮,選擇縮短時(shí)間間隔的 方式有可能導(dǎo)致在數(shù)據(jù)包還沒有到來時(shí)就產(chǎn)生中斷,這樣又浪費(fèi)了處理器資源。 當(dāng)網(wǎng)絡(luò)流量過大的情況下,增大時(shí)間間隔指標(biāo)或數(shù)據(jù)包個(gè)數(shù)指標(biāo)可以有效的減小 中斷開銷和提升處理性能。 2 4 2 中斷輪詢結(jié)合機(jī)制 通過2 3 小節(jié)的分析可以看到只有當(dāng)數(shù)據(jù)包處理時(shí)間小于中斷時(shí)間的時(shí)候,才 能達(dá)到理想的捕獲性能。在千兆網(wǎng)絡(luò)下中斷的頻繁產(chǎn)生,f 。,變小,給后期的處理 帶來巨大壓力。為了改善數(shù)據(jù)包的處理性能,研究者們?cè)趯?duì)中斷的開啟或關(guān)閉機(jī) 制上做了一系列探索,一種基于半輪詢機(jī)制( n a p i ) 2 2 】的數(shù)據(jù)包接收方式隨后被 提出。 在單純的中斷關(guān)閉和開啟方案中,中斷關(guān)閉發(fā)生在內(nèi)核協(xié)議棧隊(duì)列不為空并且 處理器需要處理協(xié)議棧中的數(shù)據(jù)包的時(shí)候,中斷開啟發(fā)生在協(xié)議棧中的處理隊(duì)列 為空時(shí)。由于處理器對(duì)協(xié)議棧的數(shù)據(jù)包進(jìn)行處理的時(shí)候是網(wǎng)卡中斷關(guān)閉的時(shí)候, 所以處理器不會(huì)受到新流入的數(shù)據(jù)包的產(chǎn)生的中斷干擾,避免了接收活鎖現(xiàn)象的 發(fā)生。 單純的輪詢機(jī)制是通過關(guān)閉數(shù)據(jù)接收中斷來徹底減少中斷開銷。在此種機(jī)制 下,操作系統(tǒng)每間隔一段時(shí)間對(duì)內(nèi)存緩沖區(qū)中的數(shù)據(jù)包進(jìn)行處理,但是這種徹底 的關(guān)閉中斷方式難以實(shí)現(xiàn)。當(dāng)有大量數(shù)據(jù)包需要處理的時(shí)候,我們常用規(guī)定一次 輪詢過程處理數(shù)據(jù)包的個(gè)數(shù),使其有時(shí)間預(yù)留給用戶態(tài)應(yīng)用程序。單純輪詢機(jī)制 有兩大缺陷:第一,我們不能確定每時(shí)每刻內(nèi)存中都有數(shù)據(jù)包,當(dāng)沒有數(shù)據(jù)包流 入的時(shí)候造成了處理器資源的浪費(fèi);第二,不能保證對(duì)最近流入的數(shù)據(jù)包進(jìn)行及 時(shí)的處理。輪詢時(shí)間f a j 隔的選擇是非常關(guān)鍵的,當(dāng)間隔過小,造成頻繁的輪詢, 會(huì)影響系統(tǒng)的性能造成額外的開銷,而當(dāng)間隔過大,數(shù)據(jù)包又不能得到及時(shí)的處 理,造成延時(shí)。 第二章提升數(shù)據(jù)包捕獲性能的方法及相關(guān)知識(shí)的介紹 n a p i 已經(jīng)被用于一些操作系統(tǒng),l t & nl i n u x ,f r e e b s d 等。圖2 - 6 為l i n u x 系 統(tǒng)中半輪詢機(jī)制的實(shí)現(xiàn)流程。它主要用來減輕接收網(wǎng)絡(luò)數(shù)據(jù)產(chǎn)生的中斷開銷。 在f r e e b s d 4 6 和l i n u x 2 6 下都可以配置輪詢模式。他們都是引入配額概念來 實(shí)現(xiàn)輪詢,配額代表每個(gè)設(shè)備每次可被處理數(shù)據(jù)包的最大個(gè)數(shù)。但是在某些方面 還是有不同之處。前者在輪詢模式下,接收數(shù)據(jù)引起的中斷全部關(guān)閉,在輪詢期 間,一定配額的數(shù)據(jù)包會(huì)被送到協(xié)議棧進(jìn)行處理。在這種情況下,當(dāng)被輪詢的設(shè) 備數(shù)據(jù)包被逐個(gè)送入循環(huán)隊(duì)列進(jìn)行處理完成后,設(shè)備內(nèi)部已經(jīng)沒有排隊(duì)數(shù)據(jù)包, 過一個(gè)時(shí)間間隔又產(chǎn)生一次輪詢,這樣將浪費(fèi)處理器的資源。 圖2 - 6n a p i 輪詢機(jī)制流程 我們常提到的n a p i 輪詢屬于l i n u x 下的實(shí)現(xiàn)方式,為了保證操作系統(tǒng)內(nèi)部每 1 3 電子科技大學(xué)碩十學(xué)位論文 個(gè)設(shè)備能夠公平的享用處理器資源,除了引入配額概念,還引入了限額概念。限 額代表每次處理數(shù)據(jù)包的最大個(gè)數(shù)。假設(shè)一批數(shù)據(jù)包中的第一包到達(dá),網(wǎng)絡(luò)設(shè)備 采用中斷方式通知系統(tǒng),系統(tǒng)將進(jìn)入硬中斷階段,把該設(shè)備注冊(cè)到一個(gè)輪詢隊(duì)列。 此后,操作系統(tǒng)進(jìn)入軟中斷階段,根據(jù)輪詢隊(duì)列對(duì)設(shè)備進(jìn)行輪詢。在總限額大于 零的情況下,當(dāng)設(shè)備的配額大于零且協(xié)議棧的等待隊(duì)列還中仍然有數(shù)據(jù)包未被處 理完,輪詢機(jī)制將在下一個(gè)階段被再次觸發(fā)。當(dāng)某個(gè)設(shè)備端口發(fā)送的數(shù)據(jù)包被處 理完成后,此設(shè)備上的配額會(huì)實(shí)時(shí)的減少。上圖2 - 6 中進(jìn)行了詳細(xì)的描述。 l i n u x 下的n a p i 輪詢機(jī)制在網(wǎng)絡(luò)負(fù)荷較大的情況下,趨近于輪詢機(jī)制,網(wǎng)絡(luò) 負(fù)荷輕松的情況下趨于中斷機(jī)制。所以它利于減少包長(zhǎng)度較大數(shù)據(jù)包下的中斷開 銷,但對(duì)長(zhǎng)度較小的數(shù)據(jù)包處理不夠及時(shí)。 2 4 3 零拷貝思想 在2 3 小節(jié)我們討論過:提高u ,能促進(jìn)l i n u x 的報(bào)文捕獲能力。在此小節(jié)中, 我們將介紹零拷貝機(jī)制,它避免了多次拷貝造成的資源消耗,提高了報(bào)文的處理 速度。傳統(tǒng)的l i n u x 拷貝是指網(wǎng)絡(luò)數(shù)據(jù)從設(shè)備緩存區(qū)拷貝到內(nèi)核空間,再?gòu)膬?nèi)核空 間拷貝到用戶空間。為了消除這些不必要的數(shù)據(jù)拷貝和系統(tǒng)調(diào)用,縮短網(wǎng)絡(luò)報(bào)文 的傳輸路徑,出現(xiàn)了零拷貝機(jī)制,它的基本思想是:利用d m a 技術(shù)將網(wǎng)絡(luò)數(shù)據(jù)包 直接存儲(chǔ)到內(nèi)核空間,這樣可以減少c p u 的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論