Error: Failed to load processor TOC
No macro or processor named 'TOC' found

Introduction

This section is still in it's early days. If you would like to contribute, please report it to the mailing list or to the authors.

Features

  • Extensible modular design
  • MLDv1 and MLDv2 support
  • PIM-SM support (ASM and SSM)
  • partial MBGP support support
    • Uses IPv6 Multicast SAFI prefixes announced by peers to update local MRIB
    • Is able to announce local prefixes
    • Prefix filter support
  • Supports both native and virtual (tunnel) interfaces (tested IPv6-IPv4, IPv6-IPv6 and TUN/TAP tunnels)
  • Abstract Multicast Forwarding Interface (MFA) with user-space forwarding
  • CLI support (remote configuration and management) via telnet or local access

Troubleshooting

Check the Troubleshooting page for common problems and how to resolve them.

Obtaining the latest source

The source code repositories are maintained using Subversion. To obtain the latest source, you may use any SVN client to do so, the public repository address is the following

http://fivebits.net/svn/mrd6/trunk

If you are using the command-line version of the svn client, you may use the following command to obtain the latest source

svn co http://fivebits.net/svn/mrd6/trunk mrd6

Simple configuration

For most people, after having configured MRD6, it just works. However, this first step may be problematic sometimes due to the lack of information regarding the protocol variables as well as the protocol functional entities, including the PIM Rendezvous Point (RP).

We provide below a simple configuration that should work for most simple setups. The following is what you need to know about this configuration file:

  • Logging is enable to /var/log/mrd6.log
  • PIM BSR is disabled (check PIM Bootstrap page for further BSR details)
  • The PIM RP is statically configured to all groups (2001:2002::1 in the configuration). A single PIM router in your network setup must be configured as the PIM RP. You may have distinct PIM RPs for distinct groups, for it must be the same in all routers for the same group. The PIM RP is used for initial data distribution (via PIM's shared tree) and subsequent source discovery.
log {
   /* we turn on logging to /var/log/mrd6.log */
   attach default "/var/log/mrd6.log" extradebug;
}

/* in this setup we are not using PIM BSR but instead have
   the PIM RP address statically configured. */

pim disable bootstrap;

groups {

   /* the following configuration's scope if any group
      that matches the prefix ff00::/8. This means _all_
      multicast groups. */

   ff00::/8 {

      /* We statically define the RP that should be used
         for the groups that match this prefix.
         2001:2002::1 should be replaced with your network's
         PIM RP's address. */

      pim rp 2001:2002::1;
   }
}

Logging and online configuration

Being written. Please check this page later.

Will discuss:

  • The several logging levels
  • the telnet and mrd6sh interfaces

Multicast Routing Information Base (MRIB)

All multicast routing path information is retrieve from the MRIB. Similiar to the Unicast Routing Information Base (RIB, or simply Routing Table), it keeps prefix entries with associated exit points (next hop, interface). MRIB entries are used to perform Reverse Path Forwarding (RPF) checks and are also used to construct PIM tree state (Tree information base, TIB) that will trigger the required signalling and formation of multicast distribution trees.

By default, MRD6's MRIB is populated with directly connected routes as well as your operating system's unicast RIB entries. Most network administrators will work with a congruent network setup, that is, one where both unicast and multicast routing is the same. For them, MRD6's default behaviour will work just fine. For non-congruent setups and more complicated scenarios it does not, it may however be configured to support such scenarios.

NOTE: In Linux, by default, MRD6 won't pick kernel-originated route entries. These include default routes created by auto-configuration.

MRD6's static MRIB entries have the following syntax:

mrib {
   prefix <prefix> via <nexthop> [dev <interface>] [metric <value>];
}

Bot the prefix and the nexthop are required. The output interface is optional, however if the nexthop is a link-local address it is required.

If you wish to have a default route to an upstream router (in this example 2001:2002::1) you may add for instance:

mrib {
   prefix default via 2001:2002::1;
}

In this case, as the nexthop is a global address, MRD6 will pick up the proper output interface from the MRIB itself. In the common case you should have a directly connected route to the nexthop.

In order to disable the populating of the MRIB with RIB entries, use the following configuration:

rib disable populate-mrib;

For more advanced scenarios you may want to use MRD6's BGP implementation.

Advanced configuration

Multicast Listener Discovery (MLD)

Being written. Please check this page later.

Will discuss:

  • mld version configuration
  • timers and values

Protocol Independent Multicast (PIM)

Being written. Please check this page later.

Will discuss:

  • dr-priority
  • timers and values

Legacy support

Will discuss:

  • cisco-old-addrlist configuration

An example: Embedded-RP configuration

Being written. Please check this page later.

Will discuss:

  • example Embedded-RP configuration with source filtering

Static source configuration

Being written. Please check this page later.

Will discuss:

  • How to statically define sources of a specific group