專利名稱:結(jié)構(gòu)化數(shù)據(jù)的方法、預(yù)編譯的異常列表引擎和網(wǎng)絡(luò)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本公開涉及網(wǎng)絡(luò)安全、結(jié)構(gòu)化用于高速搜索的數(shù)據(jù)的方法、包含該結(jié)構(gòu)化數(shù)據(jù)的預(yù)編譯的異常列表引擎(pre-compiled exception list engine)和包括這種引擎的網(wǎng)絡(luò)設(shè)備(network appliance)。
背景技術(shù):
本部分提供了與本公開有關(guān)的背景信息,其并非必須是現(xiàn)有技術(shù)。有各種已知的方法,用于結(jié)構(gòu)化(structure)數(shù)據(jù)元素集和搜索數(shù)據(jù)元素集以定位想要的元素。數(shù)據(jù)元素可以仍然是非結(jié)構(gòu)化的,或者可根據(jù)一些原則被結(jié)構(gòu)化,例如按照數(shù)字、字母等。例如,可以通過按順序查看數(shù)據(jù)集中的每個項(xiàng)目而線性搜索數(shù)據(jù)集,或通過使用對分搜索而搜索數(shù)據(jù)集,該對分搜索反復(fù)地將該集一分為二并確定想要的元素是否高于、低于或等于數(shù)據(jù)集的劃分點(diǎn)。隨著數(shù)據(jù)集中的元素數(shù)量增加,許多已知的結(jié)構(gòu)化和/或搜索數(shù)據(jù)集的方法變得很麻煩。這樣的方法可能變得更慢,需要更多的處理器功率和/或存儲器。
發(fā)明內(nèi)容
本部分提供了本公開的概述,且不是其完全范圍或其所有特點(diǎn)的全面披露。根據(jù)本公開的一個方面,公開了一種用于排序(sort)多個網(wǎng)際協(xié)議(IP)地址的計算機(jī)執(zhí)行的方法,每個IP地址具有數(shù)值范圍內(nèi)的一個數(shù)值。該方法包括將該范圍分為代表多個鄰接的子范圍的多個簇(cluster)。每個子范圍基本上包含該范圍的相同數(shù)量的數(shù)值,且每個子范圍與不同的簇關(guān)聯(lián)。該方法還包括將每個IP地址分配給與包括該IP地址的數(shù)值的子范圍關(guān)聯(lián)的簇。每個簇具有由分配給該簇的IP地址的數(shù)量所定義的簇尺寸。每個簇中的IP地址被分配給多個頁中的一頁。每頁具有頁尺寸限制,其定義了可被分配給該頁的IP地址的最大數(shù)量。每頁具有頁尺寸,其由分配給該頁的IP地址的數(shù)量定義。如果一頁具有小于其頁尺寸限制的頁尺寸,該方法包括在該頁上復(fù)制分配給該頁的至少一個IP地址,以增加該頁的頁尺寸。對于每一頁,分配給該頁的IP地址按照數(shù)值被排序。根據(jù)本發(fā)明的另一個方面,公開了一種計算機(jī)執(zhí)行的用于排序多個網(wǎng)際協(xié)議(IP)地址的方法,每個IP地址具有在數(shù)值范圍內(nèi)的一個數(shù)值。該方法包括將該范圍分為代表多個鄰接的子范圍的多個簇。每個子范圍包含了該范圍的基本上相同數(shù)量的數(shù)值,且每個子范圍與不同的簇關(guān)聯(lián)。該方法還包括將每個IP地址分配給與包括該IP地址的數(shù)值的子范圍關(guān)聯(lián)的簇。每個簇具有由分配給該簇的IP地址的數(shù)量定義的簇尺寸。該方法包括根據(jù)簇尺寸來排序簇。每個簇中的IP地址被分配給多個頁中的一頁。每頁具有相同的頁尺寸限制,其定義了可被分配給該頁的IP地址的最大數(shù)量。每頁具有由分配給該頁的IP地址的數(shù)量定義的頁尺寸。如果所述頁中的一頁或多個頁具有小于其頁尺寸限制的頁尺寸,該方法包括在該頁上復(fù)制分配給該頁的一個或多個IP地址以將所述頁的頁尺寸增加到其頁尺寸限制。對于每一頁,分配給該頁的IP地址按數(shù)值被排序。
根據(jù)本公開的再一個方面,公開了一種用于在第一網(wǎng)絡(luò)和第二網(wǎng)絡(luò)之間連接的網(wǎng)絡(luò)設(shè)備。該設(shè)備包括至少一個輸入,其耦合到第一網(wǎng)絡(luò),用于從第一網(wǎng)絡(luò)接收包。該包包括網(wǎng)際協(xié)議(IP)地址。該設(shè)備還包括至少一個處理器,用于確定是否允許來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)路,以及至少一個存儲設(shè)備,用于存儲指令和數(shù)據(jù)。所述數(shù)據(jù)包括多個頁,其存儲多個異常的(excepted) IP地址。每個異常的IP地址具有在一個范圍內(nèi)的數(shù)值。該范圍被分為多個鄰接的子范圍,且每頁包括一個或多個異常的IP地址,所述IP地址具有在與該頁關(guān)聯(lián)的一個或多個子范圍內(nèi)的數(shù)值。每頁具有由分配給該頁的IP地址的數(shù)量定義的頁尺寸。異常的IP地址被分配給每頁并按數(shù)值排序。所述至少一個處理器被配置為經(jīng)由指令識別來自第一網(wǎng)絡(luò)的包的IP地址,如果該IP地址是所述多個異常的IP地址中的一個則識別包括該IP地址的目標(biāo)頁,搜索目標(biāo)頁以確定該IP地址是否是目標(biāo)頁中異常的IP地址中的一個,并根據(jù)IP地址是否是目標(biāo)頁中的異常的IP地址處理來自第一網(wǎng)絡(luò)的包。該設(shè)備還包括耦合到第二網(wǎng)絡(luò)的至少一個輸出,其用于,如處理器確定允許來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)絡(luò),將來自第一網(wǎng)絡(luò)的包傳輸?shù)降诙W(wǎng)絡(luò)。根據(jù)本申請的另一方面,用于在第一網(wǎng)絡(luò)和第二網(wǎng)絡(luò)之間連接的網(wǎng)絡(luò)設(shè)備包括耦合到第一網(wǎng)絡(luò)的至少一個輸入,用于接收來自第一網(wǎng)絡(luò)的包。該包包括網(wǎng)際協(xié)議(IP)地址。該設(shè)備包括至少一個處理器,用于確定是否允許來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)絡(luò),以及至少一個存儲設(shè)備。該設(shè)備還包括存儲在存儲設(shè)備中的第一引擎。第一引擎包括多個頁,其存儲多個異常的IP地址。每個異常的IP地址具有在一個數(shù)值范圍內(nèi)的數(shù)值,且該范圍被分為多個鄰接的子范圍。每頁包括具有在與該頁關(guān)聯(lián)的一個或多個子范圍內(nèi)的數(shù)值的一個或多個異常的IP地址。每頁具有由分配給該頁的異常的IP地址定義的頁尺寸。異常的IP地址被分配給每頁并按數(shù)值排序。第一引擎還包括第一有限狀態(tài)機(jī)(FSM)。第一 FSM包括可被處理器執(zhí)行的指令以確定與包含該IP地址的子范圍關(guān)聯(lián)的頁,搜索與該包含該IP地址的子范圍關(guān)聯(lián)的頁以確定該IP地址是否是異常的IP地址,并輸出表明IP地址是否是異常的IP地址的指示。處理器還配置為通過存儲在存儲設(shè)備中的指令根據(jù)來自第一 FSM的指示處理來自第一網(wǎng)絡(luò)的包。該設(shè)備還包括耦合到第二網(wǎng)絡(luò)的至少一個輸出,用于,如果處理器通過根據(jù)來自第一 FSM的指示處理包而確定允許來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)絡(luò),將來自第一網(wǎng)絡(luò)的包傳輸?shù)降诙W(wǎng)絡(luò)??蓱?yīng)用性的其他方面將從此處提供的描述而變得明顯。在本發(fā)明內(nèi)容中的描述和特定例子僅是為了說明的目的,而不是旨在限制本公開的范圍。
此處描述的附圖僅是為了說明選定的實(shí)施例而不是所有可能的實(shí)施方式,且不旨在限制本公開的范圍。圖I是示出了根據(jù)本公開的一個方面用于排序多個IP地址的計算機(jī)執(zhí)行的方法的流程圖。圖2是將一個范圍的IP地址分為多個簇的框圖,每個簇具有該范圍的一子范圍。圖3是示出了將多個IP地址分配到多個簇的一個實(shí)施例的流程圖。圖4是示出了根據(jù)首次適應(yīng)算法(first fit algorithm)將來自簇的IP地址分配到頁的一個實(shí)施例的流程圖。
圖5是示出了根據(jù)最佳適應(yīng)算法(best fit algorithm)將來自簇的IP地址分配到頁的一個實(shí)施例的流程圖。圖6是示出了根據(jù)本公開搜索以確定IP地址是否是被分配到頁的多個IP地址中的一個的實(shí)施例的流程圖。圖7是用于排序多個IP地址的方法的示例性應(yīng)用的圖形表示。圖8是用于在兩個網(wǎng)絡(luò)之間連接并包含此處公開的方法的方面的網(wǎng)絡(luò)設(shè)備。
具體實(shí)施方式
現(xiàn)在將參考附圖詳細(xì)描述示例性實(shí)施例。提供了示例性實(shí)施例,以便本公開是完全的,且將把其范圍完全傳達(dá)給本領(lǐng)域技術(shù)人員。闡述了大量具體細(xì)節(jié),例如特定組件、設(shè)備和方法的例子以提供關(guān)于本公開的實(shí)施例的徹底理解。對本領(lǐng)域技術(shù)人員來說明顯的是,不需要使用具體細(xì)節(jié),示例性實(shí)施例可以許多不同的形式體現(xiàn),且也不應(yīng)被解釋為限制本發(fā)明的范圍。在一些示例性實(shí)施例中,沒有詳細(xì)描述公知的過程、公知的設(shè)備結(jié)構(gòu)和公知的技術(shù)。此處使用的術(shù)語僅是為了描述特定的示例性實(shí)施例,且不是限制性的。如在此使用的,單數(shù)形式“一”、“一個”和“該”可被理解為也包括復(fù)數(shù)形式,除非上下文另有清楚的說明。術(shù)語“包括”、“包含”和“具有”是包容性的,且由此指示存在所闡明的特點(diǎn)、整體、步驟、操作、元件和/或組件,但不排除存在或附加一個或多個其他特點(diǎn)、整體、步驟、操作、元件、組件和/或其組合。如在此使用的,術(shù)語“和/或”包括一個或多個列出的有關(guān)項(xiàng)目的任何和所有組合。此處描述的方法步驟、過程和操作不應(yīng)被解釋為必須要求以所討論或描述的特定順序而被執(zhí)行,除非被特別指定一執(zhí)行順序。也可理解,可使用其他的或可替代的步驟。根據(jù)本公開的一個方面,公開了一般由圖I中的標(biāo)號100指不的一種用于排序多個網(wǎng)際協(xié)議(IP)地址的方法,每個IP地址具有在一個數(shù)值范圍內(nèi)的數(shù)值。本方法包括在102將該范圍分為代表多個鄰接的子范圍的多個簇。每個子范圍基本上包含該范圍的相同數(shù)量的數(shù)值,且每個子范圍與不同的簇關(guān)聯(lián)。本方法還包括,在104將每個IP地址分配給與包括該IP地址的數(shù)值的子范圍關(guān)聯(lián)的簇。每個簇具有由分配給該簇的IP地址的數(shù)量定義的簇尺寸。在106,每個簇中的IP地址被分配給多個頁中的一頁。每頁具有頁尺寸限制,其定義了可被分配給該頁的IP地址的最大數(shù)量。每頁具有由分配給該頁的IP地址的數(shù)量定義的頁尺寸。在108,如果多個頁中的一頁具有小于其頁尺寸限制的頁尺寸,該方法包括在該頁上復(fù)制分配給該頁的至少一個IP地址,以增加該頁的頁尺寸。對于每頁來說,在110分配給該頁的IP地址按數(shù)值被排序。IP地址是網(wǎng)絡(luò)中的設(shè)備的數(shù)字標(biāo)識符。每個IP地址典型地具有一數(shù)值并被存儲為二進(jìn)制數(shù)。有多種IP地址版本,諸如IPv4和IPv6。IPv4地址是32位的數(shù)字,而IPv6地址是128位數(shù)字。IPv4地址經(jīng)常表示為人類易讀的十進(jìn)制符號,作為4個由小數(shù)點(diǎn)隔開的三位數(shù)字(例如,000. 000. 000. 000)。有時候額外的前導(dǎo)零從十進(jìn)制符號中被移除,但以上出于解釋的目的被包含。每個數(shù)字實(shí)際上由8個比特代表。一個8比特的數(shù)字可代表0至IJ 255之間的十進(jìn)制數(shù)。因此,IP地址的4個數(shù)字中的每一個可以位于0到255之間。在此公開的方法不是特定于版本的,也可被用于IP地址的任何版本。包含一組所有IP地址的范圍的尺寸是由該版本的IP地址的比特尺寸決定的。例如,IPv4地址是32比特長,導(dǎo)致了 2 A 32個可能的IP地址的范圍。類似地,IPv6地址的范圍是2 a 28個可能的IP地址。根據(jù)在此公開的方法的IP地址的范圍可以是所有可能的IP地址(例如,對于IPv4來說,是O到2 a 32-1),或者所有可能的IP地址的任何恰當(dāng)子集。
不管范圍是什么,該方法包括將范圍分為代表多個鄰接的子范圍的多個簇,其例子在圖2中示出,且將每個IP地址分配給與包括該IP地址的數(shù)值的子范圍關(guān)聯(lián)的簇。每個簇具有由分配給該簇的IP地址的數(shù)量定義的簇尺寸。子范圍的尺寸是可被放置在簇中的IP地址的數(shù)量。在圖2中,例如,具有在0到31之間(包括兩端值)的范圍的多個IP地址200被分為4個簇202,204,206和208。每個簇202,204,206和208具有8個可能的IP地址的子范圍尺寸。簇202、204、206或208的尺寸取決于該簇202、204、206或208的子范圍包含來自多個IP地址200的多少個IP地址。簇僅僅是一個集合。簇的許多可能的實(shí)施方式是可能的。根據(jù)一些實(shí)施例,簇由圖(map)、數(shù)組或列表實(shí)施。根據(jù)至少一個實(shí)施例,使用標(biāo)準(zhǔn)模板庫(STL)列表來實(shí)施簇。多個鄰接的子范圍可以以很多不同的方式被確定。如以下將更詳細(xì)地描述的,在來自多個IP地址的IP地址被填充在簇中后,IP地址將通過簇被分配給頁。每頁具有也稱為最大尺寸的頁尺寸限制,其可以IP地址的數(shù)量或比特尺寸來表示。盡管在此處頁尺寸、簇尺寸和頁尺寸限制將按照IP地址的數(shù)量來討論,將理解比特尺寸可互換地使用。例如,一個IP地址的頁尺寸限制與用于IPv4地址的32比特或用于IPv6的128比特的頁尺寸限制相同。由于頁尺寸限制,每個簇具可具有不超過頁尺寸限制的分配給其的IP地址。一種用于確定多個子范圍的技術(shù)是為每個子范圍分配相同數(shù)量的數(shù)值,其中數(shù)值的數(shù)量等于頁尺寸限制。根據(jù)這樣的劃分,沒有簇可包括多于頁尺寸限制的IP地址。這種劃分范圍的方法將對任何數(shù)量的IP地址、IP地址的任何范圍和IP地址的任何分配起作用。但是這樣的劃分會導(dǎo)致大量的簇。而且,多個IP地址可能被廣泛地遍布在范圍中且可能不會在范圍內(nèi)線性分布。因此,可能有很多簇,在這些簇的子范圍中沒有IP地址。因此,在一些實(shí)施例中,范圍可被分為盡可能少的簇,且同時避免任何簇具有大于頁尺寸限制的子范圍。有各種技術(shù),包括各種試探技術(shù),可用于確定簇的數(shù)量和子范圍的尺寸以最小化簇的數(shù)量和最大化簇的子范圍的尺寸。一種用于最小化簇的數(shù)量的技術(shù)是從一個簇開始。當(dāng)IP地址被分配給該簇時,一旦(或者如果)分配給該簇的IP地址的數(shù)量超過頁尺寸限制時,分配就停止,簇的數(shù)量翻倍(為2)且分配再次開始。一旦分配給任何簇的IP地址的數(shù)量超過頁尺寸限制,過程停止,簇的尺寸再次被翻倍。重復(fù)這個過程,直到分配給每個簇的IP地址的數(shù)量少于或等于頁尺寸限制。對于大量的IP地址,這樣的技術(shù)可需要大量的迭代和相對長的時間。另一種技術(shù)假設(shè)IP地址被相對線性地分配,并根據(jù)頁尺寸限制劃分多個地址中的IP地址的數(shù)量。因此,例如,如果頁尺寸限制是2~10,且IP地址的數(shù)量是2~16,則簇的數(shù)量是2~6。如果范圍是所有的IPv4地址,則范圍是2~32。以簇的數(shù)量(2~16)來劃分范圍(2~32)指示了每個簇具有2~26個IP地址的子范圍。根據(jù)一些實(shí)施例,該子范圍然后被遞增到下一個二次冪(即,在該例子中被遞增到2~27),且簇的數(shù)量相應(yīng)地被降低二次冪(SP,在該例子中被降低到2~25)。不管如何確定簇的初始數(shù)量,以上討論的迭代技術(shù)可被應(yīng)用以確保沒有簇具有大于頁尺寸限制的簇尺寸。圖3中示出了該過程的流程圖。在前面段落中討論的技術(shù)中,假設(shè)了線性分配。如果該假設(shè)是正確的話,通過以頁尺寸限制來劃分IP地址的數(shù)量而確定的簇數(shù)量將導(dǎo)致沒有簇具有大于該頁尺寸限制的簇尺寸。但是如果IP地址不是線性分配的,或者如果如上討論的可能簇的數(shù)量被降低到二次冪,一些簇可能具有大于頁限制尺寸的簇尺寸。因此根據(jù)一些實(shí)施例,當(dāng)任何簇的簇尺寸超過頁尺寸限制時,簇的數(shù)量被翻倍(增加了二次冪)且重新開始分配IP地址到簇。當(dāng)IP地址被分配給簇時,或當(dāng)所有的IP地址已被分配給簇時,可進(jìn)行比較。再次參考圖3,在300,過程以簇的初始數(shù)量開始。每個簇具有一個范圍的IP地址的子范圍。通過確定是否有任何IP地址沒有被分配給簇,過程在302
繼續(xù)。如果沒有,過程在304結(jié)束,且所有的IP地址已被分配給簇。但是,如果有未分配的IP地址,過程在306繼續(xù),且未分配的IP地址被分配給其子范圍包圍未分配的IP地址的簇。在308,將被分配了未被分配的IP地址的簇的簇尺寸與頁尺寸限制進(jìn)行比較。如果簇尺寸不大于頁尺寸限制,過程返回到302。如果簇的簇尺寸超過頁尺寸限制,在310簇的數(shù)量翻倍,子范圍的尺寸被減少一半,且過程返回到302。停止、將簇數(shù)量翻倍(并降低子范圍的尺寸)、且重新開始將IP地址分配到簇的過程可以被重復(fù),直到簇尺寸都小于或等于頁尺寸限制。通過使用這樣的技術(shù),并有意地從會導(dǎo)致簇尺寸大于頁尺寸限制的簇數(shù)量開始,簇的數(shù)量可被最小化。在IP地址被分配給合適的簇后,簇可被排序。簇根據(jù)簇尺寸被排序。排序可以以簇尺寸的升序或降序來進(jìn)行。另外,或者可替代地,可創(chuàng)建簇列表。簇列表包含所有的簇及其關(guān)聯(lián)數(shù)據(jù)。簇可按照簇列表里的簇尺寸被排序。每個簇中的IP地址被分配給多個頁中的一頁。頁是存儲字節(jié)的數(shù)組。每頁具有頁尺寸限制,其定義了可被分配給該頁的IP地址的最大數(shù)量,以及由分配給該頁的IP地址的數(shù)量定義的頁尺寸。頁可以多種方式被實(shí)施。通常,頁尺寸限制可以是任何合適的尺寸。但是,根據(jù)一些實(shí)施例,優(yōu)選地,頁尺寸限制是這樣的尺寸,其將導(dǎo)致頁具有足夠小的尺寸以被存儲在將使用頁的處理器的高速緩沖存儲器中。這樣優(yōu)選的頁尺寸增加了緩存局部性。存儲在處理器的高速緩沖存儲器中的數(shù)據(jù)可比遠(yuǎn)離處理器而存儲的數(shù)據(jù)更快得多地被訪問、操作等。因此,足夠小以至于頁可被整個地載入高速緩沖存儲器的頁尺寸限制,可增加頁可被搜索的速度。不同的頁可具有不同的頁尺寸限制。但是,在一些實(shí)施例中,每頁的頁尺寸限制是相同的。根據(jù)各種技術(shù),簇中的IP地址可被分配給頁。初始地,創(chuàng)建了至少一個頁。盡管簇可被簡單地一簇分配給一頁地分配,其它的技術(shù)可以是優(yōu)選的。因此,根據(jù)一些實(shí)施例,根據(jù)首次適應(yīng)算法或最佳適應(yīng)算法中的任一個,簇被分配給頁。首次適應(yīng)算法的各種實(shí)施方式是合適的,且可被用作在此公開的方法的一部分。一種示例性實(shí)施方式由圖4的流程圖400示出。當(dāng)根據(jù)首次適應(yīng)算法分配時,對于每個簇來說,現(xiàn)有的頁從第一頁開始被順序地搜索,以找到具有足夠空間以保持簇中IP地址而不會超出頁尺寸限制的第一頁。在402,開始進(jìn)行將來自每個簇的IP地址分配給頁的過程。在404,過程確定是否有其IP地址沒有被分配給頁的任何簇。如果沒有這樣的簇,在406,過程結(jié)束。如果有這樣的其IP地址沒有被分配給頁的簇,在408選擇具有未分配的IP地址的第一簇,且從第一頁開始檢查現(xiàn)有的頁。過程也可從最后一個簇或任何其他合適的簇開始。在這個過程的上下文中,第一頁可以是按照順序的第一頁、具有在頁上最多的IP地址的頁、具有在頁上最少的IP地址的頁、按照順序的最后的頁等。在410,確定簇的IP地址在獲取的頁上是否適應(yīng)。如果其適應(yīng),簇在412被分配給該頁,且過程返回到404。如果簇的IP地址在該頁上不適應(yīng),過程繼續(xù)到414以確定是否有更多現(xiàn)有的頁。如果沒有更多的頁可供檢查,創(chuàng)建新頁且在416簇的IP地址被分配該頁,且過程回到404。如果有可用的額外的頁,在418將要檢查的頁的編號增加1,且過程返回到410以確定簇的IP地址在該頁上是否適應(yīng)。最佳適應(yīng)算法的各種實(shí)施方式是合適的,且可被用作在此公開的方法的一部分。一個示例性實(shí)施方式在圖5中示出。當(dāng)根據(jù)最佳適應(yīng)算法被分配時,對于每個簇來說,搜索現(xiàn)有的頁,以確定是否存在有足夠的空間來持有簇中的IP地址而不會超出頁尺寸限制的頁。過程在502開始。在504,過程確定 是否有其IP地址沒有被分配給頁的任何簇。如果沒有這樣的簇,過程在506結(jié)束。如果有這樣的其IP地址沒有被分配給頁的簇,在508選擇具有未分配的IP地址的第一簇,并確定分配給該簇的IP地址的數(shù)量(其簇尺寸)(在圖5中被稱為X個IP地址)。在510,過程確定是否有具有X個空槽的現(xiàn)有頁??詹?有時候在此也被稱為是自由條目)的數(shù)量,是頁尺寸限制減去頁尺寸(兩者都用IP地址的數(shù)量表示),并指示還有多少個IP地址可被分配給該頁而不超過頁尺寸限制。如果存在具有X個空槽的頁,簇的IP地址在512被分配給該頁,且過程返回到504。如果沒有這樣的頁,過程在514確定是否有具有多于X個空槽的頁。如果沒有,在516創(chuàng)建新頁,簇的IP地址被分配給新頁,且過程返回到504。如果有具有多于X個空槽的頁,X在518被增加1,且過程返回到510。將簇分配到頁,不管是通過最佳適應(yīng)算法、首次適應(yīng)算法或任何其他合適的算法,會繼續(xù)直到每個簇被分配到頁。根據(jù)一個實(shí)施例,將簇的IP地址分配到頁利用了簇列表和頁列表。如上所述,簇列表包含了所有的簇及其關(guān)聯(lián)的數(shù)據(jù)項(xiàng)目。簇列表根據(jù)每個簇中的條目的數(shù)量(即,簇尺寸)被降序排列。創(chuàng)建將包含頁的頁列表,所述頁包含一個或多個簇。頁列表根據(jù)可用于每個頁的自由條目的數(shù)量(頁尺寸限制減去頁尺寸)排序。尤其地,如果使用第一最佳算法,頁列表可以根據(jù)自由條目(或空槽)的數(shù)量以降序排序。對于每個簇來說,該簇被獲取,且頁列表被搜索,以找到具有足夠的自由條目以保持該簇中的所有IP地址的頁。該搜索可根據(jù)首次適應(yīng)算法、最佳適應(yīng)算法或任何其他合適的算法。如果發(fā)現(xiàn)頁具有足夠的自由條目,簇的IP地址被分配給該頁,且頁列表被更新以反映現(xiàn)在保留在頁上的自由條目。如果頁列表根據(jù)自由條目的數(shù)量被排序,在每個簇被分配后重新排序頁列表。但是,如果沒有具有足夠自由條目的頁,分配新的頁,且將第一簇的IP地址分配給頁。頁列表被更新以指示新頁以及在該新頁上的自由條目的數(shù)量。過程對于隨后的簇重復(fù),直到所有的簇已被分配。根據(jù)一些實(shí)施例,不包括任何IP地址的所有簇包含可被分配給同樣的頁。該頁可以是頁O、空頁(null page),或其他任何合適的頁。這種給空頁的分配可加速搜索IP地址。一旦確定被搜索的IP地址位于與分配給空頁的簇關(guān)聯(lián)的子范圍內(nèi),搜索可停止,因?yàn)榭枕摬话↖P地址,且因此被搜索的IP地址不是已被分配給頁的多個IP地址的一部分。根據(jù)一些實(shí)施例,在所有的簇被分配給頁后,確定負(fù)載因子。負(fù)載因子是多個頁的頁尺寸限制的總和對多個IP地址中的IP地址的數(shù)量的比率。負(fù)載因子可被認(rèn)為是所使用的資源對所存儲的數(shù)據(jù)的比率。它代表被填充了 IP地址的頁的緊致性或效率。負(fù)載因子越低,被填充的頁就越緊致。越多的頁被用于給定數(shù)量的IP地址,負(fù)載因子就越高。類似地,更有效填充的頁,即,當(dāng)填充以IP地址時具有接近或等于頁尺寸限制的頁尺寸的頁,更有可能導(dǎo)致需要的更少的頁,且負(fù)載因子可被降低。如果利用此處公開的方法,負(fù)載因子可能會非常低。根據(jù)一些實(shí)施例,負(fù)載因子與負(fù)載因子閾值進(jìn)行比較?;诟鞣N因素,包括想要的處理速度、使用頁時系統(tǒng)中可用的存儲量、使用頁時系統(tǒng)中可用的處理能力的量等,負(fù)載因子閾值可以不同。如果負(fù)載因子超過負(fù)載因子閾值,頁不會如想要的那樣緊致。根據(jù)一些實(shí)施例,當(dāng)負(fù)載因子超過負(fù)載因子閾值時,簇的數(shù)量翻倍,由此每個子范圍的尺寸被降低一半。根據(jù)以上公開的方法,IP地址被分配給新的簇,且新簇中的IP地址被分配給頁。因?yàn)槊總€新的簇的子范圍是其之前的一半,最新的簇將具有更小的簇尺寸。在許多情況下,這將允許簇更有效地適應(yīng)于頁,降低頁中未填充的空間,并降低負(fù)載因子。如果負(fù)載因子保持高于負(fù)載因子閾值,簇的數(shù)量可再次被翻倍,且該迭代過程可繼續(xù),直到負(fù)載因子降低至IJ,或低于負(fù)因子閾值??商娲?,或者額外地,該過程可在停止前重復(fù)設(shè)定的最大迭代數(shù)量。這種最大迭代數(shù)量可能對于阻止過程重復(fù)太多次并創(chuàng)建多于所想要的簇是有用的。
在這些頁中已填充來自簇的IP地址后,一些頁也可能仍然具有剩余的自由條目。因此,如果這些頁中的一頁具有小于其頁尺寸限制的頁尺寸,該方法包括在該頁上復(fù)制分配給該頁的至少一個IP地址以增加該頁的頁尺寸。在一些實(shí)施例中,所述至少一個IP地址可在該頁上被復(fù)制,直到頁尺寸被增加到大約頁尺寸限制。這種復(fù)制IP地址以增加頁尺寸到大約頁尺寸限制有時候被稱為墊充(pad)頁。所述至少一個IP地址可以是一個IP地址,可能被重復(fù)復(fù)制,或者它可以是多個IP地址。復(fù)制的一個或多個IP地址可以是隨機(jī)選擇的或特定選擇的。例如,僅頁面中的第一個IP地址可在頁上被復(fù)制,僅中間的IP地址可被復(fù)制,IP地址可以按順序被復(fù)制、單個隨機(jī)選擇的IP地址可被復(fù)制,多個IP地址可被隨機(jī)選擇和復(fù)制等。在至少一個實(shí)施例中,所述至少一個IP地址是多個隨機(jī)選擇被復(fù)制的IP地址,直到頁尺寸是大約頁尺寸限制。該方法還包括,對于每頁,按照數(shù)值排序分配給該頁的IP地址。這種排序可使得搜索頁更容易。另外,其IP地址隨后按數(shù)值被排序的頁的墊充,可在頁被搜索時提供一些幫助。例如,如果頁具有等于頁尺寸限制的頁尺寸,頁上的數(shù)據(jù)元素(即,IP地址)的數(shù)量是已知的。該IP地址數(shù)量是頁尺寸限制。因此,在搜索中可使用查表法。頁的中點(diǎn)是頁中的已知點(diǎn)。如果頁具有1024個IP地址,不管頁上的值是什么,且不管有多少個不同的IP地址被分配給該頁,墊充頁的中點(diǎn)是第512個IP地址。另外,當(dāng)所有的頁如此被墊充且每頁的頁尺寸限制是一樣的時,每頁的中點(diǎn)是一樣的。因此,每頁的中點(diǎn),以及相應(yīng)地,高于或低于中點(diǎn)的部分的每個隨后的中點(diǎn)是頁中的已知點(diǎn)或元素。特別地,使用有時候被稱為分而治之搜索(divide and conquer search)的對分搜索,能夠沒有計算而識別作為中點(diǎn)的IP地址,可提高搜索速度。根據(jù)一些實(shí)施例,生成頁記錄。頁記錄包括所有的簇子范圍,以及該子范圍中的IP地址被分配的頁。這些數(shù)據(jù)可被安排包括在子范圍中的第一數(shù)值、子范圍中的最后一個數(shù)值和與子范圍關(guān)聯(lián)的頁的編號的元組中。但是,頁記錄不是這么受限的,且可利用指示哪個子范圍或哪幾個子范圍與每頁關(guān)聯(lián)的任何合適的方法來實(shí)施。在一些實(shí)施例中,也可創(chuàng)建一個或多個布隆過濾器(bloom filter)。布隆過濾器是捷徑。布隆過濾器可被用來在沒有實(shí)際搜索頁的情況下識別沒有位于分配給頁的多個IP地址中的IP地址。典型地為每頁創(chuàng)建單獨(dú)的布隆過濾器。布隆過濾器是具有一定數(shù)量的比特的位圖,每個比特代表特定數(shù)字。例如,布隆過濾器的第一比特代表數(shù)字O,而第256個比特代表數(shù)字255。布隆過濾器被映射到與頁關(guān)聯(lián)的IP地址的一部分,諸如代表第一^HS制數(shù)、最后十進(jìn)制數(shù)等的比特,這樣布隆過濾器中的每個比特與IP地址的一個數(shù)字關(guān)聯(lián)。每個比特可以被設(shè)為I或O。如果一比特被設(shè)為1,與頁關(guān)聯(lián)的IP地址包括該比特的數(shù)字。相反地,位圖中被設(shè)為O的比特指示在該頁上沒有IP地址包括該比特的數(shù)字。例如,如果IP地址208. 77. 188. 66是包含在一頁中的僅有的數(shù)字,用于該頁上的IP地址的第一數(shù)字的布隆過濾器的所有比特將是0,除了第209個比特(代表數(shù)字208)將被設(shè)為I。在使用時布隆過濾器可給出誤肯定(即,指示數(shù)字可能位于頁上,而實(shí)際上卻沒有),但不會是誤否定(指示數(shù)字沒有位于頁上,而實(shí)際上卻位于頁上)。繼續(xù)以上的例子,如果將被搜索的IP地址是208. 70. XXX. XXX,布隆過濾器指示該IP地址可能是與該頁關(guān)聯(lián)的一個IP地址(即使這個例子中它不是)。因此,頁仍然需要被搜索以確定地址208. 70. XXX. XXX不是分配給 該頁的IP地址。相反地,如果將被搜索的IP地址是192. XXX. XXX. XXX,僅通過觀察布隆過濾器的193個比特,布隆過濾器正確地指示了 IP地址不是與該頁關(guān)聯(lián)的IP地址中的一個。因?yàn)楸忍?93是零,沒有用192開頭的IP地址。因此,頁不需要被搜索。如可見的,根據(jù)公開的方法,使用布隆過濾器可降低確定IP地址是否存在于多個IP地址中的時間。當(dāng)大量的將被搜索的IP地址將不是以及/或者不是頁上的多個IP地址的一部分時,這種提高了的性能尤其顯著。在執(zhí)行此處公開的一個或多個方法后,包含IP地址的頁準(zhǔn)備好被搜索??墒褂弥苯铀阉黜摗⑺阉黜撚涗浺源_定在哪頁紙上搜索和/或使用布隆過濾器來確定搜索頁和/或頁記錄是否是必要的任何組合。根據(jù)一些實(shí)施例,首先搜索布隆過濾器以確定IP地址是否不是與一頁關(guān)聯(lián)的IP地址。如果布隆過濾器指示IP地址不是與一頁關(guān)聯(lián)的IP地址,不需要進(jìn)行進(jìn)一步的搜索。如果布隆過濾器指示IP地址可能是與一頁關(guān)聯(lián)的IP地址,可搜索表記錄以確定包含IP地址的子范圍與哪頁關(guān)聯(lián)。在確定這樣的頁后,頁本身被搜索以確定IP地址是否是被分配這樣的頁的IP地址中的一個。圖6示出了用于搜索以確定一 IP地址是否是多個IP地址中的一個的示例性過程600。在該例子中,使用頁記錄和空頁,但不使用布隆過濾器。在602,確定包含該IP地址的子范圍。在604搜索頁記錄以確定哪頁含有包含IP地址的子范圍。在606,確定在604被返回的頁是否是空頁。如果返回的頁是空頁,搜索在608結(jié)束,且該IP地址不是多個IP地址中的一個。如果返回的頁不是空頁,過程繼續(xù)到610,并獲取返回的頁。在612頁然后被搜索以尋找該IP地址。如果在614,該IP地址不是位于該頁上,過程在608結(jié)束,且該IP地址不是多個IP地址中的一個。如果該IP地址位于該頁上,搜索在616結(jié)束,且該IP地址是多個IP地址中的一個。根據(jù)在此討論的實(shí)施例的搜索可以是任何用于搜索數(shù)據(jù)項(xiàng)目的合適的方法。例如,搜索可以是對分搜索(有時候被稱為對分分而治之搜索)、線性搜索、內(nèi)插搜索,如在共同擁有和共同未決的美國專利申請11/591,802中描述的搜索等。另外,或者可替代地,由在此描述的方法創(chuàng)建的頁和/或頁記錄可與合適的指令結(jié)合以創(chuàng)建一種引擎,其用于確定輸入的IP地址是否包含在根據(jù)上述方法處理的多個IP地址中。該引擎包括具有分配的IP地址的頁和有限狀態(tài)機(jī)(FSM)。該引擎有時候被稱為預(yù)編譯的異常列表引擎。FSM包括頁記錄和指令,所述指令可操作以使得處理器以任何合適的方式搜索頁記錄和頁。當(dāng)IP地址被輸入到該引擎中,F(xiàn)SM搜索頁記錄以識別包含輸入的IP地址的子范圍位于哪頁上。合適的頁然后被搜索以確定該IP地址是否位于該頁上。該引擎然后輸出是或否答案,例如I或者O,指示輸入的IP地址分別是或不是多個IP地址中第一個。以上討論的一些或所有項(xiàng)目,例如布隆過濾器,也可以或可替代地包含在該引擎中。
現(xiàn)在將參考圖7描述在此描述的方法的使用的簡單化的例子。為簡單起見,一些中間的步驟沒有被示出,且僅會被描述。對于該例子,多個IP地址700將由一范圍內(nèi)的一組30個數(shù)字表示,該范圍是8比特整數(shù)的組(即,所有的數(shù)字都位于0到255之間(包含兩端值))。每個數(shù)字因此將具有8個比特的尺寸。用于該例子的頁尺寸限制是8個IP地址(或64比特)。因此,每個簇可具有不多于8個IP地址分配給它。在該例子中將使用
I.5的負(fù)載因子閾值。出于舉例的目的,該范圍被初始地劃分為僅有二個簇。每個簇具有該范圍的一半的子范圍。如上討論的,IP地址被分配給簇。但是很明顯,沒有辦法將三十個IP地址分配給兩個簇且沒有至少一個簇包括多于8個IP地址。因此,簇的數(shù)量被翻倍,且子范圍的尺寸被降低一半。此時有4個簇。如上討論的,將IP地址分配給它們。結(jié)果是具有子范圍(0-63)的第一簇被分配了 12 個 IP 地址(2,3,5,11,13,33,34,41,45,50,51,60)。第二簇具有子范圍(64-127),其被分配了 6個IP地址(65,66,82,83,84,85)。第三簇具有子范圍(128-191),其被分配了 5個IP地址(150,151,170,175,180)。最后,第三簇具有子范圍(192-255),其被分配了 7 個 IP 地址(200,205,210,225,230,235,240)。第一簇仍然包含多于8個IP地址的頁尺寸限制,且在一頁上不適應(yīng)。因此,簇的數(shù)量再次被翻倍,且子范圍的尺寸再次被降低一半。IP地址被重新分配給新的簇。結(jié)果是8個簇702-716。每個簇702-716具有32個可能的IP地址的子范圍尺寸。每個簇702-716的子范圍在圖7中由SR表示。被分配給每個簇702-716的IP地址的值也在簇中被指示。最后,對于每個簇的簇尺寸(在每個簇702-716中標(biāo)為“尺寸”)被指示。例如,第一簇702具有0到31的子范圍。分配給簇702的IP地址是(2、3、5、11和13)。因此,第一簇具有為5的簇尺寸。因?yàn)槊總€簇702-716現(xiàn)在具有小于或等于頁尺寸限制的簇尺寸,每個簇中的IP地址可被分配給頁718-724。根據(jù)簇尺寸,降序排列簇。因此,第一簇是簇704,具有為7的簇尺寸,且最后的簇是簇708,具有為0的簇尺寸。在該例子中,根據(jù)首次適應(yīng)算法來分配簇。從最大的簇(簇704)開始,搜索具有足夠空間來保持簇704的所有IP地址的頁。開始沒有頁,且因此,沒有具有用于至少7個IP地址的頁。因此,創(chuàng)建頁718,且將來自簇704的IP地址分配給它。下一個最大的簇706具有為6的簇尺寸。由于頁尺寸限制是8,且已有7個IP地址被分配給第一頁(且在此時為僅有的頁)頁718,在任何現(xiàn)有的頁上沒有足夠的空間用于簇706的IP地址。因此,創(chuàng)建第二頁720,且將來自簇706的IP地址分配給頁720。類似地,第一頁718或是第二頁720都沒有足夠的自由條目來保持下一個最大簇702的IP地址。因此,創(chuàng)建第三頁722,且將簇702的IP地址分配給它。再次地,頁718、720或722都不具有足夠的自由條目來保持簇716的4個IP地址。創(chuàng)建第四頁724,將簇716的IP地址分配給它。下一個將被分配的是簇712,具有為3的簇尺寸。第一頁和第二頁都不具有足夠的自由條目來保持簇714的IP地址。但是,第三頁722僅包含在其能保持的8個IP地址中的5個IP地址。因此,簇712的IP地址可以被并且確實(shí)被分配給第三頁722。當(dāng)分配下一個簇714時,第四頁是第一個具有足夠的自由條目來保持簇714的IP地址的頁。此時,第一頁718具有I個自由條目,第二頁具有2個自由條目,第三頁具有O個自由條目,第四頁具有I個自由條目。簇710是具有兩個IP地址的下一個最大的簇??杀3执?10中的IP地址的頁718-724中的第一個是第二頁720,將IP地址分配給它。最后的簇708沒有IP地址,且具有為0的簇尺寸。簇708因此被分配給空頁(其可以是頁零),指示其沒有包括IP地址。簇702-716中的所有IP地址現(xiàn)在已被分配給頁718-724。此時可計算負(fù)載因子。如以上討論的,負(fù)載因子是頁尺寸限制的和對多個IP地址中的IP地址(或者,可替換地但等價地,對頁尺寸的和)的比率。在這個例子中,頁尺寸限制是8。頁尺寸限制的總和因此是32。頁尺寸總和和多個IP地址700中的IP地址的數(shù)量是30。因此,負(fù)載系統(tǒng)是32/30,或I . 067。該負(fù)載因子是可接受的(即,其低于為1.5的負(fù)載因子閾值)。如以上討論的,如果負(fù)載因子高于負(fù)載因子閾值,簇的數(shù)量將再次被翻倍,且以上討論的整個過程被再次重復(fù),直到負(fù)載因子低于負(fù)載因子閾值。分配給每頁718-724的IP地址然后按照數(shù)值被排序。第一頁718和第四頁724具有小于頁尺寸限制8的頁尺寸(兩種情況下都是7)。對于每頁718、724,從被分配給該頁718、724的IP地址中選擇一隨機(jī)IP地址,并在該頁718、724上復(fù)制該IP地址。結(jié)果是4頁,726-732,每頁都具有等于頁尺寸限制8的頁尺寸。在IP地址已被分配給頁726-732后或在IP地址正被分配給頁718-724時,可創(chuàng)建頁記錄。頁記錄指示簇702-716的每個子范圍(典型地,通過開始值和結(jié)束值),以及該子范圍包含的IP地址被分配的頁。頁記錄可包括用于每個子范圍的元組,其格式為(開始值、結(jié)束值和頁的編號)。因此,用于該例子的頁記錄將是(0,31,3) ; (32,63,I) ; (64,95,2) ; (96,127,0) ; (128,159,2) ; (160,191,3) ; (192,223,4) ; (224,255,4)。現(xiàn)在可使用頁726-732和以上所討論的頁記錄以及/或?yàn)樗阉鞫鄠€IP地址而生成的引擎來搜索多個IP地址700。盡管之前是按照網(wǎng)際協(xié)議(IP)地址來討論的,此處討論的方法不是如此受限的,且可被應(yīng)用到其他類型的數(shù)據(jù)。例如,所述方法可被應(yīng)用到諸如街道地址、社保號碼、駕駛證號碼、銀行支票號碼等數(shù)據(jù)。因?yàn)楦鶕?jù)在此展示的方法,可以這樣的速度搜索非常大的IP地址集,該方法的一種使用是與網(wǎng)絡(luò)間裝置(有時候也被稱為設(shè)備)關(guān)聯(lián)。這些裝置,包括諸如防火墻的設(shè)備,可接收來自第一網(wǎng)絡(luò)的數(shù)據(jù)包,并將其傳遞到第二網(wǎng)絡(luò)。這些設(shè)備可包括用于是否允許特定包進(jìn)入到第二網(wǎng)絡(luò)的規(guī)則、策略等。例如,防火墻可位于網(wǎng)絡(luò)和因特網(wǎng)之間。防火墻可希望阻止來自和/或發(fā)往特定IP地址的包。這些IP地址可以是已知的垃圾郵件發(fā)送者、黑客、國外政府等的IP地址?;蛘撸硗?,這些設(shè)備可希望阻止所有的包,除了那些來自某些已知IP地址的包,和/或以不同方式處理來自特定IP地址的包(諸如,例如,優(yōu)先傳輸包等)因此,根據(jù)本公開的一個方面,且如在圖8中示出的,公開了一種用于在第一網(wǎng)絡(luò)802和第二網(wǎng)絡(luò)804之間連接的網(wǎng)絡(luò)設(shè)備800。設(shè)備800包括耦合到第一網(wǎng)絡(luò)802的至少一個輸入806,其用于接收來自第一網(wǎng)絡(luò)800的包的。包包括網(wǎng)際協(xié)議(IP)地址。設(shè)備800還包括至少一個處理器808,其用于確定是否允許來自第一網(wǎng)絡(luò)802的包進(jìn)入第二網(wǎng)絡(luò)804,以及至少一個存儲設(shè)備810,其用于存儲指令和數(shù)據(jù)。該數(shù)據(jù)包括存儲多個異常的IP地址的多個頁。異常的IP地址每個都具有在一范圍內(nèi)的數(shù)值。該范圍被分為多個鄰接的子范圍,且每頁包括一個或多個異常的IP地址,所述IP地址具有與該頁關(guān)聯(lián)的一個或多個子范圍內(nèi)的數(shù)值。每頁具有由分配給該頁的IP地址的數(shù)量定義的頁尺寸。異常的IP地址被分配給每頁且按數(shù)值排序。至少一個處理器808被配置為經(jīng)由指令以識別來自第一網(wǎng)絡(luò)802的包的IP地址,如果該IP地址是多個異常的IP地址中的一個則識別包括該IP地址的目標(biāo)頁,搜索該目標(biāo)頁以確定IP地址是否是目標(biāo)頁中異常的IP地址,并根據(jù)該IP地址是否是目標(biāo)頁中異常的IP地址,處理來自第一網(wǎng)絡(luò)802的包。設(shè)備800還包括耦合到第二網(wǎng)絡(luò)804的至少一個輸出812,其用于,如果處理器808確定允許來自第一網(wǎng)絡(luò)的包802進(jìn)入第二網(wǎng)絡(luò)804,將來自第一網(wǎng)絡(luò)802的包傳輸?shù)降诙W(wǎng)絡(luò)804。根據(jù)本申請的另一方面,用于在第一網(wǎng)絡(luò)802和第二網(wǎng)絡(luò)804之間連接的網(wǎng)絡(luò)設(shè)備800包括至少一個耦合到第一網(wǎng)絡(luò)802的輸入806,其用于接收來自第一網(wǎng)絡(luò)802的包。
包包括網(wǎng)際協(xié)議(IP)地址。設(shè)備800包括至少一個處理器808,其用于確定是否允許來自第一網(wǎng)絡(luò)802的包進(jìn)入第二網(wǎng)絡(luò)804,以及至少一個存儲設(shè)備810。設(shè)備800還包括存儲在存儲設(shè)備810中的第一引擎。第一引擎包括多個頁,所述頁存儲多個異常的IP地址。異常的IP地址每個都具有在一個數(shù)值范圍內(nèi)的數(shù)值,且范圍被分為多個鄰接的子范圍。每頁包括一個或多個異常的IP地址,所述IP地址具有與該頁關(guān)聯(lián)的一個或多個子范圍內(nèi)的數(shù)值。每頁具有由分配給該頁的IP地址的數(shù)量定義的頁尺寸。異常的IP地址被分配給每頁,且按數(shù)值排序。第一引擎還包括第一有限狀態(tài)機(jī)(FSM)。第一 FSM包括可被處理器808執(zhí)行的指令,以確定與包含該IP地址的子范圍關(guān)聯(lián)的頁,搜索與包含該IP地址的子范圍關(guān)聯(lián)的頁,以確定該IP地址是否是異常的IP地址,且輸出表明該IP地址是否是異常的IP地址的指示。處理器808也經(jīng)由存儲在存儲設(shè)備810中的指令被配置為根據(jù)來自第一 FSM的指示,處理來自第一網(wǎng)絡(luò)802的包。設(shè)備800還包括耦合到第二網(wǎng)絡(luò)804的至少一個輸出812,其用于,如果處理器808通過根據(jù)來自第一 FSM的指示處理包確定允許來自第一網(wǎng)絡(luò)802的包處理進(jìn)入第二網(wǎng)絡(luò)804,將來自第一網(wǎng)絡(luò)802的包傳輸?shù)降诙W(wǎng)絡(luò)804。處理器808可包括高速緩沖存儲器814。如以上討論的,高速緩沖存儲器駐留在處理器808上。當(dāng)數(shù)據(jù)存儲在高速緩沖存儲器814中時,訪問、操縱、作用于數(shù)據(jù)可發(fā)生得比當(dāng)其被存儲在單獨(dú)的存儲器例如存儲設(shè)備810中時更快得多。出于這個原因,優(yōu)選地,選擇的每頁的頁尺寸限制使得整頁適應(yīng)在高速緩沖存儲器814中。根據(jù)各種實(shí)施例,異常的IP地址可以是被允許進(jìn)入第二網(wǎng)絡(luò)、被拒絕進(jìn)入第二網(wǎng)絡(luò)和/或被特定處理的IP地址。因此,在一些實(shí)施例中,如果包的IP地址是異常的地址,包被阻止進(jìn)入第二網(wǎng)絡(luò)。在其他實(shí)施例中,如果包的IP地址是異常的地址,包被允許進(jìn)入第二網(wǎng)絡(luò)。在另外的實(shí)施例中,如果包的IP地址是異常的地址,包被特別處理,諸如被優(yōu)先、重新路由到不同的目的地(不管是在第二網(wǎng)絡(luò)內(nèi)還是在第二網(wǎng)絡(luò)外)等。如上所述,設(shè)備800可操作兩組或更多組頁和頁記錄,以及/或超過一個的引擎。例如,一個引擎可包括具有將被阻止的異常的IP地址的頁,而第二個引擎包括將被允許的異常的IP地址。也可能對于一種類型的異常的IP地址(例如,阻止的、允許的、特殊的等)有超過一個的引擎。因此第一引擎可包括已知黑客的異常的IP地址,而另一個引擎包括已知垃圾郵件發(fā)送者的異常的IP地址。盡管以上僅描述了兩個引擎,可以有超過兩個引擎。在各個實(shí)施例中,以上討論的方法的一些或全部元素可被并入到設(shè)備800或與設(shè)備800 —起使用。因此,例如,數(shù)據(jù)可包括頁記錄。處理器808可被指令配置以通過搜索頁記錄識別目標(biāo)頁。處理器808可被指令配置以通過搜索頁記錄確定包含IP地址的子范圍中沒有異常的地址。數(shù)據(jù)還可包括與沒有包含異常的地址的任何子范圍關(guān)聯(lián)的空頁。在一個不例性實(shí)施例中,設(shè)備800被用戶(有時候被稱為管理員)通過設(shè)置來利用。用戶在不是設(shè)備800的計算機(jī)上執(zhí)行以上討論的方法。應(yīng)選擇頁尺寸限制,使得整個頁將適應(yīng)于設(shè)備800的處理器808的高速緩沖存儲器814。產(chǎn)生的頁和頁記錄,或者產(chǎn)生的引擎,隨后被裝載到設(shè)備800,并被存儲在至少一個存儲設(shè)備810中??商娲?,或者另外地,如果設(shè)備800具有足夠的存儲、處理能力等,方法可在設(shè)備800本身中被執(zhí)行。當(dāng)操作時,在被允許進(jìn)入第二網(wǎng)絡(luò)前,來自第一網(wǎng)絡(luò)的包使得其IP地址被提供到引擎。如上所討論的,引擎將執(zhí)行搜索,并輸出指示以表明包的IP地址是否位于引擎的頁內(nèi)(即,其是否是異常的IP地址)。根據(jù)結(jié)果和設(shè)備800的配置,設(shè)備800可允許、阻止、特殊對待包等,可對 包采取一些其他行動(諸如掃描包、復(fù)制包等),或者將IP地址輸入到另一個引擎??商娲?,或者另外地,包的IP地址可同時被輸入到兩個或更多個引擎(即,并行處理)。為了說明和描述的目的,提供了實(shí)施例的以上描述。這不是窮盡性的,或限制本發(fā)明。特定實(shí)施例的單個元素或特征通常不是限制于該特定實(shí)施例,而是,當(dāng)適用時,即使沒有特別示出或描述,也可互換且可被用于選定的實(shí)施例。所述元素或特征也可以不同的方式改變。這樣的變化不是被認(rèn)為脫離本發(fā)明,且所有這樣的改變旨在包含在本發(fā)明的范圍 內(nèi)。
權(quán)利要求
1.一種排序多個網(wǎng)際協(xié)議(IP)地址的方法,每個IP地址具有在一個數(shù)值范圍內(nèi)的數(shù)值,該方法包括 將范圍分為代表多個鄰接的子范圍的多個簇,每個子范圍包含范圍的基本上相同數(shù)量的數(shù)值,且每個子范圍與不同的簇關(guān)聯(lián); 將每個IP地址分配到與子范圍關(guān)聯(lián)的簇,該子范圍包括所述IP地址的數(shù)值,每個簇具有由分配給該IP地址的數(shù)量定義的簇尺寸; 將每個簇中的IP地址分配給多個頁中的一頁,每頁具有頁尺寸限制,該頁尺寸限制定義了可被分配給該頁的IP地址的最大數(shù)量,且每頁具有由分配給該頁的IP地址的數(shù)量定義的頁尺寸; 如果所述頁中的一頁具有小于其頁尺寸限制的頁尺寸,在該頁上復(fù)制分配給該頁的至少一個IP地址以增加所述頁的頁尺寸;以及對于每一頁,按照數(shù)值排序分配給該頁的IP地址。
2.如權(quán)利要求I所述的方法,其中每個子范圍與一頁關(guān)聯(lián),且還包括生成指示與每個子范圍關(guān)聯(lián)的頁的頁記錄。
3.如權(quán)利要求I所述的方法,其中復(fù)制包括在所述頁上復(fù)制分配給該頁的一個或多個I P地址以將頁尺寸增加到所述頁的頁尺寸限制。
4.如權(quán)利要求I所述的方法,其中分配包括按照簇尺寸降序的順序?qū)⒚總€簇中的IP地址分配給多個頁中的一頁。
5.如權(quán)利要求I所述的方法,還包括在將每個IP地址分配到與包括所述IP地址的數(shù)值的子范圍關(guān)聯(lián)的簇之前按照數(shù)值排序IP地址。
6.如權(quán)利要求5所述的方法,其中按照數(shù)值排序IP地址包括按照數(shù)值以升序排列IP地址。
7.如權(quán)利要求I所述的方法,還包括在將每個簇中的IP地址分配到多個頁中的一頁之前,按照簇尺寸來排序簇。
8.如權(quán)利要求7所述的方法,其中給排序簇包括按照簇尺寸以降序來排序簇。
9.如權(quán)利要求I所述的方法,其中每頁具有基本上相同的頁尺寸限制。
10.如權(quán)利要求9所述的方法,還包括如果簇具有大于頁尺寸限制的簇尺寸,降低每個子范圍包含的數(shù)值的數(shù)量。
11.如權(quán)利要求10所述的方法,其中降低每個子范圍包含的數(shù)值的數(shù)量包括將數(shù)值的數(shù)量減少一半。
12.如權(quán)利要求I所述的方法,其中根據(jù)首次適應(yīng)算法和最佳適應(yīng)算法中的一個,將每個簇中的IP地址分配給多個頁中的一頁,而不使得所述頁的頁尺寸超過頁尺寸限制。
13.如權(quán)利要求I所述的方法,還包括在將每個簇中的IP地址分配給多個頁中的一頁后確定負(fù)載因子,負(fù)載因子是多個頁的頁尺寸限制的和對所述多個IP地址中的IP地址的數(shù)量的比率。
14.如權(quán)利要求13所述的方法,還包括,如果負(fù)載因子大于閾值,減少每個子范圍包含的數(shù)值的數(shù)量。
15.如權(quán)利要求I所述的方法,還包括為至少一頁生成布隆過濾器,該布隆過濾器識別沒有被分配給所述頁但是位于與所述頁關(guān)聯(lián)的子范圍內(nèi)的IP地址。
16.一種排序多個網(wǎng)際協(xié)議(IP)地址的方法,每個IP地址具有在一個數(shù)值范圍內(nèi)的數(shù)值,該方法包括 將范圍分為代表多個鄰接的子范圍的多個簇,每個子范圍包含范圍的基本上相同數(shù)量的數(shù)值,以及每個子范圍與不同的簇關(guān)聯(lián); 將每個IP地址分配給與子范圍關(guān)聯(lián)的簇,該子范圍包括所述IP地址的數(shù)值,每個簇具有由分配給該簇的IP地址的數(shù)量定義的簇尺寸; 按照簇尺寸來排序簇; 將每個簇中的IP地址分配給多個頁中的一頁,每頁具有相同的頁尺寸限制,該頁尺寸限制定義了可被分配給該頁的最大數(shù)量的IP地址,且每頁具有由分配給該頁的IP地址的數(shù)量定義的頁尺寸; 如果所述頁中的一頁或多頁具有小于其頁尺寸限制的頁尺寸,在所述頁上復(fù)制分配給該頁的一個或多個IP地址以將所述頁的頁尺寸增加至其頁尺寸限制;以及 按照數(shù)值為每頁排序分配給該頁的IP地址。
17.如權(quán)利要求16所述的方法,還包括生成指示與每個子范圍關(guān)聯(lián)的頁的頁記錄。
18.如權(quán)利要求16所述的方法,其中按照簇尺寸降序的順序?qū)⒚總€簇中的IP地址分配給多個頁中的一頁。
19.如權(quán)利要求16所述的方法,還包括在將每個IP地址分配到與包括所述IP地址的數(shù)值的子范圍關(guān)聯(lián)的簇之前,按照數(shù)值排序IP地址。
20.如權(quán)利要求16所述的方法,其中根據(jù)首次適應(yīng)算法和最佳適應(yīng)算法中的一個,將每個簇中的IP地址分配給多個頁中的一頁,而不使得所述頁的頁尺寸超過頁尺寸限制。
21.如權(quán)利要求I所述的方法,還包括,如果簇具有大于頁尺寸限制的簇尺寸,降低每個子范圍包含的數(shù)值的數(shù)量。
22.如權(quán)利要求11所述的方法,其中降低每個子范圍包含的數(shù)值的數(shù)量包括將數(shù)值的數(shù)量減少一半。
23.如權(quán)利要求I所述的方法,還包括在將每個簇中的IP地址分配到多個頁中的一頁后確定負(fù)載因子,負(fù)載因子是多個頁的頁尺寸限制的總和對所述多個IP地址中的IP地址的數(shù)量的比率。
24.如權(quán)利要求13所述的方法,還包括,如果負(fù)載因子大于閾值,降低每個子范圍包含的數(shù)值的數(shù)量。
25.如權(quán)利要求I所述的方法,還包括為至少一頁生成布隆過濾器,該布隆過濾器識別未被分配給所述頁但位于與所述頁關(guān)聯(lián)的子范圍內(nèi)的IP地址。
26.一種用于在第一網(wǎng)絡(luò)和第二網(wǎng)絡(luò)之間連接的網(wǎng)絡(luò)設(shè)備,該設(shè)備包括 至少一個輸入,其耦合到第一網(wǎng)絡(luò),用于接收來自第一網(wǎng)絡(luò)的包,所述包包括網(wǎng)際協(xié)議(IP)地址; 至少一個處理器,其用于確定是否允許來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)絡(luò); 至少一個存儲指令和數(shù)據(jù)的處理器設(shè)備,所述數(shù)據(jù)包括 多個頁,用于存儲多個異常的IP地址,異常的IP地址每個具有在一個范圍內(nèi)的數(shù)值,所述范圍被劃分為多個鄰接的子范圍,每頁包括具有在與該頁關(guān)聯(lián)的一個或多個子范圍內(nèi)的數(shù)值的一個或多個異常的IP地址,每頁具有由分配給該頁的IP地址的數(shù)量定義的頁尺寸,分配給每頁的IP地址按照數(shù)值排序; 所述至少一個處理器經(jīng)由所述指令被配置以 識別來自第一網(wǎng)絡(luò)的包的IP地址; 如果該IP地址是所述多個異常的IP地址中的一個,識別將包括該IP地址的目標(biāo)頁; 搜索目標(biāo)頁以確定該IP地址是否是目標(biāo)頁中異常的IP地址中的一個;以及 根據(jù)該IP地址是否是目標(biāo)頁中的異常的IP地址,處理來自第一網(wǎng)絡(luò)的包;以及 至少一個輸出,其耦合到第二網(wǎng)絡(luò),用于,如果處理器確定允許來自第一網(wǎng)絡(luò)的包進(jìn)入 第二網(wǎng)絡(luò),將來自第一網(wǎng)絡(luò)的包傳輸?shù)降诙W(wǎng)絡(luò)。
27.如權(quán)利要求26所述的設(shè)備,其中所述數(shù)據(jù)包括指示與每個子范圍關(guān)聯(lián)的頁的頁記錄。
28.如權(quán)利要求27所述的設(shè)備,其中至少一個處理器經(jīng)由所述指令被配置為通過搜索頁記錄以確定與包含該IP地址的子范圍關(guān)聯(lián)的頁,來識別目標(biāo)頁。
29.如權(quán)利要求28所述的設(shè)備,其中至少一個處理器經(jīng)由所述指令被配置為通過搜索頁記錄確定在包含IP地址的子范圍中沒有異常的地址。
30.如權(quán)利要求28所述的設(shè)備,其中所述數(shù)據(jù)包括與沒有包含異常的地址的任何子范圍關(guān)聯(lián)的空頁。
31.如權(quán)利要求30所述的設(shè)備,其中,至少一個處理器經(jīng)由所述指令被配置為對于不包含任何異常的IP地址的任何子范圍識別空頁。
32.如權(quán)利要求31所述的設(shè)備,其中根據(jù)IP地址是否是目標(biāo)頁中的異常的IP地址處理來自第一網(wǎng)絡(luò)的包包括,如果IP地址不是目標(biāo)頁中的異常的IP地址,或如果處理器識別了空頁,允許來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)絡(luò)。
33.如權(quán)利要求26所述的設(shè)備,其中根據(jù)IP地址是否是目標(biāo)頁中的異常的IP地址處理來自第一網(wǎng)絡(luò)的包包括,如果IP地址不是目標(biāo)頁中的異常的IP地址,阻止來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)絡(luò)。
34.如權(quán)利要求26所述的設(shè)備,其中根據(jù)IP地址是否是目標(biāo)頁中的異常的IP地址處理來自第一網(wǎng)絡(luò)的包包括,如果IP地址不是目標(biāo)頁中的異常的IP地址,允許來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)絡(luò)。
35.如權(quán)利要求26所述的設(shè)備,其中異常的IP地址包括多個允許的IP地址和多個被阻止的IP地址,且根據(jù)IP地址是否是目標(biāo)頁中的異常的IP地址處理來自第一網(wǎng)絡(luò)的包包括,如果IP地址不是目標(biāo)頁中的允許的IP地址則允許來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)絡(luò),且如果IP地址是目標(biāo)網(wǎng)絡(luò)中被阻止的IP地址則阻止來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)絡(luò),且至少一個處理器經(jīng)由所述指令被配置為存儲多個異常的IP地址。
36.一種用于在第一網(wǎng)絡(luò)和第二網(wǎng)絡(luò)之間連接的網(wǎng)絡(luò)設(shè)備,包括 至少一個輸入,其耦合到第一網(wǎng)絡(luò),用于接收來自第一網(wǎng)絡(luò)的包,所述包包括網(wǎng)際協(xié)議(IP)地址; 至少一個處理器,其用于確定是否允許來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)絡(luò); 至少一個存儲器設(shè)備; 存儲在存儲器設(shè)備中的第一引擎,第一引擎包括存儲多個異常的IP地址的多個頁,每個異常的IP地址具有在一個數(shù)值范圍內(nèi)的數(shù)值,該范圍被分為多個鄰接的子范圍,每頁包括一個或多個異常的、具有在與該頁關(guān)聯(lián)的一個或多個子范圍內(nèi)的數(shù)值的IP地址,每頁具有由分配給該頁的異常的IP地址的數(shù)量定義的頁尺寸,分配給該頁的異常的IP地址按照數(shù)值排序;以及 第一有限狀態(tài)機(jī)(FSM),該第一 FMS包括指令,所述指令可被處理器執(zhí)行以確定與包括該IP地址的子范圍關(guān)聯(lián)的頁,搜索與包括該IP地址的子范圍關(guān)聯(lián)的頁以確定該IP地址是否是異常的IP地址,并輸出表明該IP地址是否是異常的IP地址的指示; 處理器經(jīng)由存儲在存儲設(shè)備中的指令被配置為根據(jù)來自第一 FSM的指示處理來自第一網(wǎng)絡(luò)的包;以及 至少一個輸出,其耦合到第二網(wǎng)絡(luò),用于,如果處理器通過根據(jù)來自第一 FSM的指示處理包而確定允許來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)絡(luò),將來自第一網(wǎng)絡(luò)的包傳輸?shù)降诙W(wǎng)絡(luò)。
37.如權(quán)利要求36所述的設(shè)備,還包括存儲在存儲設(shè)備中的第二引擎,第二引擎包括存儲多個額外的異常的IP地址的多個額外的頁,額外的異常的IP地址每個具有在一個數(shù)值范圍內(nèi)的數(shù)值,該范圍被分為多個鄰接的子范圍,每頁包括具有在與該頁關(guān)聯(lián)的一個或多個子范圍內(nèi)的數(shù)值的一個或多個額外的異常的IP地址,每頁具有由分配給該頁的額外的異常的IP地址的數(shù)量定義的頁尺寸,分配給每頁的額外的異常的IP地址按照數(shù)值排序;以及 第二FSM,第二FSM包括指令,所述指令可被處理器執(zhí)行以確定與包括該IP地址的子范圍關(guān)聯(lián)的額外的頁,搜索與包含該IP地址的子范圍關(guān)聯(lián)的頁以確定該IP地址是否是額外的異常的IP地址,并輸出表明該IP地址是否是額外的異常的IP地址的指示; 處理還經(jīng)由存儲在存儲設(shè)備中的指令被配置為根據(jù)來自第二 FSM的指示,處理來自第一網(wǎng)絡(luò)的包;以及 至少一個輸出,其耦合到第二網(wǎng)絡(luò),用于,如果處理器通過根據(jù)來自第一 FSM的指示處理包而確定允許來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)絡(luò),將來自第一網(wǎng)絡(luò)的包傳輸?shù)降诙W(wǎng)絡(luò)。
38.如權(quán)利要求36的設(shè)備,其中根據(jù)來自FSM的指示處理來自第一網(wǎng)絡(luò)的包包括,當(dāng)來自第一 FSM的指示表明IP地址是異常的IP地址時,確定阻止來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)絡(luò)。
39.如權(quán)利要求37所述的設(shè)備,其中根據(jù)來自第二FSM的指示處理來自第一網(wǎng)絡(luò)的包包括,當(dāng)來自第二 FSM的指示表明該IP地址是額外的異常的IP地址時,確定允許來自第一網(wǎng)絡(luò)的包進(jìn)入到第二網(wǎng)絡(luò)。
40.如權(quán)利要求39的設(shè)備,其中根據(jù)來自第一FSM的指示處理來自第一網(wǎng)絡(luò)的包包括,當(dāng)來自第一 FSM的指示表明該IP地址是異常的IP地址時,確定阻止來自第一網(wǎng)絡(luò)的包進(jìn)入第二網(wǎng)絡(luò)。
全文摘要
公開了一種用于排序多個網(wǎng)際協(xié)議(IP)地址的計算機(jī)執(zhí)行的方法。該方法包括將一個范圍內(nèi)的IP地址分為代表多個鄰接的子范圍的多個簇,將每個IP地址分配給與包括該IP地址的子范圍關(guān)聯(lián)的簇,以及將每個簇中的IP地址分配給多個頁中的一頁。如果多個頁中的一頁具有小于頁尺寸限制的尺寸,該方法包括在該頁上復(fù)制分配給該頁的至少一個IP地址。對于每一頁,分配給該頁的IP地址按數(shù)值被排序。還公開了一種包含該方法的方面的網(wǎng)絡(luò)設(shè)備。
文檔編號G06F15/177GK102656580SQ201080027447
公開日2012年9月5日 申請日期2010年4月19日 優(yōu)先權(quán)日2009年4月21日
發(fā)明者D·梅斯塔斯 申請人:技術(shù)衛(wèi)士安全有限責(zé)任公司