我打算为相当大数量的用户 (50-100)安装路由器 ,而且我发现家庭路由器对于这么多的设备来说非常不稳定。
在研究的时候,我发现这个报告是关于思科的一种我必须使用的路由器作为连接客户端数量的函数。
但是我有一台我现在不用的电脑,其规格也不错:
我以前能够用Zentyal安装Ubuntu Linux Server ,而且在几个月里 ,它似乎可以像使用NAT和其他额外function(防火墙,平衡负载,统计数据等)的路由器一样工作。 我想知道这次是否能够完成这项工作,而不需要购买如此昂贵的思科设备(对于50个客户端来说是> 1.500USD)。
所以我的问题是:
注意:
我已经使用了一个旧的3GHz Pentium 4 w / 2GB RAM作为路由器+防火墙,用于500多个用户,每个方向都有全双工千兆上行链路(我们甚至有1Gbps的互联网服务),从来没有跳过一个节拍。
思科的设备非常强大,但考虑到他们的条款和定价有多可恶,思科的设备并不强大。 所以,我不会被数字所吓倒,因为它们是作为准备准则而抛出的。
如果你想在同一个盒子上进行纯粹的路由(防火墙,NAT,DHCP等),远离Linux。 iptables / netfilter是一个灾难。 我会使用原始的OpenBSD,或者像OPNsense或pfSense这样基于BSD的防火墙。
如果你只是需要它做路由,那么这一切都归结为一个问题:CPU每秒能处理多less个数据包。
为了进行负载testing,您可以在每一侧放置一台交换机,并将几台计算机连接到每台交换机上以产生stream量。 然后测量你可以通过的数据包的数量。 您应至less执行三次测量 – 一次是最小大小的数据包,一次是最大大小的数据包,另一次是有代表性的混合数据。
这会给你测量它可以处理多lessstream量。 它可以处理多less用户取决于每个用户需要多lessstream量。
与真正的路由器相比,缺点是必须在CPU上进行所有的路由,这可能会成为瓶颈。 但只要你知道如何处理比你需要的更多的数据包,那么这不会是一个问题。
一旦添加了需要额外处理的任务,CPU和内存需求将会增加。 这些任务可能是NAT,防火墙,DPI,代理等。这些将加大testing您的设置的难度,因为如果您只需要路由,每个数据包的处理时间将会变化很多。
在某些情况下,与真实路由器相比,这些高级任务可能会给您的计算机带来优势。 真正的路由器有一个芯片,专门用于路由数据包,没有别的。 如果大部分路由的数据包需要对该专用芯片进行过于复杂的处理,则路由器将失去其优势。 然后它归结为CPU,并且您的计算机可能具有比您将使用的路由器更强大的CPU。
任何有状态的处理都将使情况更加复杂。 任何NAT,防火墙和代理function通常都是以有状态的方式实现的。 对于那些记忆量来说,重要的是记忆状态保存多久。 每个有数据包状态处理的路由器都是可靠性的障碍。 关于如何克服这些障碍,没有单一的答案。
没有提到的要求将需要任何大量的存储。 为了保证可靠性,我需要在两个驱动器之间从RAID-1引导机器。 至于性能,它不应该有所作为,因为一旦机器启动,它应该再也不会碰到存储。
运行DHCP服务器不会需要大量的处理能力。 有了所有其他的要求,添加一个DHCP服务器是一件小事,你可能不会注意到机器的需求有什么不同。