linux tc u32,vlan – tc u32 – 如何在最近的内核中匹配L2协议?

我有一个很好的整形器,带有散列过滤,在

linux桥上构建.简而言之,br0连接外部和内部物理接口,VLAN标记的数据包“透明地”桥接(我的意思是,没有VLAN接口).

现在,不同的内核做得与众不同.对于确切的内核版本范围我可能有问题,请原谅我.谢谢.

2.6.26

所以,在debian中,2.6.26及以上(我认为高达2.6.32) – 这有效:

tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \

u32 ht 1:64 match ip dst 192.168.1.100 flowid 1:200

这里,“内核”匹配“协议”字段中的两个字节与0x8100,但将ip数据包的开头计为“零位”(如果我有点不清楚,对不起我的英语).

2.6.32

再次,在debian(我没有构建vanilla内核),2.6.32-5 —这有效:

tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \

u32 ht 1:64 match ip dst 192.168.1.100 at 20 flowid 1:200

这里,“内核”对于协议匹配相同,但计算从该协议的头部开始的偏移量 – 我必须添加4个字节到偏移量(20,而dst地址不是16).没关系,对我来说似乎更合乎逻辑.

3.2.11,最新稳定现在

这很有效 – 好像根本没有802.1q标签:

tc filter add dev internal protocol ip parent 1:0 prio 100 \

u32 ht 1:64 match ip dst 192.168.1.100 flowid 1:200

问题是到目前为止我找不到匹配802.1q标签的方法.

过去匹配802.1q标签

我之前可以这样做:

tc filter add dev internal protocol 802.1q parent 1:0 prio 100 \

u32 match u16 0x0ed8 0x0fff at -4 flowid 1:300

现在我无法将802.1q标记与0,-2,-4,-6或类似匹配.我没有点击计数的主要问题 – 换句话说,这个过滤器根本没有被检查,“错误的协议”.

请有人帮助我:-)

谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值