12.3. 策略过滤器
为了实现更复杂的设置,您可以使用仅匹配到特定带宽的过滤器。您可以声明一个过滤器,使其在超过一定速率后完全停止匹配,或者仅不匹配超过特定速率的带宽。
因此,如果您决定限制速率为 4mbit/s,但存在 5mbit/s 的流量,您可以停止匹配整个 5mbit/s,或者仅不匹配 1mbit/s,并将 4mbit/s 发送到配置的类。
如果带宽超过配置的速率,您可以丢弃数据包、重新分类数据包,或者查看是否有其他过滤器可以匹配它。
12.3.1. 策略方法
基本上有两种策略方法。如果您使用“Estimators”编译了内核,则内核可以或多或少地测量每个过滤器正在传递的流量。这些估算器对 CPU 非常友好,因为它们只是每秒计算 25 次已传递的数据量,并据此计算比特率。
另一种方法再次通过令牌桶过滤器工作,这次位于您的过滤器内。TBF 仅匹配 *达到* 您配置的带宽的流量,如果提供的流量更多,则只有超出部分才会受到配置的超限操作的影响。
12.3.1.1. 使用内核估算器
这非常简单,只有一个参数:avrate。如果流量保持在 avrate 以下,则过滤器将流量分类到配置的 classid,或者您的速率超过它,在这种情况下将采取指定的操作,默认情况下为“reclassify”。
内核使用指数加权移动平均值来计算您的带宽,这使其对短脉冲不那么敏感。
12.3.1.2. 使用令牌桶过滤器
使用以下参数
它们的行为与令牌桶过滤器部分中描述的几乎相同。 但是请注意,如果您将 TBF 策略器的 mtu 设置得太低,则 *不会* 有数据包通过,而出口 TBF 队列只会使它们通过得更慢。
另一个区别是,策略器只能让数据包通过或丢弃它。 它不能延迟保持它以延迟它。
12.3.2. 超限操作
如果您的过滤器确定它已超限,则可以采取“操作”。 目前,有三种操作可用
- continue (继续)
导致此过滤器不匹配,但也许其他过滤器会匹配。
- drop (丢弃)
这是一个非常激烈的选项,它只是丢弃超过一定速率的流量。 它通常用于入口策略器,并且用途有限。 例如,您可能有一个名称服务器,如果提供的流量超过 5mbit/s,它就会崩溃,在这种情况下,可以使用入口过滤器来确保永远不会提供更多的流量。
- Pass/OK (通过/确定)
通过流量。 可用于禁用复杂的过滤器,但将其保留在原位。
- reclassify (重新分类)
通常归结为重新分类为尽力而为。 这是默认操作。
12.3.3. 示例
唯一已知的真实示例在“保护您的主机免受 SYN 洪水攻击”部分中提到。
FIXME: 如果您使用过此功能,请与我们分享您的经验