亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于公共前綴的動態(tài)添加樹節(jié)點(diǎn)和單元的模式匹配方法

文檔序號:10515381閱讀:158來源:國知局
一種基于公共前綴的動態(tài)添加樹節(jié)點(diǎn)和單元的模式匹配方法
【專利摘要】本發(fā)明屬于網(wǎng)絡(luò)信息處理技術(shù)領(lǐng)域,具體涉及一種基于公共前綴的動態(tài)添加樹節(jié)點(diǎn)和單元的模式匹配方法。本發(fā)明包括:(1)模式加載操作:當(dāng)一條新的IP地址加入字典樹時,先從樹根節(jié)點(diǎn)開始查找;(2)網(wǎng)絡(luò)地址查找操作:對于網(wǎng)絡(luò)IP地址在字典樹結(jié)構(gòu)中的查找,在單元查找過程中,使用扇出寬度來選擇橫向查找的方法。與現(xiàn)有的方法相比,本發(fā)明提出了基于公共子串的動態(tài)添加樹節(jié)點(diǎn)和單元方法,設(shè)計橫向單元的查找方案,基于樹縱向的壓縮減少查找過程中內(nèi)存的訪問次數(shù)。
【專利說明】
-種基于公共前綴的動態(tài)添加樹節(jié)點(diǎn)和單元的模式匹配方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于網(wǎng)絡(luò)信息處理技術(shù)領(lǐng)域,具體設(shè)及一種基于公共前綴的動態(tài)添加樹節(jié) 點(diǎn)和單元的模式匹配方法。
【背景技術(shù)】
[0002] 現(xiàn)階段,網(wǎng)絡(luò)安全是一個炙手可熱的話題,隨著網(wǎng)絡(luò)應(yīng)用的廣泛普及,網(wǎng)民數(shù)量急 劇增加,在網(wǎng)絡(luò)中使用網(wǎng)絡(luò)地址來對網(wǎng)絡(luò)用戶進(jìn)行唯一標(biāo)識。對于現(xiàn)階段存在的網(wǎng)絡(luò)信息 過濾技術(shù)來說,基于網(wǎng)絡(luò)地址的過濾方式是被廣泛應(yīng)用的一種過濾手段,黑名單便是運(yùn)樣 過濾手段的一種實(shí)際應(yīng)用。在黑名單中列舉出應(yīng)該被阻止的IP地址,每次在鏈接建立初期, 查看所訪問的網(wǎng)址是否在黑名單中,如果在黑名單中,則過濾掉該條會話,提高網(wǎng)絡(luò)信息過 濾的實(shí)時性。
[0003] Neil Barrett曾使用飛行的子彈來描述互聯(lián)網(wǎng)中用戶數(shù)量的增長趨勢,IPv4地址 已不夠使用,迎合地址枯竭的挑戰(zhàn),CIDR(Classless Inter Domain Routing)和IPv6地址 技術(shù)被提出,W提高互聯(lián)網(wǎng)對用戶的承載能力。伴隨網(wǎng)絡(luò)地址的發(fā)展,基于網(wǎng)絡(luò)地址的多模 式匹配算法也應(yīng)該有所改進(jìn),不僅能滿足于IPv4地址的查找,而且要能實(shí)現(xiàn)高速查找IPv6 地址,同時用戶數(shù)量的增多也會使非法用戶的數(shù)量有所增多,運(yùn)樣地址過濾模式匹配算法 還應(yīng)該考慮模式的大規(guī)模特性。鑒于此,構(gòu)建一個滿足模式的大規(guī)模特性和查找的實(shí)時特 性的IP地址匹配方法法是本發(fā)明的主要目的。
[0004] 在網(wǎng)絡(luò)地址過濾技術(shù)中,常被采用的數(shù)據(jù)結(jié)構(gòu)為哈希表和字典樹,兩者各有優(yōu)缺 點(diǎn),哈希表必須考慮哈希沖突的產(chǎn)生,一方面需要選擇較好的哈希算法,一方面需要設(shè)計較 好的哈希沖突解決方案,異或哈希是現(xiàn)階段效果不錯的哈希方案,但是對于海量的網(wǎng)絡(luò)地 址W及有限的字符集合來說,沖突問題隨著模式規(guī)模的增大而越來越大,因此哈希表并不 是理想基礎(chǔ)結(jié)構(gòu)類型。對于字典樹來說,一般的樹單元單字符存儲方案內(nèi)存開銷較大,但是 不存在沖突的問題,在樹節(jié)點(diǎn)查找過程中會訪問多次訪問內(nèi)存,對于完整IPv6地址來說需 要訪問內(nèi)存128次,運(yùn)會嚴(yán)重影響到網(wǎng)絡(luò)地址的查找時間。

