專利名稱:一種dns流量的高性能監控方法
技術領域:
本發明涉及DNS流量監控方法,特別是涉及一種DNS流量的高性能監控方法。
背景技術:
DNS (Domain Name System)是域名系統的意思,其作用就是協調IP地址和主機名 之間的雙向切換。DNS是當今Internet的基礎架構,眾多的網絡服務(如Http、Ftp、Email 等等)都是建立在DNS體系基礎之上的。各省級運營商(包括固網或者移動運營商)為上 網用戶提供了 DNS網絡的運營服務,通常情況下,每個省級運營商的DNS網絡分為若干節 點,每個節點是由路由器、交換機和若干臺服務器組成,每臺服務器運行DNS軟件,提供DNS 查詢的解析工作。 鑒于DNS網絡的重要性,通過監控DNS流量得出統計指標對于掌握DNS網絡的日 常運行狀況,特別是及時發現異常DNS流量是非常必要。現有的監控方式主要是在每臺DNS 服務器通過抓包或者記錄日志的方式抽樣分析,得出相應統計指標。這種方式存在一個顯 著的缺點_抽樣分析。因為DNS流量非常大,每秒有幾十萬個數據包,抽樣分析雖然可以減 少數據分析量,但是抽樣分析可能造成的結果是剛剛抽樣完一個時間點,異常的DNS流量 進入,卻沒有分析到。另外該方式還存在另外一個缺點是在DNS服務器本身進行分析,額外 的分析工作會對DNS服務器正常的DNS查詢解析工作造成影響。
發明內容
本發明所要解決的技術問題就是為了克服上述現有技術存在的缺陷而提供一種 DNS流量的高性能監控方法。 本發明的目的可以通過以下技術方案來實現一種DNS流量的高性能監控方法,
其特征在于,該方法鏡像DNS流量采集服務器上聯通訊設備的進出流量到DNS流量采集服
務器,由DNS流量采集服務器進行數據包實時抓取、實時分析以及實時存儲。 所述的上聯通訊設備包括交換機或者路由器。 所述的DNS流量采集服務器實時抓取的數據包包括 DNS服務器收到客戶端的查詢包A ; DNS服務器回復客戶端的響應包B ; DNS服務器向上層DNS服務器發送的遞歸查詢包C ;DNS服務器收到上層DNS服務器回復的遞歸響應包D。 所述的DNS流量采集服務器實時分析抓取的數據包,得到關鍵統計指標值,該關
鍵統計指標值包括 查詢包A的每秒查詢次數; 遞歸查詢包C的每秒遞歸查詢次數; 響應包B的每秒響應次數; 查詢包A以及響應包B的解析成功率;
查詢包A以及遞歸查詢包C的遞歸查詢率; 查詢包A以及遞歸查詢包C的緩存命中率; 查詢包A的查詢類型分類; 響應包B的響應類型分類; 查詢包A的TOP-N頂級域名; 查詢包A的TOP-N 二 /三級域名; 查詢包A的TOP-N域名; 查詢包A的TOP-N源IP ; 查詢包A的TOP-N源IP和域名; 遞歸響應包D的TOP-N錯誤域名; 遞歸響應包D的TOP-N錯誤域名和源IP。 所述的DNS流量采集服務器以1分鐘為最小時間單位進行實時分析。 所述的DNS流量采集服務器采用多線程技術對TOP-N數據進行實時分析。 所述的DNS流量采集服務器每整分鐘匯總多個線程的統計指標值,得到的統計指
標值插入到存儲文件或者數據庫的數據表中。 與現有技術相比,本發明具有以下優點 1 、本發明是對于所有DNS數據包的分析,沒有采用抽樣分析,保證了 DNS數據分析 的準確性; 2、本發明采用多線程分析DNS數據包,保證了 DNS數據分析的及時性; 3、本發明以1分鐘為最小時間單位進行分析,保證了 DNS數據分析的實時性; 4、本發明每分鐘存儲分析后的數據到文件或者數據庫,保證了 DNS數據分析的完 整性。
圖l為本發明的原理圖; 圖2為本發明的硬件結構簡單示意圖。
具體實施例方式
下面結合附圖對本發明作進一步說明。 —種DNS流量的高性能監控方法,該方法鏡像DNS流量采集服務器上聯通訊設備 的進出流量到DNS流量采集服務器,由DNS流量采集服務器進行數據包實時抓取、實時分析 以及實時存儲。 所述的上聯通訊設備包括交換機或者路由器;所述的DNS流量采集服務器實時抓 取的數據包包括 DNS服務器收到客戶端的查詢包A ; DNS服務器回復客戶端的響應包B ; DNS服務器向上層DNS服務器發送的遞歸查詢包C ; DNS服務器收到上層DNS服務器回復的遞歸響應包D。 所述的DNS流量采集服務器實時分析抓取的數據包,得到關鍵統計指標值,該關
4鍵統計指標值包括 查詢包A的每秒查詢次數; 遞歸查詢包C的每秒遞歸查詢次數; 響應包B的每秒響應次數; 查詢包A以及響應包B的解析成功率; 查詢包A以及遞歸查詢包C的遞歸查詢率; 查詢包A以及遞歸查詢包C的緩存命中率; 查詢包A的查詢類型分類; 響應包B的響應類型分類; 查詢包A的TOP-N頂級域名; 查詢包A的TOP-N 二 /三級域名; 查詢包A的TOP-N域名; 查詢包A的TOP-N源IP ; 查詢包A的TOP-N源IP和域名; 遞歸響應包D的TOP-N錯誤域名; 遞歸響應包D的TOP-N錯誤域名和源IP 。 所述的DNS流量采集服務器以1分鐘為最小時間單位進行實時分析。 所述的DNS流量采集服務器采用多線程技術對TOP-N數據進行實時分析。 所述的DNS流量采集服務器每整分鐘匯總多個線程的統計指標值,得到的統計指 標值插入到存儲文件或者數據庫的數據表中。 如圖2,本發明部署一臺"DNS流量采集服務器2"與上聯通訊設備1 (交換機或者
路由器)相聯,通過鏡像交換機或者路由器上聯端口的所有進出流量到"DNS流量采集服務
器",由"DNS流量采集服務器"進行實時抓包,實時分析,實時存儲。 如圖l,本發明包括三大模塊 流量采集模塊,進行實時抓包; 流量分析模塊,進行實時分析; 流量存儲模塊,進行分析后的數據存儲。 1、流量采集模塊 按照源地址和目的地址以及源端口和目的端口的不同,DNS數據包分為四類 DNS服務器收到客戶端的查詢包 DNS服務器回復客戶端的響應包 DNS服務器向上層DNS服務器發送的遞歸查詢包 DNS服務器收到上層DNS服務器回復的遞歸響應包 DNS數據包進入"DNS流量采集服務器"的流量采集模塊,流量采集模塊根據過濾 規則,分別取出符合規則的四種DNS數據包,送入流量分析模塊。 2、流量分析模塊 流量分析模塊主要作用是分析四種DNS數據包,得出關鍵的統計指標值。具體的 統計指標值以及所分析的DNS數據包類(A、B、C、D)如下 每秒查詢次數(A)
5
每秒遞歸查詢次數(c)每秒響應次數(B)解析成功率(A、 B)遞歸查詢率(A、 C)緩存命中率(A、C)查詢類型分類(A)響應類型分類(B)TOP-N頂級域名(A)TOP-N 二/三級域名(A)TOP-N域名(A)TOP-N源IP (A)TOP-N源IP+域名(A)TOP-N錯誤域名(D)TOP-N錯誤域名+源IP (D)統計上述指標最耗時的部分是如下幾種TOP-N頂級域名TOP-N 二 /三級域名TOP-N域名TOP-N源IPTOP-N源IP+域名TOP-N錯誤域名TOP-N錯誤域名+源IP因為在統計TOP-N的數據時需要進行hash表的插入操作,這個操作在數據』匱大的
時候非常費時,所以這個部分使用多線程技術。 TPool類初始化的時候會產生一定數量的線程,并維護它們各自的一個 TaskThread類用以傳遞數據。每個線程初始化之后會被插入線程池的空閑線程隊列idle_ queue上,同時自己把自己鎖在一個self_l0ck的鎖上,進入休眠狀態。 一旦系統有工作要 做了,比如抓到了一個A類包,那么就會調用TPool的assignWorl方法,這個函數會從空閑 隊列中取出一個線程,為它準備好相應的數據,然后解開它的self—lock讓它開始工作。線 程工作結束之后會自己把自己插入空閑隊列,然后再一次通過加鎖self_l0Ck進入睡眠等 待下一個任務。這樣就能夠保證負載在各個線程之間是均衡的,不會出現一個線程比較繁 忙一個線程比較空閑的情況。 為了提高效率避免過多的加鎖操作帶來的等待,多個線程工作時并不是往同一個 Moniterlnterface表里插入,而是每個線程有自己的一個Monitorlnterface表,工作線 程每次只在自己的Monitorlnterface表插入數據。由于插入數據多了之后hash表效率 會下降,并且要保證每一分鐘要把這一分鐘收集到的數據寫入到文件或數據庫中,因此在 hash表中增加了一個功能,即統計平均每次插入時要尋找的鏈表長度,以此來衡量hash表 的效率。當線程自己的Monitorlnterface的hash表的插入長度超過一個指定的值(一 般設為1)或者是設置的時間到了 (一般設為5 IO秒的一個間隔),線程就會把自己的
6Monitorlnterface表的內容插入總的Monitorlnterface表中。 另外,處于性能考慮,這里用Set_Cpu_affinity函數手動指定抓包線程工作在
CPU核心1上,工作線程分布在CPU核心2 4上,用set_cpu_mask_aff inity函數指定每
分鐘的匯集線程不要工作在CPU核心1上,這樣能夠保證抓包線程不會被其它工作線程爭
奪cpu時間。同時還用block_Sig函數設定抓包和工作線程不要響應SIG_ALARM,防止它們
去做匯集的工作。 3、流量存儲模塊 流量存儲模塊每個整分鐘匯總多個線程的統計指標值,得到匯總后的統計指標 值,直接插入統計指標值到文件或者數據庫的數據表中。
權利要求
一種DNS流量的高性能監控方法,其特征在于,該方法鏡像DNS流量采集服務器上聯通訊設備的進出流量到DNS流量采集服務器,由DNS流量采集服務器進行數據包實時抓取、實時分析以及實時存儲。
2. 根據權利要求1所述的一種DNS流量的高性能監控方法,其特征在于,所述的上聯通訊設備包括交換機或者路由器。
3. 根據權利要求1或2所述的一種DNS流量的高性能監控方法,其特征在于,所述的DNS流量采集服務器實時抓取的數據包包括DNS服務器收到客戶端的查詢包A ;DNS服務器回復客戶端的響應包B ;DNS服務器向上層DNS服務器發送的遞歸查詢包C ;DNS服務器收到上層DNS服務器回復的遞歸響應包D。
4. 根據權利要求3所述的一種DNS流量的高性能監控方法,其特征在于,所述的DNS流量采集服務器實時分析抓取的數據包,得到關鍵統計指標值,該關鍵統計指標值包括查詢包A的每秒查詢次數;遞歸查詢包C的每秒遞歸查詢次數;響應包B的每秒響應次數;查詢包A以及響應包B的解析成功率;查詢包A以及遞歸查詢包C的遞歸查詢率;查詢包A以及遞歸查詢包C的緩存命中率;查詢包A的查詢類型分類;響應包B的響應類型分類;查詢包A的TOP-N頂級域名;查詢包A的TOP-N 二 /三級域名;查詢包A的TOP-N域名;查詢包A的TOP-N源IP ;查詢包A的TOP-N源IP和域名;遞歸響應包D的TOP-N錯誤域名;遞歸響應包D的TOP-N錯誤域名和源IP。
5. 根據權利要求4所述的一種DNS流量的高性能監控方法,其特征在于,所述的DNS流量采集服務器以1分鐘為最小時間單位進行實時分析。
6 根據權利要求4或5所述的一種DNS流量的高性能監控方法,其特征在于,所述的DNS流量采集服務器采用多線程技術對TOP-N數據進行實時分析。
7. 根據權利要求6所述的一種DNS流量的高性能監控方法,其特征在于,所述的DNS流量采集服務器每整分鐘匯總多個線程的統計指標值,得到的統計指標值插入到存儲文件或者數據庫的數據表中。
全文摘要
本發明涉及一種DNS流量的高性能監控方法,該方法鏡像DNS流量采集服務器上聯通訊設備的進出流量到DNS流量采集服務器,由DNS流量采集服務器進行數據包實時抓取、實時分析以及實時存儲。與現有技術相比,本發明方法使DNS數據分析具有準確性、及時性、實時性以及完整性。
文檔編號H04L29/12GK101719847SQ200910197230
公開日2010年6月2日 申請日期2009年10月15日 優先權日2009年10月15日
發明者龍雷 申請人:上海寰雷信息技術有限公司