我有一个有效的流量分类器,它使用原始数据包偏移量来匹配数据包的源和/或目标MAC地址。过滤器使用负偏移量,因为默认情况下,offset=0是IP数据包的开始。这意味着以太网报头的内容就在前面。
例如,MAC 12:34:56:78:90:ab:
tc filter add dev <iface> protocol ip parent 1:0 prio 1 u32 \
match u16 0x0800 0xffff at -2 \
match u32 0x90ab 0xffff at -12 \
match u16 0x12345678 0xffffffff at -14 \
flowid 1:10现在,网络链路将承载802.1QVLAN流量和非VLAN内容。protocol ip阻止此通信量进行匹配。问题是,如何为VLAN流量构造类似的规则?我再次尝试做一个负偏移,为DotQ流量搜索0x8100的"Ethertype“值,只是为了确认我关于偏移量的假设,但似乎找不到,或者至少似乎无法与之匹配。下面的示例不成功地匹配DotQ流量:
tc filter add dev <iface> parent 1:0 prio 1 u32 \
match u16 0x8100 0xffff at -6 flowid 1:10我无法在tc系统上找到任何指定offset=0代表什么的文档。它是无条件地启动IP报头,还是protocol ip影响了这一点?
发布于 2022-01-28 16:04:40
我的猜测是protocol IP使用EtherType字段来确定第三层协议是什么。由于VLAN标记是插入在EtherType字段之前的,如https://en.wikipedia.org/wiki/IEEE_802.1Q中所示,因此它与IP数据包不匹配。
https://serverfault.com/questions/1091408
复制相似问题