【發(fā)明內(nèi)容】

[0005] 本發(fā)明的目的在于提供一種減少在網(wǎng)絡(luò)IP地址查找過程中的內(nèi)存訪問次數(shù)的基 于公共前綴的動態(tài)添加樹節(jié)點(diǎn)和單元的模式匹配方法。
[0006] 本發(fā)明的目的是運(yùn)樣實(shí)現(xiàn)的:
[0007] -種基于公共前綴的動態(tài)添加樹節(jié)點(diǎn)和單元的模式匹配方法:
[000引(1)模式加載操作:當(dāng)一條新的IP地址加入字典樹時,先從樹根節(jié)點(diǎn)開始查找,首 先查看字典樹中是否已經(jīng)存在該條IP地址,如果已經(jīng)存在,則不再加入,否則將該IP地址添 加到字典樹中;
[0009] (2)網(wǎng)絡(luò)地址查找操作:
[0010] 對于網(wǎng)絡(luò)IP地址在字典樹結(jié)構(gòu)中的查找,在單元查找過程中,使用扇出寬度來選 擇橫向查找的方法,即綜合使用順序查找、二分查找w及使用直接定位的方式來實(shí)現(xiàn),每個 節(jié)點(diǎn)都有扇出寬度的屬性,為Ξ種查找方式定義闊值分界線來劃分單元查找的方法。
[0011] 當(dāng)在字典樹中查找網(wǎng)絡(luò)地址時,結(jié)合模式加載的過程,從根節(jié)點(diǎn)開始查找路徑信 息,其中單元查找過程中使用順序查找、二分查找和直接定位相結(jié)合的方式實(shí)現(xiàn),使用節(jié)點(diǎn) 的扇出寬度來確定查找方法的選擇。
[0012] 本發(fā)明的有益效果在于:
[0013] 與現(xiàn)有的方法相比,本發(fā)明提出了基于公共子串的動態(tài)添加樹節(jié)點(diǎn)和單元方法, 設(shè)計橫向單元的查找方案,基于樹縱向的壓縮減少查找過程中內(nèi)存的訪問次數(shù)。
【附圖說明】
[0014] 圖1是本發(fā)明中模式加載的流程圖;
[0015] 圖2是本發(fā)明在模式加載過程中舉例說明樹節(jié)點(diǎn)和單元存儲內(nèi)容的變化圖;
[0016] 圖3是本發(fā)明中樹單元添加的實(shí)現(xiàn)流程圖;
[0017] 圖4是本發(fā)明中樹單元查找的實(shí)現(xiàn)流程圖;
[0018] 圖5是本發(fā)明中網(wǎng)絡(luò)地址查找的流程圖;
[0019] 圖6是本發(fā)明與異或哈希算法、傳統(tǒng)字典樹針對于IPv4地址的匹配效率對比圖;
[0020] 圖7是本發(fā)明與傳統(tǒng)字典樹針對于IPv4地址的匹配效率對比圖;
[0021] 圖8是本發(fā)明與傳統(tǒng)字典樹針對于IPv6地址的內(nèi)存占用對比圖;
[0022] 圖9是本發(fā)明與傳統(tǒng)字典樹針對于IPv6地址的匹配效率對比圖。
【具體實(shí)施方式】
[0023] 下面結(jié)合附圖對本發(fā)明做進(jìn)一步描述。
[0024] 本發(fā)明描述了一種基于公共前綴的海量IP地址模式匹配方法,該方法的基礎(chǔ)數(shù)據(jù) 結(jié)構(gòu)是字典樹。在IP地址模式加載過程中,使用動態(tài)添加模式的方法,基于公共前綴的形式 動態(tài)修改樹節(jié)點(diǎn)和單元的存儲內(nèi)容,單元不再是只存放一個字符,而是存放模式的子串,從 而實(shí)現(xiàn)字典樹的縱向壓縮;本發(fā)明同時兼顧到樹橫向的節(jié)點(diǎn)扇出寬度,使用單元存儲首字 母來確定單元數(shù)目,扇出寬度不會超出256,完成字典樹的橫向壓縮,并結(jié)合使用順序查找、 二分查找和直接定位的查找方式來完成單元的查找。本發(fā)明技術(shù)方案不僅可W減少字典樹 節(jié)點(diǎn)和單元的占用空間,同時可W有效的減少內(nèi)存訪問次數(shù)。本方法可同時支持IPv4地址 和IPv6地址的高效匹配。
[0025] 本發(fā)明字典樹為基礎(chǔ)結(jié)構(gòu),考慮到內(nèi)存訪問次數(shù)的問題和樹節(jié)點(diǎn)與單元的空間占 用問題,對字典樹進(jìn)行合理的縱向和橫向的壓縮,合理設(shè)計橫向單元查找的方案,W便于提 高網(wǎng)絡(luò)IP地址的查找效率。
[0026] 本發(fā)明的目的是提供一種基于公共前綴的動態(tài)添加樹節(jié)點(diǎn)和單元的模式匹配算 法,一方面通過單元存放公共子串來實(shí)現(xiàn)字典樹的縱向壓縮,減少在網(wǎng)絡(luò)IP地址查找過程 中的內(nèi)存訪問次數(shù);另一方面是通過單元存放的子串首字符來控制扇出寬度實(shí)現(xiàn)橫向的壓 縮,結(jié)合多種查找方法實(shí)現(xiàn)快速單元查找,樹規(guī)模的整體壓縮實(shí)現(xiàn)樹節(jié)點(diǎn)和單元的內(nèi)存使 用量。
[0027] 本發(fā)明的目的是通過W下技術(shù)方案實(shí)現(xiàn):
[00%]模式加載操作(步驟110);
[00巧]網(wǎng)絡(luò)地址查找操作(步驟120);
[0030] 所述步驟110的模式加載方法如下:
[0031] 當(dāng)一條新的IP地址加入字典樹的時候,會先從樹根節(jié)點(diǎn)開始查查找,首先查看字 典樹中是否已經(jīng)存在該條IP地址,如果已經(jīng)存在,則不再加入,否則將該IP地址添加到字典 樹中,如圖1中的流程圖所示。
[0032] 所述步驟120的IP地址查找方法如下:
[0033] 對于網(wǎng)絡(luò)IP地址在字典樹結(jié)構(gòu)中的查找,本方面具體的優(yōu)化在于字典樹節(jié)點(diǎn)橫向 上單元的查找實(shí)現(xiàn)。在單元查找過程中,使用扇出寬度來選擇橫向查找的方法,即綜合使用 順序查找、二分查找W及使用直接定位的方式來實(shí)現(xiàn),每個節(jié)點(diǎn)都有扇出寬度的屬性,為Ξ 種查找方式定義闊值分界線來劃分單元查找的方法,W便提高橫向上的匹配效率根據(jù)單元 存儲的有序性,快速的找到相應(yīng)的單元信息進(jìn)行比較。
[0034] 本發(fā)明是提供一種基于公共前綴的模式匹配算法。W下結(jié)合附圖進(jìn)行詳細(xì)說明。
[0035] 本發(fā)明如下步驟進(jìn)行實(shí)施:
[0036] 1.模式加載操作(步驟110);
[0037] 2.網(wǎng)絡(luò)地址查找操作(步驟120);
[0038] 步驟110由如下幾個步驟進(jìn)行實(shí)施:
[0039] (1)當(dāng)一條新的IP地址加入字典樹的時候,會先從樹根節(jié)點(diǎn)開始查查找,首先查看 字典樹中是否已經(jīng)存在該條IP地址,如果已經(jīng)存在,則不再加入,否則將該IP地址添加到字 典樹中,如圖1中的流程圖所示。
[0040] (2)在添加過程中,對于樹橫向單元來說,時刻保持著每個單元中存放的字符串信 息的首字符是不同的,運(yùn)樣就限制了樹橫向擴(kuò)展的規(guī)模,其單元數(shù)最大為255。其中為了快 速的確定節(jié)點(diǎn)下單元中是否有可匹配的單元,可W在節(jié)點(diǎn)中引入空間,用于存放該節(jié)點(diǎn)下 包含的單元中首字符的信息,實(shí)現(xiàn)快速定位到單元位置,當(dāng)不存現(xiàn)在相應(yīng)單元信息時候,可 W直接在該節(jié)點(diǎn)下添加新的單元信息,否則,找到相應(yīng)的單元信息,尋找該單元中存放的子 串與待插入的子串進(jìn)行對比,找到共同的前綴信息,動態(tài)修改單元中子串的存儲W及后續(xù) 節(jié)點(diǎn)的添加,運(yùn)是一種求同存異的思想實(shí)現(xiàn)。
[0041] 對于樹節(jié)點(diǎn)和單元的動態(tài)變化,可如圖2所示,在此使用字符串來表示各節(jié)點(diǎn)和單 元中字符串存儲的變化,不采用網(wǎng)絡(luò)地址來顯示是為了直觀表示動態(tài)變化。在模式加載過 程中,當(dāng)找到待操作的樹節(jié)點(diǎn)時,此時待加載的字符串為"texnex",使用求同存異的思想, 找到節(jié)點(diǎn)Node下面相同首字符的單元Cell,對待加載字符和Cell中存放的子串信息查找共 同前綴子串,對Cell中存儲的子串進(jìn)行拆分成新的節(jié)點(diǎn)和單元信息,如下圖2中的路徑分裂 情況,最后在新節(jié)點(diǎn)下面,把待插入子串的后綴信息插入到新單元中,完成動態(tài)變化的操作 過程。
[0042] (3) W上介紹了模式插入情況,從上面我們可W知道,運(yùn)種存儲方法相應(yīng)于一般的 字典樹結(jié)構(gòu)縱向上有了一定的壓縮,同時根據(jù)保障的橫向上首字母唯一性來說,橫向上扇 出寬度相較于一般的字典樹結(jié)構(gòu)沒有影響,但是對于步長超過1的字典樹來說,橫向也實(shí)現(xiàn) 了壓縮。
[0043] 在橫向上,除了存儲壓縮W外,還可W從橫向查找角度進(jìn)行優(yōu)化,在此使用的實(shí)驗 方案是綜合使用順序查找、二分查找w及使用直接定位的方式來實(shí)現(xiàn),每個節(jié)點(diǎn)都有扇出 寬度的屬性,為Ξ種查找方式定義闊值分界線來劃分單元查找的方法,W便提高橫向上的 匹配效率。圖3給出了具體的樹單元添加過程。
[0044] 根據(jù)單元的添加過程可知,在某一個節(jié)點(diǎn)Node下添加 Code信息時為了便于后續(xù)單 元查找的便利,對單元進(jìn)行排序添加,同時改變扇出寬度,用于后續(xù)查找方法的選擇。
[0045] 所述步驟120由如下幾個步驟實(shí)施:
[0046] (1)對于網(wǎng)絡(luò)地址在字典樹結(jié)構(gòu)中的查找,具體的優(yōu)化在于橫向上單元的查找實(shí) 現(xiàn),圖4給出了單元查找的實(shí)現(xiàn)過程。在單元查找過程中,使用扇出寬度來選擇橫向查找的 方法,根據(jù)單元存儲的有序性,快速的找到相應(yīng)的單元信息進(jìn)行比較。
[0047] (2)圖5給出了網(wǎng)絡(luò)地址查找的完整流程圖。從Root節(jié)點(diǎn)開始,逐個子串查找相應(yīng) 的Cell單元,一旦子串匹配成功,則Node指向Cell的子樹節(jié)點(diǎn),此樣再次查找后續(xù)子串對應(yīng) 的Cell信息,一直到Size結(jié)束,同時查看相應(yīng)的節(jié)點(diǎn)Node中的化il字段是否表示為1,從而 可知,Text是精確匹配還是前綴匹配成功。
[0048] 本發(fā)明方法的實(shí)施在Linux下用C語言實(shí)現(xiàn)的。通過W上的研究,基于兩種數(shù)據(jù)結(jié) 構(gòu)的匹配方法的實(shí)現(xiàn)可知,每種方法都有自己的應(yīng)用環(huán)境,不同的應(yīng)用環(huán)境,方法的實(shí)現(xiàn)效 率會有一定的差距,針對于方法的實(shí)施環(huán)境來說,是對于網(wǎng)絡(luò)中大規(guī)模的敏感地址進(jìn)行過 濾的要求,對于方法的選擇需要考慮實(shí)時性的需求,匹配效率要求較高,同時考慮大規(guī)模的 敏感信息來說,算法能實(shí)現(xiàn)模式集合為千萬級別的情況。
[0049] 方法實(shí)施環(huán)境:
[(K)加 ]
[0051] 隨機(jī)生成不同規(guī)模的IPv4地址模式信息,分別使用基于異或的哈希方法(X0R_ 化sh)、傳統(tǒng)Trie方法W及基于公共前綴動態(tài)劃分化ie樹的D_Trie改進(jìn)方法進(jìn)行對比試下, 圖6給出了Ξ種方法的匹配效率曲線圖,由此圖可知,對于固定哈希表大小的情況下,隨著 模式規(guī)模增大,出現(xiàn)沖突的概率增大,運(yùn)樣查找時間也就越大,但是對于模式規(guī)模集合較小 的情況下,異或哈希方法會有較好的效率;相較于傳統(tǒng)化ie方法來看,改進(jìn)D_Trie方法的性 能有所優(yōu)化,為了直觀的查看兩者性能的差距,圖7只針對化16和0_化16給出了相關(guān)匹配性 能比較情況。
[0052] 通過圖7可知,Trie方法的效率隨著模式規(guī)模的增大會發(fā)生變化,查找時間越來越 長,而改進(jìn)的D_Trie方法隨著模式模式規(guī)模的增大,查找時間變動不大,平均的查找時間維 持在0.9US左右。
[0053] 在方法改進(jìn)過程中,已經(jīng)考慮到的一個角度是,改進(jìn)方法要滿足大規(guī)模IPv6的存 儲查找,在此隨機(jī)生成一定規(guī)模的IPv6地址集合,從存儲空間消耗和匹配效率兩個角度來 說明改進(jìn)方法的優(yōu)越性。
[0054] 隨機(jī)生成不同規(guī)模的IPv6地址模式信息,圖8從內(nèi)存占用的角度上查看在IPv6集 合的樣本上,方法對比結(jié)果,當(dāng)模式規(guī)模達(dá)到千萬的時候,Trie方法已經(jīng)不能加載模式了, 而且在百萬級的模式上,消耗內(nèi)存的大小是改進(jìn)方法消耗內(nèi)存的3倍左右。圖9給出了兩種 方法匹配性能上的對比,可W看出匹配效率不會隨著模式規(guī)模的變化,不會有太大的浮動, 大約在l.lus。
【主權(quán)項】
1. 一種基于公共前綴的動態(tài)添加樹節(jié)點(diǎn)和單元的模式匹配方法,其特征在于: (1) 模式加載操作:當(dāng)一條新的IP地址加入字典樹時,先從樹根節(jié)點(diǎn)開始查找,首先查 看字典樹中是否已經(jīng)存在該條IP地址,如果已經(jīng)存在,則不再加入,否則將該IP地址添加到 字典樹中; (2) 網(wǎng)絡(luò)地址查找操作: 對于網(wǎng)絡(luò)IP地址在字典樹結(jié)構(gòu)中的查找,在單元查找過程中,使用扇出寬度來選擇橫 向查找的方法,即綜合使用順序查找、二分查找以及使用直接定位的方式來實(shí)現(xiàn),每個節(jié)點(diǎn) 都有扇出寬度的屬性,為三種查找方式定義閾值分界線來劃分單元查找的方法。2. -種基于公共前綴的動態(tài)添加樹節(jié)點(diǎn)和單元的模式匹配方法,其特征在于:當(dāng)在字 典樹中查找網(wǎng)絡(luò)地址時,結(jié)合模式加載的過程,從根節(jié)點(diǎn)開始查找路徑信息,其中單元查找 過程中使用順序查找、二分查找和直接定位相結(jié)合的方式實(shí)現(xiàn),使用節(jié)點(diǎn)的扇出寬度來確 定查找方法的選擇。
【文檔編號】H04L29/12GK105871726SQ201610161030
【公開日】2016年8月17日
【申請日】2016年3月21日
【發(fā)明人】王巍, 楊武, 苘大鵬, 玄世昌, 朱秋陽
【申請人】哈爾濱工程大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1