[Fwd: [Click] multicast support]

Eddie Kohler kohler at cs.ucla.edu
Sun Jul 11 10:24:00 EDT 2004


Second try...

-------- Original Message --------
Subject: Re: [Xorp-dev] [Fwd: [Click] multicast support]
Date: Sun, 11 Jul 2004 02:22:25 -0700
From: Pavlin Radoslavov <pavlin at icir.org>
To: Eddie Kohler <kohler at CS.UCLA.EDU>
CC: XORP Developers <xorp-dev at icir.org>

> Any advice for this guy?

Eddie,

Below is a list with the features that come to mind right now:

  * IGMP support:
    - Host-side, in-kernel implementation. Ideally, it would be
      IGMPv1,v2, and v3
    - Interface to send and receive IGMP messages by the user-space
      process. E.g., typically, the IGMP router-side implementation
      is done in user-space, and the user-space process needs a
      mechanism to send/receive the IGMP messages.

  * Multicast forwarding support:
    - Creation and manipulation of the multicast forwarding
      table. E.g., addition and deletion of multicast forwarding
      entries, etc. In UNIX, the granulatiry of operation is per
      (S,G) entry, but the Click implemetation may choose to support
      (*,G) entries, replacing the whole forwarding table at once,
      etc.
    - Creation and deletion of virtual interfaces that can be used
      for multicast forwarding. Such virtual interface can correspond
      to an existing physical interface, but it may be a
      multicast-specific interface as well (e.g., the PIM-SM specific
      PIM Register interface). Note that this add/delete of multicast
      virtual interfaces is based on the UNIX model for multicast
      forwarding. The Click implementation may choose to use a
      different model if the UNIX model is not adequate.
    - Implementation of a communication mechanism for
      multicast-related events in the kernel, and the user-space
      process. For example, in UNIX there are upcalls like NOCACHE
      and WRONGVIF when a multicast data packet is received, but
      there is no matching multicast forwarding entry, or when the
      data packet is received on an interface it shoudn't arrive on.
    - Support for in-kernel bandwidth monitoring and upcalls (e.g.,
      if the bandwidth is above or below a threshold).
    - Obtaining various statistics from the kernel (number of
      forwarded data packets, etc).

  * PIM in-kernel support:
    - Enabling/disabling PIM
    - Sending and receiving of PIM control packets
    - Support for creation and deletion of the PIM-SM specific PIM
      Register interface
    - Support for kernel-level PIM Register data messages
      encapsulation and decapsulation.

  * DVMRP in-kernel support (optional):
    - Support for the DVMRP-specific multicast tunnels.

For more information about the UNIX API see the multicast(4) and
pim(4) manual pages in recent FreeBSD releases. The manual pages are
also available online from http://www.freebsd.org/cgi/man.cgi
In general, styding the multicast implementation in
FreeBSD is a good starting point to become familiar with the
requirements. Though, the UNIX implementation/model has its own
limitations, hence the Click implementation can try to improve on
those limitations.

Pavlin


More information about the click mailing list