05-21-2015 11:39 PM - edited 03-08-2019 12:07 AM
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.....
05-22-2015 01:17 AM
Are you sure it is drops, not dups? Dups looks same as drops for most client devices which analyzes CC only.
05-22-2015 02:06 AM
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....
05-22-2015 02:55 AM
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.
05-22-2015 03:07 AM
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 ???
05-22-2015 03:39 AM
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;
}
}
}
05-22-2015 05:23 AM
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 ??
05-22-2015 05:38 AM
Run it on a host/server/STB connected to the L2 segment with TV on your diagram.
05-22-2015 05:42 AM
let me try this !!!!
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: