ASIC 与 x86 通用路由/交换

网络工程 思科 路由 cisco催化剂 交换 linux
2021-08-01 15:58:09

系统管理员经常试图说服我,x86 通用操作系统在 1Gbps 线速下的性能与配备低 MHz CPU 和专用芯片(即 ASIC)的路由器一样好。这种想法正在延续到 SDN 领域,例如 VMWare 中的虚拟交换机。

我想我直观地理解了 ASIC 与 x86 在处理流量方面的优势之间的差异,尤其是在微突发方面。假设路由器或交换机接口的 ASIC 将胜过使用 x86 CPU 来处理所有将受到 CPU 中断影响的数据包处理,这是否正确?我知道操作系统(Windows、Linux 或专门的)对硬件的路由或切换性能也有很大贡献。而且我知道 x86 总线速度对交换带宽施加了理论最大值,尤其是在速率超过 1Gbps 时。

  1. 例如,Catalyst 6500 Sup2T ASIC 交换速度与通用操作系统或 SDN 上的实际 x86 交换速度相比如何?

  2. 例如,Cisco 7200VXR-NPE-G2 的交换速度与相同...

  3. 与执行相同功能的一般操作系统相比,典型的路由器或交换机延迟如何?

注意:我不想听到虚拟交换机放置的优点或它们在虚拟和物理网络中的作用。我也不想争论 SDN 在应用程序部署时间方面的优点。

2个回答

假设路由器或交换机接口的 ASIC 将胜过使用 x86 CPU 来处理所有将受到 CPU 中断影响的数据包处理,这是否正确?

很难具体说中断是否是一种限制,因为在您的问题的这一部分中,我们没有指定特定的 CPU、操作系统或路由器型号。总体而言,通用 CPU 无法达到精心设计的 ASIC 的数据包交换性能,这是一个安全的概括。当我说性能时,我指的是RFC 2544指标,例如每秒无丢包转发率 (NDR)、吞吐量和延迟。

这并不是说基于 CPU 的路由器没有位置;只是我们的生活经验告诉我们,CPU 无法像 ASIC 或 FPGA 那样快速地交换数据包。Electronics.SE 上的这个问答似乎强化了我关于 ASIC/FPGA 比多核 CPU 更快的结论

PCI 总线性能

我知道 x86 总线速度对交换带宽施加了理论最大值,尤其是在速率超过 1Gbps 时。

我不确定您在这里指的是哪些巴士限制,但您所掌握的信息可能有些过时。如今,大多数系统中使用的 PCI Express 总线的扩展速度远高于 10Gbps。

PCIe 2.0使用8b/10b 编码方案,对 PCI 通道编码开销进行了大约 20% 的惩罚;在编码惩罚之前,PCIe 2.0提供每通道 4Gbps 的原始带宽。然而,即使有 20% 的 8b/10b 惩罚,PCIe 2.0 x8(8 个 PCIe 通道)也挤出超过 25Gbps;因此,您可以轻松地在 PCIe 2.0 x8 卡上以双向线速运行单个 10GE 适配器。

PCIe 3.0(用于 Intel Ivy Bridge 芯片组)使用 128b/130b 编码,大大提高了 PCI 总线效率,并使每通道带宽增加了一倍。因此,PCIe 3.0 x8 卡可以提供 63Gbps (8.0*8*128/132)。这没什么好打喷嚏的;您可以安全地将两个线速 10GE 安装在具有这些性能的单个提升器上。

Cisco 与 Vyatta 的性能

警告:我正在使用供应商提供的营销材料进行所有比较......

  1. 例如,Catalyst 6500 Sup2T ASIC 交换速度与通用操作系统或 SDN 上的实际 x86 交换速度相比如何?

这有点具有挑战性,因为我们要将完全分布式交换系统 (Sup2T) 与集中交换系统 (Vyatta) 进行比较,因此请仔细解释结果。

  • Sup2T 可以在启用功能的情况下以高达 60Mpps 的非丢包率转发参考:Catalyst 6500 Sup2T 架构白皮书请注意,这只是一个没有分布式转发卡 (DFC) 的裸 Sup2T 系统。注 1
  • 我发现 Vyatta 5600 转发的 RFC 2544 测试结果高达 20.58Mpps 非丢包率,如果您可以接受一些丢包率,则为 70Mpps。NDR 吞吐量为 72Gbps。参考:Vyatta 5600 vRouter 性能测试(SDN 中心)需要 SDN 中心注册才能查看完整报告。
  1. 例如,Cisco 7200VXR-NPE-G2 的交换速度与相同...

