Tools to test multicast routing [closed]

Don't have much real world multicast experience, but have you seen mz?

Description: versatile packet creation and network traffic generation tool
 mausezahn (mz) is a fast traffic generator written in C which allows you to
 send nearly every possible and impossible packet. It is mainly used to test
 VoIP or multicast networks but also for security audits to check whether
 your systems are hardened enough for specific attacks.
 Mausezahn can be used for example:
 .
  * as traffic generator (e.g. to stress multicast networks);
  * to precisely measure jitter (delay variations) between two hosts
    (e.g. for VoIP-SLA verification);
  * as didactical tool during a datacom lecture or for lab exercises;
  * for penetration testing of firewalls and IDS;
  * for DoS attacks on networks (for audit purposes of course);
  * to find bugs in network software or appliances;
  * for reconnaissance attacks using ping sweeps and port scans;
  * to test network behaviour under strange circumstances (stress test,
    malformed packets, ...).
Homepage: http://www.perihel.at/sec/mz/

There's also ssmping:

Description: check your multicast connectivity
 Tools to check whether you can receive Source Specific Multicast (SSM)
 or Any Source Multicast (ASM) via either IPv4 or IPv6
 .
 If a host runs ssmpingd, users on other hosts can use the ssmping client
 to test whether they can receive SSM from the host. Another program
 called asmping is also provided to check whether can receive ASM.
Homepage: http://www.venaas.no/multicast/ssmping/

Both installable on Ubuntu 10.10. Good luck!


iperf is perfect for this and it's readily available for most linux distributions and windows.

On the listener side:

% iperf -s -u -B 224.1.1.1 -i 1
------------------------------------------------------------
Server listening on UDP port 5001
Binding to local address 224.1.1.1
Joining multicast group  224.1.1.1
Receiving 1470 byte datagrams
UDP buffer size:  110 KByte (default)
------------------------------------------------------------

...and it will wait to hear from the source. On the source, begin sending:

% iperf -c 224.1.1.1 -u -T 32 -t 3 -i 1
------------------------------------------------------------
Client connecting to 224.1.1.1, UDP port 5001
Sending 1470 byte datagrams
Setting multicast TTL to 32
UDP buffer size:  110 KByte (default)
------------------------------------------------------------
[  3] local 192.168.220.20 port 59347 connected with 224.1.1.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 1.0 sec   129 KBytes  1.06 Mbits/sec
[  3]  1.0- 2.0 sec   128 KBytes  1.05 Mbits/sec
[  3]  2.0- 3.0 sec   128 KBytes  1.05 Mbits/sec
[  3]  0.0- 3.0 sec   386 KBytes  1.05 Mbits/sec
[  3] Sent 269 datagrams

at the same time, you'll see the listener receive the traffic:

...
[  3] local 224.1.1.1 port 5001 connected with 192.168.220.20 port 59347
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  3]  0.0- 1.0 sec   128 KBytes  1.05 Mbits/sec   0.035 ms    0/   89 (0%)
[  3]  1.0- 2.0 sec   128 KBytes  1.05 Mbits/sec   0.015 ms    0/   89 (0%)
[  3]  2.0- 3.0 sec   128 KBytes  1.05 Mbits/sec   0.025 ms    0/   89 (0%)
[  3]  0.0- 3.0 sec   386 KBytes  1.05 Mbits/sec   0.068 ms    0/  269 (0%)

By specifying the -T 32 option on the sender, you're setting the TTL to 32 which will ensure the traffic can be routed (assuming IGMP, PIM, and whatnot on the routers are properly configured)

BTW, the last time I tried using VLC in this scenario, I ran into an issue where VLC would ignore the TTL setting and always transmit packets with TTL set to 1. Read the bug report for a workaround.


This may or may not be helpful, but in the past, I've used VLC (of all things) as a multicast video source. In my use cases, though, the multicast streams never needed to go beyond a L2 domain, so I can't say if the traffic it generates would be "proper" routable multicast.


mcast is the tool that we use to see if multicast has been allowed by our local router. It should be off by default.

You don't want multicast packets wandering off clogging up networks where they are not needed.