我们有许多应用程序运行在位于服务器网络内的同一台服务器上。我们希望将应用程序的带宽限制为特定值。因此,这里有一些选择:
suppose we have three apps: A, B, and C.
1) Use Linux (kernel 2.6) QoS Utilities to limit the bandwidth of
these three applications.
2) Develop our own application to limit the bandwidth.
当然第一种是首选,但是我们需要知道Linux提供的qos工具是否能满足我们的需求。首先要检查的是,像TC这样的Qos工具是否提供了任何方法来限制多个应用程序的带宽(指定应用程序名称或其他)?
答案1
您可以使用u32
以下示例中指定的选择器这一页。我在这里只展示感兴趣的线条。
match u32 00000016 0000ffff at nexthdr+0
此示例与目标端口的值 0x16 匹配(从 TCP 标头开头开始的第三和第四个字节)。
这只是一个例子,帮助您了解如何根据目的港口进行操作。
答案2
是的,linux/tc 可以满足您的要求,tc 允许您设置过滤器以在广泛层面上匹配流量,您还可以使用 iptables 标记数据包并匹配这些标记。但是,如果您尝试匹配特定应用程序的任何网络流量,这会变得更加困难。我建议以专用用户身份运行该过程,并使用 iptables 所有者匹配为 QoS 标记这些数据包,然后可以在这些标记上使用 tc。