CPU 和 RAM 如何影响路由器的性能?

网络工程 路由器 表现
2021-07-18 23:10:46

我见过很多网吧有 50-100 个用户的情况——在没有大量下载的正常游戏和网页浏览活动下——导致路由器丢包(导致游戏延迟),有时完全挂起。他们的解决方案通常是用真正的 x86 PC 替换路由器盒,该 PC 具有更强大的 CPU 和大量 RAM,将 pfSense 作为路由器运行。

即使通过下载大文件使 Internet 连接 (~200mbps) 达到最大值,路由器也能正常工作。为什么当有很多用户使用每个用户可能不到 1mbps 时它会崩溃?强大的 CPU 和更多的 RAM 如何帮助改善这种情况?

有点离题,但与原始问题相关:无线接入点遇到同样的问题。当很少有用户最大限度地提高吞吐量时,它工作得很好,但当有很多用户连接时什么都不做,它就会挂起。为什么?

1个回答

您指的是NAT路由器。普通路由器(未实现 NAT)只需要很少量的内存和处理能力来进行路由——它们本质上是无状态的,几乎所有它们需要的是带宽。(互联网路由器的路由表可能需要大量内存和处理能力,但那是另一回事。)

NAT 路由器将一种地址方案转换为另一种地址方案——通常是公共 IP 地址的私有地址,反之亦然。他们需要读取和更新他们的翻译表,其中跟踪每个连接该表在内存中,内存是有限的,因此 NAT 表的大小 - 可以管理的最大连接数 - 通常是有限的。

如果 NAT 表被填满,路由器需要采取某种应急措施:除非它丢弃旧连接,否则它不能接受新连接。如果路由器固件不能很好地处理内存不足的情况,设备甚至可能会崩溃或挂起(遗憾的是,这对于消费级路由器来说很常见)。

当 CPU 无法再充分处理较大的 NAT 表时,简单地向小型硬件模型添加更多内存可能会适得其反——您可能希望在有限的时间内完成处理。因此,当 NAT 在硬件中完成时,更多内存还需要更快的 CPU 或更高的硬件性能。

NAT 路由器有多种规格。最合理的解决方案是获得一个可以处理计划连接数(用户数 * 每个用户的平均连接数)的路由器。一个体面的企业级路由器(此处讨论的那些)通常能够轻松处理几百万个 NAT 连接,因此 100 或 200 个即使是重度用户也不成问题。

使用软件路由器绝对是一种解决方案 - 标准 PC/服务器具有充足的内存和处理能力。但根据对物理空间、低延迟、功耗和冷却的要求,它可能不是最好的。