Centos 8 시스템에서 IGMP 멀티캐스트 스트림에 참여하려고 하는데 JOIN을 보낸 후 스위치에서 오는 트래픽이 없습니다.

간단한 연결:

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

업스트림 스위치(cisco 촉매 3850)는 MUX에서 MPEG-TS를 239.1.1.1:4000으로 공급합니다.

나는 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