Multicast(at)WorkSee whether your multicast actually gets through.
Start a Receiver on one side of the network and a Sender on the other, and watch bandwidth, jitter and packet loss every second. Find the MTU of a path with one button. A web GUI for iperf 2 and ping, in English and Norwegian, installed from a single package without internet access on Rocky Linux 9, in VMware and in Proxmox VE.
| Receiver | System | Received (iperf -s -u) | IGMP | Action |
|---|---|---|---|---|
| receiver-a | Rocky 9 · VMware | |||
| receiver-b | Rocky 9 · Proxmox VM | |||
| nvr-01 | Recorder without join |
Multicast(at)Work
3.0.0A web interface for iperf 2 and ping, with the same look as SNMP Trap Sender and Receiver: blue top bar, tabs, quick settings and the log next to the form. Tests run on the server, so you can close the page, read the manual or switch language while a Receiver keeps listening. The interface is available in English and Norwegian.
- Receiver
- Joins a multicast group on the chosen interface (IGMP join) and/or listens on TCP. Shows bandwidth, jitter and lost datagrams every second.
- Sender
- Ping and TCP throughput to a unicast address, and a UDP stream to the group at the chosen rate, TTL and interface. The steps run in sequence, and the log can be downloaded.
- MTU Probe
- ICMP of increasing size, with or without the DF bit. A chip for every size turns green or red, and the result is the path MTU.
- Overview
- The History tab lists running and recent tests, and their logs can be opened again or downloaded. The Interfaces tab shows status, MTU, addresses and whether multicast is enabled. The top bar shows how many tests are running.
- Secures
- A sign-in page with Log out and a lock against password guessing, CSRF protection and a strict Content-Security-Policy. No shell: every value is checked before it becomes an argument. The service runs without root, with only two network capabilities.
Test scenarios
A typical test uses two installations, one on each side of the network you want to check. This is how to start:
- Install on two hosts
VMs in VMware or Proxmox, or LXC containers.
install.shopens the firewall and runs a self test with real multicast. - Start the Receiver
Sign in, press the quick setting Join 239.1.1.1 and choose the interface on the test VLAN. The Receiver joins and waits.
- Start the Sender
The quick setting Multicast in the VLAN fills in group, TTL and rate. TTL 1 keeps traffic on the subnet; a higher TTL crosses routers running PIM.
- Read the loss
The Receiver prints one line per second. 0 % loss is the goal, and the log can be downloaded as evidence.
| Test | How |
|---|---|
| Multicast on one VLAN | Receiver UDP / Multicast on A, Sender Multicast with TTL 1 on B. Expect 0 % loss. |
| Across routers (PIM) | As above, with a TTL higher than the number of router hops. If it works in the VLAN but not across the router, the fault is in multicast routing. |
| IGMP snooping | Start another Receiver, or stop one. Ports without a receiver should not get the traffic. |
| Missing querier | Let the stream run for 5 minutes. If it stops after 2–4 minutes, the VLAN has no IGMP querier. |
| Capacity and jitter | Raise the bandwidth (10M, 100M, 1G) until loss starts. Watch the jitter at the same time. |
| Unicast baseline | Receiver TCP only, Sender Unicast: ping and TCP throughput before you troubleshoot multicast. |
| Jumbo frames | MTU probe 8900–9000, step 4, DF on, to a host on the same VLAN. 9000 means the whole path carries jumbo frames. |
| Tunnel, VPN, PPPoE | MTU probe 1350–1500, step 4, DF on. Typical answers: 1492 PPPoE, 1450 VXLAN, 1422 IPsec. |
The MTU probe
Every size gets its own chip. With the DF bit on, the largest green size is the path MTU. Above the MTU of the local interface the packet stops locally, and the log says so.
Without the DF bit, large packets are fragmented on the way. The result then only says that they arrive, not what the MTU is, and the log says so clearly.
Installation
Everything is in one offline package: the application, the Python packages and a statically built iperf 2.2.1 for x86_64 and aarch64. No Docker, pip or EPEL. The installer verifies the checksums, detects VMware, Proxmox and LXC, opens the firewall and finishes with a self test.
Rocky Linux 9, VMware or Proxmox VM
$ sha256sum -c Multicast-Tester-3.0.0-offline.tar.gz.sha256
$ tar xzf Multicast-Tester-3.0.0-offline.tar.gz
$ cd Multicast-Tester-3.0.0
$ ./check-prereqs.sh --lang en
$ sudo ./install.sh --lang en
# open http://<server>:5152/ and sign in as admin
Needs only Python 3.9, ping and ip, which are all part of Rocky Linux 9 Minimal. Restrict the GUI to the management network with --admin-net 10.10.0.0/24.
From the ISO, or in an LXC container
# VM: attach Multicast-Tester-3.0.0-offline.iso to the CD/DVD drive
$ sudo mount -o ro /dev/sr0 /mnt
$ cp -r /mnt ~/mct && cd ~/mct
# LXC: pct push <ctid> Multicast-Tester-3.0.0-offline.tar.gz /root/
$ sudo ./install.sh --lang en
$ sudo python3 /opt/multicast-tester/selftest.py
In an LXC container the service sandbox is relaxed automatically. The package also works in VMware appliances running Photon OS.
Proxmox VE: Linux bridges have multicast snooping on and no querier. Without bridge-mcsnoop 0 (or bridge-mcquerier 1) on vmbrX the stream stops after about four minutes. VMware: use VMXNET3; IGMP snooping exists only on a Distributed Switch.
Screenshots
The interface has the same look as SNMP Trap Sender and Receiver, is available in English and Norwegian, and works on phones too. The pictures were taken with real traffic, from the English version; the Norwegian page shows Norwegian screenshots. Click to see a picture in full size.