7月24日消息,近年来,随着云计算、大数据的迅猛发展,应用交付控制器(ADC)已被行业公认为是实现云计算环境安全、高可用性且可扩展性的关键解决方案,它在推动云计算市场的快速发展方面发挥着举足轻重的作用。那么,应用交付设备为什么具有如此神奇的魔力?应用交付设备又如何修炼自身的超强性能呢?不妨与国内新兴应用交付企业太一星晨研发总监冯晓杰冯晓杰先生,一同走进应用交付设备的架构内部,来探究其神秘的技术原理。
“两手抓 两手都要硬”
冯晓杰表示,从宏观层面上看,ADC的技术原理与邓小平同志当年提出的“两手抓,两手都要硬”的治国方针非常相似。一方面,网关位置的应用场景要求具有超大的网络吞吐性能;另一方面,应用层加速的特性功能又要求具备超强的CPU计算能力。如此双管齐下,便能有效保障ADC的运转能力。从这种意义上来讲,它是既要求纯四层防火墙场景下的高吞吐,又要求防攻击防病毒特性下的高计算能力。而要实现这样的目标,首先需要一款技术先进、性能稳定、且有强大拓展空间的硬件平台做支撑。
目前,Intel x86平台的出现让众多应用交付厂商如获至宝。近年来,为了在网络产品上开疆拓土,Intel在嵌入式平台领域持续发力,其Sandybridge/Ivybridge系列平台在IO方面做了大幅优化,这使其在网络吞吐方面的性能也大幅提升。而基础硬件平台搞定以后,留给各家应用交付厂商的核心问题就只有一个——如何才能在同质化的硬件平台上优化各自的软件架构,创造最大的性能效益?
冯晓杰表示,在Intel x86平台上,优化目标很明确,就是在单CPU处理能力够强劲的基础上增加多核的并行计算水平。
目前,在中低端嵌入式平台上普遍应用的Sandybridge/Ivybridge酷睿CPU,最多4核心,如果算上超线程计数可达8核心;而应用于中高端嵌入式的双路至强平台,则最多可以做到2路10核心也就是总共20核心,再算上超线程即可达到40核心之多。拥有如此多的CPU核心,如果能够做到完全的多核并行的话,那么其创造出的性能效益将是非同凡响,但这绝非易事。
通用操作系统的困扰
目前,国内大部分厂商都采用直接利用Linux的SMP模式,因为Linux自身就具备支持并行化处理的功能。SMP模式的先天优点是,软件几乎不需要做额外改动就可以运行在多核平台上。但该模式的缺点也非常明显,由于Linux的SMP机制效率太低,随着CPU核数越多,性能反而可能下降。这主要是由以下问题所导致的:
首先,流水线作业导致堵车事故时有发生。Linux的SMP在工作时,CPU几个核必须流水线一样依次处理各个任务,前面的任务完不成,后面的任务就不能继续。
其次,SMP模式存在大量的互锁操作。何为互锁操作?比如把CPU比作人,就好比一群人打算吃一筐苹果,当第一个人从筐里拿苹果的时候,为了避免其他人都来吃苹果而产生冲突,需要临时“锁”住这筐苹果,使其他人必须等着第一个人吃完苹果后才能接着吃。如此一来,必然人数越多,冲突就越厉害,效率也越低。
第三,内存共享与IPC机制。由于Linux是多核内存共享,因此当一个CPU操作内存的部分数据块时,其他CPU就得在旁边“干等”,无谓消耗资源。
最后是IPC通讯,CPU核与核之间完成交互、调度机制,需要通过IPC消息,而这个在大流量应用层处理时,往往占据了大量了系统开销。
综上可以看出,由于SMP机制的这些问题,就会直接导致在多核平台下,软件的使用效率很低。那么,面对这诸多性能困扰,有没有更好地解决方法呢?
日前,太一星晨T-Force ADC V3.0版本的推出让业内眼前一亮,T-Force ADC V3.0在吞吐量、拓展性、虚拟化等关键性能方面都实现了大幅的飞跃。其中,T-Force 8000系列作为运营商级应用交付的标志性产品,通过了公安部三所的功能、性能测试,其吞吐量高达75G,在单个硬件平台上,这已成为本土最高性能的应用交付产品。那么,同样是多核平台,T-Force的ADC为什么能做到这么高的性能呢?
巧置分流器破解难题
冯晓杰表示,T-Force ADC实现高性能的核心在于,其单独设计了软件架构,并在业务系统前端增加了分流器的概念。也就是说,进入ADC设备的数据流首先经过分流器的梳理,将数据流分成若干份(一般是按照TCP/UDP五元组的hash值进行分流),再分配到每个核心的业务系统上。这样每个核心的业务系统处理自己单独的一份数据流,不需要和其他核心共享任何表项资源,最大程度上避免共享资源的互斥访问,增加业务处理的并行性。
传统的无分流器的软件架构下ADC设备的并行处理
从图例不难看出,处理业务流量的APP受传统的操作系统的SMP管理,每个APP随机处理数据包。因此所有的APP会在系统内存中共享全局的连接表等资源,业务处理过程就存在比较明显的互斥访问。在核心数越多的情况下,互斥碰撞的概率越高,并行化水平也就衰减得越快。
引入分流器后的软件架构下ADC设备的并行处理
冯晓杰指出,在引入分流器后,分流器的实质是将流量分组化,每个核心处理一组独立的流。分组之后连接表等数据结构都分布化了,核心之间自然也不存在共享互斥了,如此便能充分发挥多核之间的并行处理能力,大幅提升应用交付设备性能。
同时,分流器还分为软件分流器与硬件分流器。软件分流是使用多核CPU内部的某些核心去处理分流的工作,硬件分流是在CPU之外扩展硬件组件完成分流的工作。其中,软件分流器架构以其实现方便,灵活性好的优点,在盒式ADC设备中普遍应用,为其带来了很大的成本、性能优势。但是在向高端设备衍生铺设时,软件分流器也会遇到新的性能瓶颈,这时就需要硬件分流器的支持。
|