ASIC与x86通用路由/交换


14

SysAdmin经常试图说服我,x86通用OS的性能可以与具有低MHz CPU和专用芯片(即ASIC)的路由器以1Gbps的线速运行。这种想法正在延续到SDN领域,例如VMWare中的虚拟交换机。

我想我很直观地理解ASIC与x86的优势在处理流量方面的区别,特别是在微突发方面。假设用于路由器或交换机接口的ASIC在所有受CPU中断严重影响的数据包处理方面都胜过x86 CPU的使用,这是否正确?我知道操作系统(Windows,Linux或专用)也极大地有助于硬件的路由或交换性能。而且我知道x86总线速度会给交换带宽带来理论上的最大值,尤其是一旦速率超过1Gbps时。

  1. 例如,Catalyst 6500 Sup2T ASIC交换速度与一般OS或SDN上的实际x86交换速度相比如何?

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

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

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

Answers:


19

假设用于路由器或交换机接口的ASIC在所有受CPU中断严重影响的数据包处理方面都胜过x86 CPU的使用,这是否正确?

很难具体说出中断是否是一个限制,因为在问题的这一部分中我们没有命名特定的CPU,操作系统或路由器型号。总的来说,这是一个安全的概括,即通用CPU不能影响设计良好的ASIC的数据包交换性能。当我说性能时,我指的是RFC 2544指标,例如每秒无丢包转发速率(NDR),吞吐量和延迟。

这并不是说没有基于CPU的路由器的位置。只是我们的生活经历告诉我们,CPU不能像ASIC或FPGA一样快地交换数据包。我对ASIC / FPGA比多核CPU更快的结论似乎得到了Electronics.SE上的问答的支持

PCI总线性能

我知道x86总线速度会给交换带宽带来理论上的最大值,尤其是当速率超过1Gbps时。

我不确定您在此指的是哪些总线限制,但是您所拥有的信息可能有些过时。如今,大多数系统中使用的PCI Express总线可扩展到10Gbps以上。

PCIe 2.0使用8b / 10b编码方案,将其浪费在PCI通道编码开销上约20%。在此之前,PCIe 2.0每个通道可提供4Gbps的原始带宽。但是,即使8b / 10b罚款为20%,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装在一个具有这些性能的提升板上。

思科与Vyatta的性能

警告:我使用卖方提供的营销材料进行所有比较...

  1. 例如,Catalyst 6500 Sup2T ASIC交换速度与一般OS或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 Central注册才能查看完整报告。
  1. 例如,Cisco 7200VXR-NPE-G2的交换速度如何与相同...

Vyatta从性能角度将NPE-G2从水中吹出。根据Cisco NPE-G2数据表,NPE-G2的性能最高可达2Mpps 。尽管考虑到NPE-G2的使用年代,与配备10GE卡的全新英特尔10核系统相比,这并不是一个公平的比较。

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

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

摘要

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

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

在我看来,Sup2T仍然是赢家,特别是当您查看使用Sup2T所获得的收益时(分布式规模达到720Mpps,MPLS,无数MIB,Layer2和Layer3交换等)。

如果您只关心原始交换性能,则可以从x86 CPU获得可观的性能指标。但是,在实际的网络中,通常不只是谁的拖曳力数字最好。大多数人都需要担心功能(请参阅:何时应该关注开关评估的每个值?)。要考虑的一个重要因素是可用功能的数量,以及它们如何与网络的其余部分集成。

还值得研究在公司中使用基于x86的系统的操作可行性。我本人还没有使用Brocade + Vyatta,但是他们可以在建立良好的显示命令和支持挂钩方面做得不错。如果它们确实支持足够的功能,并且它们的系统在实际网络中具有良好的可扩展性,那么就可以按照自己的意愿去做。

但是,如果有人便宜了,而只是构建一个linux box + bird/ quagga+ ACL + qos,我就不想成为支持该解决方案的人。我一直坚持认为,开源社区在创新方面做得很好,但是与主流网络供应商(Arista / Cisco / Force10 / Juniper)相比,其系统的可支持性显得苍白。一个只需要看看iptables,并tc看到你是多么令人费解制作CLI。我偶尔会问一些人的问题,这些人看ip link show或的输出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版。


1
您知道这些图中的镜架尺寸是多少吗?Vyatta的执行摘要说,他们使用64B帧达到了70Mpps;Sup2T测试中使用的帧大小是否相同?
莱恩·弗利

0

不推荐使用7200系列,而推荐使用ASR系列,因为它们不能处理线速多千兆位交换。如果数据包交换停留在硅中,则与通用处理器相比,催化剂和Nexus交换器具有转发优势。如果流量必须进行过程交换(即必须在CPU上而不是在ASIC / FPGA中进行评估),那么吞吐量将直线下降,并且延迟会增加。因此,如果需要高吞吐量的交换,则可以将转发平面与路由平面分开,并进行优化以尽可能多地保持硅中的交换。

在某些情况下,您会看到与通用处理器结合的专用交换芯片(例如,打算将Big Switch或其他SDN用于机架,分布或覆盖的白盒交换机),在这些情况下,您可以看到世界上最好的系统(高吞吐量,低延迟切换,用于路由和策略确定的高功率处理,与Puppet或Chef等管理框架的集成)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.