여러 장치가 있는 홈 로컬 네트워크가 있습니다. 장치 중 하나가 일부 이벤트(스마트 홈)에 대한 정보가 포함된 멀티캐스트 패킷을 보내고 있습니다. 잘 작동합니다. Android 휴대폰에서 멀티캐스트 테스터 앱을 실행해 보았는데 스마트 홈 장치에서 전송된 모든 패킷을 확인했습니다.
또한 Gnu/Linux가 설치된 서버도 있습니다. 삼성 NC10을 기반으로 제작되었습니다. 멀티캐스트에는 작은 문제가 있습니다. 스마트 홈 장치가 두 개의 멀티캐스트 패킷을 빠르게 보낼 때 Gnu/Linux 서버는 첫 번째 패킷만 수신하고 두 번째 패킷은 무시합니다. 이를 확인하기 위해 를 사용하고 있는데 tcpdump dst port 9898 -X
Android에서는 두 개의 패킷이 보이고 Gnu/Linux에서는 첫 번째 패킷만 보입니다.
라우터도 확인했는데 이 서버나 멀티캐스트에 대한 특정 설정이 없습니다. Gnu/Linux 설정에 문제가 있는 것 같습니다.
나는 또한 다음을 통해 확인을 시도했습니다 watch -d "cat /proc/net/snmp | grep -w Udp"
.
# watch -d "cat /proc/net/snmp | grep -w Udp"
Every 2,0s: cat /proc/net/snmp | grep -w Udp BArtWell-Server: Tue Jan 7 15:36:38 2020
Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors InCsumErrors IgnoredMulti
Udp: 252376 567 385 163222 0 0 385 9288
숫자가 헷갈리는데 IgnoredMulti
정말 멋있네요.
패킷 예:
IP 192.168.0.9.4321 > 224.0.0.50.9898: UDP: {"cmd":"report","model":"sensor_motion.aq2","sid":"158d0002b5d0ba","short_id":9406,"data":"{\"lux\":\"168\"}"}
IP 192.168.0.9.4321 > 224.0.0.50.9898: UDP: {"cmd":"report","model":"sensor_motion.aq2","sid":"158d0002b5d0ba","short_id":9406,"data":"{\"status\":\"motion\"}"}
구성된 경우:
# ifconfig wlp2s0
wlp2s0: flags=4675<UP,BROADCAST,RUNNING,ALLMULTI,MULTICAST> mtu 1500
inet 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::225:56ff:fe26:2379 prefixlen 64 scopeid 0x20<link>
ether 00:25:56:26:23:79 txqueuelen 1000 (Ethernet)
RX packets 634427 bytes 210441311 (200.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 394252 bytes 113622848 (108.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
이 문제를 어떻게 해결할 수 있나요? Gnu/Linux가 두 번째 멀티캐스트 패킷이 빠르게 전송될 때 이를 무시하지 않도록 강제하는 방법은 무엇입니까?