应用交付服务对于应用的成功至关重要。 无论此类服务是否增加了可扩展性、可靠性或安全性,大多数应用都依赖于其中一种或多种。 因此,应用交付控制器 (ADC) 在大多数应用、云和数据中心设计中占据着关键地位。
对于许多环境(包括私有云安装)来说,专用 ADC 硬件仍然是提供应用交付服务的首选平台。 这是因为专用平台包含受控、稳定且一致的资源。 专用的设备可以持续提供最苛刻的应用工作负载所需的性能和可靠性,因为它没有虚拟机管理程序、软件或底层计算平台的变化,而且它还具有专用硬件组件的优势,可以从 CPU 卸载任务。
但是“性能”究竟意味着什么呢? 一般来说,ADC 供应商发布四种主要类型的指标来展示性能:
制造商提供全面的数据表,列出这些和其他平台特性,包括吞吐量表、SSL 交易号或并发连接数。 解释这些数字及其与应用工作负载的相关性,以及了解系统可能的限制和瓶颈,对于选择正确的平台至关重要。 学会解读供应商数据表并了解与您的应用相关的指标可以帮助您更成功地为您的企业选择合适的平台。
应用交付控制器是一个基础设施组件,充当应用应用代理,提供流量管理、负载均衡、SSL 解密、应用层安全和应用交付服务。 客户端设备和服务连接到 ADC,ADC 创建与应用的单独连接(或重用现有的连接)。 在这个逻辑空白中,ADC 插入了应用交付服务。
要了解 ADC 的工作负载,查看 TCP 连接和应用层请求会有所帮助。 ADC 必须在 TCP 堆栈的多个层上执行任务并完成多项活动才能将应用服务传递给应用流量。 (见图 1) 这可能会使 ADC 供应商的性能指标解读变得困难。 了解哪些指标相关的一个关键先决条件是确定工作负载类型。
应用类型多种多样,因此 ADC 工作负载也多种多样。 虽然大多数生产部署都包含多种工作负载,但每种工作负载的影响和需求都会影响 ADC 中哪些组件的利用率最高。 即使在组件内部,工作负载需求也各有不同。 有些工作负载可能对延迟更敏感,有些工作负载可能对抖动更敏感;有些工作负载对吞吐量限制敏感,而有些工作负载更依赖于可用性。
以下是最常见的工作负载以及支持它们的关键指标:
工作负载组合不断发展,新的工作负载不断被引入,每种工作负载都有基于其主要操作的关键 ADC 指标。
工作负载类型 | 示例 | 重要关键指标 |
---|---|---|
事务性 HTTP Web应用 |
网站、许多移动应用 |
SSL RPS、TPS、吞吐量、第 7 层 RPS、CPS |
DNS | 任何 Web应用 |
第 3 层吞吐量、第 4 层吞吐量 |
REST API | 基于 force.com 的applications |
SSL RPS、TPS、吞吐量、第 7 层 RPS、CPS |
消息队列传输协议 | 物联网、Facebook Messenger | 第 4 层 CPS、吞吐量 |
直径 | 移动电话网络 |
第 4 层 CPS、连接 |
金融交易 |
修复 / 航行 / 哎哟 | 第 4 层 CPS、第 7 层 RPS、CPS |
WebSockets | 通过 HTTP 传输 MQTT | 第 4 层 CPS、第 7 层 RPS、CPS、连接 |
日志记录和警报 |
Syslog 或 SNMP 流量 |
第 4 层 CPS、第 7 层 RPS、CPS (REST) |
任何网络设备的吞吐量都取决于延迟(处理网络流量所引入的延迟)。 至少,光速对于通过铜线传输的电信号或穿过光纤的光信号规定了最小延迟。 除了通过电线或光纤传输数据之外,ADC 还对网络流量执行多项操作。 ADC 的最大功能是串行操作延迟的总和,即不并行执行的操作。 幸运的是,许多操作是并行执行的,但执行这些操作所需的时间仍然是总吞吐量的制约因素。 ADC 设计人员的一个目的就是尽量减少这些延迟以最大程度地提高吞吐量。
评估特定 ADC 的性能并尝试将其与特定部署相匹配可能会非常困难。 网络供应商发布的指标都是基于测试的,目的是为了最大化某一特定指标而牺牲其他指标。 采用这种方法的原因是为了发布可用的数字来指导架构和决策,但供应商明白并非所有发布的数字都是同时正确的。 使用汽车类比: 丰田宣传其 2017 款凯美瑞基础款可产生 178 马力,高速公路油门可达每加仑 33 英里,但期望这款车能够发挥全部 178 马力的动力(以 6,000 RPM 的转速将油门踩到底)同时实现每加仑 33 英里的油门,则是不切实际的。 类似地,网络供应商使用每个供应商的最佳情况来显示各自的性能指标。 通常来说,许多已发布的性能指标无法同时重现。
一些已发布的指标可应用于不同级别的处理。 例如,每秒请求数可以表示 OSI 第 2 层 (L2) 或 OSI 第 7 层 (L7) 处理的值。 另一方面,TPS 通常仅指 SSL 密钥协商,而每秒第 7 层请求数是指使用已建立的 SSL 会话的后续加密请求。 特定工作负载对各种 ADC 处理组件的运行方式与其他工作负载不同。 关于 ADC 发布指标的另一个关键点是,不同的工作负载将遇到不同的性能限制。
层 | 常见指标 |
---|---|
2 | 数据包/吞吐量 |
3 | 数据包/吞吐量 |
4 | 连接数/吞吐量 |
5/6(SSL/压缩) |
交易/请求/吞吐量 |
7 | 连接/请求 |
每个 OSI 网络层都有几个最常针对该层发布的指标。 例如,通常可以看到以每秒连接数表示的第 4 层指标,以及其他以第 4 层吞吐量表示的指标。 OSI 第 5 层和第 6 层不容易映射到 IP 堆栈,但 SSL/TLS 和压缩等服务可以被视为第 5 层和第 6 层。 如上所述,针对每个指标的测试通常都是使用旨在强调该特定指标的流量进行的,并不代表真实的流量负载。 例如,最大 SSL TPS 将来自具有零长度 SSL 有效负载的测试,这样就不会花费 ADC 处理时间来解密 SSL 数据。 虽然仅合理地确定 SSL 硬件的性能,但没有生产应用会发送零长度的有效负载。 类似地,第 2 层吞吐量将在未启用 SSL 且没有第 7 层处理的情况下进行测试,因为这会降低 ADC 的速度,尽管许多生产部署将使用这些功能。 大多数 ADC 指标都是单独测试的,但大多数生产环境都使用 ADC 功能的组合,每个指标强调不同的组件或组件的组合。 所涉及的组件可能包括 CPU、网络接口卡 (NIC)、专用集成电路 (ASIC) 和现场可编程门阵列 (FPGA) 等。 当 ADC 缺少某个特定组件时,就会使用 CPU 来代替。
层 | 公制 | 元件受压 |
---|---|---|
2 | 数据包 |
网卡 |
吞吐量 |
网卡/FPGA | |
3 | 数据包 |
FPGA |
吞吐量 |
FPGA | |
4 | 連接 | FPGA |
吞吐量 |
FPGA | |
5/6 | 交易 (SSL) |
SSL ASIC / CPU / 内存 |
请求 (SSL) |
中央处理器 | |
吞吐量(SSL) |
加密 ASIC | |
吞吐量(压缩) |
压缩专用集成电路 |
|
7 | 请求 |
CPU /内存 |
吞吐量 |
CPU /内存 |
数据包度量表明 ADC 每秒可以处理多少个数据包,并且受此处理影响最大的组件因层而异。 例如,处理第 2 层数据包主要对网络接口卡 (NIC) 造成压力,而处理第 4 层数据包主要对 FPGA 造成压力。 所有层的吞吐量指标是指每秒千兆比特的总可用吞吐量,而连接指标衡量该特定层每秒可建立多少个连接。 例如,第 4 层连接指标衡量每秒可以建立多少个 TCP 连接。
SSL 处理的独特之处在于会话是通过连接建立和管理的。 一个连接可以建立一个 SSL 会话(称为事务),而后续连接可以重用一个 SSL 会话(称为请求)。 因此,交易和请求指标是分开列出的。 到目前为止,SSL 事务的执行时间比后续的 SSL 请求要长,因此吞吐量性能的限制数量通常是事务指标。 一旦建立 SSL 会话并发出后续请求,就必须对数据负载进行加密或解密。 加密 ASIC 处理加密和解密;性能以吞吐量指标来衡量。
压缩数据负载通常很有用。 压缩由压缩ASIC执行,其指标也是吞吐量。
最后,第 7 层的独特之处在于,鉴于可用的复杂多样的流量管理选项,所有第 7 层处理都是通过 CPU 执行的。 Cookie 持久性是一种常见的第 7 层功能,它将每个用户会话绑定到池中的特定服务器,并由 CPU 执行。 第 7 层请求指标是指 ADC 每秒可以执行的第 7 层请求数。 类似地,第 7 层吞吐量指标指的是第 7 层可能的总吞吐量。
最后,任何需要保存连接状态的层都将要求 ADC 维护连接表。 连接表对于第 4 层 TCP 连接、SSL 会话和第 7 层 HTTP 会话很常见。 具有长连接的协议可能会耗尽或给 ADC 连接表带来压力。
每个指标都可以帮助确定绩效的某个特定方面。 了解每一层执行的不同操作以及哪些组件受这些操作的影响,有助于评估特定部署的 ADC 性能指标。
ADC 功能的各个方面均可由 CPU 提供。 事实上,许多 ADC 硬件供应商都提供纯软件版本。 这是可能的,因为 CPU 是最灵活的硬件类型,能够执行几乎任何以数据为中心的任务。
然而,将 ADC 功能的每个方面委托给 CPU 有其局限性。 在处理网络流量的三种主要硬件类型(CPU、ASIC 和 FPGA)中,CPU 是最慢的,也可能是最昂贵的,需要内存和内存控制器的支持。 处理网络流量的另外两种硬件是 ASIC 和 FPGA。 ASIC 旨在执行特定任务,因此得名。 没有其他类型的硬件执行任务的速度能比 ASIC 更快,但其功能仅限于芯片的设计。 如果应用需要 ASIC 无法提供的功能,则应用必须使用 CPU 并通过软件执行任务。
如果说 CPU 灵活但速度慢,而 ASIC 不灵活但速度快,那么第三种技术就介于两者之间:FPGA。 FPGA 比 ASIC 慢,但比 CPU 快得多,并且可以对其进行编程来执行 FPGA 设计人员未曾想到的任务。
精心设计的 ADC 将充分利用每种硬件类型的功能:将常见和简单的任务交给 ASIC 组件,在 FPGA 组件中执行更复杂的任务,并在 CPU 中处理最复杂和最不常见的任务。 ADC 中的许多工程魔法都是通过协调不同类型的组件来最有效地处理各种工作负载而实现的。
到目前为止,ADC 中执行的最常见任务是在网络接口上进行数据包处理。 标准的现成 NIC 可针对大容量入站流量(例如,在桌面或其他用户设备中)进行调整,或针对大容量出站流量(例如,在服务器中)进行调整。 ADC 的独特之处在于它需要针对两个方向的最大吞吐量进行调整的 NIC。 目前还没有任何现成的 NIC 被设计用于实现双向最大吞吐量。 由于 ADC 数据包处理频繁且相对简单,因此非常适合 ASIC。在集群 ADC 环境中,分解器 (DAG) ASIC 充当前端负载平衡器,确保相同的客户端和服务器会话始终流经相同的集群节点。 在集群环境中使用 DAG 有助于 ADC 设备的水平扩展以满足流量需求。 在经过合理设计的 ADC 中,所有第 2 层数据包处理和交换都可以在专门的 ASIC 硬件中执行。
第 3 层和第 4 层处理任务更加复杂,因此非常适合 FPGA。 FPGA 可以提供路由功能以及防火墙和分布式拒绝服务 (DDoS) 保护,包括 TCP SYN cookie。 在此级别使用 FPGA 可以实现第 4 层处理和保护,确保需要进一步处理的流量得到正确的组装和过滤。
加密和压缩处理(例如 SSL 或 TLS)以及 HTTP/2 引入的新功能是专用硬件的另一种用途。 通常会使用专门的 ASIC 进行加密处理,包括现代密码(例如椭圆曲线 Diffie-Hellman 加密(ECDHE))的计算密集型 SSL 密钥协商。 一旦发生 SSL 密钥协商,后续请求的批量加密和解密也可以由 ASIC 硬件处理。 类似地,利用常见算法的压缩和解压缩也可以由ASIC硬件完成。 使用专用 ASIC 组件可以快速处理加密和压缩。
ASIC 和 FPGA 未处理的任何剩余网络流量处理都必须由 CPU 处理。 尽管与 ASIC 和 FPGA 相比速度较慢,但 CPU 是 ADC 中最灵活的组件。CPU 还负责执行与网络处理无关的任务,例如 GUI 和其他配置任务、处理 I/O 中断,甚至处理磁盘请求。 由于对 CPU 的需求会随着延迟而变化,并且 CPU 是处理网络流量的最后硬件类型,因此 ADC 被有意设计为将尽可能少的流量处理引导到 CPU,而是在更快的 ASIC 和 FPGA 上进行尽可能多的处理。
将供应商发布的指标转化为现实世界的性能可能很困难。 了解不同类型的工作负载、它们所消耗的资源以及硬件平台的功能之间的相互作用,虽然很复杂,但可以帮助您为您的组织做出最佳的购买决策。
已发布的数据表和其他资源有助于更轻松地指定正确的平台,但尽可能直接依赖供应商的经验和专业知识也很重要。 领先的供应商在将工作负载与平台匹配方面拥有深厚的专业知识——这种专业知识应该随时可供客户使用。
将对您的应用流量特征和平台功能的良好理解与供应商的专业知识相结合,将降低平台配置不足或过度的风险和潜在费用。