在性能方面,Vyatta 将 NPE-G2 吹出水面;根据Cisco NPE-G2 数据表,NPE-G2 最高可达 2Mpps 尽管考虑到 NPE-G2 与配备 10GE 卡的全新英特尔 10 核系统的年龄,这并不是一个真正公平的比较。

与执行相同功能的一般操作系统相比,典型的路由器或交换机延迟如何?

这是一个绝妙的问题。这篇论文表明 Vyatta 具有更高的延迟,但我希望看到针对 Intel E5 系列 CPU 进行的此类测试。

概括

回顾 Sup2T 与 Brocade Vyatta 5600 的并排比较:

  • Sup2T:具有功能(例如 ACL)的 60Mpps NDR IPv4
  • Vyatta 和 Intel E5:最高 20Mpps IPv4 NDR(无功能),或 70Mpps(如果您可以接受少量丢弃)。

在我看来,Sup2T 仍然胜出,尤其是当您查看 Sup2T 所获得的收益时(分布式扩展到 720Mpps、MPLS、无数 MIB、第 2 层和第 3 层交换等……)。

如果您只关心原始切换性能,那么您可以从 x86 CPU 获得可观的性能数据。然而,在真实的网络中,通常不只是关于谁拥有最好的飙车数据;大多数人需要担心功能(请参阅:我应该什么时候关注开关评估的每个值?)。需要考虑的一个重要因素是可用功能的数量,以及它们如何与网络的其余部分集成。

还值得研究在您的公司中使用基于 x86 的系统的操作可行性。我自己没有使用过 Brocade + Vyatta,但是他们可以很好地将良好的显示命令和支持挂钩构建到盒子中。如果他们确实支持足够多的功能,并且他们的系统在实际网络中的扩展性很好,那么如果你喜欢的话,那就去吧。

但是,如果有人不惜代价而只是构建了一个 linux box + bird/ quagga+ ACLs + qos,我不想成为支持该解决方案的人。我一直认为开源社区在创新方面做得很好,但与主流网络供应商(Arista / Cisco / Force10 / Juniper)相比,他们系统的可支持性相形见绌。人们只需要查看iptablestc了解您可以制作 CLI 的复杂程度。我偶尔会收到一些人的问题,他们查看ip link showor的输出ifconfig并因为数据包计数器不正确而感到困惑;与我在 linux NIC 驱动程序中看到的相比,主要网络供应商通常在测试他们的计数器方面做得更好。


尾注

注 1任何关心性能的人都不会购买 Sup2T 并且未能在机箱中安装 DFC。Sup2T 可以以 60Mpps 的速度切换,但带有 DFC 的负载机箱可扩展到 720Mpps。

注 2 Vyatta 测试在双处理器、10 核 Intel E5-2670v2 上以每核 2.5Ghz 运行;如果我们将单个内核计算为两个虚拟内核(即超线程),则总共有 40 个用于数据包交换的内核。Vyatta 配置了 Intel x520-DA2 NIC,并使用了 Brocade Vyatta 3.2 版。

7200 系列正在被弃用,取而代之的是 ASR 系列,因为它们无法处理线速多千兆位交换。如果数据包交换保持在硅中,则 Catalyst 和 Nexus 交换机比通用处理器具有转发优势。如果流量必须进行进程交换(即必须在 CPU 上而不是在 ASIC/FPGA 中进行评估),您的吞吐量会直线下降,延迟会增加。因此,如果您需要高吞吐量交换,请将转发平面与路由平面分离,并进行优化以尽可能多地将交换保留在硅片中。

在某些情况下,您会看到与通用处理器结合的专用交换芯片(例如旨在将 Big Switch 或其他 SDN 用于架顶式、分布或覆盖的白盒交换机),并且在这些情况下,您可以看到所有领域中最好的(高吞吐量、低延迟切换;用于路由和策略确定的高功率处理;与 Puppet 或 Chef 等管理框架的集成)。