現在市場上的防火墻、UTM產品從其架構上來說,大概分為三大類。
第一類是基于X86平臺的,這種平臺通常使用一顆或多顆主CPU來處理業務數據,網卡芯片和CPU通過PCI總線來傳輸數據。
由于傳統的32位PCI總線頻率為33MHZ,所以,理論通訊速率為:132 MB Bytes/S即:1056 MBits/S.單從PCI通訊的速率上來說是可以滿足千兆防火墻的需要,但實際上PCI總線在X86系統中是共享的,也就是說,如果有兩個網卡同時傳輸 數據,那么每個網卡所能獲得的速率就只有 66 MB Bytes/S,即:528 Mbits/S ,如果有四個網口同時傳輸數據,則每個網卡所能獲得的速度只有16 MB Bytes/S,即128Mbit/S.
從總線速度來看基于32位PCI總線的X86平臺,做為百兆防火墻的方案是沒有任何問題的。但X86平臺的防火墻方案,數據從網卡到CPU之間的傳 輸機制是靠“中斷”來實現的,中斷機制導致在有大量數據包的需要處理的情況下(如:64 Bytes的小包,以下簡稱小包),X86平臺的防火墻吞吐速率不高,大概在30%左右,并且CPU占用會很高。這是所有基于X86平臺的防火墻所共同存 在的問題。
因此,基于32位PCI總線的X86平臺是不能做為千兆防火墻使用的,因為32位PCI總線的通訊速率不能達到千兆防火墻的要求。針對這個問題,Intel提 出了解決方案,可以把32位的PCI總線升級到了PCI-E ,即:PCI-Express,這樣,PCI-E 4X的總線的速度就可以達到 2000MB Bytes/S,即:16Gbits/S,并且PCI-E各個PCI設備之間互相獨立不共享總線帶寬,每個基于PCI-E的網口可以使用的帶寬 為:2000MB Bytes/S,即:16Gbits/S,所以基于PCI-E 4X的X86從系統帶寬上來說,做為千兆防火墻是沒有任何問題的。但是,基于PCI-E的防火墻數據從網卡到CPU之間傳輸同樣使用“中斷”機制來傳輸數 據,所以小包(64 Bytes)的通過率仍然為:30-40%.
第二類,基于ASIC架構的防火墻、UTM產品。
從上面對X86架構防火墻的分析中,我們了解到X86平臺的防火墻其最大的缺點就是小包通速率低,只有30%-40%,造成這個問題的主要原因是因 為X86平臺的中斷機制以及X86平臺的防火墻所有數據都要經過主CPU處理。基于ASCI架構的防火墻從架構上改進了中斷機制,數據從網卡收到以后,不 經過主CPU處理,而是經過集成在系統中的一些芯片直接處理,由這些芯片來完成傳統防火墻的功能,如:路由、NAT、防火墻規則匹配等。這樣數據不經過主 CPU處理,不使用中斷機制,理所當然,ASIC是做為功能簡單的防火墻的最佳選擇。
但隨之而來的問題是,ASIC架構的防火墻是芯片一級的,所有的防火墻動作由芯片來處理。這些芯片的功能比較單一,要升級維護的開發周期比較長。尤 其是作為多功能集成的UTM網關來說,無法在芯片一級完成殺毒、垃圾郵件過濾、網絡監控等比較復雜的功能,所以說,ASIC架構用來做功能簡單的防火墻, 是完全適用的,64 Bytes的小包都可以達到線速。但ASIC架構做為UTM就不是理想的選擇,因為ASIC架構不可能把像網關殺毒、垃圾郵件過濾、網絡監控等這些功能做 到芯片一級去。
第三類,基于NP架構的防火墻。
NP架構實現的原理和ASIC類似,但升級、維護遠遠好于ASIC 架構。NP架構在的每一個網口上都有一個網絡處理器,即:NPE,用來處理來自網口的數據。每個網絡處理器上所運行的程序使用微碼編程,其軟件實現的難度 比較大,開發周期比ASIC短,但比X86長。做為UTM,由于NP架構每個網口上的網絡處理器性能不高,所以同樣無法完成像網關殺毒、垃圾郵件、過濾、 訪問監控等復雜功能。
可能有人會問?ASIC 和 NP為什么不可以把網關殺毒、和垃圾郵件過濾、訪問監控等這些功能放在主CPU上來實現?這樣不就可以做為UTM方案使用了嗎?這個問題問得很好,目前有 很多基于NP和ASIC的UTM都是這樣做的,但問題是ASIC和NP架構的防火墻,其主CPU性能很低,如:Intel基于IXP2400的千高端NP 方案,主CPU只有1.0G,處理能力還比不上Celeron 1.0G,大家可以對照一下與其主頻相當的X86平臺的處理能力。所以如果以ASIC和NP架構來實現一個UTM網關,只能是做為低端的方案來使用,如桌 面型的UTM,而并不能做為中、高端的UTM來使用。
言歸正傳,那什么才是UTM網關合適的硬件方案呢?如果要在上述三種方案中選擇一種的話,非X86架構莫屬,當然,隨著技術的發展,還有可能出現第 四種防火墻的解決方案,可以做為實現UTM網關的完美平臺,但這是后話,值得我們期待。X86平臺的主要缺陷在于64Bytes的小包不能達到線速。但在 實際用戶中,除非是DOS、DDOS攻擊才會產生大量的的小包,用戶正常的應用不可能產生大量的小包。如果在基于X86平臺的UTM產品中,解決好DOS 和DDOS攻擊的問題,那么,X86平臺就是UTM網關理所當然的解決方案。對于這個問題,已經有產品開發了防DOS、DDOS攻擊的功能,不但可以防御 來自外網的DOS攻擊而且能夠防御來自企業內部網絡的DOS、DDOS攻擊,這樣我們的UTM產品就解決了這個問題,使網關的穩定性和可靠性大大加強,在 UTM整體性能方面優越于NP、ASIC.在遇到大規模的DOS、DDOS攻擊時,也不會占用太多的CPU資源。
既然選擇了X86做為UTM網關的硬件平臺,那么,還會存在一個問題:“如果UTM網關處理的業務比較多,是否會影響網絡速度?”,比較簡單的答復 是這樣的:在CPU占用低于90%的時候,是不會影響網絡速度的。因為UTM網關雖然集成了眾多的功能,并且要求主CPU來處理這所有的業務。但從業務的 方面來看,是獨立的,如:收發郵件的數據就不會被做為通過HTTP上網的數據來處理,通過HTTP上網的數據也不會被做為郵件的數據來處理,所以當一個數 據包通過UTM時,是分業務分流程處理的,在CPU占用90%以下時,CPU完全可以實時的處理這些業務。但如果CPU占用超過了90%,那怎么 辦?X86的平臺是不是不能解決了?答案是否定的,對于這個問題,X86的平臺的方案有兩種解決方法:
方法一:支持多顆CPU.部分高端設備都配備了2顆以上CPU,更高端的設備甚至配備4顆CPU,這樣CPU的處理能力也就不會成為瓶頸。
方法二:使用加速卡。比如把郵件過濾做成一個加速卡安全在系統中,在主CPU發現某個數據包為郵件數據時,把該數據包交給加速卡來完成,不占用主CPU資源。
綜上所述可以得出一個結論,X86架構是UTM網關理想的硬件平臺,目前來看,沒有其它平臺可以代替。
注解:
NP:網絡處理器(Network Processor)
ASIC:專用集成電路(Application Specific Integrated Circuit)
百兆設備:指數據傳輸能力在 100Mbits/S 以上的網絡傳輸設備,即:10Mbytes/S.
千兆設備:指數據傳輸能力在 1000Mbits/S以上的網絡傳輸設備,即:100Mbytes/S