作者:为亿阳信通安全事业部技术人员 林福生
近一两年从国内的安全厂商开始进军高端网络安全市场,NP这个名词开始变得流行起来,不过虽然同是NP,但在技术细节上却存在着很多不同的区分,这也直接影响到产品的性能和安全性,下面就让我们NP以及NP的应用,进行一番剖析。
NP即网络处理器,即专门用于做网络数据处理的芯片。网络处理器在处理器家族中属于专用处理器,即专门为了特殊应用而设计的处理器,它有别于X86系列通用处理器。
目前提供NP芯片的厂家也很多,基本上都符合NPF指定的规范,就目前国内市场上应用最为广泛的是INTEL公司的IXPXXX系列芯片,包括IXP4XX、 IXP12XX、 IXP24XX 、IXP28XX等;
IXP系列NP处理器从体系结构上看基本上都一样,都是由一个RISC处理器加一个微引擎构成,RISC处理器主要用于控制微引擎的运行,所以又称为控制层面,微引擎完成对网络数据包的处理,以实现高性能,所以又称为数据层面;不同IXP系列处理器主要是RISC的型号和主频,以及微引擎的个数有所不同;具体的性能参考表一。IXP系列的体系架构虽然相同,但是在性能上却有天壤之别,NP系统是一个更先进的系统,但是一些低端的NP系统却就像最原始的汽车,可能连X86架构下的马车都不如。
下面就每一种NP芯片的具体特点及应用作一下详细论述。
- IXP4xx
IXP4xx的市场定位主要在中低端市场,因此使用基于IXP4xx芯片做出的网络安全产品也主要定位在中低端市场中,特别需要注意的是,IXP425内嵌了一个加密引擎,支持一些公开的密码算法,如:3DES、AES、MD5、SHA1;因此大量安全产商使用基于这种芯片的板卡做出低端的VPN/FW;不过4xx系列芯片产品存在一个致命缺陷,由于不能进行微码编程,而Intel预置的微码又没有完成FW/VPN的处理,因此产商在开发FW/VPN功能的时候,实际上对IP报文的处理是通过533Mhz的Xscale来处理的,因而在性能上比基于X86架构的安全产品性能上不会有太大变化,这可能也是一些国内厂商采取变产品不变价格的策略的原因。
另外需要特别注意的是,使用这种芯片开发出来的网络安全设备,不是每个网络接口都是快速的。IXP4XX通过ME实现的Ethernet MAC只有两个NPE A 和NPE B,一般板卡设计产商都会通过PCI Bridge扩展多个以太网口。从性能上考量,只有通过NPEA/NEPB的接口是比较快的,而通过PCIBridge扩展出来的网络接口性能相对来说就比较低了;由于IXP4XX的结构设计约束,在任何两个网络接口之间通信都必须通过Xscale进行交换(包括TCP/IP处理),,正是由于了这个限制,基于IXP4XX开发网络安全设备本质上不会比基于X86开发的网络安全设备在性能上有所提高,有的时候反而会更低;
- IXP12XX
IXP从12XX系列开始已经可以让软件开发人员根据不同的应用定制微引擎上的微码,以实现不同的功能,不过由于IXP12XX其微引擎只有6个,每个微引擎上可以存储条2k*32位的指令,12XX 系列NP只能用来做简单的包转发处理和QOS处理,至于用作较为复杂的防火墙处理,就显得力不从心了,因此在国内使用12XX系列做出的防火墙性能都不高,要不就是功能十分简单;
-IXP24XX
从2003年开始,Intel公司推出了IXP24XX系列的网络处理器,这款网络处理器比12XX系列的网络处理器在性能上有了质的变化;同时基于IXP24XX系列的板卡设计上也复杂了很多;
目前国内很多安全产商开始使用基于这款芯片的板卡来设计网络安全设备,如防火墙,IDS;但是使用一个IXP2400是否可以做到千兆线速的防火墙呢?让我们看一下下面这张表
参考自Intel? Internet Exchange Architecture Software Building Blocks Applications
Line rate for 4 Gig ports
4 Gigabits/sec
Min Ethernet packet size
64 bytes (+ 20 byte inter packet gap)
Packet throughput for minimum packets
5.95 million packets/sec = (4 / (84*8)) * (10**9)
IXP2400 clock frequency
600 MHZ
Inter-packet arrival time for minimum packets
600/5.95 = 100.84 cycles
Compute cycles per packet for a single microengine
100
Compute cycles per packet for n microengines in
parallel
100*n
Latency per packet for a context pipe single microengine
100 * 8
Latency per packet for n microengines in parallel
100*8*n
以上我们可以看出如果使用一个IXP2400来做4个千兆口的线速,那么对于每个IP包的处理理论上不可以超过100*8*n,这还是理想情况下,也就是让微引擎处于绝对运行状态,而不是等待状态。实际上这是很难做到的,因为微引擎在访问内存的、使用寄存器、访问外围器件的时候,虽然只要一个指令,但是一般都有延时,多的可能达到100多个Cycles,如访问DRAM。根据经验,一般微引擎的利用率都在80%以下;
处理一个IP报文的过程是非常复杂的,一般都需要10K个Cycles以上才能完成处理,另外如果应用复杂的话,如防火墙应用中,还要兼顾分片报文重组,NAT,QOS,ARP处理,深度检测等,这些功能加上去后,处理的时间就会大大增加;因此使用单2400做出的防火墙可能在单纯包转发上到达线速,但是用户并不时将一个防火墙当作路由器来用,而是需要它完成一系列安全处理功能,因此只要把包过滤、NAT、抗DOS攻击、抗蠕虫攻击等功能加上后,性能就会成倍的下降;目前据了解,2004年开始,推出的高端防火墙基本上都采用基于IXP24XX芯片的板卡;
也许有人会问,为什么不推出使用双IXP2400或者多个IXP2400的板卡呢,从上面那个表可以看出,使用了双2400的设计后,对微码开发来说,提高了N的值,也就是说允许处理一个IP报文所使用的Cycles增加了,但是,我们却很难看到市场上有人使用双2400开发的安全设备,主要原因是什么呢?由于一个IXP2800的性能要比两个IXP2400的性能要高,但价格确更便宜,而且双IXP2400的板卡设计要比单IXP2400/单IXP2800的板卡设计要复杂的多,所以考虑投入和产出,一般的NP板卡设计产商都不愿意投入去研发基于双2400的板卡;同时,使用两个IXP2400进行处理并不是就意味着1+1=2,因为,在两个IXP2400同时做处理的时候,需要进行数据交换,这也会耗去IXP2400的性能。这也是国内到现在也无法看到双2400设计的板卡的原因;
-IXP28XX
IXP28XX的NP处理器从性能上比IXP24XX的性能又增加了很大;单从芯片的性能指标上看,IXP28XX比IXP24XX更有可能做出千兆线速的网络安全设备;但是目前还没有一家NP板卡厂商能够推出基于IXP2800的板卡,可能是由于IXP2800板卡的设计要比IXP2400板卡设计要更加复杂;不过IXP2800应该是高端防火墙的应用方向让我们期待着IXP28XX系列板卡的出现吧。
- 附录
型号
代表
RISC
微引擎
备注
每个ME的指令空间
微引擎个数
频率
每个ME的线程数
可编程能力
IXP4XX
IXP425
533Mhz的Xscale
N/A
3个
N/A
N/A
不可编程
1. Wan/Voice NPE
2. Ethernet NPE A(Ethernet MAC)
3. Ethernet NPE B(Ethernet MAC)SHA-1/MD5/DES/3DES/AES
IXP12XX
IXP1200
200Mhz StrongARM
2K x 32-bit
6个
200MHz
4
可以编程
N/A
IXP24XX
IXP2400
600Mhz的Xscale
4K x 40-bit
8个
600Mhz
8
可以编程
N/A
IXP28XX
IXP2800
700Mhz的Xscale
8K x 40-bit
16个
1400Mhz
8
可以编程
N/A
由CHINA通信网组稿