"Dell PE860"이 Linux 가상 스위치를 실행하는 네트워크 토폴로지가 있습니다 br0
.
이제 "IBM ThinkCentre"에서 브로드캐스트 주소로 이더넷 프레임을 보내면:
17:10:23.569021 00:a1:ff:01:02:05 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 34: 127.0.0.1 > 127.0.0.1: ip-proto-0 0
..그러면 두 가상 머신 모두에서 이 프레임을 볼 수 있습니다. br0
MAC 주소 테이블에서 알 수 없는 MAC 주소로 이더넷 프레임을 보내는 경우 br0
에도 정상적으로 작동하며 프레임이 들어오는 모든 포트( eth1
이 예에서는)에 프레임을 플러딩합니다. 그러나 "IBM ThinkCentre"에서 멀티캐스트 프레임을 보내는 경우:
17:17:05.513283 00:a1:ff:01:02:05 > 01:33:44:55:66:77, ethertype IPv4 (0x0800), length 34: 127.0.0.1 > 127.0.0.1: ip-proto-0 0
..그러면 어떤 이유로 Linux 가상 스위치가 이를 모든 포트(프레임이 나온 포트 제외)에 플러딩하지 않습니다. 왜 이런 일이 발생합니까? 나는 스위치가 브로드캐스트 프레임을 처리하는 것과 같은 방식으로 멀티캐스트 프레임을 처리하기를 원합니다.
답변1
멀티캐스트 이더넷 프레임 전달을 활성화하려면 아래에서 멀티캐스트 청취를 비활성화해야 합니다 /sys/devices/virtual/net/<br_name>/bridge/multicast_snooping
.
답변2
멀티캐스트는 멀티캐스트 그룹에 가입한 신부 포트로만 전송됩니다. 따라서 클라이언트가 포트의 멀티캐스트 데이터에 관심이 있고 igmp 조인 메시지를 브리지에 보내지 않는 한 멀티캐스트 프레임은 포트로 전달되지 않습니다.
다음 상황에서는 멀티캐스트 청취가 비활성화될 수 있습니다./sys/devices/virtual/net/<br_name>/bridge/multicast_snooping