Universes, and the clever thing Sig-Net does with multicast

Universes, and the clever thing Sig-Net does with multicast
A Sig-Net universe is the same idea as a DMX universe: 512 channels of level data, plus optional per-slot priority. Universes can be numbered from 1 to 63,999. That's nearly sixty-four thousand, which is a lot of universes — far more than any real show (right now) needs, but a comforting margin if you're pixel-mapping a 30-storey building.
Where Sig-Net gets clever is in how those universes map onto the network. To understand why it had to get clever, we need a quick detour into sACN's least favourite problem.
The sACN problem
sACN gives every universe its own multicast group. Universe 1 lives at one multicast address, universe 2 at the next, and so on. That's elegant — every Node only joins the groups it actually needs, and it gets only the packets it actually wants.
But it has a hard ceiling. Ethernet switches often use a feature called IGMP snooping to track which ports want which multicast groups, and they keep that table in a small fixed-size memory. On a typical edge switch you might get between a few hundred or a thousand entries before the table fills up. After that, the switch falls back to flooding multicast traffic everywhere — and suddenly your 500-universe show has every node receiving every packet, and the network melts.
This is a real problem in the industry. Big shows currently hit it.
Multicast Folding™
Sig-Net's solution is to give up the 1:1 mapping. Instead of every universe having its own multicast address, Sig-Net has a fixed pool of 109 multicast addresses (239.254.0.1 through 239.254.0.100, plus a few extra), and universes wrap around onto them using a modulo-109 calculation.
Universe 1, 110, 219, 328 and so on all share one multicast group. Universe 2, 111, 220, 329 share the next. And so on.
That sounds like a step backward, because now a Node listening to "just universe 1" might also receive packets for universes 110, 219 and 328 — packets it has to look at, identify, and throw away.
But here's the maths. At 44 frames per second per universe, with 1,000 universes folded over the 100-address pool, a single Node receives about 9 unwanted packets every 22 milliseconds. That's 396 wasted packets per second. A modern microcontroller — even a cheap one — can parse and drop those in its sleep, because the URI it has to check is in cleartext at the front of the packet. No cryptographic work needed to decide "not for me".
In exchange, you're unlikely to run out of multicast groups. A 1,000-universe show uses 100 IGMP entries, comfortably inside most switch's capacity.
When you don't want folding
For shows under 109 universes, the folding has zero effect — it's a perfect 1:1 mapping. So the small show pays nothing.
For larger shows, if a specific Node really needs to be on its own dedicated multicast group (perhaps it's a low-power device that can't afford the discard load, or it lives on a saturated subnet), the Manager can override that one endpoint onto a custom multicast IP. The override is per-endpoint, not per-device — so you can keep ten ports of a gateway folded and put one port on its own group.
Next post: how Sig-Net's "who's out there?" mechanism works — discovery and polling.
This series is based on v1.0 of the Sig-Net spec - visit Sig-Net.net for any updates.
