Skip to main content

Multicast Traffic Generator without a PC

I have suffered the pain of trying to troubleshoot Multicast issues over the past few years (mainly across MPLS), however initially I struggled to find way of generating my own traffic independent of any application that was experiencing issues. Most of the time being the network guy I would not have access to run the application (sender) at one site and the client (receiver) at another site. I also would not be in the position to install my own sender + receiver devices on the network, so I was stuck with the tools available to me on the Cisco routers/switches at each end of the network.

Looking at the http://www.cisco.com/en/US/tech/tk828/technologies_tech_note09186a0080093f21.shtml they assume that you are able to control the sender and receiver;  they have not mention two of the most valuable tools in my opinion to begin troubleshooting multicast.

  • ping

  • ip igmp join-group


It does mention "show ip mroute count" and "show ip mroute" which are indeed valuable.

Maybe it is my mindset, but I like to see packets move around the network to help me isolate potential issues, therefore in may cases I need to be able to generate packets and see these packets crossing interfaces on the network.

Ping=Sender


So how do we generate a multicast packet? Easy just use ping. The special thing about a multicast packet is simply its destination address, therefore we can just ping a multicast address and we have a multicast packet. But if you look at the output from ping you never get a response, but thats not the point, ping is simply used to generate traffic not to diagnose that it is crossing the network.

IP igmp join-group = Receiver


The client application sends igmp join messages out on the network to request that the network send traffic for that specific group onto that network, then the receiving station can listen for the destination address and pickup the multicast traffic. The join message is propagated up/down(I can never remember the direction) the tree based on PIM neighbor relationships and creates a path from the source to the destination

show ip mroute count = traffic viewer


Now you have the sender and receiver (well sort of) the receiver cannot really see much, but using show ip mroute count we can see packet that have traversed a network interface.

I have setup a very basic lab using

  • ip multicast-routing

  • ip pim sparse-dense-mode on each ethernet interface

  • eigrp to put everything into routing


[caption id="attachment_251" align="aligncenter" width="300" caption="Multicast1"]Multicast1[/caption]

On R4 I have

interface Loopback0
ip address 192.168.1.4 255.255.255.255
ip igmp join-group 239.5.5.5

 

On R1 I have

R1#ping ip 239.5.5.5 source loop 0 repeat 10
Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 239.5.5.5, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1
..........
R1#

On R4 I have

R4#show ip mroute count
IP Multicast Statistics
3 routes using 1300 bytes of memory
2 groups, 0.50 average sources per group
Forwarding Counts: Pkt Count/Pkts per second/Avg Pkt Size/Kilobits per second
Other counts: Total/RPF failed/Other drops(OIF-null, rate-limit etc)
Group: 239.5.5.5, Source count: 1, Packets forwarded: 0, Packets received: 10
Source: 192.168.1.1/32, Forwarding: 0/0/0/0, Other: 10/0/10
Group: 224.0.1.40, Source count: 0, Packets forwarded: 0, Packets received: 0
R4#

on R2 I can see the traffic being forward to R4 and not R3

R2#show ip mroute count
IP Multicast Statistics
3 routes using 2296 bytes of memory
2 groups, 0.50 average sources per group
Forwarding Counts: Pkt Count/Pkts per second/Avg Pkt Size/Kilobits per second
Other counts: Total/RPF failed/Other drops(OIF-null, rate-limit etc)
Group: 239.5.5.5, Source count: 1, Packets forwarded: 10, Packets received: 10
Source: 192.168.1.1/32, Forwarding: 10/0/100/0, Other: 10/0/0
Group: 224.0.1.40, Source count: 0, Packets forwarded: 0, Packets received: 0
R2#show ip mroute 239.5.5.5
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry, E - Extranet,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group,
V - RD & Vector, v - Vector
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.5.5.5), 00:00:24/stopped, RP 0.0.0.0, flags: D
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Ethernet0/2, Forward/Sparse-Dense, 00:00:24/00:00:00
Ethernet0/1, Forward/Sparse-Dense, 00:00:24/00:00:00
Ethernet0/0, Forward/Sparse-Dense, 00:00:24/00:00:00
(192.168.1.1, 239.5.5.5), 00:00:24/00:02:35, flags: T
Incoming interface: Ethernet0/0, RPF nbr 10.254.254.1
Outgoing interface list:
Ethernet0/1, Prune/Sparse-Dense, 00:00:24/00:02:35 -<<<< Not being sent to R3
Ethernet0/2, Forward/Sparse-Dense, 00:00:24/00:00:00-<<<< Being sent to R4

 

Here is a quick video clip


 

 

 

Summary


The purpose of this post is to highlight two important commands that Cisco seem to overlook when it come to multicast troubleshooting. I hope these help you.

Comments

Popular posts from this blog

ASR1006 Dual Route Processors Password Recovery - Tip

I recently ran into an issue when trying to perform dual route processors password recovery on a Cisco  ASR1006 Problem After breaking into rommon mode and using confreg to ignore the startup configuration, during the rest the ASR1006 loaded the startup configuration!!!!!!!! Solution So quick and simple, I pulled one of the RP and preformed password recovery running on a single RP. All went according to the Cisco documentation http://www.cisco.com/en/US/docs/routers/asr1000/install/guide/routers/asr1_hwc.html#wp1045971   After the system running on a single RP was recovered and fully booted I waiting for 5 minutes just to be sure; then I inserted the second RP and allowed everything to sync up.   All was well again :) phew   Note: The system was previously fully functioning with dual RPs; a configuration error was made during Tacacs+ configuration which resulted in lockout.   Summary I hit an issue recovering and ASR with dual RPs, so rather that spending hour researching, I decided ve

Break the Network Emulators out of the Cloud

Cisco IOU and JunoSphere Recently both Cisco and Juniper have announced the availability of online resources to provide hands on training over the internet. They have built software emulators in the cloud that can be accessed remotely for a cost. These solutions are based purely around the certification programs and therefore are pretty rigid in the topology that are provided, not to mention the re-occurring cost. http://www.juniper.net/us/en/company/press-center/press-releases/2011/pr_2011_05_16-03_01.html https://learningnetworkstore.cisco.com/market/prod/listSubCatLearnLab.se.work?TRGT=85&/nxt/rcrs/=2559 Rack Rentals There are training providers such as Internetwork Expert (http://www.ine.com/) and IPexpert (http://www.ipexpert.com/) who provide rack rentals based on their training materials. These guy cannot possibly compete going forward. To keep these sustainable they will need to reduce the overhead of building physical racks, providing power and space for the racks. Using e

VMWARE ESXi 5.0 Command line quickies

Hi, It has been a long time since my last posts, but recently I have been working on my home ESXi lab so I thought I would share. I switched over to using Apple Mac just over a year ago, so I don't have a windows machine running by default to run the vSphere client software and generally all I want to do is startup VMs and switch off the ESXi server when I am done. I did some searching and found that I could use vmware vim-cmd if I SSHed into the ESXi server. This need to be enabled at the console, then you can use putty or your tool of choice to connect. Anyway there are several commands the following to me are most useful. List all Virtual Machines vim-cmd vmsvc/getallvms Get a Virtual Machines state (on/off etc) vim-cmd  vmsvc/power.getstate Power on a virtual machine vim-cmd vmsvc/power.on Combining command to a one liner you can find out the power on state of all Virtual Machines vim-cmd vmsvc/getallvms && for x in `vim-cmd vmsvc/getallvms|