Hardware Multicast Loopback

Onload User Guide (UG1586)

Document ID
Release Date
1.2 English

An alternative to the Onload stack sharing scheme described in Multicast Loopback, Hardware Multicast Loopback, available from openonload-201405, enables the passing of multicast traffic between Onload stacks allowing applications running on the same server to benefit from Onload acceleration without the need to share an Onload stack thereby reducing the risk of stack lock and resource contention.

Figure 1. Hardware Multicast Loopback

  • Only available on the XtremeScale™ SFN8000 and XtremeScale™ X2 series adapters.
  • Adapters must have a minimum firmware version v4.0.7.6710 and “full featured” firmware must be selected using the firmware-variant option via the “sfboot” utility. For further details refer to the Sfboot Parameters section of the Solarflare Server User Guide.

Hardware Multicast Loopback allows data generated by one process to be received by another process on the same host - Multicast Replication does not support local loopback.

Reception of looped back traffic is enabled by default on a per Onload stack basis. A stack can choose not to receive looped back traffic by setting the environment variable EF_MCAST_RECV_HW_LOOP=0.

Note: Hardware Multicast Loopback is enabled through a single hardware filter. For this reason, if any single process chooses to receive multicast loopback traffic by EF_MCAST_RECV_HW_LOOP=1, then all other processes joined to the same multicast group will also receive the loopback traffic regardless of their setting for EF_MCAST_RECV_HW_LOOP.

Sending of looped back traffic is disabled by default. On a per-stack basis this feature can be enabled by setting the environment variable EF_MCAST_SEND to either 2 or 3.

Setting the socket option MULTICAST_TTL=0 will disable the sending of traffic on the normal network path and prevent traffic being looped back. The value of the socket option IP_MULTICAST_LOOP has no effect on Hardware Multicast Loopback. Refer to Onload and IP_MULTICAST_TTL for differences in Linux kernel and Onload behavior.