假设用于路由器或交换机接口的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的性能
警告:我使用卖方提供的营销材料进行所有比较...
- 例如,Catalyst 6500 Sup2T ASIC交换速度与一般OS或SDN上的实际x86交换速度相比如何?
这有点挑战,因为我们要比较一个完全分布式的交换系统(Sup2T)和一个集中式交换系统(Vyatta),因此请仔细解释结果。
- 例如,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版。