Linux tc滤波器丢弃匹配包

Linux tc滤波器丢弃匹配包,linux,linux-kernel,trafficshaping,Linux,Linux Kernel,Trafficshaping,我希望添加一组过滤器,以丢弃匹配参数的数据包。tc筛选器似乎不支持基于匹配的丢弃操作,而是基于qos参数。是否有人能够放置tc滴滤器 到目前为止,我发现最常用的方法是使用tc标记它,然后使用us iptables删除标记的数据包,但我认为这没有那么有效。tc filter支持基于匹配的删除操作。这实际上比我预期的更直接 下面的示例将删除接口eth3上的所有IP GRE通信 # add an ingress qdisc tc qdisc add dev eth3 ingress # filter

我希望添加一组过滤器,以丢弃匹配参数的数据包。tc筛选器似乎不支持基于匹配的丢弃操作,而是基于qos参数。是否有人能够放置tc滴滤器


到目前为止,我发现最常用的方法是使用tc标记它,然后使用us iptables删除标记的数据包,但我认为这没有那么有效。

tc filter支持基于匹配的删除操作。这实际上比我预期的更直接

下面的示例将删除接口eth3上的所有IP GRE通信

# add an ingress qdisc
tc qdisc add dev eth3 ingress
# filter on ip GRE traffic (protocol 47)
tc filter add dev eth3 parent ffff: protocol ip prio 6 u32 match ip protocol 47 0x47 flowid 1:16 action drop

你说“在我看来没有那么有效”,但这个观点是基于什么?您是否测量并发现了性能问题?检查内核代码?命令
tc
iptables
都操作内核中的网络软件。两者都不会单独接触任何数据包,因此没有充分的理由相信这会导致内核机制效率低下,因此使用
ifconfig
ip
配置同一设备会使网络速度变慢。我还没有测量性能损失。你说得对,我的评估为时过早。我的主要问题是,是否有另一种基于tc筛选器匹配的丢包方法。到目前为止,我发现的唯一方法是标记数据包并将其转发到ip表条目。我真的很好奇是否有可能操纵tc filter来执行基于过滤器匹配的删除操作。在这种情况下,您可能可以通过设置一个删除所有数据的
qdisc
,然后使用指向该
qdisc
flowid
设置您的
过滤器。不过,除了这个建议,我帮不了你多少忙。任何时候我都要处理
tc
这涉及到几个小时的谷歌搜索、阅读手册页和观看wireshark。