skip to main content
Preventing Audio Loops
An audio loop exists when a cycle (an infinite loop) is created in the path of audio traversing the system. Great care must be taken to prevent audio loops since they have the potential to consume all available network bandwith, effectively creating a denial of service scenario not just for ICE users, but for any resource reliant on the network. Instant Connect prevents audio loops by preventing a channel from being an active participant in multiple patches at the same time.
Imagine a scenario where channel Alpha is patched with channel Bravo; channel Bravo is patched with channel Charlie; and channel Charlie is patch with channel Alpha (Alpha <-> BravoBravo <-> Charlie, and Charlie <-> Alpha): A user who transmits on Alpha will have their audio stream retransmitted on Bravo; Bravo’s stream will be retransmitted on Charlie; Charlie's stream will be retransmitted on Alpha; and around-and-around we go, quickly consuming all available bandwidth on the network and bringing the system—and likely other systems—to a halt.
Suffice it to say that bridging/patching systems must be extremely careful not to allow such configurations to exist (a problem known as loop detection). ICE provides a simple solution to this problem, one that is both easy for administrators to understand and to correctly implement in software: Any channel can participate in only one patch. In the example above, the loop is created by allowing Alpha to participate in two patches: The Alpha/Bravo patch and the Alpha/Charlie patch. The solution is disallow the second patch.
Note that disallowing a channel to participate in two patches simultaneously does not mean that a channel cannot be patched to two other channels. A single patch may bridge any number of channels. Bridging audio between Alpha, Bravo and Charlie can be accomplished by creating a single patch containing all three channels in lieu of three separate patches.