mcproxy
Author
Sebastian Wölke <Sebastian.Woelke@haw-hamburg.de>
Introduction
Mcproxy is an IGMP/MLD Proxy daemon for Linux.
IGMP/MLD proxies offer the possibility to combine local multicast networks with a larger multicast infrastructure. In contrast to multicast routers, proxies are lightweight and do not require the support of a multicast routing protocols such as PIM or DVMRP. A common use case are local stub networks that interconnect with a remote multicast routing domain, possibly via a tunnel. Another usage example is in the Proxy Mobile IPv6 (PMIPv6 - RFC 5213) domains that want to provide transparent multicast services for mobile nodes. The mcproxy meets the requirements of the IGMP/MLD proxy standard (RFC 4605) and has additional functionalities. The multicast proxy can be instantiated multiple times and is dynamically configurable at runtime.
Overview
- The mcproxy is divided into the modules Receiver, Routing, Timer, Sender and an arbitrary number of Proxy-Instances.
- The module Proxy reads the configuration file on startup. It then configures and starts all other modules, acquire the mrt-flag on a socket for manipulating the multicast routing tables of the Linux kernel.
- A Proxy Instance represents a full multicast proxy. Each instance has access to the modules Receiver, Routing, Sender and Timer.
- The module Sender generates and sends Membership Queries to the downstreams and Membership Reports to the upstreams.
- The module Receiver uses the socket with the mrt-flag to receive Membership Reports and Cache Miss messages. Cache Miss messages are sent from the Linux kernel in order to inform proxies about new multicast sources.
- The module Routing sets and deletes virtual interfaces and multicast forwarding rules.
- The module Timer organizes the temporal behavior of the Proxy-Instances.
Communication between the modules
- The modules communicate via synchronized message queues with the Proxy-Instances.
- Proxy-Instances register their interfaces at the module Receiver. If a Membership Report or a Cache Miss massage arrives at on of this regestrated interafaces, the module Receiver sends a message to the relevant Proxy-Instance.
- Proxy-Instances add reminders to the module Timer. A reminder contains a time and a message. If the predefined time expires for a reminder, the module Timer retun the reminder to the relevant Proxy-Instance. In this way, the temporal behavior of the Proxy-Instances is controlled.
- All other modules only waits for instructions from the Proxy-Instances.