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

我想我可以直观地理解ASIC与x86在处理流量方面的优势之间的区别,特别是在微突发方面。假设用于路由器或交换机接口的ASIC将胜过将x86 CPU用于所有会严重受CPU中断影响的数据包处理的情况,这是否正确?我知道操作系统(Windows,Linux或专用)也极大地有助于硬件的路由或交换性能。而且我知道x86总线速度会给开关带宽带来理论上的最大值,尤其是一旦速率超过1Gbps时。普通OS或SDN上的交换速度如何?
例如,Cisco 7200VXR-NPE-G2交换速度如何与相同速度比较?是否具有相同的功能?

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

#1 楼


假设用于路由器或交换机接口的ASIC将胜过将x86 CPU用于所有会严重受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每个通道可提供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封装在一个提升板上。所有比较...



例如,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注册。
例如,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的比较:功能,或者70Mpps(如果您可以接受少量丢弃)。

我认为Sup2T仍然是成功的,尤其是当您查看使用Sup2T所获得的收益时(分布式规模达到720Mpps,MPLS,无数的MIB) ,Layer2和Layer3切换等)。

如果您只关心原始交换性能,则可以从x86 CPU获得可观的性能数字。但是,在实际网络中,通常不是谁拥有最好的阻力赛数字。大多数人都需要担心功能(请参阅:何时应该关注开关评估的每个值?)。要考虑的一个重要因素是可用功能的数量,以及它们如何与网络的其余部分集成。我本人还没有使用Brocade + Vyatta,但是他们可以在建立良好的显示命令和支持挂钩方面做得不错。如果它们确实支持足够的功能,并且它们的系统可以在实际网络中很好地进行扩展,那么就可以按照自己的意愿去做。但是,如果有人便宜了,而只是构建一个Linux框+ bird / quagga + ACL + qos,我就不想成为支持该解决方案的人。我一直坚持认为,开源社区在创新方面做得很好,但是与主流网络供应商(Arista / Cisco / Force10 / Juniper)相比,其系统的可支持性显得苍白。只需查看iptablestc即可了解制作CLI的复杂程度。我偶尔会问那些看过ip link showifconfig输出的人的问题,因为数据包计数器不正确而感到困惑。通常,主要的网络供应商在测试计数器方面做得比我在linux NIC驱动程序中看到的要好得多。关心性能的人可能会购买Sup2T,而不会在DFC中填充机箱。 Sup2T可以以60Mpps的速度进行切换,但是装有DFC的机箱可以扩展到720Mpps。注2 Vyatta测试在双处理器,10核Intel E5-2670v2上以每核2.5Ghz进行;如果我们将单个核心算作两个虚拟核心(即超线程),则总共有40个核心用于数据包交换。 Vyatta配置了Intel x520-DA2 NIC,并使用了Brocade Vyatta 3.2版。

评论


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

– Ryan Foley
2014年11月29日在18:24

#2 楼

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

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