FreeBSD The Power to Serve

Multicast routing rework

Contact: Wojciech Macek <wma@semihalf.com>

The Semihalf team has been working on reworking the existing ip_mroute module. The previous implementation was over 20 years old and didn’t use modern kernel features.

A complete rework of locking mechanism was done to eliminate taking multiple locks for a single job. Some portions of code were modified to use lockless constructs, the BW-meter API was refactored to work in a single context and routing hot path was identified and made more efficient. All these fixes helped achieve over a 5x speed boost in multicast routing.

The newly introduced rework includes:

  • mroute: fix race condition during mrouter shutting down race condition

  • mrouter: do not loopback packets unconditionally loopback

  • ip_mroute: refactor bw_meter API bw_meter

  • ip_mroute: rework ip_mroute locking

Sponsor: Stormshield


Last modified on: September 19, 2021 by Brad Davis