IPv4 リンク ローカル マルチキャスト グループへの参加が困難

IPv4 リンク ローカル マルチキャスト グループへの参加が困難

Windows 上の Python3 を IPv4 リンク ローカル マルチキャスト グループ 239.255.0.3 に参加させようとしています。スクリプトをグループ 224.3.29.71 に参加するように構成すると、Windows ファイアウォール プロンプトが表示され、グループに正常に参加してメッセージを受信しました。ただし、グループ アドレスを 239.255.0.3 に変更すると (送信側と受信側の両方で)、メッセージが届かなくなります。どちらの構成でも、Windows に到着するパケットを (Wireshark 経由で) 確認できます。ただし、アプリケーションには届きません。Windows PC (静的 IP 構成) からマルチキャスト パケットを送信している組み込みデバイス (これも静的 IP 構成) に直接接続する 1 本の Ethernet ケーブルがあります。

詳細:

  • IPv4 サブネット: 192.168.150.0/24
  • 送信機 IP: 192.168.150.2
  • 受信側 IP: 192.168.150.5
  • 動作中のマルチキャスト アドレス: 224.3.29.71
  • 動作しないマルチキャスト アドレス: 239.255.0.3

受信者コード:

import socket
import struct
import sys

multicast_group = '224.3.29.71' # WORKS
#multicast_group = '239.255.0.3' # DOES NOT WORK. OF COURSE I AM CHANGING THE TX SIDE TO MATCH.
address = ('', 32768)

# Create the socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

#allow other sockets to bind this port too
sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)

# Bind to the server address
sock.bind(address)
    
# Tell the operating system to add the socket to the multicast group
# on all interfaces.
group = socket.inet_aton(multicast_group)
mreq = struct.pack('4sL', group, socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

# Receive loop
while True:
    print('\nwaiting to receive message', address[1], file=sys.stderr)
    data, address = sock.recvfrom(1024)
    
    print('received %s bytes from %s' % (len(data), address), file=sys.stderr) 
    print(data.decode(), file=sys.stderr) 

239.*.*.* マルチキャスト グループを機能させるために構成する必要がある Windows 設定はありますか?

関連情報