为什么硬件路由器的性能比具有更好规格(RAM 和 CPU)的 Linux 路由器更好?

为什么硬件路由器的性能比具有更好规格(RAM 和 CPU)的 Linux 路由器更好?

我有一个最低配置的 CentOS 6.3,64 位,用作网关,有 4 个 NIC(1 Gbps),每个 NIC 绑定在一起,一个用于公共流量,另一个用于私有流量,执行 NATing。它有 6 GB RAM 和 4 个逻辑核心。我们在过去两年里一直在使用它,没有任何问题。

我没有使用过硬件路由器,但我听说它们的 RAM 和 CPU 较少,而且使用闪存盘。硬件配置较低的机器怎么会比 RAM 和 CPU 较多的机器性能更好(比如处理更多并发连接)?

除了 IOS 使用不同的方法来处理这个问题之外,还有哪些限制因素?

答案1

专用集成电路 (ASIC)

您无需使用通用 CPU 和特定任务的软件,而是可以跳过软件,直接让硅片处理任务。

高性能网络硬件使用 ASIC 而不是软件来执行计算量大(但逻辑相对简单)的任务,例如将 IP 地址与庞大的互联网路由表进行比较、检查 CAM 表以做出切换决策或根据 ACL 检查数据包。这极大地提高了这些时间敏感操作的速度,与通用 CPU 相比具有显著优势。

答案2

高端专用路由器的性能可以胜过具有更快 CPU 和更多 RAM 的 PC,因为它可以在硬件中完成更多的路由。

这也是为什么一台售价 60 美元的千兆以太网交换机的性能优于一台售价 2,000 美元的 PC(配有 4 个双端口千兆以太网卡作为以太网交换机)。该交换机从一开始就是为交换机而设计的。

答案3

“除 IOS 之外”?

IOS 几乎是所有操作系统中最重要的。CentOS 是一款通用操作系统。它被设计为在非常广泛的场景下都能很好地运行,使用大量不同的硬件配置。另一方面,IOS 经过了极其精细的调整,只处理您期望从网络设备中得到的那种工作负载,使用您在 Cisco 设备中可以找到的非常特定的硬件类型。

会心确切地就性能和兼容性而言,你为之编程的硬件将会给你带来很大的影响。

答案4

据我所知,这是通用操作系统的开销;无论您的连接速度有多快,数据包都是在内核上下文中逐个数据包处理的,这会增加延迟和系统压力。我相信其他答案中已经对此进行了更好的解释。

话虽如此,一些前景光明的新技术正在日益普及和实现,可能会在这一方面以及其他方面为 Linux 系统带来更强大的竞争对手,例如 InfiniBand

请查看 StackOverflow 上的以下问答: TCP 内核绕过是如何实现的

进一步阅读:

相关内容