Multicast(at)Work

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.

Senderiperf -c 239.1.1.1 · TTL 10,00 Mbit/s
SwitchVLAN 50snooping ON · querier OFF
Try it:
ReceiverSystemReceived (iperf -s -u)IGMP
receiver-aRocky 9 · VMware  
receiver-bRocky 9 · Proxmox VM  
nvr-01Recorder without join  
 

Multicast(at)Work

3.0.0

A 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.
TCP 5152web-GUI
5001–5010iperf, TCP and UDP
EN | NOEnglish and Norwegian
Read the technical description
The Receiver in group 239.1.1.1: 5.24 Mbit/s, jitter below 0.01 ms and 0 % loss.

Test scenarios

A typical test uses two installations, one on each side of the network you want to check. This is how to start:

  1. Install on two hosts

    VMs in VMware or Proxmox, or LXC containers. install.sh opens the firewall and runs a self test with real multicast.

  2. 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.

  3. 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.

  4. Read the loss

    The Receiver prints one line per second. 0 % loss is the goal, and the log can be downloaded as evidence.

The Sender: multicast at 5 Mbit/s with TTL 1 out of eth0.
TestHow
Multicast on one VLANReceiver 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 snoopingStart another Receiver, or stop one. Ports without a receiver should not get the traffic.
Missing querierLet the stream run for 5 minutes. If it stops after 2–4 minutes, the VLAN has no IGMP querier.
Capacity and jitterRaise the bandwidth (10M, 100M, 1G) until loss starts. Watch the jitter at the same time.
Unicast baselineReceiver TCP only, Sender Unicast: ping and TCP throughput before you troubleshoot multicast.
Jumbo framesMTU probe 8900–9000, step 4, DF on, to a host on the same VLAN. 9000 means the whole path carries jumbo frames.
Tunnel, VPN, PPPoEMTU 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.

12001250130013501400142514501500

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.

Highest working MTU: 1400 bytes.

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.