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
igmp 멀티캐스트 대상에 대한 대상 MAC 주소는 일정합니다.
멀티캐스트 주소를 MAC 주소에 매핑하려면 다음을 참조하세요. https://technet.microsoft.com/en-us/library/cc957928.aspx
IP 멀티캐스트 주소를 MAC 계층 멀티캐스트 주소에 매핑하기 위해 IP 멀티캐스트 주소의 하위 23비트를 MAC 계층 멀티캐스트 주소의 하위 23비트에 직접 매핑합니다. IP 멀티캐스트 주소의 처음 4자리는 Class D 규칙에 따라 고정되어 있으므로 IP 멀티캐스트 주소의 5자리는 MAC 계층 멀티캐스트 주소에 매핑되지 않습니다. 따라서 호스트는 자신의 그룹에 속하지 않는 MAC 계층 멀티캐스트 패킷을 수신할 수 있습니다. 그러나 대상 IP 주소가 결정되면 이러한 패킷은 IP별로 삭제됩니다.
예를 들어 멀티캐스트 주소 224.192.16.1은 01-00-5E-40-10-01이 됩니다. 하위 23비트를 사용하기 위해서는 첫 번째 옥텟은 사용하지 않고 두 번째 옥텟의 마지막 7비트만 사용한다. 세 번째와 네 번째 옥텟은 16진수로 직접 변환됩니다. 두 번째 옥텟인 2진수 192는 11000000입니다. 상위 비트를 제거하면 1000000, 64(10진수) 또는 0x40(16진수)이 됩니다. 다음 옥텟의 경우 16진수 16은 0x10입니다. 마지막 옥텟의 경우 16진수 1은 0x01입니다. 따라서 224.192.16.1에 해당하는 MAC 주소는 01-00-5E-40-10-01이 됩니다.