如果在 Linux 机上添加越来越多的 NIC 卡来将流量路由到不同的网络,会对性能产生什么影响。
假设我有 10 个不同的网络,并且只有一个配置为路由器的 Linux 机箱来执行路由。
为了在 10 个网络之间路由流量,我添加了 10 张 NIC 卡,并为每个新网络添加了一个额外的 NIC :)(我知道除了为每个网络添加额外的 NIC 之外,还有其他更好的方法来处理路由。)
流量在 1-2 Gbps 范围内。Linux 路由器是否能够在不丢弃数据包的情况下处理这样的流量?添加额外的 NIC 是否会对网络 i/o 以外的性能产生任何影响(如果我可以使用更强大的 CPU 来处理网络 i/o)。
答案1
在这种情况下,有几个因素会影响性能:
- 网卡数量
- 几个多端口 NIC 还是很多 1 端口 NIC?
- NIC 卡功能
- 外围总线速度
- PCI、PCI-X、PCIe?
- 所有这些 NIC 使用的总线数量
- 管理堆栈的内核开销
- 如果除了路由之外还有什么事情发生
- 防火墙
- 数据包整形
- 代理
如果只是路由,过去 10 年内的所有 PC 硬件都应该足以传输数据包,特别是当总吞吐量从未超过 2Gbps 时。
当您尝试发送大量流量时,就会开始遇到问题。在这种 NIC 密度下,您可能会接近总线速度极限,但这实际上取决于硬件的年龄和功能。就 CPU 而言,只要您只是路由,它就可以跟上其他硬件可以发送的速度。
答案2
是的,更强大的处理器和 RAM 绝对不会有什么坏处。添加的 NIC 越多,它用于 RX 和 TX 缓冲区的内存就越多。并且需要更多的 CPU 能力来处理 NIC 卡生成的中断请求。
简单的结果是,需要更多的 RAM 和 CPU 能力。