




已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀
(計算機應用技術專業(yè)論文)基于千兆網卡的高效數據包捕獲技術的應用與實現.pdf.pdf 免費下載
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
, 目 i :, 嬲煳 獨創(chuàng)性聲明 本人聲明所呈交的學位論文是本人在導師指導下進行的研究工 作及取得的研究成果。據我所知,除了文中特別加以標注和致謝的地 方外,論文中不包含其他人已經發(fā)表或撰寫過的研究成果,也不包含 為獲得電子科技大學或其它教育機構的學位或證書而使用過的材料。 與我一同工作的同志對本研究所做的任何貢獻均已在論文中作了明 確的說明并表示謝意。 簽名: 亟嶙 日期:沙c 。年f 月諺目 論文使用授權 本學位論文作者完全了解電子科技大學有關保留、使用學位論文 的規(guī)定,有權保留并向國家有關部門或機構送交論文的復印件和磁 盤,允許論文被查閱和借閱。本人授權電子科技大學可以將學位論文 的全部或部分內容編入有關數據庫進行檢索,可以采用影印、縮印或 掃描等復制手段保存、匯編學位論文。 ( 保密的學位論文在解密后應遵守此規(guī)定) 簽名:紐避 導師簽名: 日期:卅口 , 心 摘要 摘要 近十五年里因特網普及之迅速,據報道中國的網絡用戶由9 6 年的1 0 萬增長 到現在的3 3 8 億,可見人們已經非常依賴網絡這個載體來交換信息和處理事務。 同時基于網絡的應用也日漸多元化,如:網上購物、聊天、電子郵件、博客等。 但是在含有眾多應用的網絡環(huán)境中也存在著各種隱患,網站遭受黑客攻擊,用戶 數據的泄露等事件頻繁發(fā)生。為了有效地應對復雜的網絡環(huán)境,各種防范軟件相 應浮出水面,如:網絡監(jiān)控系統(tǒng),殺毒軟件,防火墻軟件等。 無論上述的網絡應用還是網絡安全領域的各種防范軟件都依靠于底層的數據 包捕獲,可見數據包捕獲在高速發(fā)展的網絡領域中占據的重要地位。傳統(tǒng)的數據 包捕獲過程中的中斷處理,協議棧的處理和數據從內核空間到用戶空間的拷貝等 過程都需要處理器資源。在網絡傳輸速度有很大提升的今天,對數據的實時采集 往往由中斷頻率過高和數據處理速度過慢造成丟包現象,直接影響到基于其工作 的系統(tǒng)的性能。如何高效地數據包捕獲成為很多學者研究的課題。 本文所研究的數據包捕獲方案是以某企業(yè)網絡監(jiān)控系統(tǒng)為背景,依靠以太網 的廣播特性實現的。重點研究的是在高流量的網絡環(huán)境下對數據包捕獲性能的改 善。我們首先通過對數據包捕獲流程的分析尋找出數據捕獲過程中影向其性能的 各種因素,然后根據這些因素將目前在數據包捕獲領域出現的改進方案進行歸類, 最后選擇零拷貝的思想實現網絡監(jiān)控系統(tǒng)中的底層數據捕獲部分,并在文章的最 后一部分對此捕獲系統(tǒng)進行了性能上的測試。 高效捕獲系統(tǒng)的具體實現是基于內核提供給用戶空間的內存映射接口去完成 的。我們的主要工作有三點:第一,需要修改網卡驅動源碼,將數據包放入指定 的內核空間中;第二,設計內核共享緩沖區(qū)的數據結構,以便實現數據包的填充 和釋放的同步;第三,提供給后期編程者數據包獲取接口。在以后的工作中,我 們還要設計一個精簡的基于應用層的“網絡協議棧”,來完善數據包的處理功能。 關鍵詞:數據包捕獲,內存映射,設備驅動,網絡監(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 研究現狀2 1 3 主要工作3 1 4 論文特色4 1 5 組織結構4 第二章提升數據包捕獲性能的方法及相關知識的介紹5 2 1 數據包捕獲流程的簡介5 2 2 類u n i x 系統(tǒng)中的數據包捕獲機制介紹6 2 2 1l i n u x 中的網絡套接字接口7 2 2 2b s d 中的b p f 過濾機制7 2 2 3s v r 4 中的數據鏈路提供者接口8 2 3 影響數據包捕獲性能的因素9 2 4 提高數據包捕獲性能的方法1 1 2 4 1 中斷結合1 1 2 4 2 中斷輪詢結合機制1 2 2 4 3 零拷貝思想1 4 2 4 4 硬件卸載引擎。1 5 2 4 5 提高l i n u x 系統(tǒng)的實時性的方法1 6 2 4 6 對改進方法的總結與選擇1 7 2 5 實現改進方法所需的基礎知識1 7 2 5 1 內存映射1 7 2 5 2 設備驅動及設備類型2 1 2 5 3 進程通信機制2 2 2 5 4 模塊化的內核編程2 4 2 6 本章小結2 5 第三章基于千兆網卡的數據包捕獲系統(tǒng)的概要設計2 6 i v 目錄 3 1 企業(yè)網絡行為監(jiān)控系統(tǒng)的簡介2 6 3 1 1 企業(yè)網絡行為監(jiān)控系統(tǒng)的功能簡介2 6 3 1 2 企業(yè)網絡行為監(jiān)控系統(tǒng)的架構2 8 3 2 數據包捕獲系統(tǒng)的性能需求3 0 3 3 數據包捕獲子系統(tǒng)的設計方案3 2 3 3 1 數據包捕獲子系統(tǒng)的功能模塊劃分3 3 3 3 2 功能模塊間的同步3 3 3 3 3 用戶接口的設計3 5 3 4 本章小結3 5 第四章基于千兆網卡的數據包捕獲系統(tǒng)的詳細設計與實現3 6 4 1 千兆網卡驅動模塊的設計3 7 4 1 1 關鍵數據結構的分析3 7 4 1 2 網卡驅動接收流程的分析3 9 4 1 3 網絡驅動程序的修改4 2 4 2 內核共享緩沖區(qū)模塊4 2 4 2 1 數據結構的建立4 3 4 2 2 共享緩沖區(qū)中內存的分配4 5 4 2 3 網卡與應用程序之間的同步4 8 4 3 接口函數模塊5 0 4 4 系統(tǒng)整體工作流程5 2 4 4 1 系統(tǒng)初始化階段流程5 2 4 4 2 系統(tǒng)運行階段流程5 3 4 5 本章小結5 5 第五章基于千兆網卡的數據包捕獲系統(tǒng)的測試與分析5 6 5 1 測試環(huán)境5 6 5 2 測試數據的分析5 7 5 3 本章小結5 9 第六章總結與展望6 0 6 1 全文總結6 0 6 2 工作展望6 0 致謝6 2 參考文獻6 3 v 攻碩 著分 九十 超過 人們 多元化,如:網頁沖浪、網上購物、聊天、電子郵件、博客等等。除此之外,大 多數企業(yè)也開始進入信息化規(guī)劃方案,架構自己內部的局域網,并且通過s o a 拉j 理念等,開發(fā)一系列的e r p 3 】軟件來有效的管理企業(yè)。 當網絡技術帶給我們便利的同時它還帶來了很多安全隱患,如:網站遭受黑 客攻擊,用戶數據的泄露等等。據美國金融時報報道,在計算機網絡環(huán)境下 入侵事件的發(fā)生概率為平均2 0 秒次,超過1 3 的互聯網被攻破,全球范圍內每年 由于信息系統(tǒng)的脆弱性而導致的經濟損失達數億美元并且呈逐年上升趨勢。面對 這么多網絡安全問題,許多網絡入侵檢測系統(tǒng),網絡安全監(jiān)控系統(tǒng)浮出水面。不 管是基于網絡的各種應用還是網絡安全領域的各種防范軟件,它們的實現都離不 開數據捕獲( 我們這里介紹的數據捕獲都是在以太網下的) ,可見數據捕獲的研 究價值。 我國從撥號上網時代從0 3 年發(fā)展為頂峰,當時用戶的有效速率遠遠低于 5 6 k b p s ,到0 8 年寬帶用戶已經占據絕對比例,2 0 0 8 年中國網絡國際出口帶寬達 到6 4 0 ,2 8 6 6 7m b p s ??梢娋W絡的發(fā)展是伴隨著上網配套的硬件設施也不斷的改進, 最直接表現的就是帶寬的上升。隨著這樣的發(fā)展趨勢,千兆網絡時代的到來并不 遙遠。 帶寬的擴充及網絡數據包傳輸流量變大將會對數據包捕獲技術提出一次新的 挑戰(zhàn)。在百兆網絡環(huán)境下,l i n u x 常見的數據包捕獲接e l 是l i b p c a p 【4 1 ( w i n d o w s 下存 在相應的w i n p c a p ) ,它的工作原理是旁路網卡通過中斷傳送給系統(tǒng)協議棧的數據 電子科技大學碩士學位論文 包,將它們存放在兩個大小3 2 k b 的公共緩沖區(qū),應用程序取出緩沖區(qū)中的數據進 行分析。在此過程數據還需要經歷一次用戶空間到內核空間的拷貝。但是在千兆 網絡下,它的捕獲性能明顯下降,對于小包的成功接收率不到百分之十。近些年 干兆網絡適配器的出現已解決了硬件上的丟包問題,數據包捕獲的瓶頸已不在于 網絡適配器,而在于操作系統(tǒng)協議棧對包的處理,比如系統(tǒng)接收數據包的中斷方 式,用戶空間與內核空間數據拷貝方式等都是十分耗費系統(tǒng)資源【5 j 。據相關材料介 紹,千兆網絡環(huán)境下包長為6 4 字節(jié)的數據包到達速度最大可達到1 2 3 0 0 0 0 個秒, 每個數據包到達網卡產生一次中斷,中央處理器必須達到0 8 2 u s 的處理速度才能 保證收包率。但是一個p i i i4 5 0 m h 裝有l(wèi) i n u x2 2 1 0 的操作系統(tǒng)處理一個數據包 需要1 3 2 3 u s 6 | 。近些年出現了許多高頻率的處理器,但是處理器的頻率的線性增 加并不會使接收數據包產生的中斷消耗線性減小,主要原因還在于像主存、i o 設 備并不具備高速緩存的讀寫速度,大大限制了中斷處理時間的減少。一個主頻為 2 4 g h z 的處理器相對于8 0 0 m h z 的處理器性能上只提高了6 0 【7 】。可見單純的通 過提升處理器的性能并不能根本解決數據包捕獲的接收活鎖問題。 1 2 研究現狀 這些年,在高性能通信領域出現了很多研究課題,大致可以分為軟件實現和硬 件實現兩部分。在軟件領域對數據包捕獲性能研究做出最大貢獻的還屬于l u c a d e r i ,他開發(fā)的n t o p 軟件中使用了一種類型為p f 套接字【8 母】,這種套接字相對 于 而言,能夠使用戶進程直接訪問到內核_r空in間glibpcap的數據包緩沖區(qū),避免了數 據從內核空間到用戶空間的第二次拷貝。這種方式類似于零拷貝【1o j 但又有不同, 它將網卡中斷接收的數據先復制到內核緩沖區(qū)空間,再將這個區(qū)間直接與用戶空 間進行映射。在后期l u c ad e r i 又提出一種n c a p n 】的捕獲方案,這種方案讓用戶進 程直接跟網卡進行交互,網卡硬件寄存器和內部緩沖區(qū)都直接映射到用戶空i 白j 。 據關于資料報道,這種捕獲方式在處理器頻率足夠高的時候甚至可以達到千兆網 卡轉發(fā)速度的極限值1 4 8 m p s ,但是n c a p 的內部實現機制并未公開。 在硬件領域的改善數據包捕獲方案的基本思想是用硬件分擔操作系統(tǒng)協議棧 對數據包處理的壓力,讓數據包的處理放到在網卡內部完成,包括我們在第二章 將介紹到的協議棧卸載引擎【l2 1 。硬件方式捕獲數據包能力很強大,比較有名的 d a g t l 3 】卡和c o m b o 卡,特別是d a g 4 3 g e 在發(fā)送速率達到千兆每秒時的丟包率 為零( 包長1 5 0 0 字節(jié)和6 4 字節(jié)) ,但它的價格頗高,達到了幾萬甚至十萬人民幣。 2 第一章引言 由于價格因素,一般的網絡管理系統(tǒng),遠程監(jiān)控系統(tǒng),入侵檢測系統(tǒng)等還是基于 千兆網卡的普通硬件。后來生產d a g 卡的公司使用n c a p 技術開發(fā)出了一款新的 捕包軟件e n c a p ,這款收費軟件對硬件的要求不高,但可以很大程度對數據包的捕 獲能力,而且提供給用戶便捷的二次開發(fā)環(huán)境。 在國內,許多研究者把高性能的數據包捕獲研究重點放零拷貝的實現和中斷輪 詢機制的轉換兩個方面。在零拷貝的實現是直接將數據d m a 到用戶空間或者在內 核空間開辟一片緩沖區(qū)采用地址映射機制讓用戶進程訪問內核空間。在中斷輪詢 的切換方面,有根據即時網絡流量靈活控制的,也有在輪詢失敗后自動轉化的方 式。雖然實現的方法不一樣,但都是為了減少網絡適配器帶給中央處理器的中斷 消耗而建立的。 1 3 主要工作 本文所研究的數據包捕獲是以某企業(yè)網絡行為監(jiān)控系統(tǒng)為背景,依靠以太網 的廣播特性實現的。重點研究的是在高流量的網絡環(huán)境下對數據包捕獲性能的改 善。在對l i n u x 環(huán)境下各種網絡數據包捕獲技術的了解后,通過改變默認情況下數 據包的流向和利用內核映像等方法來提高數據包的捕獲效率。 本人完成的主要工作如下: ( 1 ) 詳細地介紹了l i n u x 系統(tǒng)中數據包捕獲機制。 ( 2 ) 根據l i n u x 系統(tǒng)下數據包捕獲流程建立模型,推導出影響數據包捕獲性能兩 個重要因素( 硬中斷頻率,軟中斷處理速度) 及其關系。并根據這些因素將最近 提出的各種改進思想歸類分析,選擇零拷貝思想實現數據包的捕獲。 ( 3 ) 分析了千兆網卡驅動程序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 的 數據包接收流程和中斷機制。 ( 4 ) 深入了解l i n u x 虛擬內存的實現機制( 分頁管理) ,編寫m m a p 系統(tǒng)調用實 現用戶空間到內存空間的緩沖區(qū)映射。 ( 5 ) 對企業(yè)網絡監(jiān)控系統(tǒng)的數據包捕獲功能進行了改進,通過在原有系統(tǒng)中添 加虛擬設備模塊的形式實現了零拷貝思想。 ( 6 ) 搭建測試平臺以完成數據包捕獲系統(tǒng)性能上的測試,并對測試結果進行了 分析。 電子科技大學碩士學位論文 1 4 論文特色 根據企業(yè)網絡負載情況采用零拷貝的數據捕獲方案改善系統(tǒng)的性能。對零拷 貝實現主要基于以下幾點: 選擇在內核態(tài)開辟空間,讓用戶進程通過內存映射對數據包進行讀取。 引入虛擬字符設備概念管理內核態(tài)的共享內存,建立循環(huán)管理隊列解決了網 卡傳入數據與用戶進程取出數據的同步,采用互斥信號量方式控制多用戶進程對 虛擬字符設備的訪問。并為后期的數據包處理提供了數據捕獲接口。 1 5 組織結構 本文在分析l i n u x 內存管理及報文捕獲機制的基礎上提出了一種新的報文捕獲 方法,并以內核模塊的形式實現底層數據的捕獲功能。下面我們對文章的各個章 節(jié)做一次概括以方便讀者閱讀。 第一章:簡明介紹了本課題的背景,研究現狀和主要內容。 第二章:介紹了傳統(tǒng)的基于軟件的數據包捕獲方式,分析了產生數據包捕獲 瓶頸的關鍵參數。在此基礎上引出了各種的改善的方法,最終選擇零拷貝思想實 現數據包捕獲。最后介紹了實現零拷貝所需要的基礎知識。 第三章:介紹了數據捕獲系統(tǒng)的大項目背景及數據包捕獲系統(tǒng)的高性能要求, 最后將數據包捕獲系統(tǒng)進行模塊劃分,討論了各種模塊的交互及實現中需要考慮 的問題。 第四章:介紹數據捕獲系統(tǒng)的詳細設計與實現。 第五章:搭建測試環(huán)境,對數據包捕獲系統(tǒng)性能進行了一系列測試。 第六章:對整個課題進行總結,提出后期工作的方向和目標。 4 第二章提升數據包捕獲性能的方法及相關知識的介紹 第二章提升數據包捕獲性能的方法及相關知識的介紹 2 1 數據包捕獲流程的簡介 數據包捕獲是指從網絡設備中取出數據包提交給系統(tǒng)協議棧或者其他相應的 模塊接口以供其分析及其他用途。從底層網絡接入的環(huán)境來看,有兩種數據包捕 獲方法。一種是通過路由器對端口進行監(jiān)聽來捕獲全部網絡的數據包,這種方式 適合于很多網絡中,但是以太網本身的廣播特性給數據包捕獲提供了另一個途徑。 本文討論的數據包捕獲都屬于以太網的數據包捕獲【l 4 1 。 以太網是一種高速的局域網,由于其采用的多路訪問協議( c s m a c d ) 0 5 設計簡單,高速率低成本等特性,所以它被普遍使用。以太網的廣播性表現為每 個主機發(fā)送的數據都在信道中傳輸,處于傳輸信道中的機器可以獲取到信道中的 所有數據。這種廣播特性可以為p c 機提供網絡數據包捕獲的基礎條件。網絡中的 主機系統(tǒng),數據的收發(fā)是由網卡來完成的。以太網卡工作在t c p i p 協議模型的數 據鏈路層,通過網膏的m a c 地址進行定位。 由于以太網的廣播特性,以太網卡( 在以太網下工作的網卡) 的工作模式可 以分為兩種:混雜模式和非混雜模式?;祀s模式就如上一段提到聯網的主機可以 通過以太網卡接收到流經網絡的所有數據幀,并不需要檢查這些數據幀是否是發(fā) 送給本網卡的。非混雜模式下以太網卡只能接收目標地址與自己m a c 地址一致的 數據幀進行處理,其余的數據幀例如廣播幀等全部被丟棄。所以在數據捕獲過程 中我們必須將以太網卡設置為混雜模式。 混雜模式下的以太網卡進行數據捕獲時只需要將接收到數據幀通過中斷的方 式送往內核協議棧,然后我們可以根據上層應用程序的需求對數據包進行物理地 址、m a c 地址、端口,或者內容的分析來決定它們是否丟棄還是保留以備后期操 作。這個過程其實就是一次數據包的捕獲與處理。下面我們具體地了解數據包經 過操作系統(tǒng)這一過程。 整個網絡體系架構分為五個層次,分別為應用層,傳輸層,網絡層,數據鏈 路層和物理層,這種劃分與o s i 七層體系結構非常類似,根據不同的功能將網絡 劃分層次的方式被廣泛的接受。各種操作系統(tǒng)根據這種劃分方式設計了類似的協 電子科技大學碩士學位論文 議棧去處理網絡數據。這里我們簡單介紹下l i n u x 網絡協議?!? 6 1 的架構和數據包在 各層次中會經歷哪些處理。l i n u x 協議棧的框架如下圖2 1 所示。 圖2 1l i n u x 網絡協議棧 數據包通過網卡中斷被送入操作系統(tǒng)內核空間,并且在協議棧的等待隊列中 排隊等待軟中斷處理。軟中斷的處理就是對接收到的數據包進行逐層解析,將數 據幀一步步轉化為用戶可以讀取的消息。數據包在各個層次充當著不同的角色, 從物理層的p ,p d u 到鏈路層的幀,再到網絡層的分組和傳輸層的數據段,最后作 為消息到達應用層。協議棧會對鏈路層的數據幀進行一系列的校驗工作,根據幀 頭的m a c 地址對數據包進行丟棄、轉發(fā)或者上傳的操作,被上傳到網絡層的數據 包要根據i p 地址進行路由協議,仍然過傳輸層要對其端口檢查,端口的檢查可以 看做是對應用進程的匹配,明確數據包發(fā)往哪個進程。 準確的說,網絡適配器負責完成對鏈路層幀的操作。在上文中我們了解到網 卡可以通過不同的模式決定是否接收所有經過的幀還足只接收與本機有關的數據 幀。操作系統(tǒng)的網絡協議棧負責完成數據包從網絡層到應用層的解析,在解析過 程中我們還可以在每層間對數據包進行各種操作,不一定必須要丟棄數據包。此 外,網絡協議棧對數據包的處理需要一定的時間。 2 2 類u nlx 系統(tǒng)中的數據包捕獲機制介紹 在本小節(jié)中,我們將介紹多種由u n i x 衍生的各種系統(tǒng)下的捕獲機制,所有 機制對數據包只是旁路監(jiān)聽,而啟不到攔截作用。 6 第二章提升數據包捕獲性能的方法及相關知識的介紹 2 2 。1lin u x 中的網絡套接字接口 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 ,數據報套接字s o c kd g r a m 和原始套接字 s o c kr a m 。我們常用的套接字是鏈路層套接字,它是操作系統(tǒng)提供給用戶程序 訪問網絡鏈路層數據包的接口。用戶只需設置以太網卡模式為混雜模式,在用戶 態(tài)使用鏈路層套接字,就可以獲得所有由網卡提交給操作系統(tǒng)的數據包。對 s o c kp a c k e t 的調用不影響數據包在內核中的流向,但是由于此套接字在內核 中沒有緩沖區(qū),用戶通過它捕獲局域網中數據包效率低下在高速網絡中無法使用。 2 2 2b s d 中的b p f 過濾機制 b p f ( b s dp a c k e tf i l t e r ) 1 7 】的過濾機制被廣泛用于b s d 系統(tǒng)及起源于b s d 框架的其他系統(tǒng)中。與s o c k e tp a c k e t 一樣,b p f 對數據包的獲取也在鏈路層, 而且它還能實現數據包過濾的功能。為了理解b p f 的工作流程,我們需要對網絡 數據包的默認流向做個介紹:當有數據包到達網卡,網卡會產生中斷,操作系統(tǒng) 響應中斷,將數據包從硬件緩存區(qū)復制到內核緩沖區(qū)中保存,隨后提交到操作系 統(tǒng)默認的協議棧進行相應的操作。b p f 在數據包提交到默認的協議棧之前,在網 卡中斷過程中對數據包進行過濾。它首先會過濾掉目的地址不是本主機的數據包, 然后根據過濾規(guī)則( 規(guī)則由調用b p f 的進程制定) 再對數據包進行過濾,經過兩 次過濾后將最終數據包提交給上層協議棧。具體的過濾機制如下圖2 2 所示。 當網絡數據量過大時,b p f 的第一次過濾需要一定的處理時間,占用處理器 的資源,可能造成數據包的流入速度大于數據包第一次過濾速度的情況。這種情 況最典型的解決辦法就是建立緩沖區(qū)。其實,在實際應用中,b p f 取消了我們所 說的第一次過濾,而是先將所有數據包全部放到內核緩沖區(qū)中,然后再根據過濾 原則進行過濾,滿足條件的數據包再由系統(tǒng)調用傳送到用戶空間。我們可以看到, 起初的數據包沒有經過處理全部復制到內核緩沖區(qū)中,但用戶空間的接收到得數 據包數量絕對要小于或者等于內核空i 訓緩沖區(qū)數據包的數量,說明通過對內核緩 沖區(qū)中數據包的過濾還可以減少所需申請的用戶空間的大小和數據包從內核空間 到用戶空間的復制數量。b p f 支持多用戶調用的方式是為每個用戶進程在內核中 開辟一個緩沖區(qū),一個b p f 對應于一個緩沖區(qū),各自不受影響。當數據過濾完成 后,在將此段緩沖區(qū)的數據一次性復制到對應的用戶空間。根據以上分析,可以 電子科技大學碩士學位論文 明顯得出b p f 優(yōu)于s o c kp a c k e t 。 系統(tǒng)地總結,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 用 于對鏈路層數據包的捕獲,p a c k e tf i l t e r 用于對捕獲的數據包進行過濾。應用程序 通過調用b p f 可以實現數據包的捕獲和過濾。它優(yōu)于s o c kp a c k e t 的原因有一 下幾點: 1 過濾機制的實現在內核空間中,相對于用戶空間的過濾,速度快,開銷小。 2 p a c k e tf i l t e r 使得傳遞給用戶空間的數據包數量減少,減少了內核空間到用 戶空間傳遞的資源消耗。 3 數據包不是一個一個傳送給用戶空間,而是一次性傳遞一定數量的數據包, 減少了系統(tǒng)調用產生的開銷。 圖2 - 2b p f 過濾機制 2 2 3s v r 4 中的數據鏈路提供者接口 數據鏈路提供者接口d l p i 1 8 】是由a t & t 設計出來的,它有良好的獨立于協議 的特性,不論數據鏈路層是基于以太網還是基于令牌環(huán)網的協議。此接口的實現 是基于u n i x 的流機制。接口的使用者( 上層協議或者用戶進程) 在不知道鏈路 層協議狀態(tài)的情況下可以通過此接口直接訪問數據包幀。使用者和服務提供者可 _ _ _ _ _ _ _ _ _ _ - _ r _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ i _ _ _ _ _ _ _ _ _ _ _ _ 。一 第二章提升數據包捕獲性能的方法及相關知識的介紹 以通過定義的原語集合和規(guī)則進行交互。 由于流消息的形式影響系統(tǒng)效率,設計者采取類似于b p f 的數據捕獲和過濾 機制,引入p f m o d 和b u f r n o d 兩個模塊【l 9 1 。前者對數據包分組過濾,后者將過濾 好的數據包復制到用戶空間。與b p f 不同的是,p f m o d 模塊的實現是通過虛擬機 完成,這樣避免了數據包拷貝的開銷;在b u f m o d 模塊中引入了超時機制和捕獲長 度機制等來減少系統(tǒng)調用次數和內存拷貝數據量。但是基于底層協議為i e e e 8 0 2 的通信服務,還是要比b p f 慢。d l p i 具體的模塊關系如下圖2 3 所示。 圖2 - 3d l p i 接口 2 3 影響數據包捕獲性能的因素 傳統(tǒng)的l i n u x 報文捕獲【2 0 】可以分為兩部分:硬中斷和軟中斷。當報文到達網 絡適配器,適配器將利用中斷的方式通知操作系統(tǒng),系統(tǒng)調用已經被注冊的中斷 處理函數進行接收,把數據包處理成一定格式放到一個由b a c k l o g 指針指向的鏈表 中等待上層傳輸。在此期間,系統(tǒng)處于關中斷階段,我們將這個階段稱為硬中斷。 捕獲流程的第二部分就是將b a c k l o g 隊列中的數據包通過軟中斷的方式向上層提 交。軟中斷過程中,系統(tǒng)處于開中斷狀態(tài),當有新的數據包到來時候,系統(tǒng)則會 停止軟中斷過程,回到第一部分的硬中斷階段,將鏈路層數據包接收到b a c k l o g 隊 列。具體的流程如下圖2 4 所示。 9 電子科技大學碩士學位論文 開始 網絡設備是否產生中斷 、f 系統(tǒng)進入硬件中斷 將數據包轉換成一定格式放 入b l a c k | o g 隊列 否 哆燃專 至 。竺鄉(xiāng)匕 上是 系統(tǒng)進入軟中斷 從b l a c k l o g 隊列中取出數據 進行處理 圖2 - 4l i n u x 數據捕獲流程圖 下面我們從兩個方面來分析報文捕獲的瓶頸,第一個方面是數據包接收存在 不同步性。假設軟每次中斷處理時間為,軟中斷產生的時間間隔為,硬中斷 產生的時間間隔,理想情況下: 0 。+ k ( 2 _ 1 ) 在低速網絡下,較大,所以容易滿足不等式( 2 1 ) 。在高速網絡下,每秒 鐘到達網絡設備的數據包增多,故每秒產生中斷的次數增多,變小,此時足 夠小才能滿足公式( 2 1 ) ,否則b l a c k l o g 隊列的輸入速率將大于輸出速率,造成 其擁塞即甚至丟包。 1 0 第二章提升數據包捕獲性能的方法及相關知識的介紹 第二個方面是軟中斷的處理速率對整個捕獲機制性能的影響。根據排隊論的 觀點,我們假設每秒鐘到達的數據包服從參數為a 的泊松分布,輪詢設備處理速度 服從參數為“2 的指數分布,每秒鐘b l a c k l o g 隊列中排隊的平均數據包量為,具 體模型如圖2 5 所示。 八 l 硬中斷 l 弋 圖2 - 5 中斷機制模型分析 在軟中斷階段,為假設兄為常量,我們研究下以u 2 為變量的函數的單調性。 馴2 毒南 。2 彩 “2l “2 一九j f 7 7 、 我們將( 2 2 ) 以“2 為變量求導,得出: 地) :一三 ( 2 3 ) 從等式( 2 3 ) 可以看出:由于u ,大于0 ,函數單調遞減,故只有增大才能 減小b l a c k l o g 隊列中數據包的數量。 2 4 提高數據包捕獲性能的方法 通過2 3 小節(jié)的分析可以知道,我們可以從提升軟中斷處理速度或者減少中斷 次數兩個方面來提高數據包的捕獲性能。下面我們將對從這兩方面對現有的一些 改進性能方法進行介紹,并引出本文采用的零拷貝思想。 2 。4 1 中斷結合 中斷結合( i n t e r r u p t c o a l e s i n g ) 1 2 1 】是千兆網絡下減少中斷的開銷的常見方法。 近些年,許多網絡適配器包括以太網卡都實現了中斷結合,而且許多操作系統(tǒng), 比如l i n u x ,w i n d o w s ,也支持中斷結合技術。與傳統(tǒng)的中斷模式相比較,中斷結合 將一個個到來的數據包歸組然后產生一次中斷,這種中斷模式適合接收包長較小 電子科技大學碩士學位論文 的數據包。當以太網卡在中斷結合模式下工作時,可以根據接收到數據包的數量 或者一定時間來產生中斷,數據包的個數和時問間隔都可以修改。 雖然中斷結合技術可以明顯地減少中斷開銷,但是它會增加數據包的平均延遲 時間。對有效的中斷結合參數的設定需要權衡數據包的延遲和處理器的處理性能 兩個方面。當網絡流量較低時,通過延時中斷并不能改善性能,因為數據包的傳 輸或接收速率不高,不會頻繁產生中斷,這種情況下采用減少時間間隔指標或者 數據包個數指標可以緩解數據包的延時。從另一方面考慮,選擇縮短時間間隔的 方式有可能導致在數據包還沒有到來時就產生中斷,這樣又浪費了處理器資源。 當網絡流量過大的情況下,增大時間間隔指標或數據包個數指標可以有效的減小 中斷開銷和提升處理性能。 2 4 2 中斷輪詢結合機制 通過2 3 小節(jié)的分析可以看到只有當數據包處理時間小于中斷時間的時候,才 能達到理想的捕獲性能。在千兆網絡下中斷的頻繁產生,f 。,變小,給后期的處理 帶來巨大壓力。為了改善數據包的處理性能,研究者們在對中斷的開啟或關閉機 制上做了一系列探索,一種基于半輪詢機制( n a p i ) 2 2 】的數據包接收方式隨后被 提出。 在單純的中斷關閉和開啟方案中,中斷關閉發(fā)生在內核協議棧隊列不為空并且 處理器需要處理協議棧中的數據包的時候,中斷開啟發(fā)生在協議棧中的處理隊列 為空時。由于處理器對協議棧的數據包進行處理的時候是網卡中斷關閉的時候, 所以處理器不會受到新流入的數據包的產生的中斷干擾,避免了接收活鎖現象的 發(fā)生。 單純的輪詢機制是通過關閉數據接收中斷來徹底減少中斷開銷。在此種機制 下,操作系統(tǒng)每間隔一段時間對內存緩沖區(qū)中的數據包進行處理,但是這種徹底 的關閉中斷方式難以實現。當有大量數據包需要處理的時候,我們常用規(guī)定一次 輪詢過程處理數據包的個數,使其有時間預留給用戶態(tài)應用程序。單純輪詢機制 有兩大缺陷:第一,我們不能確定每時每刻內存中都有數據包,當沒有數據包流 入的時候造成了處理器資源的浪費;第二,不能保證對最近流入的數據包進行及 時的處理。輪詢時間f a j 隔的選擇是非常關鍵的,當間隔過小,造成頻繁的輪詢, 會影響系統(tǒng)的性能造成額外的開銷,而當間隔過大,數據包又不能得到及時的處 理,造成延時。 第二章提升數據包捕獲性能的方法及相關知識的介紹 n a p i 已經被用于一些操作系統(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)中半輪詢機制的實現流程。它主要用來減輕接收網絡數據產生的中斷開銷。 在f r e e b s d 4 6 和l i n u x 2 6 下都可以配置輪詢模式。他們都是引入配額概念來 實現輪詢,配額代表每個設備每次可被處理數據包的最大個數。但是在某些方面 還是有不同之處。前者在輪詢模式下,接收數據引起的中斷全部關閉,在輪詢期 間,一定配額的數據包會被送到協議棧進行處理。在這種情況下,當被輪詢的設 備數據包被逐個送入循環(huán)隊列進行處理完成后,設備內部已經沒有排隊數據包, 過一個時間間隔又產生一次輪詢,這樣將浪費處理器的資源。 圖2 - 6n a p i 輪詢機制流程 我們常提到的n a p i 輪詢屬于l i n u x 下的實現方式,為了保證操作系統(tǒng)內部每 1 3 電子科技大學碩十學位論文 個設備能夠公平的享用處理器資源,除了引入配額概念,還引入了限額概念。限 額代表每次處理數據包的最大個數。假設一批數據包中的第一包到達,網絡設備 采用中斷方式通知系統(tǒng),系統(tǒng)將進入硬中斷階段,把該設備注冊到一個輪詢隊列。 此后,操作系統(tǒng)進入軟中斷階段,根據輪詢隊列對設備進行輪詢。在總限額大于 零的情況下,當設備的配額大于零且協議棧的等待隊列還中仍然有數據包未被處 理完,輪詢機制將在下一個階段被再次觸發(fā)。當某個設備端口發(fā)送的數據包被處 理完成后,此設備上的配額會實時的減少。上圖2 - 6 中進行了詳細的描述。 l i n u x 下的n a p i 輪詢機制在網絡負荷較大的情況下,趨近于輪詢機制,網絡 負荷輕松的情況下趨于中斷機制。所以它利于減少包長度較大數據包下的中斷開 銷,但對長度較小的數據包處理不夠及時。 2 4 3 零拷貝思想 在2 3 小節(jié)我們討論過:提高u ,能促進l i n u x 的報文捕獲能力。在此小節(jié)中, 我們將介紹零拷貝機制,它避免了多次拷貝造成的資源消耗,提高了報文的處理 速度。傳統(tǒng)的l i n u x 拷貝是指網絡數據從設備緩存區(qū)拷貝到內核空間,再從內核空 間拷貝到用戶空間。為了消除這些不必要的數據拷貝和系統(tǒng)調用,縮短網絡報文 的傳輸路徑,出現了零拷貝機制,它的基本思想是:利用d m a 技術將網絡數據包 直接存儲到內核空間,這樣可以減少c p u 的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上饒市廣豐區(qū)留置看護及相關勤務人員招聘筆試真題2024
- 南充市高坪區(qū)就業(yè)服務管理局安置城鎮(zhèn)公益性崗位人員筆試真題2024
- 家裝公司新人培訓計劃方案
- 安全危險的小磁珠:兒童誤吞的風險與應對
- 輪式挖掘機銷售合同協議
- 車輛單次維修合同協議
- 還款協議及保證合同
- 房地產工程管理核心要點與實施策略
- 2025年建造師考試結構分析試題及答案
- 商業(yè)廣場消防培訓
- 2025年北京市朝陽區(qū)高三二模-政治+答案
- 溫州市普通高中2025屆高三第三次適應性考試物理試題及答案
- 《光纖激光切割技術》課件
- 10.信息光子技術發(fā)展與應用研究報告(2024年)
- 2025年下半年商務部外貿發(fā)展事務局第二次招聘8人易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年山西杏花村汾酒集團有限責任公司招聘筆試真題
- 《行政法與行政訴訟法》課件各章節(jié)內容-第一章 行政法概述
- 浙江2025年浙江省地質院本級及所屬部分事業(yè)單位招聘筆試歷年參考題庫附帶答案詳解
- 2025年廣東廣州中物儲國際貨運代理有限公司招聘筆試參考題庫含答案解析
- MOOC 學術英語寫作-東南大學 中國大學慕課答案
- 愚公移山英文 -中國故事英文版課件
評論
0/150
提交評論