複数のデバイスを持つホームローカルネットワークがあります。デバイスの1つが、いくつかのイベント(スマートホーム)に関する情報を含むマルチキャストパケットを送信しています。うまくいきます。 Android携帯でマルチキャストテスターアプリを実行してみましたが、スマートホームデバイスから送信されたすべてのパケットを確認しました。
また、Gnu / Linuxがインストールされているサーバーもあります。サムスンNC10に基づいて作られています。マルチキャストには小さな問題があります。スマートホームデバイスが2つのマルチキャストパケットをすばやく送信すると、Gnu / Linuxサーバーは最初のパケットのみを受信し、2番目のパケットは無視します。これを確認するために使用していますが、tcpdump dst port 9898 -X
Androidでは2つのパケットが表示され、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
この問題をどのように解決できますか? 2番目のマルチキャストパケットがすばやく送信されるときにGnu / Linuxがそれを無視しないように強制する方法は何ですか?