概述:
目前通用的网络处理方法在处理TCP/IP协议和WEB访问请求时要占用巨大的CPU处理资源,作为国内唯一家掌握了“高速协议栈”处理技术的公司,通过AccStack 技术可以避免网络过程的重复处理开销,使处理性能提升80%,将宝贵的计算资源应用在用户核心业务处理上,这就是我们产品的性能几倍甚至十倍于同类国内产品的奥秘,也是我们的核心技术优势所在。
第一部分:什么是高速协议栈
首先要我们一起来构想这样的一个情景:一辆轿车要从A城驶往B城,而在两座城市的道路之间设置了N个关卡。刚刚起步没多久就遇到了一个关卡,司机需要下车办理过关的各种过关手续。在经历了各类繁冗的步骤之后终于可以继续启程了,但是刚刚行驶没多久,下一个关卡到了,司机又不得不停下车在新的关卡办理新的过关手续。如此周而复始,待到轿终于到达了目的地B城的时候,回顾行驶的全过程,绝大部分时间竟然是被浪费在了办理各类过关手续这一枯燥繁琐的过程上,而真正有意义的行驶时间只占了很少的一部分。
“天哪,我们怎么能容忍这样的时间浪费……”
其实,构想出的这样一个看似荒谬可笑的情景却在每天您操作电脑的过程中真真切切地存在着。您所使用的任何操作系统的TCP/IP协议栈在处理内外网的单点网络任务时都会采用多次队列轮询的方式,而这种方式处理的每一个数据包就像轿车司机一样,经历了上面那个例子中的一番折腾,最终浪费了80%的时间,而这些时间本来是完全可以用在高效率的驾驶中的。
问:我用Linux也会这样吗?
最新的Windows版本也是这样处理的吗?
我用苹果的操作系统会不会好一些呢?
答:都是一样的。就像万事万物都有他们的本源一样,TCP/IP协议栈的本源自出现以来从来没有过大的改变。因为它是通用性、稳定性最好的通讯协议设计。早期FreeBSD操作系统的4.0版本协议栈的代码实现被认为是最经典的,著名的“网络圣经”《TCP/IP详解》1、2、3卷就是以此版本的操作系统作为教学案例的。
那么,既然TCP/IP协议栈在通用系统上是完美、稳定的。我们为何又要去改动他呢?
没错,原有的协议栈设计的确非常出色,也足够精简并最大限度的兼顾了处理性能。它的设计是基于通用系统的,既要让个人PC普通用户方便、简单使用,又要让程序开发人员可以通过上层的Socket接口调用协议栈,开发出各种丰富多彩的网络应用程序。
但是,这样设计的协议栈真的适用于一台网络通讯设备吗??
正因为TCP/IP协议的通用性,在对网络通讯设备性能要求日益增高的今天,其局限性越发彰显。为此,我们所开发的AccStack技术则具有革命性的意义,它极大地提升了网络及网络应用的处理性能。AccStack技术作为我们各种网络产品的核心模块,将直接加速并防护内部和外部的网络通讯数据包。
如果您是一家公司的IT技术基础设施建设的负责人,不论企业规模大小都会面临一系列的问题:伴随公司业务发展,越来越多的公司领导、员工开始提出移动办公需求;提高办公效率,确保公司核心业务系统的安全,很多分支机构的成立带来巨大的远程安全接入需求;急需改善同供应商和关系企业间的战略关系,为客户提供对产品和服务的安全无忧访问;采用堡垒主机的方式,对所有外网访问进行集中甄别、管理。堡垒机面临很大的性能压力;随着云计算技术的不断升温,我们发现一个无所不在的信息化全球社会已经到来;我们如何面对不断变化发展的信息化建设需求?如何满足从领导到员工的工作需要?
革命性的发现
早在2000年初,我们的几名工程师在反复研究《TCP/IP详解》这部网络技术领域中“圣经”般的著作时对一个问题产生了浓厚的兴趣:“目前的通讯协议栈存在多次重复队列轮询问题”。随后,我们开始在多种Linux系统中进行尝试,设法改进网络性能。最后我们发现处理资源的消耗集中在两个方面:TCP/IP请求和七层的HTTP解析。
TCP/IP协议栈必须支持多个同时并发的连接,协议栈必须对每个数据包进行分析,根据其不同的特点进行相应的处理,因而当大量并发连接出现时这些连接数据包信息会增加到非常吓人的规模。一个基于Web的网络近40%的能量是用于TCP/IP处理上!
对于应用层HTTP协议来说,基于WEB的应用系统在进行网络交互过程中频繁交互HTTP请求与响应,这些数据长度不一,可包含10~5000个字节。对于WEB服务器来说对请求和响应的解析处理全部要靠处理器来完成。一个基于WEB的网络同样有 近40%的能量是用于HTTP协议的解析工作上!
由于每个独立解决方案都被迫要重复这两个流程,作为一个网络组件它可用于本身任务上能量至此为止也仅剩下其总处理能量的20%。
这部分资源的开销能否被优化呢?
为了寻求答案,我们的工程师进行了大量的探索性研究,力求寻找一种统一的平台,在这个平台上能将TCP/IP和HTTP的解析功能紧密结合在一起,保证它们所处理和保存过的信息能被这个系统的任何组件获取和使用。从而彻底将服务器负载均衡、缓存、SSL加速及防火墙等垂直网络应用程序从这些重复性步骤中解放出来,使它们能获得更多的能量来处理实际的工作。
第二部分:高速协议栈 AccStack技术内幕
正如前面所提到的,我们构建了这样的一个平台,在遵从TCP/IP协议的前提下对TCP/IP协议栈的精简和优化,采用基于网络包环的无锁化多核处理技术,将TCP/IP堆栈、HTTP解析器和代理引擎结合起来组成独特的高速协议栈架构,允许第三方开发商在数据流各种位置上将垂直应用程序附加入高速协议栈中。同时,平台关闭了对上层用户态的Socket开发接口支持,将所有的数据均在高速协议栈中进行处理,这就避免了数据流入用户态产生的冗余工作,减少了处理器用户态到内核态的来回切换所产生的资源开销,也减少了用户态协议处理程序的唤醒和睡眠产生的资源开销。这样的平台打破了传统的网络结构中数据奔走于各层协议栈之间繁冗工作的模式,构建的高速协议栈直接凌驾于所有垂直应用程序的数据流之上,确保在每种情形中的处理工作都是一次完成、永不重复,从而大大地提高了系统的工作效率。这就是AccStack技术。
配合AccStack技术,所有垂直应用程序将变得更加灵活、更加强大。一个SLB解决方案可能被附加至TCP/IP级别上,也可能被附加至代理引擎上。而对于一个在传统网络架构下的第7层SLB组件,其应用程序要经过反复的协议栈队列操作才能将信息发送至第7层,而这些工作已经耗费了大量的系统资源。同样的,配合AccStack技术,不管所附加的垂直解决方案有多少个,系统进行的都是完全无重复性作业,使系统在保持最高性能的前提下,实现反向代理缓存、全局服务器负载均衡、SSL加速、压缩等众多垂直功能。
我们并没有为系统增添奢华的硬件设备,我们只是让设备变得更加友好、更加智能。一个真正能理解用户意图的系统才能做到真正无重复工作。
AccStack技术使得第三方开发商通过代理API能简单地将网络组件集成进数据流中。而这个代理API已经包含了所有经过TCP/IP堆栈和HTTP解析器的已分类好的信息,并能有效将这已分类好的信息传递到第三方应用上。于是,这个第三方应用可直接处理所收到的请求并通过API向后置回到数据流中,以及通过代理引擎转发到服务器中。
应用AccStack技术,TCP/IP堆栈会在数据包一进入系统就对其进行处理。在处理的早期即可检测出所有危险及已损坏数据包并将其抛弃,通过这样有效处理数据包可获得更高性能。一旦TCP/IP堆栈处理结束,这些数据包将流入HTTP解析引擎中,解析引擎以一种方式将HTTP头分离出来,使得其它组件不需要重复这一任务。
所有这些网络功能的实现和性能的提升都仅仅是通过操作系统的内核中实现的,我们只是让系统变得更加智能。
最后, 配合AccStack技术的代理引擎不仅可管理客户端和服务器间连接,有效来回传递信息,同时还帮助其它次系统接进数据包流中展开其工作。
(责任编辑:)