내 라우터(Linux 시스템)에 다음 인터페이스가 설정되어 있습니다.
br0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet 192.168.0.3 netmask 255.255.255.0 broadcast 192.168.0.255
bridge name bridge id STP enabled interfaces
br0 8000.00156d8591ec no eth0
wlan0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::7271:bcff:feb1:d9cf prefixlen 64 scopeid 0x20<link>
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.200.44.147 netmask 255.255.255.128 broadcast 10.200.44.255
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::215:6dff:fe85:91ec prefixlen 64 scopeid 0x20<link>
br0에는 두 개의 인터페이스(eth0 - 로컬 홈 네트워크 및 wlan0 - 무선 홈 네트워크)가 있습니다. eth1은 인터넷 연결 인터페이스이며 br0의 일부가 아닙니다.
나는 mumudvb를 사용하여 IP 그룹 239.100.0.1(udp/1234)을 통해 멀티캐스트 IPTV를 보내고 VLC 플레이어를 사용하여 LAN의 다른 컴퓨터에서 이 멀티캐스트 트래픽을 수신합니다.
eth0을 통해 멀티캐스트를 보내도록 구성하면 홈 LAN에서 모든 것이 잘 작동하지만 라우터 자체에서는 멀티캐스트 그룹에 참여할 수 없습니다.
그래서 br0을 통해 멀티캐스트를 보내도록 구성했지만(더 합리적입니다. 그런 다음 LAN eth0과 라우터 자체에서 멀티캐스트 그룹에 참여할 수 있습니다), 참여 후 약 5분 후에 LAN 멀티캐스트 연결이 끊어집니다(아무 것도 보내지 않음). IGMP 메시지)). 하지만 다시 참여할 수 있으며 다음 5분 동안 다시 작동한 다음 종료됩니다.
br0을 통해 멀티캐스트를 보낼 때는 패킷 손실이 발생하지만 eth0을 통해 직접 보낼 때는 패킷 손실이 발생하지 않는 이유는 무엇입니까? 브리지의 일부 구성이 누락되었나요? 이 기간 동안 어떤 콘텐츠가 만료될 수 있나요? 예를 들어 브리지는 STP를 비활성화하지만 여기에 영향을 미쳐서는 안 됩니까?
라우터 자체에서 br0 멀티캐스트 그룹에 가입하면 손실되지 않습니다. eth0을 통해 br0에 연결된 머신에서 구독하는 경우에만 해당됩니다.
답변1
멀티캐스트에 br0을 사용하는 경우 IGMP 쿼리기를 활성화해야 합니다. 활성화되면 IGMP 프로토콜 버전이 v3에서 v2로 변경되고 멤버십 쿼리가 발행되기 시작하며 더 이상 삭제되지 않습니다.
Google에서 검색한 바에 따르면 브리지에서 쿼리기를 활성화하는 유틸리티는 없는 것 같습니다. 이 유틸리티는 다음을 /sys
통해 수행되어야 합니다.
$ echo -n 1 > /sys/devices/virtual/net/br0/bridge/multicast_querier
답변2
네트워크에서 IGMP 쿼리가 없고 보고서를 보내지 않기 때문에 IPTV는 종종 5분 동안 중단됩니다.
해결책은 scapy를 사용하여 Python 프로세스를 통해 일반 IGMP 쿼리를 보내는 것입니다(올바른 IPTV VLAN을 사용하는 것을 잊지 마세요...)
이것은 나에게 효과적입니다!
답변3
echo 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping