我想知道是否有办法用linux实现基于流量的流量整形。 传统的流量整形方法似乎是基于为特定协议或需要高吞吐量的数据包类型(如ssh,http,SYN或ACK)创建类。
在这里,我希望将每个TCP连接视为以特定数据速率为特征的流。 会有
现在我正在寻找一种方法来将传入数据包表征/分类到其中一个类,因此我可以在其上运行基于tc的流量整形器。任何提示?
答案 0 :(得分:2)
由于您提到了一台专用计算机,因此我假设您正在从网桥进行管理,因此可以在系统的整个生命周期内访问整个数据包。
首先,当你谈到链路饱和时,在连接的接收端节流是没有意义的。当您看到数据包时已经消耗了资源。即使你是一座桥梁,这也是如此。你只能在出口界面上实际做任何聪明的事情。
我认为您不会找到一种能够完全按照您的要求进行的现成产品。您将不得不根据执行期间派生的规则修改dummynet之类的动态,或者您必须使用某些现有基础架构对动态软件路由器进行编程。我熟悉的是Click modular router,但还有其他人。我真的不知道像tc
和ipfw
这样的事情会对高频配置/重新配置做出反应 - 我怀疑是不好的。
然而,有些事情你应该提前解决。无论实施如何,将使这项任务变得困难的事情。例如,
一般来说,只需对网络5元组进行哈希处理,就可以对“流程”有一个相当粗略的了解。然而,一旦你开始处理应用程序语义,所有的赌注都会关闭,你需要通过数据包内容来获得你想要的东西。
如果你有更具体的目的,它可能会使这些点中的一些没有实际意义。