數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)系統(tǒng)、負(fù)載均衡方法及裝置制造方法
【專利摘要】本發(fā)明公開(kāi)了數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)系統(tǒng),包括:數(shù)據(jù)包轉(zhuǎn)發(fā)模塊,多個(gè)安全引擎和與多個(gè)安全引擎一一對(duì)應(yīng)的環(huán)形隊(duì)列,其中:數(shù)據(jù)包轉(zhuǎn)發(fā)模塊包括包收取模塊,包處理模塊和包發(fā)送模塊;安全引擎,用于從與自身對(duì)應(yīng)的所述環(huán)形隊(duì)列中獲取待轉(zhuǎn)發(fā)數(shù)據(jù)包;對(duì)待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全防護(hù)檢測(cè);將攜帶有安全檢測(cè)結(jié)果標(biāo)識(shí)的待轉(zhuǎn)發(fā)數(shù)據(jù)包放入與自身對(duì)應(yīng)的環(huán)形隊(duì)列中;環(huán)形隊(duì)列,用于存儲(chǔ)包處理模塊發(fā)送的待轉(zhuǎn)發(fā)數(shù)據(jù)包和與自身對(duì)應(yīng)的安全引擎發(fā)送的攜帶有表示安全的安全檢測(cè)結(jié)果標(biāo)識(shí)的待轉(zhuǎn)發(fā)數(shù)據(jù)包。采用本發(fā)明實(shí)施例提供的方案,提高了對(duì)數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)的處理效率。
【專利說(shuō)明】數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)系統(tǒng)、負(fù)載均衡方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)系統(tǒng)、負(fù)載均衡方法及裝置。
【背景技術(shù)】
[0002]在網(wǎng)絡(luò)通信中進(jìn)行數(shù)據(jù)包轉(zhuǎn)發(fā)時(shí),數(shù)據(jù)包經(jīng)過(guò)網(wǎng)絡(luò)通信中的工作層,可以經(jīng)過(guò)物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層等,在數(shù)據(jù)轉(zhuǎn)發(fā)的過(guò)程中,數(shù)據(jù)包可能會(huì)受到安全威脅,例如,數(shù)據(jù)包可能會(huì)受到DTP攻擊,ARP Flood攻擊,SYN Flood攻擊以及應(yīng)用層的病毒注入等,因此,對(duì)于在網(wǎng)絡(luò)通信中轉(zhuǎn)發(fā)的數(shù)據(jù)包,需要進(jìn)行安全防護(hù)檢測(cè),以保證轉(zhuǎn)發(fā)數(shù)據(jù)包的安全性。
[0003]目前,現(xiàn)有的進(jìn)行數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)主要為串行式的數(shù)據(jù)包處理方式,具體為:獲取一個(gè)待轉(zhuǎn)發(fā)數(shù)據(jù)包,對(duì)當(dāng)前待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全防護(hù)檢測(cè),當(dāng)檢測(cè)到該當(dāng)前待轉(zhuǎn)發(fā)數(shù)據(jù)包存在安全威脅時(shí),對(duì)該當(dāng)前待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行阻斷或丟棄處理,當(dāng)檢測(cè)該當(dāng)前待轉(zhuǎn)發(fā)數(shù)據(jù)包安全時(shí),將該當(dāng)前待轉(zhuǎn)發(fā)數(shù)據(jù)包發(fā)送給接收端,當(dāng)該當(dāng)前待轉(zhuǎn)發(fā)數(shù)據(jù)包轉(zhuǎn)發(fā)結(jié)束后,對(duì)下一個(gè)待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行上述轉(zhuǎn)發(fā)和安全防護(hù)處理。
[0004]上述現(xiàn)有的數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)的處理方式中,由于采用串行的數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)處理方式,每次只能針對(duì)一個(gè)數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè),數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)的效率低。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)系統(tǒng)、負(fù)載均衡方法及裝置,用以解決現(xiàn)有技術(shù)中存在的對(duì)數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)的處理效率低的問(wèn)題。
[0006]本發(fā)明實(shí)施例提供一種數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)系統(tǒng),其特征在于,包括:數(shù)據(jù)包轉(zhuǎn)發(fā)模塊,多個(gè)安全引擎和與多個(gè)安全引擎一一對(duì)應(yīng)的環(huán)形隊(duì)列,其中:
[0007]所述數(shù)據(jù)包轉(zhuǎn)發(fā)模塊包括包收取模塊,包處理模塊和包發(fā)送模塊;
[0008]所述包收取模塊,用于接收多個(gè)待轉(zhuǎn)發(fā)數(shù)據(jù)包;將多個(gè)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包發(fā)送給所述包處理模塊;
[0009]所述包處理模塊,用于接收所述包收取模塊發(fā)送的多個(gè)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包;根據(jù)預(yù)設(shè)負(fù)載均衡算法,將所述待轉(zhuǎn)發(fā)數(shù)據(jù)包發(fā)送給多個(gè)安全引擎中負(fù)載能力最強(qiáng)的安全引擎對(duì)應(yīng)的環(huán)形隊(duì)列;接收多個(gè)所述環(huán)形隊(duì)列中攜帶有安全檢測(cè)結(jié)果標(biāo)識(shí)的所述待轉(zhuǎn)發(fā)數(shù)據(jù)包;向所述包發(fā)送模塊發(fā)送攜帶有表示安全的安全檢測(cè)結(jié)果標(biāo)識(shí)的待轉(zhuǎn)發(fā)數(shù)據(jù)包;對(duì)攜帶有表示數(shù)據(jù)包有安全威脅的安全檢測(cè)結(jié)果標(biāo)識(shí)的待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行丟棄或者阻斷轉(zhuǎn)發(fā)處理;
[0010]所述包發(fā)送模塊,用于接收所述包處理模塊發(fā)送的所述攜帶有表示安全的安全檢測(cè)結(jié)果標(biāo)識(shí)的待轉(zhuǎn)發(fā)數(shù)據(jù)包;將所述攜帶有表示安全的安全檢測(cè)結(jié)果標(biāo)識(shí)的待轉(zhuǎn)發(fā)數(shù)據(jù)包發(fā)送給接收端;[0011]所述安全引擎,用于從與自身對(duì)應(yīng)的所述環(huán)形隊(duì)列中獲取待轉(zhuǎn)發(fā)數(shù)據(jù)包;對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全防護(hù)檢測(cè);將攜帶有安全檢測(cè)結(jié)果標(biāo)識(shí)的待轉(zhuǎn)發(fā)數(shù)據(jù)包放入與自身對(duì)應(yīng)的環(huán)形隊(duì)列中;
[0012]所述環(huán)形隊(duì)列,用于存儲(chǔ)所述包處理模塊發(fā)送的所述待轉(zhuǎn)發(fā)數(shù)據(jù)包和與自身對(duì)應(yīng)的所述安全引擎發(fā)送的攜帶有表示安全的安全檢測(cè)結(jié)果標(biāo)識(shí)的待轉(zhuǎn)發(fā)數(shù)據(jù)包。
[0013]采用本發(fā)明提供的上述系統(tǒng),由于采用多個(gè)安全引擎同時(shí)對(duì)待轉(zhuǎn)發(fā)數(shù)據(jù)包并行地進(jìn)行安全檢測(cè),提高了對(duì)數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)的處理效率。
[0014]進(jìn)一步的,所述包處理模塊,具體用于對(duì)從所述包收取模塊接收的多個(gè)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行底層安全防護(hù)檢測(cè);針對(duì)每個(gè)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包,當(dāng)對(duì)該待轉(zhuǎn)發(fā)數(shù)據(jù)包的檢測(cè)結(jié)果為該待轉(zhuǎn)發(fā)數(shù)據(jù)包安全時(shí),根據(jù)預(yù)設(shè)負(fù)載均衡算法,將該待轉(zhuǎn)發(fā)數(shù)據(jù)包發(fā)送給多個(gè)安全引擎中負(fù)載能力最強(qiáng)的安全引擎對(duì)應(yīng)的環(huán)形隊(duì)列;當(dāng)對(duì)該待轉(zhuǎn)發(fā)數(shù)據(jù)包的檢測(cè)結(jié)果為該待轉(zhuǎn)發(fā)數(shù)據(jù)包有安全威脅時(shí),將該待轉(zhuǎn)發(fā)數(shù)據(jù)包丟棄或者阻斷轉(zhuǎn)發(fā)處理。
[0015]進(jìn)一步的,上述系統(tǒng),還包括:配置解析模塊,用于根據(jù)性能需求和處理器硬件制約條件設(shè)置所述數(shù)據(jù)包轉(zhuǎn)發(fā)模塊的線程個(gè)數(shù)和安全引擎的個(gè)數(shù),對(duì)所述數(shù)據(jù)包轉(zhuǎn)發(fā)模塊和安全引擎進(jìn)行初始化設(shè)置。
[0016]進(jìn)一步的,所述配置解析模塊,還用于根據(jù)已配置的所述安全引擎的個(gè)數(shù),分別為每個(gè)安全引擎分配與自身對(duì)應(yīng)的環(huán)形隊(duì)列。
[0017]本發(fā)明實(shí)施例提供一種負(fù)載均衡方法,應(yīng)用于數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)系統(tǒng),所述數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)系統(tǒng)包括:多個(gè)用于對(duì)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎和與多個(gè)安全引擎一一對(duì)應(yīng)的環(huán)形隊(duì)列,所述環(huán)形隊(duì)列用于存儲(chǔ)與該環(huán)形隊(duì)列對(duì)應(yīng)的安全引擎將要進(jìn)行檢測(cè)的數(shù)據(jù)包,該方法包括:
[0018]根據(jù)待轉(zhuǎn)發(fā)數(shù)據(jù)包的源IP、目的IP和所述安全引擎的個(gè)數(shù)進(jìn)行哈希運(yùn)算,得到哈希運(yùn)算結(jié)果;
[0019]確定是否存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引;
[0020]當(dāng)存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),確定所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎為將要對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎;
[0021]當(dāng)不存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),從所述多個(gè)安全引擎中確定對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎,并建立所述哈希運(yùn)算結(jié)果與確定的該安全弓I擎對(duì)應(yīng)的環(huán)形隊(duì)列索引之間的對(duì)應(yīng)關(guān)系。
[0022]采用本發(fā)明實(shí)施例提供的上述方法,由于通過(guò)判斷待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行哈希運(yùn)算的結(jié)果是否存在對(duì)應(yīng)的環(huán)形隊(duì)列索引,確定對(duì)待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎,對(duì)待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行合理的分配,提高了安全引擎對(duì)數(shù)據(jù)包進(jìn)行安全檢測(cè)的性能。
[0023]進(jìn)一步的,當(dāng)存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),確定所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎為將要對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎,具體包括:
[0024]當(dāng)存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),確定所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值是否不小于預(yù)設(shè)權(quán)值閾值,所述負(fù)載權(quán)值為基于所述安全引擎的工作狀態(tài)、CPU占用率和獲取的該安全引擎的當(dāng)前數(shù)據(jù)處理流量確定的,所述負(fù)載權(quán)值表示該安全引擎的當(dāng)前數(shù)據(jù)包處理能力,所述當(dāng)前數(shù)據(jù)處理流量表示該安全引擎當(dāng)前單位時(shí)間內(nèi)處理的數(shù)據(jù)包的流量;[0025]當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值不小于預(yù)設(shè)權(quán)值閾值時(shí),確定該環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎為將要對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎。
[0026]進(jìn)一步的,上述方法,還包括:
[0027]當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值小于預(yù)設(shè)權(quán)值閾值時(shí),確定所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值是否為零;
[0028]當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值不為零時(shí),確定除該環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎以外的負(fù)載權(quán)值最大的安全引擎為將要對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎。
[0029]進(jìn)一步的,上述方法,還包括: [0030]當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值為零時(shí),將已分發(fā)給該安全引擎的數(shù)據(jù)包標(biāo)記為安全狀態(tài);或者
[0031]當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值為零時(shí),將已分發(fā)給該安全引擎的數(shù)據(jù)包分發(fā)給除該安全引擎以外的負(fù)載權(quán)值最大的安全引擎;或者
[0032]當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值為零時(shí),將已分發(fā)給該安全引擎的數(shù)據(jù)包平均分發(fā)給除該安全引擎以外的安全引擎。
[0033]進(jìn)一步的,確定所述安全引擎的負(fù)載權(quán)值,具體包括:
[0034]每隔預(yù)設(shè)周期,基于所述安全引擎的工作狀態(tài)、CPU占用率和獲取的該安全引擎的當(dāng)前數(shù)據(jù)處理流量確定所述安全引擎的負(fù)載權(quán)值。
[0035]進(jìn)一步的,當(dāng)不存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),從所述多個(gè)安全引擎中確定對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎,具體包括:
[0036]當(dāng)不存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),從所述多個(gè)安全引擎中確定負(fù)載權(quán)值最大的安全引擎為對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎,所述負(fù)載權(quán)值為基于所述安全引擎的工作狀態(tài)、CPU占用率和獲取的該安全引擎的當(dāng)前數(shù)據(jù)處理流量確定的,所述負(fù)載權(quán)值表示該安全引擎的當(dāng)前數(shù)據(jù)包處理能力,所述當(dāng)前數(shù)據(jù)處理流量表示該安全引擎當(dāng)前單位時(shí)間內(nèi)處理的數(shù)據(jù)包的流量。
[0037]進(jìn)一步的,針對(duì)每個(gè)安全引擎,基于該安全引擎的工作狀態(tài)、CPU占用率和獲取的該安全引擎的當(dāng)前數(shù)據(jù)處理流量確定該安全引擎的負(fù)載權(quán)值,具體包括:
[0038]采用如下公式確定該安全引擎的負(fù)載權(quán)值:
[0039]F(iH<xQx[ax(l-C//Jc:)+bx(l-S//^;S/)];
/=1 i=l
[0040]其中,F(xiàn)(i)為第i個(gè)安全引擎的負(fù)載權(quán)值,K為常數(shù),Q表示第i個(gè)安全引擎的工作狀態(tài),Q=O表示該安全引擎的工作狀態(tài)為異常,Q=I表示該安全引擎的工作狀態(tài)為正常,Ci
n
為第i個(gè)安全引擎的CPU占用率,Xc'/為各安全引擎的CPU占用率的和,Si為第i個(gè)安全
Z-1
n
引擎的當(dāng)前數(shù)據(jù)處理流量,!>/為各安全引擎的當(dāng)前數(shù)據(jù)處理流量的和,n為所有安全引
/=1
擎的個(gè)數(shù),a, b為常數(shù),a>b。
[0041]本發(fā)明實(shí)施例還提供了一種負(fù)載均衡裝置,應(yīng)用于安全檢測(cè)系統(tǒng),所述安全檢測(cè)系統(tǒng)包括:多個(gè)用于對(duì)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎和與多個(gè)安全引擎一一對(duì)應(yīng)的環(huán)形隊(duì)列,所述環(huán)形隊(duì)列用于存儲(chǔ)與該環(huán)形隊(duì)列對(duì)應(yīng)的安全引擎將要進(jìn)行檢測(cè)的數(shù)據(jù)包;所述裝置,包括:
[0042]運(yùn)算單元,用于根據(jù)待轉(zhuǎn)發(fā)數(shù)據(jù)包的源IP、目的IP和所述安全引擎的個(gè)數(shù)進(jìn)行哈希運(yùn)算,得到哈希運(yùn)算結(jié)果;
[0043]索引確定單元,用于確定是否存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引;
[0044]第一確定單元,用于當(dāng)存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),確定所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎為將要對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎;
[0045]第二確定單元,用于當(dāng)不存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),從所述多個(gè)安全引擎中確定對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎,并建立所述哈希運(yùn)算結(jié)果與確定的該安全引擎對(duì)應(yīng)的環(huán)形隊(duì)列索引之間的對(duì)應(yīng)關(guān)系。
[0046]進(jìn)一步的,所述第一確定單元,具體用于當(dāng)存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),確定所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值是否不小于預(yù)設(shè)權(quán)值閾值,所述負(fù)載權(quán)值為基于所述安全引擎的工作狀態(tài)、CPU占用率和獲取的該安全引擎的當(dāng)前數(shù)據(jù)處理流量確定的,所述負(fù)載權(quán)值表示該安全引擎的當(dāng)前數(shù)據(jù)包處理能力,所述當(dāng)前數(shù)據(jù)處理流量表示該安全引擎當(dāng)前單位時(shí)間內(nèi)處理的數(shù)據(jù)包的流量;當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值不小于預(yù)設(shè)權(quán)值閾值時(shí),確定該環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎為將要對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎。
[0047]進(jìn)一步的,上述裝置,還包括:
[0048]第三確定單元,用于當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值小于預(yù)設(shè)權(quán)值閾值時(shí),確定所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值是否為零;
[0049]第四確定單元,用于當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值不為零時(shí),確定除該環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎以外的負(fù)載權(quán)值最大的安全引擎為將要對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎。
[0050]進(jìn)一步的,上述裝置,還包括:
[0051]分發(fā)單元,用于當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值為零時(shí),將已分發(fā)給該安全引擎的數(shù)據(jù)包標(biāo)記為安全狀態(tài);或者
[0052]當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值為零時(shí),將已分發(fā)給該安全引擎的數(shù)據(jù)包分發(fā)給除該安全引擎以外的負(fù)載權(quán)值最大的安全引擎;或者
[0053]當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值為零時(shí),將已分發(fā)給該安全引擎的數(shù)據(jù)包平均分發(fā)給除該安全引擎以外的安全引擎。
[0054]進(jìn)一步的,所述第一確定單元,具體用于每隔預(yù)設(shè)周期,基于所述安全引擎的工作狀態(tài)、CPU占用率和獲取的該安全引擎的當(dāng)前數(shù)據(jù)處理流量確定所述安全引擎的負(fù)載權(quán)值。
[0055]進(jìn)一步的,所述第二確定單元,具體用于當(dāng)不存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),從所述多個(gè)安全引擎中確定負(fù)載權(quán)值最大的安全引擎為對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎,所述負(fù)載權(quán)值為基于所述安全引擎的工作狀態(tài)、CPU占用率和獲取的該安全引擎的當(dāng)前數(shù)據(jù)處理流量確定的,所述負(fù)載權(quán)值表示該安全引擎的當(dāng)前數(shù)據(jù)包處理能力,所述當(dāng)前數(shù)據(jù)處理流量表示該安全引擎當(dāng)前單位時(shí)間內(nèi)處理的數(shù)據(jù)包的流量。
[0056]進(jìn)一步的,所述第一確定單元,具體用于采用如下公式確定所述安全引擎的負(fù)載權(quán)值:
【權(quán)利要求】
1.一種數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)系統(tǒng),其特征在于,包括:數(shù)據(jù)包轉(zhuǎn)發(fā)模塊,多個(gè)安全引擎和與多個(gè)安全引擎一一對(duì)應(yīng)的環(huán)形隊(duì)列,其中: 所述數(shù)據(jù)包轉(zhuǎn)發(fā)模塊包括包收取模塊,包處理模塊和包發(fā)送模塊; 所述包收取模塊,用于接收多個(gè)待轉(zhuǎn)發(fā)數(shù)據(jù)包;將多個(gè)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包發(fā)送給所述包處理模塊; 所述包處理模塊,用于接收所述包收取模塊發(fā)送的多個(gè)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包;根據(jù)預(yù)設(shè)負(fù)載均衡算法,將所述待轉(zhuǎn)發(fā)數(shù)據(jù)包發(fā)送給多個(gè)安全引擎中負(fù)載能力最強(qiáng)的安全引擎對(duì)應(yīng)的環(huán)形隊(duì)列;接收多個(gè)所述環(huán)形隊(duì)列中攜帶有安全檢測(cè)結(jié)果標(biāo)識(shí)的所述待轉(zhuǎn)發(fā)數(shù)據(jù)包;向所述包發(fā)送模塊發(fā)送攜帶有表示安全的安全檢測(cè)結(jié)果標(biāo)識(shí)的待轉(zhuǎn)發(fā)數(shù)據(jù)包;對(duì)攜帶有表示數(shù)據(jù)包有安全威脅的安全檢測(cè)結(jié)果標(biāo)識(shí)的待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行丟棄或者阻斷轉(zhuǎn)發(fā)處理; 所述包發(fā)送模塊,用于接收所述包處理模塊發(fā)送的所述攜帶有表示安全的安全檢測(cè)結(jié)果標(biāo)識(shí)的待轉(zhuǎn)發(fā)數(shù)據(jù)包;將所述攜帶有表示安全的安全檢測(cè)結(jié)果標(biāo)識(shí)的待轉(zhuǎn)發(fā)數(shù)據(jù)包發(fā)送給接收端; 所述安全引擎,用于從與自身對(duì)應(yīng)的所述環(huán)形隊(duì)列中獲取待轉(zhuǎn)發(fā)數(shù)據(jù)包;對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全防護(hù)檢測(cè);將攜帶有安全檢測(cè)結(jié)果標(biāo)識(shí)的待轉(zhuǎn)發(fā)數(shù)據(jù)包放入與自身對(duì)應(yīng)的環(huán)形隊(duì)列中; 所述環(huán)形隊(duì)列,用于存儲(chǔ)所述包處理模塊發(fā)送的所述待轉(zhuǎn)發(fā)數(shù)據(jù)包和與自身對(duì)應(yīng)的所述安全引擎發(fā)送的攜帶有表示安全的安全檢測(cè)結(jié)果標(biāo)識(shí)的待轉(zhuǎn)發(fā)數(shù)據(jù)包。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述包處理模塊,具體用于對(duì)從所述包收取模塊接收的多個(gè)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行底層協(xié)議安全防護(hù)檢測(cè);針對(duì)每個(gè)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包,當(dāng)對(duì)該待轉(zhuǎn)發(fā)數(shù)據(jù)包的檢測(cè)結(jié)果為該待轉(zhuǎn)發(fā)數(shù)據(jù)包安全時(shí),根據(jù)預(yù)設(shè)負(fù)載均衡算法,將該待轉(zhuǎn)發(fā)數(shù)據(jù)包發(fā)送給多個(gè)安全引擎中負(fù)載能力最強(qiáng)的安全引擎對(duì)應(yīng)的環(huán)形隊(duì)列;當(dāng)對(duì)該待轉(zhuǎn)發(fā)數(shù)據(jù)包的檢測(cè)結(jié)果為該待轉(zhuǎn)發(fā)數(shù)據(jù)包有安全威脅時(shí),將該待轉(zhuǎn)發(fā)數(shù)據(jù)包丟棄或者阻斷轉(zhuǎn)發(fā)處理。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括:配置解析模塊,用于根據(jù)性能需求和處理器硬件制約條件設(shè)置所述數(shù)據(jù)包轉(zhuǎn)發(fā)模塊的線程個(gè)數(shù)和安全引擎的個(gè)數(shù),對(duì)所述數(shù)據(jù)包轉(zhuǎn)發(fā)模塊和安全引擎進(jìn)行初始化設(shè)置。
4.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述配置解析模塊,還用于根據(jù)已配置的所述安全引擎的個(gè)數(shù),分別為每個(gè)安全引擎分配與自身對(duì)應(yīng)的環(huán)形隊(duì)列。
5.一種負(fù)載均衡方法,其特征在于,應(yīng)用于數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)系統(tǒng),所述數(shù)據(jù)包轉(zhuǎn)發(fā)和安全防護(hù)檢測(cè)系統(tǒng)包括:多個(gè)用于對(duì)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎和與多個(gè)安全引擎一一對(duì)應(yīng)的環(huán)形隊(duì)列,所述環(huán)形隊(duì)列用于存儲(chǔ)與該環(huán)形隊(duì)列對(duì)應(yīng)的安全引擎將要進(jìn)行檢測(cè)的數(shù)據(jù)包;所述方法包括: 根據(jù)待轉(zhuǎn)發(fā)數(shù)據(jù)包的源IP、目的IP和所述安全引擎的個(gè)數(shù)進(jìn)行哈希運(yùn)算,得到哈希運(yùn)算結(jié)果; 確定是否存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引; 當(dāng)存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),確定所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎為將要對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎; 當(dāng)不存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),從所述多個(gè)安全引擎中確定對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎,并建立所述哈希運(yùn)算結(jié)果與確定的該安全引擎對(duì)應(yīng)的環(huán)形隊(duì)列索引之間的對(duì)應(yīng)關(guān)系。
6.如權(quán)利要求5所述的方法,其特征在于,當(dāng)存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),確定所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎為將要對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎,具體包括: 當(dāng)存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),確定所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值是否不小于預(yù)設(shè)權(quán)值閾值,所述負(fù)載權(quán)值為基于所述安全引擎的工作狀態(tài)、CPU占用率和獲取的該安全引擎的當(dāng)前數(shù)據(jù)處理流量確定的,所述負(fù)載權(quán)值表示該安全引擎的當(dāng)前數(shù)據(jù)包處理能力,所述當(dāng)前數(shù)據(jù)處理流量表示該安全引擎當(dāng)前單位時(shí)間內(nèi)處理的數(shù)據(jù)包的流量; 當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值不小于預(yù)設(shè)權(quán)值閾值時(shí),確定該環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎為將要對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎。
7.如權(quán)利要求6所述的方法,其特征在于,還包括: 當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值小于預(yù)設(shè)權(quán)值閾值時(shí),確定所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值是否為零; 當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值不為零時(shí),確定除該環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎以外的負(fù)載權(quán)值最大的安全引擎為將要對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎。
8.如權(quán)利要求7所述的方法,其特征在于,還包括: 當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值為零時(shí),將已分發(fā)給該安全引擎的數(shù)據(jù)包標(biāo)記為安全狀態(tài);或者 當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引`擎的負(fù)載權(quán)值為零時(shí),將已分發(fā)給該安全引擎的數(shù)據(jù)包分發(fā)給除該安全引擎以外的負(fù)載權(quán)值最大的安全引擎;或者 當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值為零時(shí),將已分發(fā)給該安全引擎的數(shù)據(jù)包平均分發(fā)給除該安全引擎以外的安全引擎。
9.如權(quán)利要求6所述的方法,其特征在于,確定所述安全引擎的負(fù)載權(quán)值,具體包括: 每隔預(yù)設(shè)周期,基于所述安全引擎的工作狀態(tài)、CPU占用率和獲取的該安全引擎的當(dāng)前數(shù)據(jù)處理流量確定所述安全引擎的負(fù)載權(quán)值。
10.如權(quán)利要求5所述的方法,其特征在于,當(dāng)不存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),從所述多個(gè)安全引擎中確定對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎,具體包括: 當(dāng)不存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),從所述多個(gè)安全引擎中確定負(fù)載權(quán)值最大的安全引擎為對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎,所述負(fù)載權(quán)值為基于所述安全引擎的工作狀態(tài)、CPU占用率和獲取的該安全引擎的當(dāng)前數(shù)據(jù)處理流量確定的,所述負(fù)載權(quán)值表示該安全引擎的當(dāng)前數(shù)據(jù)包處理能力,所述當(dāng)前數(shù)據(jù)處理流量表示該安全引擎當(dāng)前單位時(shí)間內(nèi)處理的數(shù)據(jù)包的流量。
11.如權(quán)利要求6-10任一所述的方法,其特征在于,針對(duì)每個(gè)安全引擎,基于該安全引擎的工作狀態(tài)、CPU占用率和獲取的該安全引擎的當(dāng)前數(shù)據(jù)處理流量確定該安全引擎的負(fù)載權(quán)值,具體包括:采用如下公式確定該安全引擎的負(fù)載權(quán)值:
12.—種負(fù)載均衡裝置,其特征在于,應(yīng)用于安全檢測(cè)系統(tǒng),所述安全檢測(cè)系統(tǒng)包括:多個(gè)用于對(duì)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎和與多個(gè)安全引擎一一對(duì)應(yīng)的環(huán)形隊(duì)列,所述環(huán)形隊(duì)列用于存儲(chǔ)與該環(huán)形隊(duì)列對(duì)應(yīng)的安全引擎將要進(jìn)行檢測(cè)的數(shù)據(jù)包;所述裝置,包括: 運(yùn)算單元,用于根據(jù)待轉(zhuǎn)發(fā)數(shù)據(jù)包的源IP、目的IP和所述安全引擎的個(gè)數(shù)進(jìn)行哈希運(yùn)算,得到哈希運(yùn)算結(jié)果; 索引確定單元,用于確定是否存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引; 第一確定單元,用于當(dāng)存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),確定所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎為將要對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎; 第二確定單元,用于當(dāng)不存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),從所述多個(gè)安全引擎中確定對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎,并建立所述哈希運(yùn)算結(jié)果與確定的該安全引擎對(duì)應(yīng)的環(huán)形隊(duì)列索引之間的對(duì)應(yīng)關(guān)系。
13.如權(quán)利要求12所述的裝置,其特征在于,所述第一確定單元,具體用于當(dāng)存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),確定所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值是否不小于預(yù)設(shè)權(quán)值閾值,所述負(fù)載權(quán)值為基于所述安全引擎的工作狀態(tài)、CPU占用率和獲取的該安全引擎的當(dāng)前數(shù)據(jù)處理流量確定的,所述負(fù)載權(quán)值表示該安全引擎的當(dāng)前數(shù)據(jù)包處理能力,所述當(dāng)前數(shù)據(jù)處理流量表示該安全引擎當(dāng)前單位時(shí)間內(nèi)處理的數(shù)據(jù)包的流量;當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值不小于預(yù)設(shè)權(quán)值閾值時(shí),確定該環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎為將要對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎。
14.如權(quán)利要求13所述的裝置,其特征在于,還包括: 第三確定單元,用于當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值小于預(yù)設(shè)權(quán)值閾值時(shí),確定所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值是否為零; 第四確定單元,用于當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值不為零時(shí),確定除該環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎以外的負(fù)載權(quán)值最大的安全引擎為將要對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎。
15.如權(quán)利要求14所述的裝置,其特征在于,還包括: 分發(fā)單元,用于當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值為零時(shí),將已分發(fā)給該安全引擎的數(shù)據(jù)包標(biāo)記為安全狀態(tài);或者 當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值為零時(shí),將已分發(fā)給該安全引擎的數(shù)據(jù)包分發(fā)給除該安全引擎以外的負(fù)載權(quán)值最大的安全引擎;或者 當(dāng)所述環(huán)形隊(duì)列索引對(duì)應(yīng)的安全引擎的負(fù)載權(quán)值為零時(shí),將已分發(fā)給該安全引擎的數(shù)據(jù)包平均分發(fā)給除該安全引擎以外的安全引擎。
16.如權(quán)利要求13所述的裝置,其特征在于,所述第一確定單元,具體用于每隔預(yù)設(shè)周期,基于所述安全引擎的工作狀態(tài)、CPU占用率和獲取的該安全引擎的當(dāng)前數(shù)據(jù)處理流量確定所述安全引擎的負(fù)載權(quán)值。
17.如權(quán)利要求12所述的裝置,其特征在于,所述第二確定單元,具體用于當(dāng)不存在與所述哈希運(yùn)算結(jié)果對(duì)應(yīng)的環(huán)形隊(duì)列索引時(shí),從所述多個(gè)安全引擎中確定負(fù)載權(quán)值最大的安全引擎為對(duì)所述待轉(zhuǎn)發(fā)數(shù)據(jù)包進(jìn)行安全檢測(cè)的安全引擎,所述負(fù)載權(quán)值為基于所述安全引擎的工作狀態(tài)、CPU占用率和獲取的該安全引擎的當(dāng)前數(shù)據(jù)處理流量確定的,所述負(fù)載權(quán)值表示該安全引擎的當(dāng)前數(shù)據(jù)包處理能力,所述當(dāng)前數(shù)據(jù)處理流量表示該安全引擎當(dāng)前單位時(shí)間內(nèi)處理的數(shù)據(jù)包的流量。
18.如權(quán)利要求13-17任一所述的裝置,其特征在于,所述第一確定單元,具體用于采用如下公式確定所述安全引擎的負(fù)載權(quán)值:
【文檔編號(hào)】H04L29/06GK103685321SQ201310753226
【公開(kāi)日】2014年3月26日 申請(qǐng)日期:2013年12月31日 優(yōu)先權(quán)日:2013年12月31日
【發(fā)明者】彭權(quán) 申請(qǐng)人:北京神州綠盟信息安全科技股份有限公司, 北京神州綠盟科技有限公司