Centos 8マシンからIGMPマルチキャストストリームに参加しようとしていますが、JOINを送信した後、スイッチからのトラフィックがありません。

簡単な接続:

MUX <-----------> cisco3850 <--------> Centos8
192.168.117.13                         192.168.117.21

アップストリームスイッチ(Cisco Catalyst 3850)には、MUXから239.1.1.1:4000へのMPEG-TSが供給されます。

私はsocat、ソケットを開き、ストリームに参加し、ソケットを開いたままにするために、両方と自分のプログラムを試しました両方とも、wiresharkによって確認されたものと同じIGMP参加メッセージを送信します。

Internet Group Management Protocol
    [IGMP Version: 3]
    Type: Membership Report (0x22)
    Reserved: 00
    Checksum: 0xe9fb [correct]
    [Checksum Status: Good]
    Reserved: 0000
    Num Group Records: 1
    Group Record : 239.1.1.1  Change To Exclude Mode
        Record Type: Change To Exclude Mode (4)
        Aux Data Len: 0
        Num Src: 0
        Multicast Address: 239.1.1.1

使用してip route add、私はインターフェイスにマルチキャストグループのためのルートを作成しました:

224.0.0.0/4 dev eth1 scope link
225.0.0.0/8 dev eth1 scope link
239.0.0.0/8 dev eth1 scope link

cat /proc/net/igmpグループが参加していること示します。

cat /proc/net/igmp
Idx     Device    : Count Querier       Group    Users Timer    Reporter
3       eth1      :     2      V3
                                030101E1     1 0:00000000               0
                                010000E0     1 0:00000000               0

私は疑う、これはスイッチに問題はなく、Linuxの問題であるが、(スイッチを所有している)顧客は、すべてがうまくていると言います。

この問題を調査/修正するために、Linux側で他に何ができますか?

それがスイッチの問題である場合、それでは何ですか?そこで何を設定する必要がありますか?(お客様に説明する必要があります)


参考までに、ソケットを結合して開いたままにする私のプログラムは次のようになります。

// Error checking omitted for brevity
fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes);

memset(&saddr, 0, sizeof(saddr));
saddr.sin_family      = PF_INET;
saddr.sin_addr.s_addr = mcastAddr;
saddr.sin_port        = htons(port);

bind(fd, (struct sockaddr *)&saddr, sizeof(saddr);

struct ip_mreq mcastReq;
mcastReq.imr_multiaddr.s_addr = mcastAddr;
&mcastReq.imr_interface.s_addr = interfaceAddr;

setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mcastReq, sizeof(mcastReq);
no answer