防火牆、UTM產品硬體平臺架構詳細解析(轉)

BSDLite發表於2007-08-15
防火牆、UTM產品硬體平臺架構詳細解析(轉)[@more@]  現在市場上的防火牆、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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-960288/,如需轉載,請註明出處,否則將追究法律責任。

相關文章