本申請涉及通信技術領域,特別涉及一種基于多CPU的DDOS攻擊識別的方法和裝置。
背景技術:
DDOS(Distributed Denial of Service,分布式拒絕服務)攻擊是一個或多個攻擊者通過控制大量的計算機作為攻擊源,同時向某個服務器發(fā)送大量數(shù)據(jù),最終導致服務器癱瘓的攻擊方式。DDOS攻擊會造成網(wǎng)絡資源浪費、鏈路帶寬堵塞、服務器資源耗盡而業(yè)務中斷。
現(xiàn)有技術通過在接收到報文后,針對報文特征統(tǒng)計報文數(shù)量,獲得流量速率,比較流量速率和預設的閾值。在流量速率超出預設的閾值時,對后續(xù)的該類報文進行限速或阻斷等防護措施來實現(xiàn)識別并防護攻擊的目的。
然而,在SMP(Symmetric Multi-Processing,對稱多處理系統(tǒng))的架構下,如果沒有使用自旋鎖,因為多CPU使用同一個存儲結構進行流量統(tǒng)計,在并發(fā)進行加法操作時,會產生錯誤計算,導致統(tǒng)計的速率比實際的速率偏小;而如果使用了自旋鎖,則會因為CPU等待讀寫而產生CPU處理資源的浪費。因此,現(xiàn)有技術在SMP架構下無法有效識別DDOS攻擊。
技術實現(xiàn)要素:
有鑒于此,本申請?zhí)峁┮环N基于多CPU的DDOS攻擊識別的方法和裝置,用以解決現(xiàn)有技術在SMP的架構下,無法有效識別DDOS攻擊的問題。
具體地,本申請是通過如下技術方案實現(xiàn)的:
一種基于多CPU的DDOS攻擊識別的方法,應用于對稱多處理結構SMP設備,包括:
接收到目標會話的報文后,提取該報文的指定報文特征和處理該報文的目標CPU的標識;
基于預設的算法對所述指定報文特征進行計算得到索引值,并查找預設的索引表中與該索引值對應的索引表項,以及更新該索引表項中記錄的報文數(shù)量;其中,所述索引表項包括與所述SMP設備的各CPU對應的子表項;該子表項包括對應的CPU的標識和該CPU所處理的所述目標會話的報文數(shù)量的映射關系;
基于所述索引表項中各子表項中記錄的報文數(shù)量統(tǒng)計在單位時間內各CPU對應于所述目標會話的報文接收速率,并將各子表項對應的所述報文接收速率相加,得到所述SMP設備單位時間內對應于所述目標會話的報文接收速率;
判斷所述SMP設備單位時間內對應于所述目標會話的報文接收速率是否大于預設的閾值;如果是,確定所述目標會話的報文為DDOS攻擊報文。
在所述基于多CPU的DDOS攻擊識別的方法中,所述方法還包括:
當根據(jù)計算得到的索引值無法在預設的索引表中查找到對應的索引表項時,新建對應該索引值的索引表項。
在所述基于多CPU的DDOS攻擊識別的方法中,所述方法還包括:
確定所述目標會話的報文屬于DDOS攻擊后,為所述索引表項添加預設的防護標識。
在所述基于多CPU的DDOS攻擊識別的方法中,所述方法還包括:
針對任一添加了所述防護標識的索引表項,基于該索引表項中各子表項中記錄的報文數(shù)量統(tǒng)計在單位時間內各CPU對應的目標報文的接收速率,并將各子表項對應的目標報文接收速率相加,得到所述SMP設備單位時間內對應于目標會話的報文接收速率;
如果在預設時長內,所述SMP設備對應于目標會話的報文接收速率始終小于或等于預設的閾值,刪除該索引表項中的防護標識;或者刪除該索引表項。
在所述基于多CPU的DDOS攻擊識別的方法中,所述方法還包括:
對與添加了防護標記的索引表項對應的目標會話的報文進行防護處理;其中,所述防護處理包括對所述目標會話的報文進行限速或阻斷。
一種基于多CPU的DDOS攻擊識別的裝置,應用于對稱多處理結構SMP設備,包括:
提取單元,用于接收到目標會話的報文后,提取該報文的指定報文特征和處理該報文的目標CPU的標識;
統(tǒng)計單元,用于基于預設的算法對所述指定報文特征進行計算得到索引值,并查找預設的索引表中與該索引值對應的索引表項,以及更新該索引表項中記錄的報文數(shù)量;其中,所述索引表項包括與所述SMP設備的各CPU對應的子表項;該子表項包括對應的CPU的標識和該CPU所處理的所述目標會話的報文數(shù)量的映射關系;
計算單元,用于基于所述索引表項中各子表項中記錄的報文數(shù)量統(tǒng)計在單位時間內各CPU對應于所述目標會話的報文接收速率,并將各子表項對應的所述報文接收速率相加,得到所述SMP設備單位時間內對應于所述目標會話的報文接收速率;
判斷單元,用于判斷所述SMP設備單位時間內對應于所述目標會話的報文接收速率是否大于預設的閾值;如果是,確定所述目標會話的報文為DDOS攻擊報文。
在所述基于多CPU的DDOS攻擊識別的裝置中,所述裝置還包括:
新建單元,用于當根據(jù)計算得到的索引值無法在預設的索引表中查找到對應的索引表項時,新建對應該索引值的索引表項。
在所述基于多CPU的DDOS攻擊識別的裝置中,所述裝置還包括:
添加單元,用于確定所述目標會話的報文屬于DDOS攻擊后,為所述索引表項添加預設的防護標識。
在所述基于多CPU的DDOS攻擊識別的裝置中,所述裝置還包括:
所述計算單元,進一步用于針對任一添加了所述防護標識的索引表項,基于該索引表項中各子表項中記錄的報文數(shù)量統(tǒng)計在單位時間內各CPU對應的目標報文的接收速率,并將各子表項對應的目標報文接收速率相加,得到所述SMP設備單位時間內對應于目標會話的報文接收速率;
刪除單元,用于如果在預設時長內,所述SMP設備對應于目標會話的報文接收速率始終小于或等于預設的閾值,刪除該索引表項中的防護標識;或者刪除該索引表項。
在所述基于多CPU的DDOS攻擊識別的裝置中,所述裝置還包括:
防護單元,用于對與添加了防護標記的索引表項對應的目標會話的報文進行防護處理;其中,所述防護處理包括對所述目標會話的報文進行限速或阻斷。
在本申請實施例中,接收到目標會話的報文后,獲取所述目標會話的報文的指定報文特征和處理所述目標會話的報文的目標CPU的標識,然后根據(jù)所述指定報文特征和所述目標CPU的標識,更新所述目標CPU接收所述目標會話的報文數(shù)量,在達到預設的時間周期后,分別統(tǒng)計在單位時間內各CPU對應于所述目標會話的報文接收速率,并把各CPU對應于所述目標會話的報文接收速率相加,得到所述SMP設備單位時間內對應于所述目標會話的報文接收速率,判斷所述SMP設備單位時間內對應于所述目標會話的報文接收速率是否大于預設的閾值,如果是,確定所述目標會話的報文屬于DDOS攻擊。
由于本申請實施例的技術方案,針對SMP設備的每個CPU分別統(tǒng)計對應于目標會話的報文接收速率,然后匯總各個CPU對應于目標會話的報文接收速率,求和得到所述SMP設備對應于目標會話的報文接收速率,所以在并發(fā)地進行統(tǒng)計時不會導致速率偏小,也沒有因為使用了自旋鎖而造成CPU處理資源的浪費??梢杂行У卦赟MP架構下識別DDOS攻擊。
附圖說明
圖1是本申請示出的一種基于多CPU的DDOS攻擊識別的方法的流程圖;
圖2是本申請示出的一種基于多CPU的DDOS攻擊識別的裝置的邏輯框圖;
圖3是本申請示出的一種基于多CPU的DDOS攻擊識別的裝置的硬件結構圖。
具體實施方式
為了使本技術領域的人員更好地理解本發(fā)明實施例中的技術方案,并使本發(fā)明實施例的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖對現(xiàn)有技術方案和本發(fā)明實施例中的技術方案作進一步詳細的說明。
在現(xiàn)有技術中,針對DDOS攻擊的防御,可以在接收到目標會話的報文后,提取上述目標會話的報文的指定報文特征,然后根據(jù)上述指定報文特征統(tǒng)計接收上述目標會話的報文的數(shù)量,并計算單位時間內接收上述目標會話的報文的速率。然后,比較接收上述目標會話的報文的速率與預設的閾值,當接收上述目標會話的報文的速率大于預設的閾值時,確定上述目標會話的報文是DDOS攻擊報文,此時,可以對后續(xù)的上述目標會話的報文進行限速或阻斷等防護措施來防護DDOS攻擊。
現(xiàn)有技術適用于使用單一存儲結構進行流量統(tǒng)計的網(wǎng)絡環(huán)境,如果將現(xiàn)有技術直接移植到SMP架構下,多CPU使用一個存儲結構進行流量統(tǒng)計,如果使用自旋鎖,則當任一CPU在統(tǒng)計接收到的目標會話的報文的數(shù)量時,其它CPU處于閑置狀態(tài),造成資源浪費。其中,自旋鎖指的是針對多CPU架構引入的一種鎖機制,在任何時刻,最多只能有一個CPU為自旋鎖的保持者,該CPU可以訪問存儲結構,而其它CPU無法訪問存儲結構。
而如果不使用自旋鎖,多CPU使用同一個存儲結構進行流量統(tǒng)計時,會產生錯誤計算,導致統(tǒng)計的速率比實際的速率偏小。比如:在存儲結構中記錄的報文數(shù)量是100時,又接收到3個目標會話的報文,分別由3個CPU處理,每個CPU分別讀取存儲結構中的報文數(shù)量加1,在并行處理時,得到統(tǒng)計數(shù)量為101,小于實際的103,因此計算得到的單位時間的接收目標會話的報文的速率小于實際的速率。
可見,現(xiàn)有技術無法直接移植到SMP架構下有效地識別DDOS攻擊。為此,本申請實施例引入多個存儲結構,對應于SMP架構下的每一個CPU,針對每個CPU分別統(tǒng)計接收目標會話的報文的速率,然后匯總、相加得到SMP設備對應于目標會話的報文接收速率,通過比較計算得到的報文接收速率與預設閾值的大小,可以有效地識別DDOS攻擊。
參見圖1,為本申請示出的一種基于多CPU的DDOS攻擊識別的方法的流程圖,該方法的執(zhí)行主體是SMP設備;所述方法包括以下步驟:
步驟101:接收到目標會話的報文后,提取該報文的指定報文特征和處理該報文的目標CPU的標識。
步驟102:基于預設的算法對所述指定報文特征進行計算得到索引值,并查找預設的索引表中與該索引值對應的索引表項,以及更新該索引表項中記錄的報文數(shù)量;其中,所述索引表項包括與所述SMP設備的各CPU對應的子表項;該子表項包括對應的CPU的標識和該CPU所處理的所述目標會話的報文數(shù)量的映射關系。
步驟103:基于所述索引表項中各子表項中記錄的報文數(shù)量統(tǒng)計在單位時間內各CPU對應于所述目標會話的報文接收速率,并將各子表項對應的所述報文接收速率相加,得到所述SMP設備單位時間內對應于所述目標會話的報文接收速率。
步驟104:判斷所述SMP設備單位時間內對應于所述目標會話的報文接收速率是否大于預設的閾值;如果是,確定所述目標會話的報文為DDOS攻擊報文。
上述SMP設備,指的是匯集了多CPU的計算機設備,其中,各CPU間共享內存子系統(tǒng)以及總線結構。系統(tǒng)將任務隊列對稱地分布在多個CPU上,所有的CPU都可以平等地訪問內存、輸入輸出接口等,相比單個CPU的計算機設備而言,極大地提高了整個系統(tǒng)的數(shù)據(jù)處理能力。
在本申請實施例中,SMP設備針對DDOS攻擊的防御,可以在接收到目標會話的報文后,提取上述目標會話的報文的指定報文特征和處理上述目標會話的報文的目標CPU的標識。其中,上述指定報文特征可以包括報文長度、TTL(Time To Live,生存時間值)、源端口、目的端口等信息,也可以包括數(shù)據(jù)段的一些信息。
根據(jù)上述指定報文特征確定的目標會話的報文可以是屬于同一會話的報文,也包括屬于一類會話的報文,取決于上述指定報文特征的具體內容,而上述指定報文特征的選擇可以由人工設置。
在本申請實施例中,SMP設備在提取到上述目標會話的報文的指定報文特征后,可以基于預設的算法對上述指定報文特征進行計算,得到索引值。其中,上述預設的算法包括hash算法、RFC(Recursive Flow Classification,遞歸流分類)算法等。
SMP設備在計算得到上述指定報文特征的索引值后,可以根據(jù)該索引值查找預設的索引表,查到與該索引值對應的索引表項。上述索引表包括SMP設備接收到的報文的指定報文特征經(jīng)計算得到的索引值與該指定報文特征對應的報文的接收數(shù)量的映射關系。具體而言,上述索引表的索引表項包括與SMP設備的各CPU對應的子表項,其中,每個子表項包括對應的CPU的標識和該CPU所處理的上述目標會話的報文的數(shù)量的映射關系。所以,指定報文特征計算得到的索引值對應的報文的接收數(shù)量,實際上是由子表項中記錄的報文數(shù)量累加得到。
另外,如果SMP設備根據(jù)該索引值,無法在預設的索引表中查找到與該索引值對應的索引表項,說明上述目標會話的報文是上述目標會話的首報文,在這種情況下,可以新建一個與該索引值對應的索引表項。
SMP設備在查到與該索引值對應的索引表項后,根據(jù)處理上述目標會話的報文的目標CPU的標識,查找與該目標CPU的標識對應的子表項,然后在查找到對應該目標CPU的標識的子表項后,在子表項中記錄的原有的報文數(shù)量上加一。
另外,如果SMP設備根據(jù)處理上述目標會話的報文的目標CPU的標識,在與該索引值對應的索引表項中無法查到與該目標CPU的標識對應的子表項,所述該目標CPU是首次處理上述目標會話的報文,在這種情況下,可以新建一個與該目標CPU的標識對應的子表項,然后,在該子表項的報文數(shù)量中記錄為一。
在本申請實施例中,當達到預設的時間周期后,SMP設備可以統(tǒng)計在當前時間周期內上述目標會話的報文對應的索引表項中各子表項中記錄的報文數(shù)量,在示出的一種實施方式中,針對每一個子表項統(tǒng)計報文數(shù)量,可以將當前時間周期結束時記錄的報文數(shù)量減去上一個時間周期結束時記錄的報文數(shù)量,得到每一個子表項對應的CPU在當前時間周期內接收上述目標會話的報文的數(shù)量。其中,上述時間周期可以根據(jù)應用需要進行設置,例如,可以設置為3秒。
在統(tǒng)計得到當前時間周期內接收到的上述目標會話的報文的數(shù)量后,可以接著計算每一個子表項對應的CPU在當前時間周期內對應于上述目標會話的報文接收速率,然后將各子表項對應的報文接收速率相加,得到SMP設備對應于上述目標會話的報文接收速率。
在本申請實施例中,SMP設備在計算得到對應于上述目標會話的報文接收速率后,可以將該報文接收速率與預設的閾值比較大小,其中,預設的閾值可以根據(jù)實際的應用環(huán)境人工配置。如果該報文接收速率大于預設的閾值,則可以確定上述目標會話的報文為DDOS攻擊報文。
當SMP設備確定上述目標會話的報文為DDOS攻擊報文時,可以為上述目標會話的報文對應的上述索引表項添加預設的防護標識。
通過該防護標識,SMP設備可以針對上述索引表項對應的上述目標會話的報文進行防護處理。其中,防護處理包括對上述目標會話的報文進行限速或者阻斷。
在示出的一種實施方式中,SMP設備在接收到報文后,可以提取指定報文特征,并根據(jù)該指定報文特征查找預設的索引表中與該指定報文特征對應的索引表項,如果該索引表項被添加防護標記,則可以丟棄該報文。
在本申請實施例中,添加了上述防護標識的索引表項對應的目標會話的報文可能并非始終為DDOS攻擊報文,在這種情況下,如果SMP設備始終以處理DDOS攻擊報文的方式處理添加了上述防護標識的索引表項對應的目標會話的報文,顯然是錯誤的處理方式。因此,本申請實施例對添加了防護標記的索引表項引入老化機制,用以解決上述問題。
針對任一添加了上述防護標記的索引表項,SMP設備可以繼續(xù)統(tǒng)計接收該索引表項對應的目標會話的報文的數(shù)量,在達到周期時間后,統(tǒng)計該索引表項中各子表項中記錄的報文數(shù)量,確定在這個時間周期內各CPU接收該索引表項對應的目標會話的報文的數(shù)量,并計算單位時間內各CPU對應于該目標會話的報文接收速率,并進行累加,得到SMP設備對應于該目標會話的報文接收速率。
在得到報文接收速率后,仍舊將該報文接收速率與預設的閾值比較大小。在預設時長內,SMP設備可以統(tǒng)計比較多次,如果該報文接收速率始終小于或等于預設的閾值,則說明該索引表項對應的目標會話的報文可能已經(jīng)不是DDOS攻擊報文了,在這種情況下,可以對該索引表項進行相應的處理。其中,上述預設時長即為老化機制的表項老化時長,可以根據(jù)實際應用情況進行配置,例如,預設時長可以配置為15秒。
在示出的一種實施方式中,SMP設備可以刪除該索引表項,用于清理該索引表項占據(jù)的內存。在示出的另一種實施方式中,SMP設備可以刪除該索引表項中的防護標識,表明該索引表項對應的目標會話的報文不再是DDOS攻擊報文。上述措施可以有效規(guī)避SMP對報文的錯誤處理。
綜上所述,在本申請實施例中,SMP設備針對DDOS攻擊,在接收到目標會話的報文后,提取該目標會話的報文的指定報文特征以及處理該目標會話的報文的CPU的標識,然后在與該指定報文特征計算得到的索引值對應的索引表項中,與該CPU的標識對應的子表項中更新報文數(shù)量。由于對接收到的目標會話的報文的對應每一個CPU都有一個獨立的存儲結構進行流量統(tǒng)計,因此,在統(tǒng)計過程中不會出錯。在預設的時間周期達到后,SMP設備可以計算各CPU對應于該目標會話的報文接收速率,然后累加得到SMP設備對應于該目標會話的報文接收速率,并比較報文接收速率與預設的閾值的大小,從而確定該目標會話的報文是否為DDOS攻擊報文??梢姡旧暾垖嵤├梢杂行У卦赟MP架構下識別DDOS攻擊。
與本申請基于多CPU的DDOS攻擊識別的方法的實施例相對應,本申請還提供了用于執(zhí)行上述方法的實施例的裝置的實施例。
參見圖2,為本申請示出的一種基于多CPU的DDOS攻擊識別的裝置的邏輯框圖:
如圖2所示,該基于多CPU的DDOS攻擊識別的裝置20包括:
提取單元210,用于接收到目標會話的報文后,提取該報文的指定報文特征和處理該報文的目標CPU的標識。
統(tǒng)計單元220,用于基于預設的算法對所述指定報文特征進行計算得到索引值,并查找預設的索引表中與該索引值對應的索引表項,以及更新該索引表項中記錄的報文數(shù)量;其中,所述索引表項包括與所述SMP設備的各CPU對應的子表項;該子表項包括對應的CPU的標識和該CPU所處理的所述目標會話的報文數(shù)量的映射關系。
計算單元230,用于基于所述索引表項中各子表項中記錄的報文數(shù)量統(tǒng)計在單位時間內各CPU對應于所述目標會話的報文接收速率,并將各子表項對應的所述報文接收速率相加,得到所述SMP設備單位時間內對應于所述目標會話的報文接收速率。
判斷單元240,用于判斷所述SMP設備單位時間內對應于所述目標會話的報文接收速率是否大于預設的閾值;如果是,確定所述目標會話的報文為DDOS攻擊報文。
在本例中,所述裝置還包括:
新建單元250,用于當根據(jù)計算得到的索引值無法在預設的索引表中查找到對應的索引表項時,新建對應該索引值的索引表項。
在本例中,所述裝置還包括:
添加單元260,用于確定所述目標會話的報文屬于DDOS攻擊后,為所述索引表項添加預設的防護標識。
在本例中,所述裝置還包括:
所述計算單元230,進一步用于針對任一添加了所述防護標識的索引表項,基于該索引表項中各子表項中記錄的報文數(shù)量統(tǒng)計在單位時間內各CPU對應的目標報文的接收速率,并將各子表項對應的目標報文接收速率相加,得到所述SMP設備單位時間內對應于目標會話的報文接收速率。
刪除單元270,用于如果在預設時長內,所述SMP設備對應于目標會話的報文接收速率始終小于或等于預設的閾值,刪除該索引表項中的防護標識;或者刪除該索引表項。
在本例中,所述裝置還包括:
防護單元280,用于對與添加了防護標記的索引表項對應的目標會話的報文進行防護處理;其中,所述防護處理包括對所述目標會話的報文進行限速或阻斷。
本申請基于多CPU的DDOS攻擊識別的裝置的實施例可以應用在SMP設備上。裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在SMP設備的處理器將非易失性存儲器中對應的計算機程序指令讀取到內存中運行形成的。從硬件層面而言,如圖3所示,為本申請基于多CPU的DDOS攻擊識別的裝置所在SMP設備的一種硬件結構圖,除了圖3所示的處理器、內存、網(wǎng)絡接口、以及非易失性存儲器之外,實施例中裝置所在的SMP設備通常根據(jù)該基于多CPU的DDOS攻擊識別的裝置的實際功能,還可以包括其他硬件,對此不再贅述。
上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應步驟的實現(xiàn)過程,在此不再贅述。
對于裝置實施例而言,由于其基本對應于方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請保護的范圍之內。