基於二進位編碼的dns數據壓縮、解壓縮方法及系統的製作方法
2023-05-22 00:48:16 4
基於二進位編碼的dns數據壓縮、解壓縮方法及系統的製作方法
【專利摘要】本發明公開了一種基於二進位編碼的DNS數據壓縮、解壓縮方法及系統,屬於計算機網絡【技術領域】。其中,DNS數據壓縮方法為:1)從數據源文件中讀取日誌信息後,將數據打包放到一緩存隊列中;2)數據壓縮模塊從該數據緩存隊列中取出數據並壓縮後,將其存儲到一壓縮信息緩存中;3)從該壓縮信息緩存中取出數據並進行二進位編碼後保存到一結果文件中。解壓縮方法為:1)將結果文件中二進位編碼壓縮日誌信息進行二進位編碼解壓後,保存到壓縮信息緩存中;2)從緩存中取出數據,將其存儲到一解壓信息緩存中;3)從解壓信息緩存中取出數據並進行解壓得到日誌記錄信息。本方法實現了日誌的高比例壓縮,而且壓縮的文件還能用gzip進一步壓縮。
【專利說明】基於二進位編碼的DNS數據壓縮、解壓縮方法及系統
【技術領域】
[0001]本發明涉及一種基於二進位編碼的DNS數據壓縮、解壓縮方法及系統,屬於計算機網絡【技術領域】。
【背景技術】
[0002]域名系統(Domain Name System,DNS)是網際網路基礎設施提供的一項核心服務,系統包括可以將域名和IP位址相互映射的一個分布式資料庫,以及實現域名和網絡可以識別的IP位址轉換功能的系統。
[0003]DNS經過幾十年的發展,已經成為目前全球最大、最複雜的分布式資料庫系統,具有良好的擴展性和高效的解析性能。同時,巨大的工作量使得DNS系統產生了海量的數據。現有的系統一般都是使用字符編碼的方式保留原始日誌。
[0004]現有技術的缺陷是:
[0005]DNS海量的查詢和應答服務產生了巨大日誌量,一方面這些日誌需要在本地進行保存,另一方面很多任務都需要跨地區、跨網段進行日誌傳輸。目前缺乏一種穩定有效的日誌壓縮技術來提高日誌保存和傳輸的效率。因此,如果開發出能穩定高效運行的日誌壓縮系統能大大的推動目前的各項工作。
【發明內容】
[0006]針對現有技術中存在的技術問題,本發明的目的在於提供一種基於二進位編碼的DNS數據壓縮、解壓縮方法及系統;本發明改進的方向為:
[0007]I)設計高效的DNS信息壓縮算法;
[0008]2)使用二進位編碼方式進行日誌存儲,提高壓縮比例;
[0009]3)設計優良的系統架構,保證系統能進行企業級應用。
[0010]本發明的技術方案為:
[0011]一種基於二進位編碼的DNS數據壓縮、解壓縮系統,其特徵在於包括一數據讀取模塊,一二進位編碼模塊,一數據壓縮模塊,一二進位解碼模塊,一數據解壓模塊;其中
[0012]所述數據讀取模塊,用於從DNS數據源文件中讀取日誌信息後,將數據打包放到一緩存隊列中;
[0013]所述數據壓縮模塊,用於從所述數據緩存隊列中取出數據並壓縮後,將其存儲到一壓縮信息緩存中;
[0014]所述二進位編碼模塊,用於從所述壓縮信息緩存中取出數據並進行二進位編碼後保存到一結果文件中;
[0015]所述二進位解碼模塊,用於將所述結果文件中二進位編碼壓縮日誌信息進行二進位編碼解壓後,保存到壓縮信息緩存中;
[0016]所述數據解壓模塊,用於從壓縮信息緩存中取出數據,將其存儲到一解壓信息緩存中;然後從該解壓信息緩存中取出數據並進行解壓得到日誌記錄信息。[0017]一種基於二進位編碼的DNS數據壓縮方法,其步驟為:
[0018]I)數據讀取模塊從DNS數據源文件中讀取日誌信息後,將數據打包放到一緩存隊列中;
[0019]2)數據壓縮模塊從該數據緩存隊列中取出數據並壓縮後,將其存儲到一壓縮信息緩存中;
[0020]3) 二進位編碼模塊從該壓縮信息緩存中取出數據並進行二進位編碼後保存到一結果文件中。
[0021]進一步的,採用可變長度整型編碼規則進行所述二進位編碼;所述可變長度整型編碼的最大長度為128位元組。
[0022]進一步的,二進位編碼後的每個數據域包括標誌欄位和數據欄位兩部分;其中,標誌欄位用於指明數據的類型和數據在消息結構體中的序號,數據欄位用於存儲數據的值;一個DNS數據包二進位編碼後對應一個消息結構體。
[0023]進一步的,所述數據壓縮模塊對日誌信息中的時間數據信息進行壓縮,其方法為:首先從所述緩存隊列中讀取一條記錄,如果是首條記錄則保留該記錄完整的時間格式;否則判斷當前記錄的在設定級時間域及其上級時間域的時間與上一條記錄的對應級時間域是否相等,如果相等,則只保留設定級時間域下一級時間的時間;如果不相等,則判斷當前記錄時間與上一記錄時間間隔是否大於設定閾值,如果大於該閾值,則保留當前記錄完整的時間格式,否則比較設定級時間域下一級時間的時間,如果當前記錄設定級時間域下一級時間小於上一條記錄對應時間,則只保留當前記錄設定級時間域的下一級時間域的時間,否則保留當前記錄完整的時間格式。
[0024]進一步的,所述設定級時間域為秒時間域,所述閾值為I秒。
[0025]進一步的,從緩存隊列取出數據的時候,用哈希表做為域名和IP位址信息壓縮的輔助結構。
[0026]進一步的,所述數據壓縮模塊對日誌信息中的域名數據和IP數據信息進行壓縮;a)對於域名數據進行壓縮的方法為:從所述緩存隊列中讀取一條記錄,在所述哈希鍊表中搜索該記錄中的域名;如果存在該域名,則將該域名在哈希鍊表中的哈希位置保存到所述結果文件中,如果不存在該域名,則在所述哈希鍊表中為該域名構建結點並將該域名保存到所述結果文件中山)對於IP位址數據信息進行壓縮的方法為:從所述緩存隊列中讀取一條記錄,在所述哈希鍊表中搜索該記錄中的IP位址;如果存在該IP,則將該IP在哈希鍊表中的哈希位置保存到所述結果文件中,如果不存在該IP,則在所述哈希鍊表中為該IP構建結點並將該IP保存到所述結果文件中。
[0027]—種基於二進位編碼的DNS數據壓縮文件的解壓縮方法,其步驟為:
[0028]I) 二進位解碼模塊將結果文件中二進位編碼壓縮日誌信息進行二進位編碼解壓後,保存到壓縮信息緩存中;
[0029]2)數據解壓模塊從壓縮信息緩存中取出數據,將其存儲到一解壓信息緩存中;
[0030]3)數據解壓模塊從該解壓信息緩存中取出數據並進行解壓得到日誌記錄信息。
[0031]進一步的,所述數據解壓模塊從該解壓信息緩存中取出數據,對時間數據進行解壓,其方法為:首先從所述解壓信息緩存中讀取一條記錄,如果是完整的時間格式,則將其設為基準時間;否則判斷當前記錄的時間域的時間是否大於或等於上一條記錄的對應時間域的時間,如果是,則利用上一條記錄的完整格式時間和當前記錄的時間域的時間合成當前記錄的完整時間格式;如果小於,則利用上一條記錄的完整格式時間將當前記錄的時間域的上一級時間域加I並判斷上一級時間域是否需要進位,如需要進位則利用上一條記錄的完整格式時間進行調整並繼續逐級判斷是否需要進位,合成當前記錄的完整時間格式;如果不需要進位,則利用上一條記錄的完整格式時間和當前記錄的時間域的時間合成當前記錄的完整時間格式;其中,所述時間域為微秒時間域。
[0032]進一步的,所述數據解壓模塊從該解壓信息緩存中取出數據,對域名數據和IP數據進行解壓;a)對於域名數據,其解壓方法為:從所述解壓信息緩存中讀取一條記錄,如果域名為完整格式,則將其加入到哈希鍊表中並返回;如果域名信息為所述哈希鍊表中的位置信息,則根據該位置信息從所述哈希鍊表相應位置處讀出域名的完整格式,並返回;b)對於IP數據,其解壓方法為:從所述解壓信息緩存中讀取一條記錄,如果IP為完整格式,則將其加入到哈希鍊表中並返回;如果IP信息為所述哈希鍊表中的位置信息,則根據該位置信息從所述哈希鍊表相應位置處讀出IP的完整格式,並返回。
[0033]本發明整個系統由數據讀取模塊(即文件I/O)、數據壓縮和數據解壓三個部分組成。系統的進程模型如圖1所示。
[0034]緩存使用了 「生產者-消費者」模式,文件I/O模塊做為「生產者」從源文件(DNS數據源文件為DNS服務產生的原始日誌文件,一般採用字符編碼方式保存)中讀取信息後,將數據打包放到緩存隊列中;而數據處理模塊(壓縮/解壓模塊)則作為「消費者」,將數據從緩存中取出並進行處理。其中,壓縮模塊會根據算法,得到壓縮後的數據信息,這時,壓縮模塊成為了「生產者」將信息存入到壓縮信息緩存(即用來存儲壓縮信息的緩存)中,文件I/O模塊這時候成為了「消費者」,從壓縮信息緩存中取出數據,並保存到結果文件中;解壓模塊的處理流程類似,首先二進位解碼模塊將結果文件中二進位編碼壓縮日誌信息進行二進位編碼解壓後,保存到壓縮信息緩存中(即用來存儲二進位編碼解壓後信息的緩存);然後數據解壓模塊從壓縮信息緩存中取出數據,將其存儲到一解壓信息緩存中(即用來存儲壓縮信息的緩存);數據解壓模塊從該解壓信息緩存中取出數據並進行解壓得到日誌記錄信息。數據解壓模塊還原壓縮前的信息,並寫入到解壓結果文件中。
[0035]數據壓縮總的思想原則是:「去除不需要的信息,壓縮冗餘的數據」。在DNS信息中,時間,查詢類型、IP和域名這四類信息對於分析系統進行各種數據分析統計最重要,其中時間、IP和域名這三類信息在日誌文件中存在大量的冗餘信息,所以可以針對這三類數據,使用特定算法,去除冗餘,用較小的空間來表示相同的內容,這樣就得到了特定的壓縮信息。
[0036]解壓模塊從「壓縮結果文件」中讀取信息,並通過算法還原壓縮前的信息,並把信息寫入到解壓結果文件。壓縮模塊主要是針對時間、IP和域名進行了壓縮,所以解壓模塊也是針對這三個部分的信息進行解壓還原。
[0037]同時,所有的信息在磁碟上保存時使用了二進位編碼,這樣就再一次對存儲空間進行了壓縮,大大節省了存儲空間。原理如下所述。
[0038]系統的數字使用了 「基於128的可變長度整型」編碼規則(最大長度為128位元組)。這種方法是用一系列的字節來表示一個任意大小的數字,其中字節的長度是可變長的,類似於字符串。[0039]這個可變長度整型中的每個字節的第一個比特用做「標誌位」,如果標誌位是1,則表示這個字節非該可變長度整型的最後一個字節;如果標誌位是0,則表示該字節是這個可變長度整型的最後一個字節。而標誌位後面的7個比特用於組成該可變長度整型的值。同時,組成該可變長度整型的字節採用「低位在前」的表示方式。如下就是幾個表示的例子。
[0040]1)「00000001」。其中第一個比特為0,表示該字節是最後一個字節,隨後的7個比特位組成了這個可變長度整型的值,所以這個變長整形的值是1.[0041]2) 「1010110000000010」。其中第一個字節的第一個位是1,表示該字節非最後一個字節;第二個字節的第一個位是0,表示該字節是最後一個字節。於是,組成該可變長度整型的數欄位為:「0101100」和「0000010」。又因為採用了 「低位在前」的表示方式,所以,該數字的值為「00000100101100」,十進位表示為:300
[0042]在系統中每個數據域都由「標誌欄位」和「數據欄位」組成。其中,標誌欄位指明了該數據的「類型」和「在消息結構體中的序號」,一個DNS數據包二進位編碼後對應一個消息結構體;數據欄位用於存儲數據的值。
[0043]數據編碼中,用編號0-5分別對應各個類型,每個數據域用三個比特來表示其類型。所用的數據類型如表1所示:
[0044]表1、數據編碼類型表
[0045]
【權利要求】
1.一種基於二進位編碼的DNS數據壓縮方法,其步驟為: 1)數據讀取模塊從DNS數據源文件中讀取日誌信息後,將數據打包放到一緩存隊列中; 2)數據壓縮模塊從該數據緩存隊列中取出數據並壓縮後,將其存儲到一壓縮信息緩存中; 3)二進位編碼模塊從該壓縮信息緩存中取出數據並進行二進位編碼後保存到一結果文件中。
2.如權利要求1所述的方法,其特徵在於採用可變長度整型編碼規則進行所述二進位編碼;所述可變長度整型編碼的最大長度為128位元組。
3.如權利要求2所述的方法,其特徵在於二進位編碼後的每個數據域包括標誌欄位和數據欄位兩部分;其中,標誌欄位用於指明數據的類型和數據在消息結構體中的序號,數據欄位用於存儲數據的值;一個DNS數據包二進位編碼後對應一個消息結構體。
4.如權利要求1所述的方法,其特徵在於所述數據壓縮模塊對日誌信息中的時間數據信息進行壓縮,其方法為:首先從所述緩存隊列中讀取一條記錄,如果是首條記錄則保留該記錄完整的時間格式;否則判斷當前記錄的在設定級時間域及其上級時間域的時間與上一條記錄的對應級時間域是否相等,如果相等,則只保留設定級時間域下一級時間的時間;如果不相等,則判斷當前記錄時間與上一記錄時間間隔是否大於設定閾值,如果大於該閾值,則保留當前記錄完整的時間格式,否則比較設定級時間域下一級時間的時間,如果當前記錄設定級時間域下一級時間小於上一條記錄對應時間,則只保留當前記錄設定級時間域的下一級時間域的時間,否則保留當前記錄完整的時間格式。`
5.如權利要求1所述的方法,其特徵在於所述數據壓縮模塊對日誌信息中的域名數據和IP數據信息進行壓縮;a)對於域名數據進行壓縮的方法為:從所述緩存隊列中讀取一條記錄,在所述哈希鍊表中搜索該記錄中的域名;如果存在該域名,則將該域名在哈希鍊表中的哈希位置保存到所述結果文件中,如果不存在該域名,則在所述哈希鍊表中為該域名構建結點並將該域名保存到所述結果文件中山)對於IP位址數據信息進行壓縮的方法為:從所述緩存隊列中讀取一條記錄,在所述哈希鍊表中搜索該記錄中的IP位址;如果存在該IP,則將該IP在哈希鍊表中的哈希位置保存到所述結果文件中,如果不存在該IP,則在所述哈希鍊表中為該IP構建結點並將該IP保存到所述結果文件中。
6.一種基於二進位編碼的DNS數據壓縮文件的解壓縮方法,其步驟為: 1)二進位解碼模塊將結果文件中二進位編碼壓縮日誌信息進行二進位編碼解壓後,保存到壓縮信息緩存中; 2)數據解壓模塊從壓縮信息緩存中取出數據,將其存儲到一解壓信息緩存中; 3)數據解壓模塊從該解壓信息緩存中取出數據並進行解壓得到日誌記錄信息。
7.如權利要求6所述的方法,其特徵在於所述數據解壓模塊從該解壓信息緩存中取出數據,對時間數據進行解壓,其方法為:首先從所述解壓信息緩存中讀取一條記錄,如果是完整的時間格式,則將其設為基準時間;否則判斷當前記錄的時間域的時間是否大於或等於上一條記錄的對應時間域的時間,如果是,則利用上一條記錄的完整格式時間和當前記錄的時間域的時間合成當前記錄的完整時間格式;如果小於,則利用上一條記錄的完整格式時間將當前記錄的時間域的上一級時間域加I並判斷上一級時間域是否需要進位,如需要進位則利用上一條記錄的完整格式時間進行調整並繼續逐級判斷是否需要進位,合成當前記錄的完整時間格式;如果不需要進位,則利用上一條記錄的完整格式時間和當前記錄的時間域的時間合成當前記錄的完整時間格式;其中,所述時間域為微秒時間域。
8.如權利要求6所述的方法,其特徵在於所述數據解壓模塊從該解壓信息緩存中取出數據,對域名數據和IP數據進行解壓;a)對於域名數據,其解壓方法為:從所述解壓信息緩存中讀取一條記錄,如果域名為完整格式,則將其加入到哈希鍊表中並返回;如果域名信息為所述哈希鍊表中的位置信息,則根據該位置信息從所述哈希鍊表相應位置處讀出域名的完整格式,並返回山) 對於IP數據,其解壓方法為:從所述解壓信息緩存中讀取一條記錄,如果IP為完整格式,則將其加入到哈希鍊表中並返回;如果IP信息為所述哈希鍊表中的位置信息,則根據該位置信息從所述哈希鍊表相應位置處讀出IP的完整格式,並返回。
9.一種基於二進位編碼的DNS數據壓縮、解壓縮系統,其特徵在於包括一數據讀取模塊,一二進位編碼模塊,一數據壓縮模塊,一二進位解碼模塊,一數據解壓模塊;其中 所述數據讀取模塊,用於從DNS數據源文件中讀取日誌信息後,將數據打包放到一緩存隊列中; 所述數據壓縮模塊,用於從所述數據緩存隊列中取出數據並壓縮後,將其存儲到一壓縮息緩存中; 所述二進位編碼模塊,用於從所述壓縮信息緩存中取出數據並進行二進位編碼後保存到一結果文件中; 所述二進位解碼模塊,用於將所述結果文件中二進位編碼壓縮日誌信息進行二進位編碼解壓後,保存到壓縮信息緩存中; 所述數據解壓模塊,用於從壓縮信息緩存中取出數據,將其存儲到一解壓信息緩存中;然後從該解壓信息緩存中取出數據並進行解壓得到日誌記錄信息。
10.如權利要求9所述的系統,其特徵在於所述數據壓縮模塊對日誌信息中的時間數據信息進行壓縮,其方法為:首先從所述緩存隊列中讀取一條記錄,如果是首條記錄則保留該記錄完整的時間格式;否則判斷當前記錄的在設定級時間域及其上級時間域的時間與上一條記錄的對應級時間域是否相等,如果相等,則只保留設定級時間域下一級時間的時間;如果不相等,則判斷當前記錄時間與上一記錄時間間隔是否大於設定閾值,如果大於該閾值,則保留當前記錄完整的時間格式,否則比較設定級時間域下一級時間的時間,如果當前記錄設定級時間域下一級時間小於上一條記錄對應時間,則只保留當前記錄設定級時間域的下一級時間域的時間,否則保留當前記錄完整的時間格式;所述數據解壓模塊從解壓信息緩存中取出數據,對時間數據進行解壓,其方法為:首先從所述解壓信息緩存中讀取一條記錄,如果是完整的時間格式,則將其設為基準時間;否則判斷當前記錄的時間域的時間是否大於或等於上一條記錄的對應時間域的時間,如果是,則利用上一條記錄的完整格式時間和當前記錄的時間域的時間合成當前記錄的完整時間格式;如果小於,則利用上一條記錄的完整格式時間將當前記錄的時間域的上一級時間域加I並判斷上一級時間域是否需要進位,如需要進位則利用上一條記錄的完整格式時間進行調整並繼續逐級判斷是否需要進位,合成當前記錄的完整時間格式;如果不需要進位,則利用上一條記錄的完整格式時間和當前記錄的時間域的時間合成當前記錄的完整時間格式。
【文檔編號】H04L29/12GK103685589SQ201210333176
【公開日】2014年3月26日 申請日期:2012年9月7日 優先權日:2012年9月7日
【發明者】陽任科 申請人:中國科學院計算機網絡信息中心