ethtool 流量控制引导 igmp 数据包

ethtool 流量控制引导 igmp 数据包

我正在尝试通过 ethtool 将 igmp 数据包显式引导到内核。

   ethtool -U ens1f0 flow-type ip4 l4proto 2 action 0
   rmgr: Cannot insert RX class rule: Protocol not supported

执行任何协议(tcp4、udp4)都会返回相同的结果。我已在界面上启用 ntuple-filters。 --show-features 的输出是:

ethtool --show-features ens1f0
Features for ens1f0:
rx-checksumming: on
tx-checksumming: on
        tx-checksum-ipv4: on
        tx-checksum-ip-generic: off [fixed]
        tx-checksum-ipv6: on
        tx-checksum-fcoe-crc: off [fixed]
        tx-checksum-sctp: off [fixed]
scatter-gather: on
        tx-scatter-gather: on
        tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: on
        tx-tcp-segmentation: on
        tx-tcp-ecn-segmentation: off [fixed]
        tx-tcp6-segmentation: on
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: on
rx-vlan-offload: off [fixed]
tx-vlan-offload: on
ntuple-filters: on
receive-hashing: on
highdma: on [fixed]
rx-vlan-filter: off [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-ipip-segmentation: off [fixed]
tx-sit-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]
tx-mpls-segmentation: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off [fixed]
rx-all: off [fixed]
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
busy-poll: on [fixed]

关于什么阻止我添加此规则有什么想法吗?非常感谢!

答案1

我想出了如何确保 igmp 数据包被引导到内核:

ethtool -U $A_INTERFACE flow-type ether dst 01:00:5e:00:00:01 action 0
ethtool -U $A_INTERFACE flow-type ether dst 01:00:5e:00:00:16 action 0

目标 MAC 地址是恒定的 igmp 多播目标。

要将多播地址映射到 MAC 地址,请参阅: https://technet.microsoft.com/en-us/library/cc957928.aspx

为了将IP组播地址映射到MAC层组播地址,将IP组播地址的低位23位直接映射到MAC层组播地址的低位23位。由于IP组播地址的前4位按照D类约定是固定的,因此IP组播地址中有5位没有映射到MAC层组播地址。因此,主机有可能接收到不属于它的组的MAC层组播数据包。但是,一旦确定了目标 IP 地址,这些数据包就会被 IP 丢弃。

例如,多播地址 224.192.16.1 变为 01-00-5E-40-10-01。为了使用 23 个低位,不使用第一个八位字节,只使用第二个八位字节的最后 7 位。第三和第四个八位位组直接转换为十六进制数。第二个八位位组,二进制的 192 是 11000000。如果去掉高位,它会变成 1000000 或 64(十进制),或 0x40(十六进制)。对于下一个八位位组,十六进制的 16 是 0x10。对于最后一个八位字节,十六进制的 1 是 0x01。因此,224.192.16.1对应的MAC地址变为01-00-5E-40-10-01。

相关内容