專利名稱:一種基于hash表實(shí)現(xiàn)的帶掩碼五元組規(guī)則的匹配方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)處理領(lǐng)域,具體涉及一種基于hash表實(shí)現(xiàn)的帶掩碼五元組 規(guī)則的匹配方法。
背景技術(shù):
在網(wǎng)絡(luò)報(bào)文分類系統(tǒng)中,很多系統(tǒng)是把報(bào)文的五元組(協(xié)議,源ip,目的ip,源端 口,目的端口)作為分類的規(guī)則。五元組規(guī)則可能是精確的,要求每一項(xiàng)都要精確比對(duì),比 如一個(gè)規(guī)則的精確五元組(tcp,10. 0. 0. 1,10. 0. 0. 2,80,1234)指定了一個(gè)特定tcp連接, 每個(gè)報(bào)文都要和它精確比對(duì)。五元組規(guī)則也可能包含掩碼,被掩碼掩掉的部分是不需要比 對(duì)的,比如一個(gè)規(guī)則的帶掩碼的五元組(tcp, 10. 0. 0.1,10. 0. 0.χ,80, χ)指定了一個(gè)網(wǎng)段 10. 0. 0. X內(nèi)所有的tcp連接,每個(gè)報(bào)文和該規(guī)則比對(duì)時(shí),不需要考慮X的值。一般對(duì)少量的帶掩碼規(guī)則,需要使用team芯片實(shí)現(xiàn);對(duì)大量的精確規(guī)則,需要使 用hash表實(shí)現(xiàn)。在某些系統(tǒng)上,需要有大量的五元組規(guī)則,team芯片受限于容量大小,無法支持, 必須采用hash表實(shí)現(xiàn)。但是,采用hash表結(jié)構(gòu)存儲(chǔ)五元組規(guī)則,當(dāng)五元組規(guī)則帶掩碼時(shí), 需要把掩碼規(guī)則擴(kuò)展成精確規(guī)則,比如對(duì)包含掩碼的一條規(guī)則,10. 0. 0. χ的網(wǎng)段要擴(kuò)展成 10. 0. 0. 0,10. 0. 0. 1,…,10. 0. 0. 255共256條精確規(guī)則,這會(huì)導(dǎo)致規(guī)則表容量迅速擴(kuò)大,帶 來存儲(chǔ)資源的巨大浪費(fèi)。在一般應(yīng)用系統(tǒng)中,帶掩碼的五元組規(guī)則的掩碼位置不是隨機(jī)的,往往比較固定, 也就是說掩碼格式不多,比如在某真對(duì)局域網(wǎng)報(bào)文分類的系統(tǒng)中,只有ip的第四個(gè)字段會(huì) 帶掩碼,也就是說,規(guī)則格式只有下列幾種1. H% IS IjllJ (protocol, sipl. sip2. sip3. sip4, dipl. dip2. dip3. dip4, sport, dport)2. ill ip ^1 (protocol, sipl. sip2. sip3. x, dipl. dip2. dip3. dip4, sport, dport)3.目的 ip 網(wǎng)段掩碼(protocol, sipl. sip2. sip3. sip4, dipl. dip2. dip3. x, sport, dport)4. ill 目 ip ^1 (protocol, sipl. sip2. sip3. x, dipl. dip2. dip3. x, sport, dport)
發(fā)明內(nèi)容
本發(fā)明目的是提供一種方法解決hash表存儲(chǔ)五元組規(guī)則是規(guī)則表過大的問題。一種基于hash表實(shí)現(xiàn)的帶掩碼五元組規(guī)則的匹配方法,步驟如下A、依次讀取每條掩碼規(guī)則,修改掩碼規(guī)則,將掩碼屏蔽的字段設(shè)置為特定值,通過 hash運(yùn)算把新掩碼規(guī)則存儲(chǔ)到hash表中;B、從輸入報(bào)文中提取要比對(duì)的五元組;
C、將五元組輸入掩碼計(jì)算模塊,對(duì)系統(tǒng)需要支持的每種掩碼規(guī)則,分別計(jì)算出一 個(gè)新的五元組;D、依次循環(huán),用每個(gè)計(jì)算出的新五元組查找hash表,若找到,則匹配該規(guī)則,若掩 碼計(jì)算模塊計(jì)算出的所有的掩碼五元組,都在hash表中找不到對(duì)應(yīng)規(guī)則,則該報(bào)文不匹配 任何規(guī)則。本發(fā)明的一種優(yōu)選技術(shù)方案在于步驟A中掩碼的屏蔽字段設(shè)置的特定值可以為 O0本發(fā)明的用計(jì)算資源代替存儲(chǔ)資源完成系統(tǒng)功能,雖然增加了多次匹配的計(jì)算 量,但是對(duì)目前的多核cpu或?qū)S眯酒瑏碚f,計(jì)算資源是足夠的,用多余的計(jì)算資源避免稀 缺的存儲(chǔ)資源浪費(fèi),可以使整個(gè)系統(tǒng)達(dá)到應(yīng)用要求。
圖1是本發(fā)明實(shí)現(xiàn)原理圖
具體實(shí)施例方式本發(fā)明與一般使用hash表的方法不同,在創(chuàng)建hash表時(shí),把帶掩碼的規(guī)則中掩掉 的不關(guān)心字段設(shè)置為特定值(比如0),存入hash表。在根據(jù)hash表查找之前,增加了一個(gè) 掩碼計(jì)算模塊,該模塊對(duì)每一個(gè)從報(bào)文中提取出的要到hash表中比對(duì)規(guī)則的五元組,先按 照系統(tǒng)預(yù)設(shè)的每種掩碼格式修改五元組,再拿每個(gè)修改后的五元組到hash表中查找。實(shí)現(xiàn)方法和過程如下(1)掩碼規(guī)則存入hash表依次讀取每條掩碼規(guī)則,修改掩碼規(guī)則,把掩掉的不關(guān)心字段設(shè)置為預(yù)設(shè)置,通過 hash運(yùn)算把該規(guī)則存到hash表中。(2)從輸入報(bào)文中提取要比對(duì)的五元組(3)計(jì)算掩碼后的五元組把報(bào)文五元組輸入掩碼計(jì)算模塊,對(duì)系統(tǒng)需要支持的每種掩碼規(guī)則格式,計(jì)算出 一個(gè)新的五元組。(4)查找 hash 表依次循環(huán),用每個(gè)計(jì)算出的掩碼五元組查找hash表,如果找到,則該報(bào)文匹配上 了該五元組規(guī)則,如果掩碼計(jì)算模塊計(jì)算出的所有的掩碼五元組,都在hash表中找不到對(duì) 應(yīng)規(guī)則,則該報(bào)文不匹配任何規(guī)則。
權(quán)利要求
1.一種基于hash表實(shí)現(xiàn)的帶掩碼五元組規(guī)則的匹配方法,其特征在于步驟如下A、依次讀取每條掩碼規(guī)則,修改掩碼規(guī)則,將掩碼屏蔽的字段設(shè)置為特定值,通過hash 運(yùn)算把新掩碼規(guī)則存儲(chǔ)到hash表中;B、從輸入報(bào)文中提取要比對(duì)的五元組;C、將五元組輸入掩碼計(jì)算模塊,對(duì)系統(tǒng)需要支持的每種掩碼規(guī)則,分別計(jì)算出一個(gè)新 的五元組;D、依次循環(huán),用每個(gè)計(jì)算出的新五元組查找hash表,若找到,則匹配該規(guī)則,若掩碼計(jì) 算模塊計(jì)算出的所有的掩碼五元組,都在hash表中找不到對(duì)應(yīng)規(guī)則,則該報(bào)文不匹配任何 規(guī)則。
2.如權(quán)利要求1所述一種基于hash表實(shí)現(xiàn)的帶掩碼五元組規(guī)則的匹配方法,其特征在 于所述A步驟中掩碼的屏蔽字段設(shè)置的特定值可以為0。
全文摘要
本發(fā)明提供了一種基于hash表實(shí)現(xiàn)的帶掩碼五元組規(guī)則的匹配方法。過程是不擴(kuò)展掩碼規(guī)則,而是把掩碼規(guī)則直接存入hash表,從輸入報(bào)文中提取要比對(duì)的五元組后,對(duì)每種掩碼格式分別計(jì)算掩碼后的五元組,用新的五元組查找hash表。本發(fā)明用計(jì)算資源代替存儲(chǔ)資源完成系統(tǒng)功能,雖然增加了多次匹配的計(jì)算量,但是對(duì)目前的多核cpu或?qū)S眯酒瑏碚f,計(jì)算資源是足夠的,用多余的計(jì)算資源避免稀缺的存儲(chǔ)資源浪費(fèi),可以使整個(gè)系統(tǒng)達(dá)到應(yīng)用要求。
文檔編號(hào)H04L29/06GK102111331SQ20101061176
公開日2011年6月29日 申請(qǐng)日期2010年12月17日 優(yōu)先權(quán)日2010年12月17日
發(fā)明者劉興奎, 劉朝輝, 劉燦, 張英文, 李鋒偉, 李靜 申請(qǐng)人:曙光信息產(chǎn)業(yè)(北京)有限公司