cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
1139
Views
0
Helpful
8
Replies

Multicast Drop on 3560X Switch

mmendis
Level 1
Level 1

Hi all,

We are experiencing multicast streaming drop exactly in every 3min. Following is our network setup and we are using ip pim sparse dense mode.

Switches are used as layer 2 devices.

 

Any help will be much appreciate.....

 

 

 

 

8 Replies 8

AMediaFilm
Level 1
Level 1

Are you sure it is drops, not dups? Dups looks same as drops for most client devices which analyzes CC only.

Hi AMedia,

Thanks for replying ...

I'm not clear what you have meant...

 

anyway ,

We are monitoring the stream by sending it to a display and we are observing video glitch every 3 min...that's what I have said stream drop....

By dups I meant duplicate packets. On TV it looks like drops too. You draw red arrows, what is it? Is it  traffic flows or what? Unicast flows? Multicast flows? Path of multicast flows you think it should go or path it actually goes? You got alternative path, whats in there?

 

There might be misconfiguration or one of pim sparse-dense feature. There is some problems with multicast devices since software developers prefer to dup packet instead of carefully work with it during protocol transition phases (my guess). There is workarounds for most of this features.

 

But anyway, try to start from breaking the link between bottom 3560 and unnamed device just to be sure it is misconfiguration/feature, not ios bug.

Hi AMedia,

Thanks for the reply ...

Red arrows show the multicast traffic fllow. and traffic path is directed using mroute command and confirmed by mtrace command.... Please refer the updated diagram.

 

If dups are due to duplicate packets ... is there a way to identify it ???

I failed to find any light tool to analyze udp sequence number. You could write traffic with tcpdump/wireshark and analyze udp sequence id field in packets, you'll see out of order or duplicate id there. By the way, some TVs can't even reorder udp packet so if your network jitter big enough and there are some out of order packets, then it might looks like drops on some TVs too.
 

Also here is small c-program I've wrote to analyze udp stream (linux/bsd) when my eyes started to bleed after watching at traffic. Program will prints out wrong udp sequence id. It spams 65535->0 id jumps too, just ignore it, its ok. Wait for glitches and see if seq numbers ok. Can't attach .c file for some reason, so here comes the spam.

raw_udp.c:

#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <errno.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <net/ethernet.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/udp.h>


int main (int argc, char *argv[]) {
    int sock, on = 1, len;
    char buffer[1500];
    struct iphdr *ip;
    struct ip_mreq mgr;
    uint16_t packet_id, prev_id = 0;


    if(argc < 2){
        printf("usage: %s <ip address>\n", argv[0]);
        return 0;
    }
    sock = socket(AF_INET, SOCK_RAW, IPPROTO_UDP);
    if(sock < 0){
        perror("socket() failed");
        return -1;
    }

    if(setsockopt(sock, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)) < 0){
        perror("setting IP_HDRINCL failed");
        return -2;
    }


    ip = (struct iphdr*) buffer;

    mgr.imr_multiaddr.s_addr = inet_addr(argv[1]);
    mgr.imr_interface.s_addr = INADDR_ANY;

    if(setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mgr, sizeof(mgr)) < 0){
        perror("setting IP_ADD_MEMBERSHIP failed");
        return -4;
    }


    while (1){
        len = recv(sock, buffer, sizeof(buffer), 0);

        if(len < 0){
            perror("recvfrom() failed");
            return -5;
        }
        if(ip->daddr == mgr.imr_multiaddr.s_addr){
            packet_id = ntohs(ip->id);
            if(packet_id != prev_id + 1)
                printf("got wrong packet seq number. prev: %i, current: %i\n", prev_id, packet_id);
            prev_id = packet_id;
        }

    }

}

 

Hi AMedia,

Thanks for the reply....

 

Do I have to send the stream through a server and inside the server do i have to run this script ??

 

Run it on a host/server/STB connected to the L2 segment with TV on your diagram.

let me try this !!!!

Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community:

Review Cisco Networking products for a $25 gift card