在本文中,专家David Jacobs探讨了软件定义网络是否会淘汰掉应用交付控制器,或者是会互相作用,促使软件定义网络(SDN)的功能更全面。
随着软件定义网络(SDN)的出现,有关应用交付控制器(ADC)的需求问题也出现了。应用交付控制器(ADC)分布在一组Web服务器中,功能是保持这些服务器的负载均衡。软件定义网络(SDN)控制器是否可以接管应用交付控制器(ADC)的角色,成为有影响力的软件定义网络(SDN)负载均衡器,从而消除应用交付控制器(ADC)在网络中的位置呢?
像应用交付控制器(ADC)一样,软件定义网络(SDN)控制器可以基于队列长度和处理延迟来监控Web服务器的单个负载,并将收到的数据请求发送给负载最轻的服务器。如果简单的负载均衡是应用交付控制器(ADC)的唯一功能,那么软件定义网络(SDN)控制器真的可能将其淘汰掉。然而,应用交付控制器(ADC)可以做的不仅仅是分配服务器之间的应用需求。
在常规网络中,数据流经做路由决策的设备。因为应用交付控制器(ADC)直接位于数据流经路径中,它们可以实现某些特定的应用程序及软件驱动的功能,这些功能都不容易嫁接给软件定义网络(SDN)控制器。软件定义网络(SDN)将数据运动和网络控制功能分离开来,这就意味着一个软件定义网络(SDN)控制器虽然可以基于服务器活动进行简单的负载均衡决策,但并不能基于数据本身的内容进行决策。
应用交付控制器(ADC)一直以来都是独立的网络设备。行业领先的供应商已经意识到到虚拟化系统的成长,以及软件定义网络(SDN)被越来越多人接受的现实,于是开发虚拟化应用交付控制器(ADC)来响应这一趋势。这些应用交付控制器(ADC)厂商形成联盟,将产品与虚拟网络环境整合起来,如来自思科,VMware和OpenStack的新产品。他们还增加了脚本驱动功能,让网络管理员可以开发应用交付控制器(ADC)可执行的特定应用程序功能。
网络安全和监控
防火墙,防病毒扫描和入侵防御系统一直以来都存在于不同的设备中。应用交付控制器(ADC)存在于数据路径中,而且它可以执行特定应用的脚本能力让其成为扫描输入数据,并确定其是否为恶意软件的理想工具。省去各自独立的安全组件降低了网络复杂性和资金成本。
应用交付控制器(ADC)还可以通过阻挡有问题的请求来保护服务器免受拒绝服务攻击。一个大型的,分布式攻击可能会消耗应用交付控制器(ADC)的资源,以致于许多合法的请求无法通过,但是服务器可以支持他们收到的请求。
另外,由于应用交付控制器(ADC)的位置处于数据路径中,所以非常适合收集性能和使用数据。他们可以监控服务器的延迟,也可以测量应用程序、终端用户网络或个人终端的流量。
应用交付控制器(ADC)如何提高网络效率
除了平衡负载,应用交付控制器(ADC)还可以在其它方面改善网络效率。在一个没有应用交付控制器(ADC)的环境中,每个终端用户的浏览器都会创建一个或多个传输控制协议(TCP, Transmission Control Protocol)连接到一个Web服务器。在终端用户界面到因特网连接中使用网络地址转换(NAT, network address translation)可以减少连接的数量,但由于终端用户数量多,大量的连接还是会给网站管理造成负担。此外,每个请求都会创建一个传输控制协议(TCP)连接,是一个资源密集型操作。
使用传输控制协议(TCP)复用,应用交付控制器(ADC)建立与后端服务器的持久连接。个人浏览器或网络地址转换(NAT)功能创建连接到应用交付控制器(ADC),从Web服务器断掉TCP连接管理,从而减少所需服务器的总数。
传输控制协议(TCP)慢启动算法可以防止网络免受一个新的连接暴发而卡死。通过复用传输控制协议(TCP)连接,慢启动只发生一次。如果没有一个应用交付控制器(ADC),每个浏览器到Web服务器的连接都需要经历慢启动过程。
如今基于Web的应用程序通常需要排一个很长的请求和响应队伍。当一个初始请求到达Web服务器,服务器会在其中创建一个存储请求信息的会话。简单的负载均衡可以直接传送下一组请求到不同的服务器。当这个会话在初始服务器上超时并最终被删除时,第二个服务器创建另一个会话。这显然是没有效率的。应用交付控制器(ADC)维护正在进行的交易信息,并确保每个后续请求可以定向到同一台服务器。
这种技术被称为会话持久,专门用于支持安全套接字层(SSL).有了会话持久和传输控制协议(TCP)复用,应用交付控制器(ADC)可以断掉会话创建和握手,就像数据加密和解密一样。如果没有一个应用交付控制器(ADC),Web服务器将承担这一负担。如果没有传输控制协议(TCP)复用,每次会话移动到不同的服务器时就需要重复握手。
流量整形(Traffic shaping)是应用交付控制器(ADC)提高整体网络和应用性能的另一种方式。传输控制协议(TCP)包含延迟,选择确认信号(ACK, acknowledgement signals),自适应调整窗口大小以及显式拥塞通知这些机制。应用交付控制器(ADC)使用这些技术,通过减少脉冲串和将短分组整合成较大组来提高效率。
基于请求类型来区分服务器可以通过简化应用软件来提高可靠性。每个应用程序将处理一种类型的请求。网络管理员会提供应用交付控制器(ADC)脚本来扫描输入数据,并指示每个请求到设计好的应用程序进行处理。
应用交付控制器(ADC)厂商已经准备好迎接软件定义网络(SDN)
应用交付控制器(ADC)目前还是以预装在硬件设备中的形式来出售,但领先的供应商,为了适应软件定义网络(SDN),还开发了在虚拟化服务链中可以快速插入的虚拟单元。这些服务链,连同其它网络功能虚拟化(NFV)组件,可以根据需求通过云自动化系统移动。
如果“软件定义网络”可以扩展,而不仅仅是通过OpenFlow连接到交换机的一个控制器,那么我们当然可以考虑虚拟化应用交付控制器(ADC),以增强的脚本作为组件融入软件定义网络(SDN)中。