本申請(qǐng)涉及網(wǎng)絡(luò)安全領(lǐng)域,特別涉及一種數(shù)據(jù)包過(guò)濾方法及裝置。
背景技術(shù):
在網(wǎng)絡(luò)安全領(lǐng)域,包過(guò)濾規(guī)則是用戶配置的對(duì)進(jìn)出網(wǎng)絡(luò)的數(shù)據(jù)包進(jìn)行過(guò)濾的規(guī)則,通常由源IP地址、目的IP地址、端口號(hào)、協(xié)議等字段組成。網(wǎng)絡(luò)設(shè)備根據(jù)配置的不同的包過(guò)濾規(guī)則而采取不同的過(guò)濾策略。為了使網(wǎng)絡(luò)設(shè)備能夠快速地根據(jù)包過(guò)濾規(guī)則匹配數(shù)據(jù)包,通常需要將包過(guò)濾規(guī)則進(jìn)行預(yù)處理。網(wǎng)絡(luò)設(shè)備根據(jù)預(yù)處理后的包過(guò)濾規(guī)則匹配接收到的數(shù)據(jù)包。
由于包過(guò)濾規(guī)則是多個(gè)字段組成的一個(gè)多維數(shù)據(jù),在預(yù)處理的過(guò)程中可能會(huì)拆分其中的一些字段,從而導(dǎo)致包過(guò)濾規(guī)則數(shù)量的增加,在這種情況下,網(wǎng)絡(luò)設(shè)備在接收到數(shù)據(jù)包后,會(huì)根據(jù)每一條包過(guò)濾規(guī)則依次去匹配數(shù)據(jù)包,直到匹配成功??梢?jiàn),包過(guò)濾規(guī)則的數(shù)量增加后,會(huì)導(dǎo)致網(wǎng)絡(luò)設(shè)備在根據(jù)包過(guò)濾規(guī)則匹配數(shù)據(jù)包的工作量增加,整個(gè)過(guò)程的匹配效率下降。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請(qǐng)?zhí)峁┮环N數(shù)據(jù)包過(guò)濾方法及裝置,用以解決現(xiàn)有技術(shù)在對(duì)包過(guò)濾規(guī)則預(yù)處理的過(guò)程中因?yàn)榘^(guò)濾規(guī)則的數(shù)量增加,導(dǎo)致匹配效率下降的問(wèn)題。
具體地,本申請(qǐng)是通過(guò)如下技術(shù)方案實(shí)現(xiàn)的:
一種數(shù)據(jù)包過(guò)濾方法,應(yīng)用于網(wǎng)絡(luò)設(shè)備,所述網(wǎng)絡(luò)設(shè)備預(yù)配置了由若干個(gè)預(yù)設(shè)字段構(gòu)成的若干條包過(guò)濾規(guī)則,包括:
將所述若干條包過(guò)濾規(guī)則劃分為對(duì)應(yīng)于各預(yù)設(shè)字段的若干條分組規(guī)則;其中,各分組規(guī)則分別對(duì)應(yīng)不同的預(yù)設(shè)字段;各分組規(guī)則由與其對(duì)應(yīng)的預(yù)設(shè)字段在所述若干條包過(guò)濾規(guī)則中對(duì)應(yīng)的字段取值構(gòu)成;
提取接收到的目標(biāo)數(shù)據(jù)包對(duì)應(yīng)于各預(yù)設(shè)字段的字段取值;
將提取到的各字段取值分別與其對(duì)應(yīng)的分組規(guī)則進(jìn)行并行匹配;
計(jì)算各字段取值與其對(duì)應(yīng)的分組規(guī)則的匹配結(jié)果的交集,基于計(jì)算出的所述交集確定該目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則,并基于匹配到的該包過(guò)濾規(guī)則對(duì)應(yīng)的包過(guò)濾策略針對(duì)該目標(biāo)數(shù)據(jù)包執(zhí)行包過(guò)濾處理。
在所述數(shù)據(jù)包過(guò)濾方法中,所述將所述若干條包過(guò)濾規(guī)則劃分為對(duì)應(yīng)于各預(yù)設(shè)字段的若干條分組規(guī)則,包括:
將各預(yù)設(shè)字段依次選定為目標(biāo)字段;
分別提取各包過(guò)濾規(guī)則對(duì)應(yīng)于所述目標(biāo)字段的字段取值;
基于提取出的各包過(guò)濾規(guī)則對(duì)應(yīng)于所述目標(biāo)字段的字段取值,以及與該字段取值對(duì)應(yīng)的包過(guò)濾規(guī)則標(biāo)識(shí),創(chuàng)建對(duì)應(yīng)于該目標(biāo)字段的分組規(guī)則。
在所述數(shù)據(jù)包過(guò)濾方法中,還包括:
基于預(yù)設(shè)的算法分別對(duì)各分組規(guī)則進(jìn)行處理,使得處理后的分組規(guī)則更適合與提取到的各字段取值進(jìn)行匹配。
在所述數(shù)據(jù)包過(guò)濾方法中,還包括:
當(dāng)各預(yù)設(shè)字段中存在相關(guān)的多個(gè)預(yù)設(shè)字段,將為該多個(gè)預(yù)設(shè)字段分別創(chuàng)建的分組規(guī)則進(jìn)行合并;以及,
當(dāng)創(chuàng)建的任一分組規(guī)則中包括多個(gè)相同的字段取值,則將該多個(gè)字段取值所對(duì)應(yīng)的包過(guò)濾規(guī)則標(biāo)識(shí)進(jìn)行合并。
在所述數(shù)據(jù)包過(guò)濾方法中,各分組規(guī)則分別預(yù)配置了不同的匹配線程;
所述將提取到的各字段取值分別與其對(duì)應(yīng)的分組規(guī)則進(jìn)行并行匹配,包括:
將提取到的各字段取值分別提交至為與其對(duì)應(yīng)的分組規(guī)則預(yù)配置的匹配線程,由該匹配線程將接收到的字段取值與其對(duì)應(yīng)的分組規(guī)則中記錄的各字段取值分別進(jìn)行匹配;其中,各匹配線程為各字段取值分別創(chuàng)建了對(duì)應(yīng)的bitmap表;該bitmap表中包括若干個(gè)用于記錄匹配結(jié)果的bit位;每個(gè)bit位分別與所述分組規(guī)則中記錄的包過(guò)濾規(guī)則的標(biāo)識(shí)相對(duì)應(yīng);
各匹配線程將提取到的各字段取值與其對(duì)應(yīng)的分組規(guī)則中記錄的各字段取值的匹配結(jié)果,記錄至所述bitmap表中對(duì)應(yīng)的bit位。
在所述數(shù)據(jù)包過(guò)濾方法中,所述bitmap表中的bit位取值為1時(shí),表示與該bit位對(duì)應(yīng)的包過(guò)濾規(guī)則匹配;
所述計(jì)算各字段取值與其對(duì)應(yīng)的分組規(guī)則的匹配結(jié)果的交集,基于計(jì)算出的所述交集確定該目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則,包括:
將與各字段取值對(duì)應(yīng)的bitmap表進(jìn)行按位與運(yùn)算;其中,所述bitmap表中的bit位的排列順序?qū)?yīng)于所述包過(guò)濾規(guī)則的優(yōu)先級(jí)順序;
將按位與運(yùn)算后第一個(gè)取值為1的bit位對(duì)應(yīng)的包過(guò)濾規(guī)則確定為所述目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則。
一種數(shù)據(jù)包過(guò)濾裝置,應(yīng)用于網(wǎng)絡(luò)設(shè)備,所述網(wǎng)絡(luò)設(shè)備預(yù)配置了由若干個(gè)預(yù)設(shè)字段構(gòu)成的若干條包過(guò)濾規(guī)則,包括:
劃分單元,用于將所述若干條包過(guò)濾規(guī)則劃分為對(duì)應(yīng)于各預(yù)設(shè)字段的若干條分組規(guī)則;其中,各分組規(guī)則分別對(duì)應(yīng)不同的預(yù)設(shè)字段;各分組規(guī)則由與其對(duì)應(yīng)的預(yù)設(shè)字段在所述若干條包過(guò)濾規(guī)則中對(duì)應(yīng)的字段取值構(gòu)成;
提取單元,用于提取接收到的目標(biāo)數(shù)據(jù)包對(duì)應(yīng)于各預(yù)設(shè)字段的字段取值;
匹配單元,用于將提取到的各字段取值分別與其對(duì)應(yīng)的分組規(guī)則進(jìn)行并行匹配;
計(jì)算單元,用于計(jì)算各字段取值與其對(duì)應(yīng)的分組規(guī)則的匹配結(jié)果的交集,基于計(jì)算出的所述交集確定該目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則,并基于匹配到的該包過(guò)濾規(guī)則對(duì)應(yīng)的包過(guò)濾策略針對(duì)該目標(biāo)數(shù)據(jù)包執(zhí)行包過(guò)濾處理。
在所述數(shù)據(jù)包過(guò)濾裝置中,所述劃分單元,進(jìn)一步用于:
將各預(yù)設(shè)字段依次選定為目標(biāo)字段;
分別提取各包過(guò)濾規(guī)則對(duì)應(yīng)于所述目標(biāo)字段的字段取值;
基于提取出的各包過(guò)濾規(guī)則對(duì)應(yīng)于所述目標(biāo)字段的字段取值,以及與該字段取值對(duì)應(yīng)的包過(guò)濾規(guī)則標(biāo)識(shí),創(chuàng)建對(duì)應(yīng)于該目標(biāo)字段的分組規(guī)則。
在所述數(shù)據(jù)包過(guò)濾裝置中,所述裝置還包括:
處理單元,用于基于預(yù)設(shè)的算法分別對(duì)各分組規(guī)則進(jìn)行處理,使得處理后的分組規(guī)則更適合與提取到的各字段取值進(jìn)行匹配。
在所述數(shù)據(jù)包過(guò)濾裝置中,其特征在于,所述裝置還包括:
合并單元,用于當(dāng)各預(yù)設(shè)字段中存在相關(guān)的多個(gè)預(yù)設(shè)字段,將為該多個(gè)預(yù)設(shè)字段分別創(chuàng)建的分組規(guī)則進(jìn)行合并;以及,
當(dāng)創(chuàng)建的任一分組規(guī)則中包括多個(gè)相同的字段取值,則將該多個(gè)字段取值所對(duì)應(yīng)的包過(guò)濾規(guī)則標(biāo)識(shí)進(jìn)行合并。
在所述數(shù)據(jù)包過(guò)濾裝置中,各分組規(guī)則分別預(yù)配置了不同的匹配線程;所述匹配單元,進(jìn)一步用于:
將提取到的各字段取值分別提交至為與其對(duì)應(yīng)的分組規(guī)則預(yù)配置的匹配線程,由該匹配線程將接收到的字段取值與其對(duì)應(yīng)的分組規(guī)則中記錄的各字段取值分別進(jìn)行匹配;其中,各匹配線程為各字段取值分別創(chuàng)建了對(duì)應(yīng)的bitmap表;該bitmap表中包括若干個(gè)用于記錄匹配結(jié)果的bit位;每個(gè)bit位分別與所述分組規(guī)則中記錄的包過(guò)濾規(guī)則的標(biāo)識(shí)相對(duì)應(yīng);
各匹配線程將提取到的各字段取值與其對(duì)應(yīng)的分組規(guī)則中記錄的各字段取值的匹配結(jié)果,記錄至所述bitmap表中對(duì)應(yīng)的bit位。
在所述數(shù)據(jù)包過(guò)濾裝置中,所述bitmap表中的bit位取值為1時(shí),表示與該bit位對(duì)應(yīng)的包過(guò)濾規(guī)則匹配;所述計(jì)算單元,進(jìn)一步用于:
將與各字段取值對(duì)應(yīng)的bitmap表進(jìn)行按位與運(yùn)算;其中,所述bitmap表中的bit位的排列順序?qū)?yīng)于所述包過(guò)濾規(guī)則的優(yōu)先級(jí)順序;
將按位與運(yùn)算后第一個(gè)取值為1的bit位對(duì)應(yīng)的包過(guò)濾規(guī)則確定為所述目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則。
在本申請(qǐng)實(shí)施例中,網(wǎng)絡(luò)設(shè)備預(yù)配置了由若干個(gè)預(yù)設(shè)字段構(gòu)成的若干條包過(guò)濾規(guī)則,將所述若干條包過(guò)濾規(guī)則劃分為對(duì)應(yīng)于各預(yù)設(shè)字段的若干條分組規(guī)則;其中,各分組規(guī)則分別對(duì)應(yīng)不同的預(yù)設(shè)字段;各分組規(guī)則由與其對(duì)應(yīng)的預(yù)設(shè)字段在所述若干條包過(guò)濾規(guī)則中對(duì)應(yīng)的字段取值構(gòu)成;網(wǎng)絡(luò)設(shè)備提取接收到的目標(biāo)數(shù)據(jù)包對(duì)應(yīng)于各預(yù)設(shè)字段的字段取值,并將提取到的各字段取值分別與其對(duì)應(yīng)的分組規(guī)則進(jìn)行并行匹配;然后計(jì)算各字段取值與其對(duì)應(yīng)的分組規(guī)則的匹配結(jié)果的交集,基于計(jì)算出的所述交集確定該目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則,并基于匹配到的該包過(guò)濾規(guī)則對(duì)應(yīng)的包過(guò)濾策略針對(duì)該目標(biāo)數(shù)據(jù)包執(zhí)行包過(guò)濾處理。
由于在本申請(qǐng)中,網(wǎng)絡(luò)設(shè)備將預(yù)配置的若干條包過(guò)濾規(guī)則劃分為對(duì)應(yīng)于各預(yù)設(shè)字段的若干條分組規(guī)則,然后根據(jù)若干條分組規(guī)則并行地對(duì)接收到的目標(biāo)數(shù)據(jù)報(bào)文對(duì)應(yīng)于各預(yù)設(shè)字段的字段取值進(jìn)行匹配,可以有效地提高匹配效率。
附圖說(shuō)明
圖1是本申請(qǐng)示出的一種數(shù)據(jù)包過(guò)濾方法的流程圖;
圖2是本申請(qǐng)示出的一種數(shù)據(jù)包并行過(guò)濾的示意圖;
圖3是本申請(qǐng)示出的一種bitmap表的示意圖;
圖4是本申請(qǐng)示出的一種數(shù)據(jù)包過(guò)濾裝置的實(shí)施例框圖;
圖5是本申請(qǐng)示出的一種數(shù)據(jù)包過(guò)濾裝置的硬件結(jié)構(gòu)圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實(shí)施例中的技術(shù)方案,并使本發(fā)明實(shí)施例的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對(duì)現(xiàn)有技術(shù)方案和本發(fā)明實(shí)施例中的技術(shù)方案作進(jìn)一步詳細(xì)的說(shuō)明。
包過(guò)濾規(guī)則通常由源IP地址、目的IP地址、端口號(hào)、協(xié)議等字段組成,網(wǎng)絡(luò)設(shè)備根據(jù)用戶預(yù)配置的包過(guò)濾規(guī)則對(duì)進(jìn)出網(wǎng)絡(luò)的數(shù)據(jù)包進(jìn)行過(guò)濾。為了使數(shù)據(jù)包過(guò)濾的效率更高,通常會(huì)對(duì)包過(guò)濾規(guī)則進(jìn)行預(yù)處理,網(wǎng)絡(luò)設(shè)備根據(jù)預(yù)處理后的包過(guò)濾規(guī)則匹配接收到的數(shù)據(jù)包。
由于包過(guò)濾規(guī)則是多個(gè)字段組成的多維數(shù)據(jù),在預(yù)處理的過(guò)程中可能會(huì)拆分其中的一些字段,導(dǎo)致包過(guò)濾規(guī)則數(shù)量的增加。例如:現(xiàn)在包過(guò)濾規(guī)則中有A,B,C三個(gè)字段,其中,B字段因?yàn)榕渲贸蔀榱搜诖a的方式,不適合用比較的方式進(jìn)行匹配。此時(shí)需將其拆分為適合用于比較的范圍,B字段被拆分為3個(gè)范圍:[x1,y1],[x2,y2],[x3,y3]。規(guī)則數(shù)量由原來(lái)的一個(gè)變?yōu)?個(gè),分別為A,[x1,y1],C;A,[x2,y2],C;A,[x3,y3],C。如果C字段也需要拆分成3個(gè)范圍,則總的規(guī)則數(shù)量就會(huì)變成9個(gè)。
可見(jiàn),網(wǎng)絡(luò)設(shè)備在將接收到的數(shù)據(jù)包匹配的包過(guò)濾規(guī)則由原來(lái)的1個(gè)變?yōu)?個(gè),增加了網(wǎng)絡(luò)設(shè)備在過(guò)濾數(shù)據(jù)包時(shí)的工作量,導(dǎo)致整個(gè)過(guò)程的匹配效率下降。
為解決上述問(wèn)題,本申請(qǐng)將包過(guò)濾規(guī)則中的不同字段劃分為若干條分組規(guī)則,在接收到數(shù)據(jù)包后,提取數(shù)據(jù)包對(duì)應(yīng)于各字段的字段取值,然后基于若干條分組規(guī)則并行地對(duì)提取到的數(shù)據(jù)包中的字段取值進(jìn)行匹配,可以有效地提高數(shù)據(jù)包過(guò)濾的效率。
參見(jiàn)圖1,為本申請(qǐng)示出的一種數(shù)據(jù)包過(guò)濾方法的流程圖,該實(shí)施例的執(zhí)行主體是網(wǎng)絡(luò)設(shè)備,該網(wǎng)絡(luò)設(shè)備預(yù)配置了由若干個(gè)預(yù)設(shè)字段構(gòu)成的若干條包過(guò)濾規(guī)則;所述方法包括以下步驟:
步驟101:將所述若干條包過(guò)濾規(guī)則劃分為對(duì)應(yīng)于各預(yù)設(shè)字段的若干條分組規(guī)則;其中,各分組規(guī)則分別對(duì)應(yīng)不同的預(yù)設(shè)字段;各分組規(guī)則由與其對(duì)應(yīng)的預(yù)設(shè)字段在所述若干條包過(guò)濾規(guī)則中對(duì)應(yīng)的字段取值構(gòu)成。
步驟102:提取接收到的目標(biāo)數(shù)據(jù)包對(duì)應(yīng)于各預(yù)設(shè)字段的字段取值。
步驟103:將提取到的各字段取值分別與其對(duì)應(yīng)的分組規(guī)則進(jìn)行并行匹配。
步驟104:計(jì)算各字段取值與其對(duì)應(yīng)的分組規(guī)則的匹配結(jié)果的交集,基于計(jì)算出的所述交集確定該目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則,并基于匹配到的該包過(guò)濾規(guī)則對(duì)應(yīng)的包過(guò)濾策略針對(duì)該目標(biāo)數(shù)據(jù)包執(zhí)行包過(guò)濾處理。
在本申請(qǐng)實(shí)施例中,針對(duì)現(xiàn)有技術(shù)在預(yù)處理包過(guò)濾規(guī)則時(shí),可能會(huì)因?yàn)榘^(guò)濾規(guī)則中的字段拆分而造成包過(guò)濾規(guī)則數(shù)量增加的問(wèn)題,網(wǎng)絡(luò)設(shè)備可以將預(yù)配置的由若干個(gè)預(yù)設(shè)字段構(gòu)成的若干條包過(guò)濾規(guī)則劃分為對(duì)應(yīng)于各預(yù)設(shè)字段的若干條分組規(guī)則。
在示出的一種實(shí)施方式中,網(wǎng)絡(luò)設(shè)備可以將包過(guò)濾規(guī)則中的預(yù)設(shè)字段依次選為目標(biāo)字段,分別提取各包過(guò)濾規(guī)則對(duì)應(yīng)于該目標(biāo)字段的字段取值,然后基于提取出的各字段取值,以及與該字段取值對(duì)應(yīng)的包過(guò)濾規(guī)則標(biāo)識(shí),創(chuàng)建對(duì)應(yīng)于該目標(biāo)字段的分組規(guī)則。
例如:一條包含n個(gè)預(yù)設(shè)字段的包過(guò)濾規(guī)則可以表示為:
Rule={field1,field2,field3,……,fieldn},其中,fieldi表示第i個(gè)字段,該字段的具體內(nèi)容在這里并不需要關(guān)心。
由m條包過(guò)濾規(guī)則組成的包過(guò)濾規(guī)則集合可以表示為:
網(wǎng)絡(luò)設(shè)備可以首先將上述m條包含n個(gè)預(yù)設(shè)字段的包過(guò)濾規(guī)則的第1個(gè)預(yù)設(shè)字段選為目標(biāo)字段,然后分別提取各包過(guò)濾規(guī)則對(duì)應(yīng)于上述目標(biāo)字段的字段取值,得到:
網(wǎng)絡(luò)設(shè)備在得到對(duì)應(yīng)于上述目標(biāo)字段的字段取值后,可以基于上述字段取值和與上述字段取值對(duì)應(yīng)的包過(guò)濾規(guī)則標(biāo)識(shí)創(chuàng)建對(duì)應(yīng)于該目標(biāo)字段的分組規(guī)則,該對(duì)應(yīng)于第1個(gè)預(yù)設(shè)字段的分組規(guī)則可以表示為:
在獲得對(duì)應(yīng)于第1個(gè)預(yù)設(shè)字段的分組規(guī)則后,網(wǎng)絡(luò)設(shè)備可以接著將包過(guò)濾規(guī)則的第2個(gè)預(yù)設(shè)字段選為目標(biāo)字段,獲得對(duì)應(yīng)于第2個(gè)預(yù)設(shè)字段的分組規(guī)則。網(wǎng)絡(luò)設(shè)備將包過(guò)濾規(guī)則的各預(yù)設(shè)字段依次選定為目標(biāo)字段,獲得對(duì)應(yīng)于各預(yù)設(shè)字段的分組規(guī)則,總共獲得對(duì)應(yīng)于各預(yù)設(shè)字段的n條分組規(guī)則。
第j條分組規(guī)則可表示為:
網(wǎng)絡(luò)設(shè)備在將預(yù)配置的包過(guò)濾規(guī)則劃分為對(duì)應(yīng)于各預(yù)設(shè)字段的若干條分組規(guī)則后,可以將接收到的目標(biāo)數(shù)據(jù)包提取各預(yù)設(shè)字段的字段取值,然后根據(jù)各分組規(guī)則并行地對(duì)提取到的各預(yù)設(shè)字段的字段取值進(jìn)行匹配,提高了數(shù)據(jù)包過(guò)濾的效率。
另外,將包過(guò)濾規(guī)則劃分為若干條分組規(guī)則后,可以對(duì)各分組規(guī)則分別進(jìn)行預(yù)處理,不用再考慮包過(guò)濾規(guī)則中字段之間的聯(lián)系,因此,不會(huì)因?yàn)轭A(yù)處理而導(dǎo)致包過(guò)濾規(guī)則的數(shù)量的增加。
在示出的一種實(shí)施方式中,為使后續(xù)數(shù)據(jù)包過(guò)濾的效率更高,可以對(duì)劃分出的對(duì)應(yīng)于各預(yù)設(shè)字段的分組規(guī)則進(jìn)行預(yù)處理,在處理完成后,網(wǎng)絡(luò)設(shè)備可以根據(jù)預(yù)處理后的分組規(guī)則過(guò)濾數(shù)據(jù)包。由于各分組規(guī)則的查找匹配過(guò)程相互獨(dú)立,因此對(duì)于各分組規(guī)則的預(yù)處理可以采用不同的方式。網(wǎng)絡(luò)設(shè)備可以針對(duì)各分組規(guī)則采用最適合該分組規(guī)則進(jìn)行快速查找的方式,例如,對(duì)分組規(guī)則的處理方式包括hash處理以及k-d樹(shù)處理。
在示出的一種實(shí)施方式中,當(dāng)包過(guò)濾規(guī)則的各預(yù)設(shè)字段中存在相關(guān)的多個(gè)預(yù)設(shè)字段時(shí),網(wǎng)絡(luò)設(shè)備可以按照相同的方式對(duì)各預(yù)設(shè)字段進(jìn)行預(yù)處理;其中,上述相關(guān)的多個(gè)預(yù)設(shè)字段,具體是指可以放在一起同一個(gè)分組規(guī)則中進(jìn)行處理的字段;例如,所有的通配符掩碼字段就可以放在一個(gè)分組規(guī)則中進(jìn)行處理。
在這種情況下,網(wǎng)絡(luò)設(shè)備可以將為該相關(guān)的多個(gè)預(yù)設(shè)字段分別創(chuàng)建的分組規(guī)則進(jìn)行合并,使得該多個(gè)相關(guān)的預(yù)設(shè)字段,可以在同一個(gè)分組規(guī)則中進(jìn)行處理。
在后續(xù)的查找匹配過(guò)程中,網(wǎng)絡(luò)設(shè)備提取目標(biāo)數(shù)據(jù)包對(duì)應(yīng)于該多個(gè)預(yù)設(shè)字段的字段取值后,可以在一個(gè)分組規(guī)則中進(jìn)行查找匹配。如果匹配成功,也就是上述目標(biāo)數(shù)據(jù)包對(duì)應(yīng)于該多個(gè)預(yù)設(shè)字段的字段取值位于分組規(guī)則中對(duì)應(yīng)于該多個(gè)預(yù)設(shè)字段的字段取值內(nèi)。
將為相關(guān)的多個(gè)預(yù)設(shè)字段創(chuàng)建的分組規(guī)則合并為一個(gè)分組規(guī)則,可以減少分組規(guī)則的個(gè)數(shù),便于網(wǎng)絡(luò)設(shè)備對(duì)分組規(guī)則的管理,并且有益于提升后續(xù)計(jì)算對(duì)應(yīng)于各分組規(guī)則的匹配結(jié)果的交集的效率。
在示出的一種實(shí)施方式中,網(wǎng)絡(luò)設(shè)備將包過(guò)濾規(guī)則劃分為若干個(gè)分組規(guī)則后,同一個(gè)分組規(guī)則內(nèi)可能會(huì)出現(xiàn)某些字段取值相同的情況,或者,在對(duì)分組規(guī)則進(jìn)行預(yù)處理后,經(jīng)過(guò)拆分的字段取值存在相同的情況。
在這種情況下,通??梢圆蛔鎏厥獾奶幚?,在后續(xù)匹配時(shí),找出所有相同的字段取值及其對(duì)應(yīng)的包過(guò)濾規(guī)則。
另一方面,網(wǎng)絡(luò)設(shè)備可以將同一分組規(guī)則內(nèi)相同的字段取值所對(duì)應(yīng)的包過(guò)濾規(guī)則標(biāo)識(shí)進(jìn)行合并。例如,第j條分組規(guī)則中的二元組為:其中,0<i≤m,0<j≤n。
如果有兩個(gè)字段取值則可以將其合并為如下形式:
此時(shí),在對(duì)該分組規(guī)則進(jìn)行匹配時(shí),只要匹配到就可以同時(shí)確定匹配到包過(guò)濾規(guī)則Rulei和Rulei+k。
可見(jiàn),網(wǎng)絡(luò)設(shè)備在將同一個(gè)分組規(guī)則內(nèi)相同的字段取值所對(duì)應(yīng)的包過(guò)濾規(guī)則標(biāo)識(shí)合并后,使得根據(jù)分組規(guī)則匹配提取到的字段取值的過(guò)程更為高效,進(jìn)而提高了整個(gè)數(shù)據(jù)包過(guò)濾的過(guò)程的效率。
在本申請(qǐng)實(shí)施例中,網(wǎng)路設(shè)備在將預(yù)配置的若干條包過(guò)濾規(guī)則劃分為若干條分組規(guī)則后,可以在接收到目標(biāo)數(shù)據(jù)包時(shí),通過(guò)各分組規(guī)則并行地與目標(biāo)數(shù)據(jù)包對(duì)應(yīng)于各預(yù)設(shè)字段的字段取值進(jìn)行匹配。網(wǎng)絡(luò)設(shè)備并行匹配的方式可以通過(guò)硬件(比如,邏輯器件)來(lái)完成,也可以通過(guò)軟件來(lái)完成,在本例中不進(jìn)行特別限定。
在示出的一種實(shí)施方式中,以通過(guò)軟件實(shí)現(xiàn)為例,網(wǎng)絡(luò)設(shè)備可以為各分組規(guī)則分別配置不同的匹配線程,每個(gè)匹配線程負(fù)責(zé)一個(gè)分組規(guī)則的匹配。
參見(jiàn)圖2,為本申請(qǐng)示出的一種數(shù)據(jù)包并行過(guò)濾的示意圖,如圖2所示,網(wǎng)絡(luò)接收到目標(biāo)數(shù)據(jù)包后,可以提取該目標(biāo)數(shù)據(jù)包對(duì)應(yīng)于包過(guò)濾規(guī)則中各預(yù)設(shè)字段的字段取值。在提取完成后,網(wǎng)絡(luò)設(shè)備可以將提取到的各字段取值分別與對(duì)應(yīng)的分組規(guī)則進(jìn)行并行匹配。
由于本例中網(wǎng)絡(luò)設(shè)備為各分組規(guī)則分別配置了不同的匹配線程,因此可以將提取到的各字段取值分別提交至為其對(duì)應(yīng)的分組規(guī)則預(yù)配置的匹配線程,由該匹配線程將接收到的字段取值與其對(duì)應(yīng)的分組規(guī)則中記錄的各字段取值分別進(jìn)行匹配。
在示出的一種實(shí)施方式中,圖2所示的分組規(guī)則可以是經(jīng)過(guò)預(yù)處理后的分組規(guī)則,各匹配線程基于預(yù)處理后的分組規(guī)則可以更快地完成匹配。
其中,各匹配線程可以為各字段取值分別創(chuàng)建對(duì)應(yīng)的bitmap表;該bitmap表中包括若干個(gè)用于記錄匹配結(jié)果的bit位,每個(gè)bit位分別與分組規(guī)則中記錄的包過(guò)濾規(guī)則的標(biāo)識(shí)相對(duì)應(yīng)。
參見(jiàn)圖3,為本申請(qǐng)示出的一種bitmap表的示意圖,如圖3所示,當(dāng)網(wǎng)絡(luò)設(shè)備預(yù)配置m條包過(guò)濾規(guī)則時(shí),各匹配線程創(chuàng)建的bitmap表中包括m個(gè)用于記錄匹配結(jié)果的bit位,每個(gè)bit位分別對(duì)應(yīng)一個(gè)包過(guò)濾規(guī)則的標(biāo)識(shí)。
各匹配線程將提取到的各字段取值與其對(duì)應(yīng)的分組規(guī)則中記錄的各字段取值的匹配結(jié)果,記錄至上述bitmap表中對(duì)應(yīng)的bit位。
在本申請(qǐng)實(shí)施例中,當(dāng)獲得目標(biāo)數(shù)據(jù)包的各字段取值與其對(duì)應(yīng)的分組規(guī)則的匹配結(jié)果后,網(wǎng)絡(luò)設(shè)備可以根據(jù)對(duì)應(yīng)于各分組規(guī)則的匹配結(jié)果計(jì)算交集,并基于計(jì)算出的該交集確定該目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則。
在示出的一種實(shí)施方式中,仍以網(wǎng)絡(luò)設(shè)備為各分組規(guī)則分別配置不同的匹配線程為例,參見(jiàn)圖2,各匹配線程將提取到的各字段取值與其對(duì)應(yīng)的分組規(guī)則中記錄的各字段取值的匹配結(jié)果,記錄到各匹配線程創(chuàng)建的bitmap表中對(duì)應(yīng)的bit位。
網(wǎng)絡(luò)設(shè)備在計(jì)算各匹配線程得到的匹配結(jié)果的交集時(shí),可以將目標(biāo)數(shù)據(jù)包的各字段取值在各匹配線程中匹配完成的各bitmap表進(jìn)行按位與運(yùn)算,得到記錄了按位與運(yùn)算結(jié)果的目標(biāo)bitmap表。
其中,目標(biāo)bitmap表包括m個(gè)記錄按位與運(yùn)算結(jié)果的bit位。如果bitmap表中的某個(gè)bit位取值為1時(shí),表示匹配到與該bit為對(duì)應(yīng)的包過(guò)濾規(guī)則,則目標(biāo)bitmap表中取值為1的bit位對(duì)應(yīng)的包過(guò)濾規(guī)則為上述目標(biāo)數(shù)據(jù)包最終匹配到的包過(guò)濾規(guī)則。
在示出的一種實(shí)施方式中,由于網(wǎng)絡(luò)設(shè)備預(yù)配置的若干包過(guò)濾規(guī)則通常都是按優(yōu)先級(jí)進(jìn)行排序的,并且匹配到一個(gè)高優(yōu)先級(jí)的規(guī)則之后就不需要再匹配低優(yōu)先級(jí)的規(guī)則了,因此上述目標(biāo)bitmap表中的bit位的排列順序,通常也對(duì)應(yīng)于網(wǎng)絡(luò)設(shè)備預(yù)配置的包過(guò)濾規(guī)則的優(yōu)先級(jí)順序。
在這種情況下,如果上述目標(biāo)bitmap表中記錄的按位與運(yùn)算的結(jié)果中,存在多個(gè)取值為1的bit位,則可以將目標(biāo)bitmap表中中第一個(gè)取值為1的bit位對(duì)應(yīng)的包過(guò)濾規(guī)則,確定為上述目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則。
當(dāng)確定出上述目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則后,可以根據(jù)匹配到的該包過(guò)濾規(guī)則對(duì)應(yīng)的包過(guò)濾策略,針對(duì)上述目標(biāo)數(shù)據(jù)包執(zhí)行包過(guò)濾處理。其中,該包過(guò)濾處理通??梢园▉G棄或轉(zhuǎn)發(fā)。
當(dāng)然,如果網(wǎng)絡(luò)設(shè)備預(yù)配置的包過(guò)濾規(guī)則,并不支持優(yōu)先級(jí),此時(shí),上述目標(biāo)bitmap表中的bit位的排列順序與上述包過(guò)濾規(guī)則的優(yōu)先級(jí)順序無(wú)關(guān),在這種情況下,可以將按位與運(yùn)算后目標(biāo)bitmap表中所有取值為1的bit對(duì)應(yīng)的包過(guò)濾規(guī)則,均確定為上述目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則。
通過(guò)以上各實(shí)施例可見(jiàn),預(yù)配置了由若干個(gè)預(yù)設(shè)字段構(gòu)成的若干條包過(guò)濾規(guī)則的網(wǎng)絡(luò)設(shè)備,可以將上述若干條包過(guò)濾規(guī)則劃分為對(duì)應(yīng)于各預(yù)設(shè)字段的若干條分組規(guī)則;其中,各分組規(guī)則分別對(duì)應(yīng)不同的預(yù)設(shè)字段,各分組規(guī)則由與其對(duì)應(yīng)的預(yù)設(shè)字段在上述若干條包過(guò)濾規(guī)則中對(duì)應(yīng)的字段取值構(gòu)成;網(wǎng)絡(luò)設(shè)備在接收到目標(biāo)數(shù)據(jù)包后,提取該目標(biāo)數(shù)據(jù)包對(duì)應(yīng)于各預(yù)設(shè)字段的字段取值,并將提取到的各字段取值分別與其對(duì)應(yīng)的分組規(guī)則進(jìn)行并行匹配;然后計(jì)算各字段取值與其對(duì)應(yīng)的分組規(guī)則的匹配結(jié)果的交集,基于計(jì)算出的該交集確定該目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則,并基于匹配到的該包過(guò)濾規(guī)則對(duì)應(yīng)的包過(guò)濾策略針對(duì)該目標(biāo)數(shù)據(jù)包執(zhí)行包過(guò)濾處理。
一方面,由于本申請(qǐng)對(duì)預(yù)配置的包過(guò)濾規(guī)則劃分為對(duì)應(yīng)于各預(yù)設(shè)字段的若干條分組規(guī)則,因此,在針對(duì)各分組規(guī)則分別進(jìn)行預(yù)處理時(shí),即使分組規(guī)則內(nèi)的任一字段被拆分,拆分后的字段只對(duì)該分組規(guī)則有影響,而不會(huì)對(duì)其它分組規(guī)則造成影響,有效地避免了包過(guò)濾規(guī)則的數(shù)量的整體增加。
另一方面,本申請(qǐng)中,網(wǎng)絡(luò)設(shè)備將提取到的目標(biāo)數(shù)據(jù)包的各字段取值與其對(duì)應(yīng)的分組規(guī)則進(jìn)行并行匹配,然后根據(jù)各匹配結(jié)果計(jì)算交集,確定該目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則,通過(guò)并行匹配,可以顯著提高匹配效率。
與本申請(qǐng)數(shù)據(jù)包過(guò)濾方法的實(shí)施例相對(duì)應(yīng),本申請(qǐng)還提供了用于執(zhí)行上述方法實(shí)施例的裝置的實(shí)施例。
參見(jiàn)圖4,為本申請(qǐng)示出的一種數(shù)據(jù)包過(guò)濾裝置的實(shí)施例框圖:
如圖4所示,該數(shù)據(jù)包過(guò)濾裝置40包括:
劃分單元410,用于將所述若干條包過(guò)濾規(guī)則劃分為對(duì)應(yīng)于各預(yù)設(shè)字段的若干條分組規(guī)則;其中,各分組規(guī)則分別對(duì)應(yīng)不同的預(yù)設(shè)字段;各分組規(guī)則由與其對(duì)應(yīng)的預(yù)設(shè)字段在所述若干條包過(guò)濾規(guī)則中對(duì)應(yīng)的字段取值構(gòu)成。
提取單元420,用于提取接收到的目標(biāo)數(shù)據(jù)包對(duì)應(yīng)于各預(yù)設(shè)字段的字段取值。
匹配單元430,用于將提取到的各字段取值分別與其對(duì)應(yīng)的分組規(guī)則進(jìn)行并行匹配。
計(jì)算單元440,用于計(jì)算各字段取值與其對(duì)應(yīng)的分組規(guī)則的匹配結(jié)果的交集,基于計(jì)算出的所述交集確定該目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則,并基于匹配到的該包過(guò)濾規(guī)則對(duì)應(yīng)的包過(guò)濾策略針對(duì)該目標(biāo)數(shù)據(jù)包執(zhí)行包過(guò)濾處理。
在本例中,所述劃分單元410,進(jìn)一步用于:
將各預(yù)設(shè)字段依次選定為目標(biāo)字段;
分別提取各包過(guò)濾規(guī)則對(duì)應(yīng)于所述目標(biāo)字段的字段取值;
基于提取出的各包過(guò)濾規(guī)則對(duì)應(yīng)于所述目標(biāo)字段的字段取值,以及與該字段取值對(duì)應(yīng)的包過(guò)濾規(guī)則標(biāo)識(shí),創(chuàng)建對(duì)應(yīng)于該目標(biāo)字段的分組規(guī)則。
在本例中,所述裝置還包括:
處理單元450,用于基于預(yù)設(shè)的算法分別對(duì)各分組規(guī)則進(jìn)行處理,使得處理后的分組規(guī)則更適合與提取到的各字段取值進(jìn)行匹配。
在本例中,所述裝置還包括:
合并單元460,用于當(dāng)各預(yù)設(shè)字段中存在相關(guān)的多個(gè)預(yù)設(shè)字段,將為該多個(gè)預(yù)設(shè)字段分別創(chuàng)建的分組規(guī)則進(jìn)行合并;以及,
當(dāng)創(chuàng)建的任一分組規(guī)則中包括多個(gè)相同的字段取值,則將該多個(gè)字段取值所對(duì)應(yīng)的包過(guò)濾規(guī)則標(biāo)識(shí)進(jìn)行合并。
在本例中,各分組規(guī)則分別預(yù)配置了不同的匹配線程;所述匹配單元430,進(jìn)一步用于:
將提取到的各字段取值分別提交至為與其對(duì)應(yīng)的分組規(guī)則預(yù)配置的匹配線程,由該匹配線程將接收到的字段取值與其對(duì)應(yīng)的分組規(guī)則中記錄的各字段取值分別進(jìn)行匹配;其中,各匹配線程為各字段取值分別創(chuàng)建了對(duì)應(yīng)的bitmap表;該bitmap表中包括若干個(gè)用于記錄匹配結(jié)果的bit位;每個(gè)bit位分別與所述分組規(guī)則中記錄的包過(guò)濾規(guī)則的標(biāo)識(shí)相對(duì)應(yīng);
各匹配線程將提取到的各字段取值與其對(duì)應(yīng)的分組規(guī)則中記錄的各字段取值的匹配結(jié)果,記錄至所述bitmap表中對(duì)應(yīng)的bit位。
在本例中,所述bitmap表中的bit位取值為1時(shí),表示與該bit位對(duì)應(yīng)的包過(guò)濾規(guī)則匹配;所述計(jì)算單元440,進(jìn)一步用于:
將與各字段取值對(duì)應(yīng)的bitmap表進(jìn)行按位與運(yùn)算;其中,所述bitmap表中的bit位的排列順序?qū)?yīng)于所述包過(guò)濾規(guī)則的優(yōu)先級(jí)順序;
將按位與運(yùn)算后第一個(gè)取值為1的bit位對(duì)應(yīng)的包過(guò)濾規(guī)則確定為所述目標(biāo)數(shù)據(jù)包匹配到的包過(guò)濾規(guī)則。
本申請(qǐng)數(shù)據(jù)包過(guò)濾裝置的實(shí)施例可以應(yīng)用在網(wǎng)絡(luò)設(shè)備上。裝置實(shí)施例可以通過(guò)軟件實(shí)現(xiàn),也可以通過(guò)硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為一個(gè)邏輯意義上的裝置,是通過(guò)其所在網(wǎng)絡(luò)設(shè)備的處理器將非易失性存儲(chǔ)器中對(duì)應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。從硬件層面而言,如圖5所示,為本申請(qǐng)數(shù)據(jù)包過(guò)濾裝置所在網(wǎng)絡(luò)設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖5所示的處理器、內(nèi)存、網(wǎng)絡(luò)接口、以及非易失性存儲(chǔ)器之外,實(shí)施例中裝置所在的網(wǎng)絡(luò)設(shè)備通常根據(jù)該數(shù)據(jù)包過(guò)濾裝置的實(shí)際功能,還可以包括其他硬件,對(duì)此不再贅述。
上述裝置中各個(gè)單元的功能和作用的實(shí)現(xiàn)過(guò)程具體詳見(jiàn)上述方法中對(duì)應(yīng)步驟的實(shí)現(xiàn)過(guò)程,在此不再贅述。
對(duì)于裝置實(shí)施例而言,由于其基本對(duì)應(yīng)于方法實(shí)施例,所以相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本申請(qǐng)方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
以上所述僅為本申請(qǐng)的較佳實(shí)施例而已,并不用以限制本申請(qǐng),凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)保護(hù)的范圍之內(nèi)。