答案1
我认为使用 ebtables 是可能的,请参阅:
http://ebtables.netfilter.org/examples/example5.html
但是,您可能无法使设置切合实际(即,表现得像提供等于吞吐量上限的速率的网络链接)。这实际上取决于你的要求。
如果您在较长时间内(例如几秒)测量平均吞吐量,则平均吞吐量确实会受到限制,但是如果您在软件中进行限制,则机器可能会突发处理数据包(这意味着您将遇到处理延迟,即每个数据包的延迟,并且不同数据包之间的延迟可能会有很大差异)。结果是,在短时间内,您的吞吐量有时会远高于上限,而在其他情况下则低得多。只有长时间的平均吞吐量才能与上限相匹配。
可以通过一些疯狂的优化来降低处理延迟,类似于高频交易中使用的优化,但这非常困难,您必须购买昂贵的硬件(例如机架式服务器)才能使它们可靠地运行。
如果我是你,我会购买便宜的托管交换机(约 100 美元),而不是花钱购买服务器。例如,SG-200 支持速率限制,请参阅手册第 174 页的“流量整形”https://www.cisco.com/c/dam/en/us/td/docs/switches/lan/csbss/sg200/administration_guide/78-19562.pdf这些交换机支持硬件实现的速率限制,理想情况下应该引入比您从模拟交换机的软件盒中获得的数据包处理延迟小得多的延迟。您还可以放心,它工作正常;您尝试在软件中模拟的任何内容都需要仔细测试和基准测试。
如果您有非常严格的要求,您可能想知道廉价交换机通常使用一种称为 WRR(加权轮询)的方法实现数据包排队。有一种更精确的速率限制方法称为 SRR(整形轮询),其延迟变化甚至更低;但是这些交换机(某些 Catalyst 型号)的价格通常高于 1-2,000 美元,因为芯片以更高的时钟频率运行。此外,您只有一类流量这一事实可能会缩小它们之间的差距。WRR 和 SRR 之间的实现差异在此处描述http://www.cisco.com/c/en/us/products/collateral/switches/catalyst-3560-e-series-switches/prod_qas0900aecd805bacc7.html(参见问:共享模式下 WRR 和 SRR 有什么区别?)
(当然,还有其他品牌/型号的管理型交换机也提供速率限制;我不是在推广任何东西,我只是告诉你这些,因为这是我所知道的。其他品牌/型号很可能实施了非常相似的速率限制机制,可能工作得很好:))。