网络分流器|基于复合存储的100Gbps DPI技术正则表达式
深度报文检测是使用预约义的一系列规则在流级上对报文载荷(而非仅仅是报文头)进行匹配,并根据匹配的结果决定对报文所采用的动做的一个过程。算法
(1)依靠更高性能的服务器或服务器集群来加速DPI吞吐量,因为在报文流上执行多机器或多核的负载均衡很是方便,这种方法很容易达到很高的处理性能,缺点是代价比较大。后端
(2)依靠更好的软件算法来提升匹配性能,目前研究界普通采用以AC算法做为基础来优化性能,主要有WU-MANBER、SBOM、一次多字节(俗称多步)、BloomFilter等方法,可是DPI过程要求的先后状态转移是关联的,即下一次访问的地址与上一次访问的状态和当前报文字节的内容紧密相关,受限于存储器自己(主要是DDR)的性能,软件优化的空间很是有限。服务器
(3)依靠各类多核NPU自带的匹配引擎来加速,目前国外两大多核NPU巨头Broadcom和Cavium都有在其NPU上内置了DPI加速引擎,如Cavium内置的HFA引擎宣称其单个NPU能够达到24Gbps的处理能力,可是实测性能与宣称性能之间相差巨大。尤为是配置正则表达式规则时,带通配符的规则会对其性能形成十分显著的影响。网络
老是,虽然研究界和产业界都很是关注深度报文检测,当前DPI技术的技术发展仍然没法遇上相关应用领域的现实要求。数据结构
在深度报文检测(DPI)中,首先要将关键字或正则表达式特征编译成有限状态自动机(Finite State Automata,FSA),并将FSA的状态表配置在存储器中。匹配过程当中,每处理报文的一个字节都须要至少一次查表,以获取下一次要访问的状态地址。匹配的速度取决于访存次数和每次访存的时延,而对于一个给定的报文,访存次数等于报文负载长度。所以要提升匹配的速度就须要尽可能减小每次访存的时延。负载均衡
在轻量级的网络下,网络链路速率低。若是规则数比较少,能够把每条规则编译成一个FSA,状态表配置在高速存储器中,以得到较高的匹配速度。然而,随着网络带宽的快速增长,10G比特的网络已经开始应用于园区网络中;规则的数目也增长到数百甚至上千条。将每条规则编译成单个FSA的方案已经没法知足性能需求。若是将全部规则编译成一个FSA,可能发生状态爆炸。状态表的规模可能超过数100G字节,远超过目前高速存储器的容量,只能配置在外部磁盘这样的低速存储器中,访存时延大大提升。ide
DPI技术的关键实际上是访存的性能,尤为是随机访存的性能,若是可以设计一种存储结构,既可以支持很高的随机访问性能(如达到几十个Gbps以上),又可以有比较大的容量(如到几十兆的大小),则经过良好的状态表数据结构优化,使得状态表的访问可以相对汇集;而后对访存过程加以优化,如流水化访存、Bank交错、并行化访存等措施来进一步提升访问状态表的效率,则高性能的DPI是能够实现的。性能
湖南戎腾网络创新团队在国家天然科学基金的支持下,研究出来的高性能DPI技术,借鉴了计算机系统的Cache结构。在计算机系统中,因为局部性原理,能够用先进先出、最近最少使用等替换算法,使Cache有较高的命中率。可是在深度报文检测中,报文的内容倒是彻底随机的,难以预知下一个要处理的字节内容,会转向哪一个状态。选择那些常常被访问的状态存储到高速存储器中是提升性能的关键。戎腾经过独有的马尔科夫预测技术,很好地解决了状态访问的预测问题。
图1 复合存储匹配引擎优化
整个匹配引擎采用两层甚至三层,经过复合存储及并行和流水技术,解决性能和存储容量之间的矛盾,既可以经过一级匹配引擎的并行达到很高的性能,又可以经过二级存储达到大容量的状态表空间。这种结构既适合于关键字匹配,也适合于正则表达式匹配。
经过咱们的分析,辅以软硬一体化流表技术,总体报文处理能力通常是核心匹配引擎4倍的性能。即若是核心匹配引擎可以达到n Gbps的性能,则总体报文处理能力就可以4n Gbps左右的性能,也就是说PET160S系统已经完成能够知足双向100Gbps以太网全带宽的关键字DPI能力,而CNT16S也能够知足实网条件下双向100Gbps以太网(实网条件下,上下行流量不会超过200Gbps*80%)的正则表达式DPI要求。
当前,正在研制基于PCI-E的DPI加速卡,可望于近期在单块PCI加速卡上实现40Gbps左右的关键字匹配性能和20Gbps的正则表达式匹配性能,以硬件加速卡的形式为防火墙、***检测系统、高速网络管控、CDN、运营商信令分析提供硬件加速。